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;