Exemplo n.º 1
0
 public void PlayPattern(IPattern pattern)
 {
     lock (lockObject)
     {
         long startTime = getTimeMilliseconds();
         if (pattern.GetType() == typeof(RepeatablePattern))
         {
             foreach (RepeatPattern repeatP in repeatablePatternList)
             {
                 if (repeatP.pattern.ID == ((RepeatablePattern)pattern).ID)
                 {
                     return; //Pattern already present
                 }
             }
             RepeatablePattern    repeatablePattern = (RepeatablePattern)pattern;
             List <SimplePattern> simplePatternList = repeatablePattern.GetSimplePatterns();
             repeatablePatternList.Add(new RepeatPattern(repeatablePattern, startTime + Pattern.Utils.GetMaxDuration(simplePatternList)));
             PlaySimplePatterns(simplePatternList, startTime, false);
         }
         else
         {
             PlaySimplePatterns(pattern.GetSimplePatterns(), startTime, true);
         }
     }
 }
Exemplo n.º 2
0
 public void PlayPattern(IPattern pattern)
 {
     if (pattern.GetType() == typeof(RepeatablePattern))
     {
         foreach (RepeatPattern repeatP in repeatablePatternList)
         {
             if (repeatP.pattern.ID == ((RepeatablePattern)pattern).ID)
             {
                 return; //Pattern already present
             }
         }
         RepeatablePattern    repeatablePattern = (RepeatablePattern)pattern;
         List <SimplePattern> simplePatternList = repeatablePattern.GetSimplePatterns();
         repeatablePatternList.Add(new RepeatPattern(repeatablePattern, Environment.TickCount + Utils.GetMaxDuration(simplePatternList)));
         foreach (SimplePattern sp in simplePatternList)
         {
             StartPatternOnMotor(sp.GetMotor(), sp);
         }
     }
     else
     {
         foreach (SimplePattern p in pattern.GetSimplePatterns())
         {
             int motor = p.GetMotor();
             if (motor >= numberOfMotors || motor < 0)
             {
                 Console.Error.WriteLine("Invalid motor id: " + motor + ". Vibration device has " + numberOfMotors + " motorThreads.");
             }
             StartPatternOnMotor(motor, p);
         }
     }
 }
Exemplo n.º 3
0
 public void Disable()
 {
     enabled = false;
     timer.Stop();
     if (repeatablePattern != null)
     {
         repeatablePattern.Stop();
     }
     repeatablePattern = null;
 }
Exemplo n.º 4
0
 private void PlayVibraion()
 {
     if (useRepeatablePattern)
     {
         lastStamina = currentStamina / maxStamina;
         //IPattern newPattern = Utils.STAMINA_PATTERN_STUDY_2(currentStamina);
         IPattern newPattern = Utils.HEALT_PATTERN_2(currentStamina);
         if (repeatablePattern == null || !repeatablePattern.IsRepeating())
         {
             repeatablePattern = new RepeatablePattern(newPattern);
             Main.vibrationDevice.PlayPattern(repeatablePattern);
         }
         else
         {
             repeatablePattern.UpdatePattern(newPattern);
         }
     }
     else
     {
         if (Environment.TickCount > lastNotification + 3000)
         {
             double change    = GetStaminaChangePerSecond(1500);
             double pctChange = GetStaminaPercentageChangePerSecond(1500);
             if (pctChange < 0)
             {
                 //stamina drain
                 if (Math.Abs(WALK_STAMINA_CHANGE_PER_SECOND - Math.Abs(change)) < WALK_STAMINA_CHANGE_PER_SECOND * 0.3)
                 {
                     //walking
                 }
                 else if (Math.Abs(SPRINT_STAMINA_CHANGE_PER_SECOND - Math.Abs(change)) < SPRINT_STAMINA_CHANGE_PER_SECOND * 0.3)
                 {
                     //sprinting
                     lastNotification = Environment.TickCount;
                     Main.vibrationDevice.PlayPattern(Utils.STAMINA_PATTERN_5(-1));
                 }
             }
             else
             {
                 //stamina regeneration or no change
                 if (Math.Abs(STAND_STAMINA_PERCENTAGE_CHANGE_PER_SECOND - Math.Abs(pctChange)) < STAND_STAMINA_PERCENTAGE_CHANGE_PER_SECOND * 0.3)
                 {
                     //regeneration
                     lastNotification = Environment.TickCount;
                     Main.vibrationDevice.PlayPattern(Utils.STAMINA_PATTERN_5(1));
                 }
             }
         }
     }
 }
