rt300@6: // rt300@6: // ExplorePresetManager.h rt300@6: // riftathon rt300@6: // rt300@6: // Created by Robert Tubb on 16/10/2014. rt300@6: // rt300@6: // when people explore and find presets save them rt300@6: // record audio rt300@6: // can display images and text rt300@6: rt300@6: // rt300@6: rt300@6: #ifndef __riftathon__ExplorePresetManager__ rt300@6: #define __riftathon__ExplorePresetManager__ rt300@6: rt300@6: #include rt300@6: #include "presetManager.h" rt300@18: #include "eventLogger.h" rt300@18: #define MAX_PRESETS 8 rt300@6: rt300@18: extern EventLogger eventLogger; rt300@18: rt300@18: rt300@18: template rt300@18: vector makeVector8(T a1, T a2,T a3,T a4,T a5,T a6, T a7, T a8){ rt300@18: rt300@18: vector vec; rt300@18: vec.push_back(a1); rt300@18: vec.push_back(a2); rt300@18: vec.push_back(a3); rt300@18: vec.push_back(a4); rt300@18: vec.push_back(a5); rt300@18: vec.push_back(a6); rt300@18: vec.push_back(a7); rt300@18: vec.push_back(a8); rt300@18: return vec; rt300@18: } rt300@18: // preset slot is a preset with no values, waiting to become a real preset rt300@18: rt300@18: class PresetSlot : public Preset{ rt300@18: public: rt300@18: bool isFilled; rt300@18: rt300@18: rt300@18: PresetSlot(vector defaults, rt300@18: string aname, rt300@18: int aID, rt300@18: string un, rt300@18: unsigned int uid, rt300@18: string imageFile = "") rt300@18: : Preset(defaults, aname, aID, un, uid, imageFile) rt300@18: rt300@18: { rt300@18: isFilled = false; rt300@18: rt300@18: name = aname; rt300@18: creatorUserName = un; rt300@18: creatorDeviceID = uid; rt300@18: double timemsd = [NSDate timeIntervalSinceReferenceDate]; rt300@18: creationTime = (unsigned long long)(timemsd*1000); rt300@18: rt300@18: //TODO color / texture? rt300@18: imageFileName = imageFile; rt300@18: if (imageFileName != ""){ rt300@18: iconView = new PresetIconView(name, imageFileName); rt300@18: } rt300@18: rt300@18: }; rt300@18: rt300@18: void setValues(vector v){ rt300@18: CCValues = v; rt300@18: double timemsd = [NSDate timeIntervalSinceReferenceDate]; rt300@18: creationTime = (unsigned long long)(timemsd*1000); rt300@18: if (CCValues.size()){ rt300@18: isFilled = true; rt300@18: rt300@18: }else{ rt300@18: isFilled = false; rt300@18: } rt300@18: } rt300@18: rt300@18: }; rt300@18: //===================================================================================== rt300@18: //===================================================================================== rt300@6: rt300@6: class ExplorePresetManager : public PresetManager { rt300@6: rt300@6: public: rt300@18: void onAppLoad(); rt300@18: void goToFirstEmptySlot(); rt300@18: bool writeValuesToSlot(vector values); rt300@19: PresetSlot* getCurrentPresetSlot(); rt300@18: PresetSlot* getPresetSlotAtIndex(int index); rt300@44: void nextSlot(); rt300@6: protected: rt300@18: rt300@18: void initPresetSlots(); rt300@18: rt300@18: void fillSlotsWithLoadedPresets(); rt300@18: void fillSlotFromLoadedPreset(vector::iterator psi, vector::iterator pi); rt300@18: void generatePresetSlot(const string name, const string imagefn); rt300@18: rt300@6: int filledSlots; rt300@18: int currentPresetSlotIndex; rt300@6: string presetSlotFilename; rt300@18: vector thePresetSlots; rt300@6: rt300@6: vector categories; rt300@6: vector names; rt300@27: rt300@27: rt300@6: }; rt300@6: rt300@6: #endif /* defined(__riftathon__ExplorePresetManager__) */