Mercurial > hg > tweakathon2ios
changeset 45:80112c9349c4
demo mode.
FUCKING ORIENTATION SHIT
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Mon, 15 Dec 2014 18:54:00 +0000 |
parents | d810aa9ca03a |
children | db3f728b4c49 |
files | IntroViewController.mm IntroViewController.xib SequenceController.h SequenceController.mm TrainingMessageOrganiser.h TrainingMessageOrganiser.mm UI code/UIProperties.h eventLogger.h globalVariables.h testApp.h testApp.mm |
diffstat | 11 files changed, 72 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/IntroViewController.mm Mon Dec 15 17:33:41 2014 +0000 +++ b/IntroViewController.mm Mon Dec 15 18:54:00 2014 +0000 @@ -64,7 +64,10 @@ ((testApp *)self.theOFAppRef)->interfaceSelected(self.interfaceSelection); ((testApp *)self.theOFAppRef)->introHidden(4); } - +- (IBAction)enterDemoMode:(id)sender { + ((testApp *)self.theOFAppRef)->interfaceSelected(self.interfaceSelection); + ((testApp *)self.theOFAppRef)->introHidden(5); +} - (IBAction)show:(id)sender { self.theOFAppRef = sender;
--- a/IntroViewController.xib Mon Dec 15 17:33:41 2014 +0000 +++ b/IntroViewController.xib Mon Dec 15 18:54:00 2014 +0000 @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="5056" systemVersion="14A389" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="6254" systemVersion="14B25" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none"> <dependencies> - <deployment defaultVersion="1552" identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6247"/> </dependencies> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="IntroViewController"> @@ -28,7 +28,7 @@ <action selector="hide:" destination="-1" eventType="touchUpInside" id="55"/> </connections> </button> - <button appearanceType="aqua" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="WDx-XU-GHx"> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="WDx-XU-GHx"> <rect key="frame" x="337" y="529" width="142" height="61"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <state key="normal" title="TRAIN" backgroundImage="buttron.png"> @@ -40,19 +40,19 @@ <action selector="hide:" destination="-1" eventType="touchUpInside" id="097-DM-YsD"/> </connections> </button> - <button appearanceType="aqua" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="ngS-Bg-YOQ"> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="ngS-Bg-YOQ"> <rect key="frame" x="543" y="529" width="152" height="61"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <state key="normal" title="SEARCH" backgroundImage="buttron.png"> + <state key="normal" title="DEMO" backgroundImage="buttron.png"> <color key="titleColor" red="0.28581259669999998" green="0.80918817929999998" blue="0.7302696877" alpha="1" colorSpace="calibratedRGB"/> <color key="titleShadowColor" red="0.0" green="0.79530400820000002" blue="0.776555734" alpha="1" colorSpace="calibratedRGB"/> </state> <connections> - <action selector="enterSearchMode:" destination="-1" eventType="touchUpInside" id="uD3-wA-ZcD"/> + <action selector="enterDemoMode:" destination="-1" eventType="touchUpInside" id="3B6-Qt-Rdf"/> <action selector="hide:" destination="-1" eventType="touchUpInside" id="pSz-nO-BgA"/> </connections> </button> - <button appearanceType="aqua" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Lu7-vf-MBo"> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Lu7-vf-MBo"> <rect key="frame" x="754" y="529" width="152" height="61"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <state key="normal" title="PERFORM" backgroundImage="buttron.png"> @@ -78,7 +78,7 @@ <color key="textColor" red="0.3843137254901961" green="0.74117647058823533" blue="0.6470588235294118" alpha="1" colorSpace="calibratedRGB"/> <nil key="highlightedColor"/> </label> - <segmentedControl appearanceType="aqua" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" id="kLk-IB-COx"> + <segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" id="kLk-IB-COx"> <rect key="frame" x="370" y="370" width="284" height="29"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <segments> @@ -91,11 +91,16 @@ </segmentedControl> </subviews> <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/> + <nil key="simulatedStatusBarMetrics"/> <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/> - <simulatedScreenMetrics key="simulatedDestinationMetrics"/> </view> </objects> <resources> <image name="buttron.png" width="150" height="60"/> </resources> + <simulatedMetricsContainer key="defaultSimulatedMetrics"> + <simulatedStatusBarMetrics key="statusBar"/> + <simulatedOrientationMetrics key="orientation"/> + <simulatedScreenMetrics key="destination"/> + </simulatedMetricsContainer> </document>
--- a/SequenceController.h Mon Dec 15 17:33:41 2014 +0000 +++ b/SequenceController.h Mon Dec 15 18:54:00 2014 +0000 @@ -15,7 +15,7 @@ #include "TrainingScoreManager.h" #define MIN_TARGETS_IN_SEQUENCE 1 -#define NUM_REPETITIONS_AT_LEVEL 2 +#define NUM_REPETITIONS_AT_LEVEL 1 #define MAX_TARGETS_IN_SEQUENCE 3 #define MIN_TEMPO 90 #define MAX_TEMPO 520 @@ -26,7 +26,7 @@ #define END_NEUTRAL_MATCH 0 #define NUM_PRESETS 8 -#define SLIDER_SLOW_FACTOR 1.4 +#define SLIDER_SLOW_FACTOR 1 #define SPACER_BARS false #define NO_GUIDES_LEVEL false @@ -133,7 +133,7 @@ class SequenceController{ public: SequenceController(); - void init(bool asoundOnlyMode, controlPanelType whichInterfaceAreWeUsing); + void init(bool asoundOnlyMode, controlPanelType whichInterfaceAreWeUsing, bool demoMode); AnimStep getNextStep(); void setToStart(); void stepForward(); @@ -145,7 +145,7 @@ void skipRun(); private: void generateSteps(); - void generateTestSequence(); + void generateTestSequence(int run); void generateCountIn(int countInLength, int runNumber); void generateRun(int run, int numInSequence);// use this now void generateARun(int run, int numInSequence);
--- a/SequenceController.mm Mon Dec 15 17:33:41 2014 +0000 +++ b/SequenceController.mm Mon Dec 15 18:54:00 2014 +0000 @@ -184,16 +184,18 @@ }; //------------------------------------------------------------------- -void SequenceController::init(bool asoundOnlyMode, controlPanelType whichInterfaceAreWeUsing){ +void SequenceController::init(bool asoundOnlyMode, controlPanelType whichInterfaceAreWeUsing, bool demoMode){ soundOnlyMode = asoundOnlyMode; panelType = whichInterfaceAreWeUsing; tempoInc = float(MAX_TEMPO - MIN_TEMPO) / float(NUM_TEMPO_STEPS); timeInc = (MAX_TIME - MIN_TIME) / NUM_TEMPO_STEPS; - if (true){ + if (demoMode){ generateSteps(); }else{ - generateTestSequence(); + generateTestSequence(1); + generateTestSequence(2); + generateTestSequence(3); } setToStart(); @@ -279,9 +281,9 @@ }; //------------------------------------------------------------------- -void SequenceController::generateTestSequence(){ +void SequenceController::generateTestSequence(int run){ // just make something simple to check sanity - generateCountIn(2,1); + generateCountIn(2,run); vector<int> seq = nonRandomSequence(2); @@ -294,7 +296,7 @@ //nextStep.tempo = curTempo; nextStep.tempoLevel = 0; // nextStep.setTimeFromTempo(); - nextStep.timeAllowedMs = timeIntervalsHard[0]; + nextStep.timeAllowedMs = timeIntervalsHard[0]*1.4; if (panelType == ALL_SLIDERS){ nextStep.timeAllowedMs = SLIDER_SLOW_FACTOR*nextStep.timeAllowedMs; } @@ -306,6 +308,7 @@ steps.push_back(nextStep); + steps.push_back(nextStep); makePreview(seq, 0, nextStep); @@ -313,8 +316,8 @@ makeMatchingSequence(seq, 0, nextStep); - totNumRuns = 1; - steps.back().isLastOfAll = true; + totNumRuns = run; + steps.back().isLastOfRun = true; } //-------------------------------------------------------------------
--- a/TrainingMessageOrganiser.h Mon Dec 15 17:33:41 2014 +0000 +++ b/TrainingMessageOrganiser.h Mon Dec 15 18:54:00 2014 +0000 @@ -25,7 +25,7 @@ class TrainingMessageOrganiser : public MessageOrganiser { public: int numParamsToUse; - void init( PDSynthWrapper& cs, PDSynthWrapper& ts, bool soundOnlyMode,controlPanelType whichInterfaceAreWeUsing); + void init( PDSynthWrapper& cs, PDSynthWrapper& ts, bool soundOnlyMode,controlPanelType whichInterfaceAreWeUsing, bool demoMode); void setup(controlPanelType whichInterfaceAreWeUsing); vector<int> getMappingIDsFromSynths();
--- a/TrainingMessageOrganiser.mm Mon Dec 15 17:33:41 2014 +0000 +++ b/TrainingMessageOrganiser.mm Mon Dec 15 18:54:00 2014 +0000 @@ -8,7 +8,7 @@ #include "TrainingMessageOrganiser.h" -void TrainingMessageOrganiser::init( PDSynthWrapper& cs, PDSynthWrapper& ts, bool soundOnlyMode, controlPanelType whichInterfaceAreWeUsing){ +void TrainingMessageOrganiser::init( PDSynthWrapper& cs, PDSynthWrapper& ts, bool soundOnlyMode, controlPanelType whichInterfaceAreWeUsing, bool demoMode ){ MessageOrganiser::init(cs,ts); @@ -18,7 +18,8 @@ numParamsToUse = TOTAL_NUM_PARAMS; - sequenceController.init(soundOnlyMode,whichInterfaceAreWeUsing); + + sequenceController.init(soundOnlyMode,whichInterfaceAreWeUsing, demoMode); setup(whichInterfaceAreWeUsing); }
--- a/UI code/UIProperties.h Mon Dec 15 17:33:41 2014 +0000 +++ b/UI code/UIProperties.h Mon Dec 15 18:54:00 2014 +0000 @@ -58,7 +58,7 @@ borderThickness = 5; cornerRadius = 7; - sliderPanelWidth = ofGetWidth(); + sliderPanelWidth = ofGetHeight(); sliderPanelHeight = 500; spacerSize = 40; XYsize = sliderPanelHeight - spacerSize*2;
--- a/eventLogger.h Mon Dec 15 17:33:41 2014 +0000 +++ b/eventLogger.h Mon Dec 15 18:54:00 2014 +0000 @@ -83,7 +83,8 @@ CANDIDATE_PARAM_ADJUSTED_ALL, //34 TARGET_AND_MATCH, //35 FORGOT_SEQ, //36 - RUN_SKIPPED //37 + RUN_SKIPPED, //37 + START_THE_TRAINING_DEMO };
--- a/globalVariables.h Mon Dec 15 17:33:41 2014 +0000 +++ b/globalVariables.h Mon Dec 15 18:54:00 2014 +0000 @@ -40,7 +40,7 @@ typedef enum {TOUCH_DOWN, TOUCH_MOVED, TOUCH_UP} touchType; typedef enum {INTRO,QUESTIONNAIRE, HELP, TEST_IN_PROGRESS, SCORE_AND_HINT, COUNT_DOWN, READY_FOR_NEXT} interfaceType; -typedef enum {FAMILIARISATION, EXPRESS, TRAINING, SEARCH} testStages; +typedef enum {FAMILIARISATION, EXPRESS, TRAINING, SEARCH, DEMO} testStages; typedef enum {SLIDER, XYPAD, BUTTON, LEAP3D, LEAP6D} controllerType; typedef enum {SEQUENTIAL, REVISITABLE, SIMULTANEOUS, MULTI_SIMPLE, MULTI_COMPLEX, ALL_SLIDERS, LEAP6DOF} controlPanelType;
--- a/testApp.h Mon Dec 15 17:33:41 2014 +0000 +++ b/testApp.h Mon Dec 15 18:54:00 2014 +0000 @@ -124,6 +124,7 @@ void startTheTrainingTests(); void startTheExpTests(); void startThePerformanceTests(); + void startTheTrainingDemo(); void showHelp(); void helpHidden(); void setupNewUser(); @@ -180,6 +181,7 @@ void toggleAutoRotation(){}; controlPanelType whichInterfaceAreWeUsing; + int screenWidth, screenHeight; }; // should be off split into
--- a/testApp.mm Mon Dec 15 17:33:41 2014 +0000 +++ b/testApp.mm Mon Dec 15 18:54:00 2014 +0000 @@ -85,6 +85,8 @@ // sender.setup( OSC_HOST, OSC_PORT ); ofSetFrameRate(40); props = new UIProps(); + screenWidth = ofGetHeight(); + screenHeight = ofGetWidth(); } //--------------------------------------------------------- @@ -106,7 +108,7 @@ //-------------------------------------------------------------- // GUI for finding and saving presets to express concepts void testApp::setupExpressViewPanels(){ - ButtonPanel* bottomButtonPanel = new ButtonPanel(1,160+props->sliderPanelHeight,ofGetWidth(),250,*props); + ButtonPanel* bottomButtonPanel = new ButtonPanel(1,160+props->sliderPanelHeight,screenWidth,250,*props); Buttron * playCandidateButton = new Buttron(props->buttonWidth*1.4,680, *props); playCandidateButton->setLabel("PLAY"); @@ -144,7 +146,9 @@ // gui for the main training stage void testApp::setupTrainingViewPanels(){ - ButtonPanel* bottomButtonPanel = new ButtonPanel(1,160+props->sliderPanelHeight,ofGetWidth(),250,*props); + cout << ofGetWidth() << "," << ofGetHeight() << endl; + + ButtonPanel* bottomButtonPanel = new ButtonPanel(1,160+props->sliderPanelHeight,screenWidth,250,*props); // play and submit are now same thing @@ -198,7 +202,7 @@ // gui for the old style tweakathlon stage void testApp::setupSearchViewPanels(){ - ButtonPanel* bottomButtonPanel = new ButtonPanel(1,160+(*props).sliderPanelHeight,ofGetWidth(),250,(*props)); + ButtonPanel* bottomButtonPanel = new ButtonPanel(1,160+(*props).sliderPanelHeight,screenWidth,250,(*props)); Buttron* playTargetButton = new Buttron((*props).buttonWidth*0.2,680, (*props)); playTargetButton->setLabel("Target"); @@ -213,19 +217,19 @@ // submit button - only one for now - Buttron * submitButton = new Buttron(ofGetWidth()*0.5 - (*props).buttonWidth*0.5,680, (*props)); + Buttron * submitButton = new Buttron(screenWidth*0.5 - (*props).buttonWidth*0.5,680, (*props)); submitButton->setLabel("Submit"); searchMessageOrganiser.mapButtonToAction(submitButton, SUBMIT_CANDIDATE); bottomButtonPanel->addButton(submitButton); // button - just for spacing pruposes - Buttron * saveButton = new Buttron(ofGetWidth()*0.5 - (*props).buttonWidth*0.5,680, (*props)); + Buttron * saveButton = new Buttron(screenWidth*0.5 - (*props).buttonWidth*0.5,680, (*props)); saveButton->setLabel("SAVE"); searchMessageOrganiser.mapButtonToAction(saveButton, SAVE_PRESET_HIT); bottomButtonPanel->addButton(saveButton); saveButton->hide(); - Buttron * recallButton = new Buttron(ofGetWidth()*0.5 - (*props).buttonWidth*0.5,680, (*props)); + Buttron * recallButton = new Buttron(screenWidth*0.5 - (*props).buttonWidth*0.5,680, (*props)); recallButton->setLabel("RECALL"); searchMessageOrganiser.mapButtonToAction(recallButton, RECALL_PRESET_HIT); bottomButtonPanel->addButton(recallButton); @@ -242,7 +246,7 @@ searchMessageOrganiser.setCountdownPanel(countDownBox); countDownBox->hide(); - TextPanel * scoreFeedback = new TextPanel("Feedback panel", ofGetWidth()*0.5 - (*props).buttonWidth*0.5, 666, 400,100,(*props)); + TextPanel * scoreFeedback = new TextPanel("Feedback panel", screenWidth*0.5 - (*props).buttonWidth*0.5, 666, 400,100,(*props)); scoreFeedback->setFontSize(SMALLFONT); UIElements.push_back(scoreFeedback); searchMessageOrganiser.setScorePanel(scoreFeedback); @@ -257,7 +261,7 @@ finishPanel->hide(); - Buttron * newTestButton = new Buttron(ofGetWidth()-300,690, (*props)); + Buttron * newTestButton = new Buttron(screenWidth-300,690, (*props)); newTestButton->setLabel("Next Test"); UIElements.push_back(newTestButton); searchMessageOrganiser.mapButtonToAction(newTestButton, NEW_TEST_ID); @@ -283,7 +287,7 @@ SliderPanel * controlPanel = new SliderPanel(1, 160, - ofGetWidth(), + screenWidth, (*props).sliderPanelHeight, (*props), sl2); @@ -330,7 +334,7 @@ middlePanel->hide(); - ButtronSlider* distanceSlider = new ButtronSlider(ofGetWidth()-80, 200, 60, ofGetHeight()-400, FILL, *props); + ButtronSlider* distanceSlider = new ButtronSlider(screenWidth-80, 200, 60, screenHeight-400, FILL, *props); trainingMessageOrganiser.setDistanceSlider(distanceSlider); expMessageOrganiser.setDistanceSlider(distanceSlider); distanceSlider->hide(); @@ -512,6 +516,9 @@ }else if(mode == 4){ startThePerformanceTests(); + }else if(mode == 5){ + startTheTrainingDemo(); + } } @@ -573,16 +580,25 @@ void testApp::startTheTrainingTests(){ eventLogger.logEvent(START_THE_TRAINING_TESTS); expMessageOrganiser.hideMyPanels(); - trainingMessageOrganiser.init(targetSynth,candidateSynth, false,whichInterfaceAreWeUsing); + trainingMessageOrganiser.init(targetSynth,candidateSynth, false,whichInterfaceAreWeUsing, false); trainingMessageOrganiser.showMyPanels(); currentStage = TRAINING; } //-------------------------------------------------------------- +void testApp::startTheTrainingDemo(){ + eventLogger.logEvent(START_THE_TRAINING_DEMO); + expMessageOrganiser.hideMyPanels(); + trainingMessageOrganiser.init(targetSynth,candidateSynth, false,whichInterfaceAreWeUsing, true); + + trainingMessageOrganiser.showMyPanels(); + currentStage = DEMO; +} +//-------------------------------------------------------------- void testApp::startThePerformanceTests(){ eventLogger.logEvent(START_THE_PERFORMANCE_TESTS); - trainingMessageOrganiser.init(targetSynth,candidateSynth, true,whichInterfaceAreWeUsing); + trainingMessageOrganiser.init(targetSynth,candidateSynth, true,whichInterfaceAreWeUsing, false); trainingMessageOrganiser.showMyPanels(); currentStage = TRAINING;