Exemplo n.º 5
0
        private void UpdateStaminaPattern(String selection, double stamina, double staminaChange, int vibrationDuration)
        {
            IPattern newPattern = null;

            switch (selection)
            {
            case "Pattern Study 2":
                newPattern            = new RepeatablePattern(Utils.STAMINA_PATTERN_STUDY_2(stamina));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 1":
                newPattern            = new RepeatablePattern(Utils.STAMINA_PATTERN_1(stamina));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 2":
                newPattern            = new RepeatablePattern(Utils.STAMINA_PATTERN_2(staminaChange));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 3":
                newPattern            = new RepeatablePattern(Utils.STAMINA_PATTERN_3(staminaChange));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 4":
                newPattern            = new RepeatablePattern(Utils.STAMINA_PATTERN_4(staminaChange));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 5":
                newPattern            = new RepeatablePattern(Utils.STAMINA_PATTERN_5(staminaChange));
                numberOfGroupsForTest = -1;
                break;

            default:
                break;
            }
            if (newPattern != null)
            {
                nextStaminaTime = Environment.TickCount + (long)numericUpDown7.Value;
                bool result = PlayPattern(staminaPattern, newPattern);
                if (!result)
                {
                    staminaPattern = newPattern;
                }
            }
        }
Exemplo n.º 6
0
        public EasyGridPatternGenerator(RepeatablePattern pattern, TimeSpan duration)
        {
            _pattern = pattern;

            Duration = duration;
        }
Exemplo n.º 7
0
 public RepeatPattern(RepeatablePattern pattern, long endTime)
 {
     this.pattern = pattern;
     this.endTime = endTime;
 }
Exemplo n.º 8
0
        private void UpdateHealthPattern(String selection, double health, int vibrationDuration)
        {
            IPattern newPattern = null;

            switch (selection)
            {
            case "Pattern 1":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_1(health, vibrationDuration));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 1b":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_1b(health, vibrationDuration));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 1c":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_1c(health));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 1d":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_1d(health, vibrationDuration));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 2":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_2(health));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 2b":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_2b(health));
                numberOfGroupsForTest = -1;
                break;

            case "Pattern 3":
                newPattern            = new RepeatablePattern(Utils.HEALT_PATTERN_3(health, Utils.HEALT_PATTERN_1(health, vibrationDuration)));
                numberOfGroupsForTest = -1;
                break;

            case "Test Motor 1":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(1, health));
                break;

            case "Test Motor 2":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(2, health));
                break;

            case "Test Motor 3":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(3, health));
                break;

            case "Test Motor 4":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(4, health));
                break;

            case "Test Motor 5":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(5, health));
                break;

            case "Test Motor 6":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(6, health));
                break;

            case "Test Motor 7":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(7, health));
                break;

            case "Test Motor 8":
                newPattern = new RepeatablePattern(Utils.HEALTH_PATTERN_MOTOR(8, health));
                break;

            default:
                break;
            }
            if (newPattern != null)
            {
                nextHealthTime = Environment.TickCount + (long)numericUpDown4.Value;
                bool result = PlayPattern(healthPattern, newPattern);
                if (!result)
                {
                    healthPattern = newPattern;
                }
            }
        }
Exemplo n.º 9
0
 private void ResetPattern()
 {
     repeatablePattern = new RepeatablePattern(DEFAULT_PATTERN);
 }