Пример #1
0
 public SoundViewModel(Sound sound, string path)
 {
     _resumeSpot = TimeSpan.Zero;
     _sound = sound;
     Path = new Uri(path);
     IsPaused = false;
     _sound.NotifySetVolume += (volumeLeft, volumeRight) =>
                                   {
                                       VolumeLeft = volumeLeft;
                                       VolumeRight = volumeRight;
                                   };
     _sound.NotifyPlaySound += (left, right, loops) =>
                                   {
                                       VolumeLeft = left;
                                       VolumeRight = right;
                                       NotifyPlay();
                                   };
     _sound.NotifyPauseSound += () =>
                                    {
                                        IsPaused = true;
                                        NotifyPause();
                                        _resumeSpot = Position;
                                    };
     _sound.NotifyResumeSound += () =>
     {
         IsPaused = false;
         NotifyResume();
     };
     SetPosition = new ActionCommand(RestoreResumeSpot);
 }
Пример #2
0
        public Sound CreateSound(string soundName)
        {
            if (_soundNames.Contains(soundName))
            {
                var newSound = new Sound(soundName);
                NotifyNewSound(newSound);
                return newSound;
            }

            throw new ArgumentException("No Sound object with name " + soundName);
        }
 public override void Tick()
 {
     foreach (var c in CubeSet)
       {
       var num = c.Neighbors.Count;
       switch (num)
       {
           case 0:
               c.FillScreen(Color.Black);
               if (_fourSound != null && !_fourSound.IsPaused)
               {
                   _fourSound.Pause();
               }
               break;
           case 1:
               c.FillScreen(new Color(255, 0, 0)); // red
               break;
           case 2:
               c.FillScreen(new Color(255, 255, 0)); // yellow
               break;
           case 3:
               c.FillScreen(new Color(0, 0, 255)); // blue
               break;
           case 4:
               c.FillScreen(new Color(0, 255, 0)); // green
               if (_fourSound == null)
               {
                   _fourSound = Sounds.CreateSound("scoobydoo.mp3");
                   _fourSound.Play((float) 0.75);
               } else if (_fourSound.IsPaused)
               {
                   _fourSound.Resume();
               }
               break;
       }
       var rand = new Random();
       c.FillRect(new Color(rand.Next(256), rand.Next(256), rand.Next(256)), 50, 50, 50, 50);
       c.Paint();
       }
 }
Пример #4
0
        private void OnNeighborAdd(Cube cube1, Cube.Side side1, Cube cube2, Cube.Side side2)
        {
            Log.Debug("Neighbor add: {0}.{1} <-> {2}.{3}", cube1.UniqueId, side1, cube2.UniqueId, side2);

              CubeWrapper wrapper1 = (CubeWrapper)cube1.userData;
              CubeWrapper wrapper2 = (CubeWrapper)cube2.userData;

              if (wrapper1 != null && wrapper2 != null) {
            if ((wrapper1.mType == CubeType.SELECTOR && wrapper2.mType == CubeType.SELECTABLE) || (wrapper2.mType == CubeType.SELECTOR && wrapper1.mType == CubeType.SELECTABLE)) {
              Cube.Side selectorSide;
              Cube.Side selectableSide;
              CubeWrapper selectorWrapper;
              CubeWrapper selectableWrapper;

              if (wrapper1.mType == CubeType.SELECTOR) {
            selectorSide = side1;
            selectableSide = side2;
            selectorWrapper = wrapper1;
            selectableWrapper = wrapper2;
              }

              else {
            selectorSide = side2;
            selectableSide = side1;
            selectorWrapper = wrapper2;
            selectableWrapper = wrapper1;
              }

              if (selectorSide == Cube.Side.BOTTOM) {
            switch (currentPhase) {
                        case (PhaseType.MODESELECT):
                            if (selectableSide == Cube.Side.TOP) {
                                currentMode = GameModes.FREELIB;
                                currentPhase = PhaseType.NAMESELECT;
                                readyToChangeState = true;
                            }
                            else if (selectableSide == Cube.Side.BOTTOM) {
                                currentMode = GameModes.FREETHEME;
                                currentPhase = PhaseType.NAMESELECT;
                                readyToChangeState = true;
                            }

                            break;

                        case (PhaseType.NAMESELECT):

                            currentPlayer = nameSelector(selectableSide, selectableWrapper);
                            currentPhase = PhaseType.THEMESELECT;
                            readyToChangeState = true;
                            break;

                        case (PhaseType.BEATSELECT):

                            string sample = beatSelector(selectableSide, selectableWrapper);
                            sampleMusic = Sounds.CreateSound(sample);

                            if (mMusic.IsPlaying) mMusic.Pause();

                            sampleMusic.Play(1, -1);
                            currentPhase = PhaseType.BEATSELECT2;
                            readyToChangeState = true;
                            break;

                        case (PhaseType.THEMESELECT):

                            currentTheme = themeSelector(selectableSide, selectableWrapper);
                            currentPhase = PhaseType.BEATSELECT;
                            readyToChangeState = true;
                            break;

                        default:
                            break;

            }
             	  }
            }
              }
        }
Пример #5
0
        public override void Tick()
        {
            ticks++;
              if (ticks > 9999 && ticksWaiting < ticks) {
              ticks = 0;
              }

              // if phase has been switched, perform behavior for updating to new phase

              if (readyToChangeState) {
            switch (currentPhase) {
              		case (PhaseType.MODESELECT):
                    break;
                case (PhaseType.NAMESELECT):
                    currentVerseIndex = 0;
                    readyToChangeState = false;

                    fxMusic = Sounds.CreateSound("name");
                    if (mMusic.IsPlaying) {
                        mMusic.SetVolume((float).5);
                    }

                    fxMusic.Play(1,1);

                    mWrappers[0].mImage = "nameSelect";
                    mWrappers[0].mType = CubeType.SELECTABLE;
                    mWrappers[0].mCubeName = CubeName.NAMES1;

                    mWrappers[1].mImage = "nameSelect2";
                    mWrappers[1].mType = CubeType.SELECTABLE;
                    mWrappers[1].mCubeName = CubeName.NAMES2;

                    mWrappers[2].mImage = "selector";
                    mWrappers[2].mType = CubeType.SELECTOR;
                    mWrappers[2].mCubeName = CubeName.SELECTOR;

                    foreach (CubeWrapper wrapper in mWrappers) {
                      wrapper.textOrImage = DisplayType.IMAGE;
                      wrapper.DrawSlide();
                    }
                    break;

                case (PhaseType.BEATSELECT):
                    if (sampleMusic != null && sampleMusic.IsPlaying)
                       sampleMusic.Stop();
                    mWrappers[0].mImage = "beatSelect";
                    mWrappers[0].mType = CubeType.SELECTABLE;
                    mWrappers[0].mCubeName = CubeName.BEAT1;
                    mWrappers[1].mImage = "beatSelect2";
                    mWrappers[1].mType = CubeType.SELECTABLE;
                    mWrappers[1].mCubeName = CubeName.BEAT2;
                    mWrappers[2].mImage = "selector";
                    mWrappers[2].mType = CubeType.SELECTOR;
                    mWrappers[2].mCubeName = CubeName.SELECTOR;
                    readyToChangeState = false;
                    foreach (CubeWrapper wrapper in mWrappers) {
                      wrapper.textOrImage = DisplayType.IMAGE;
                      wrapper.DrawSlide();
                    }
                    break;

                case (PhaseType.BEATSELECT2):
                    foreach (CubeWrapper wrapper in mWrappers) {
                      if (wrapper.mCubeName == CubeName.SELECTOR) {
                            wrapper.mImage = "continue";
                            wrapper.DrawSlide();
                       }
                     }
                     readyToChangeState = false;
                     break;

                case (PhaseType.THEMESELECT):
                    mWrappers[0].mImage = "themeSelect";
                    mWrappers[0].mType = CubeType.SELECTABLE;
                    mWrappers[0].mCubeName = CubeName.THEMES1;
                    mWrappers[1].mImage = "themeSelect2";
                    mWrappers[1].mType = CubeType.SELECTABLE;
                    mWrappers[1].mCubeName = CubeName.THEMES2;
                    mWrappers[2].mImage = "selector";
                    mWrappers[2].mType = CubeType.SELECTOR;
                    mWrappers[2].mCubeName = CubeName.SELECTOR;
                    readyToChangeState = false;
                    fxMusic = Sounds.CreateSound("theme");
                    fxMusic.Play(1, 1);

                    foreach (CubeWrapper wrapper in mWrappers) {
                      wrapper.DrawSlide();
                    }
                    break;
                    // do sound fx

                case (PhaseType.RAPSTART1):
                    mWrappers[0].mImage = "dis";
                    mWrappers[0].mType = CubeType.NONE;
                    mWrappers[0].mCubeName = CubeName.DIS;
                    mWrappers[1].mImage = "dis";
                    mWrappers[1].mType = CubeType.NONE;
                    mWrappers[1].mCubeName = CubeName.DIS;
                    mWrappers[2].mImage = "continue";
                    mWrappers[2].mType = CubeType.NONE;
                    mWrappers[2].mCubeName = CubeName.MIC;
                    readyToChangeState = false;
                    fxMusic = Sounds.CreateSound("micdis");
                    fxMusic.Play(1, 1);

                    foreach (CubeWrapper wrapper in mWrappers) {
                      wrapper.DrawSlide();
                    }

                    verseLines = initializeVerseLines();

                    break;
                    // do sound fx

                case (PhaseType.RAPSTART2):
                    mWrappers[2].mImage = "3";
                    mWrappers[2].DrawSlide();
                    ticksWaiting = ticks + 20;
                    readyToChangeState = true;
                    currentPhase = PhaseType.RAPSTART3;
                    break;

                    // do sound fx

                case (PhaseType.RAPSTART3):
                    if (ticks == ticksWaiting) {
                        mWrappers[2].mImage = "2";
                        mWrappers[2].DrawSlide();
                        ticksWaiting = ticks + 20;
                        readyToChangeState = true;
                        currentPhase = PhaseType.RAPSTART4;
                    }
                    break;
                    // do sound fx

                case (PhaseType.RAPSTART4):
                    if (ticks == ticksWaiting) {
                        mWrappers[2].mImage = "1";
                        mWrappers[2].DrawSlide();
                        ticksWaiting = ticks + 20;
                        readyToChangeState = true;
                        currentPhase = PhaseType.RAPSTART5;
                    }
                    break;
                    // do sound fx

                case (PhaseType.RAPSTART5):
                    if (ticks == ticksWaiting) {
                        mWrappers[2].mImage = "go";
                        mWrappers[2].DrawSlide();
                        ticksWaiting = ticks + 20;
                        readyToChangeState = true;
                        currentPhase = PhaseType.LYRICS;
                    }
                    break;

                case (PhaseType.LYRICS):
                    if (ticks == ticksWaiting) {
              					mMusic.Play(1, -1);
                        readyToChangeState = false;

                        foreach (CubeWrapper wrapper in mWrappers) {
                            wrapper.textOrImage = DisplayType.TEXT;
                            string newText = verseLines[currentVerseIndex];
                            wrapper.mText.setText(newText);
                            wrapper.DrawSlide();
                        }
                    }
                    break;

                case (PhaseType.DOUBLEDIS):
                    foreach (CubeWrapper wrapper in mWrappers) {
                        if ((wrapper.mCubeName == CubeName.JUSTDISSED) || (wrapper.mCubeName == CubeName.MIC)) {
                            wrapper.mImage = "dis";
                            wrapper.textOrImage = DisplayType.IMAGE;
                        }
                        else if (wrapper.mCubeName == CubeName.DIS) {
                            wrapper.mImage = "doubledis";
                            wrapper.textOrImage = DisplayType.IMAGE;
                        }
                        wrapper.DrawSlide();
                    }
                    readyToChangeState = false;
                    break;

                case (PhaseType.ENDOFRAP):
                        mWrappers[0].mImage = "max";
                        mWrappers[1].mImage = "nice";
                        mWrappers[2].mImage = "continue";

                        foreach (CubeWrapper wrapper in mWrappers) {
                            wrapper.textOrImage = DisplayType.IMAGE;
                            wrapper.DrawSlide();
                        }
                        readyToChangeState = false;
                        break;

                case (PhaseType.TRIVIA1):

                    fxMusic = Sounds.CreateSound("trivia");
                    fxMusic.Play(1, 1);

                    foreach (CubeWrapper wrapper in mWrappers) {
                      if (wrapper.mCubeName == CubeName.MIC) {
                            wrapper.mCubeName = CubeName.DEFENDER;
                            wrapper.textOrImage = DisplayType.IMAGE;
                            wrapper.mImage = "buzzwer";
                      }
                      else if (wrapper.mCubeName == CubeName.JUSTDISSED) {
                            wrapper.mCubeName = CubeName.CHALLENGER;
                            wrapper.textOrImage = DisplayType.IMAGE;
                            wrapper.mImage = "buzzwer";
                      }
                      else if (wrapper.mCubeName == CubeName.DIS) {
                            wrapper.mCubeName = CubeName.QUESTION;
                            wrapper.textOrImage = DisplayType.TEXT;
                            wrapper.mText.setText(triviaQuestions[triviaIndex]);
                      }
                      wrapper.DrawSlide();
                      readyToChangeState = false;
                    }
                    break;

                case (PhaseType.TRIVIA2):
                    foreach (CubeWrapper wrapper in mWrappers) {
                        if (wrapper.mCubeName == buzzer) {
                            wrapper.mImage = "buzzerWin";
                        }
                        else if (wrapper.mCubeName == CubeName.QUESTION) {
                            wrapper.mCubeName = CubeName.ANSWER;
                            wrapper.mText.setText(triviaAnswers[triviaIndex]);
                        }
                        else { // must be the one that didn't buzz in
                            wrapper.mImage = "buzzerLose";
                        }

                        readyToChangeState = false;
                        wrapper.DrawSlide();

                    }
                    triviaIndex++;
                    break;

                case (PhaseType.TRIVIA3):
                    foreach (CubeWrapper wrapper in mWrappers) {
                        if (wrapper.mCubeName == CubeName.ANSWER) {
                            wrapper.textOrImage = DisplayType.IMAGE;
                            wrapper.mImage = "pressorshake";
                            wrapper.DrawSlide();
                            readyToChangeState = false;
                        }
                    }
                    break;

                case (PhaseType.SCORES):
                    mWrappers[0].textOrImage = DisplayType.TEXT;
                    mWrappers[1].textOrImage = DisplayType.TEXT;
                    mWrappers[2].textOrImage = DisplayType.IMAGE;
                    mWrappers[2].mImage = "continue";
                    mWrappers[2].DrawSlide();
                    string scoreText = makeScoreString();
                    mWrappers[1].mText.setText(scoreText);
                    mWrappers[0].mText.setText("LOOK AT,YOUR SCORE");
                    mWrappers[0].DrawSlide();
                    mWrappers[1].DrawSlide();
                    break;

                default:
                    break;
                }
              }

              else if (ticks == ticksWaiting) {
            switch (currentPhase) {
                case (PhaseType.DOUBLEDIS):
                        currentPhase = PhaseType.TRIVIA1;
                        readyToChangeState = true;
                        break;
                // add in the RapStart part
                default:
                    break;
            }
              }
        }
Пример #6
0
        // called during intitialization, before the game has started to run
        public override void Setup()
        {
            Log.Debug("Setup()");

              currentCubes = this.CubeSet.toArray();
              currentVerseIndex = 0;
              mMusic = Sounds.CreateSound("intro");
              mMusic.Play(1, -1);

              CubeWrapper wrapper1 = new CubeWrapper(this, currentCubes[0]);
              wrapper1.mImage = "freeStyle";
              wrapper1.textOrImage = DisplayType.IMAGE;
              mWrappers.Add(wrapper1);

              CubeWrapper wrapper2 = new CubeWrapper(this, currentCubes[1]);
              wrapper2.mImage = "modeSelect";
              wrapper2.textOrImage = DisplayType.IMAGE;
              wrapper2.mType = CubeType.SELECTABLE;
              mWrappers.Add(wrapper2);

              CubeWrapper wrapper3 = new CubeWrapper(this, currentCubes[2]);
              wrapper3.mImage = "selector";
              wrapper3.textOrImage = DisplayType.IMAGE;
              wrapper3.mType = CubeType.SELECTOR;
              mWrappers.Add(wrapper3);

              foreach (CubeWrapper wrapper in mWrappers) {
            wrapper.DrawSlide();
              }

              CubeSet.NeighborAddEvent += OnNeighborAdd;
              CubeSet.NeighborRemoveEvent += OnNeighborRemove;
        }
Пример #7
0
        // ### Sound ###
        // This method starts or stops the appropriate sounds depending on the
        // results of the search in CheckNeighbors.
        private void CheckSound(bool isCorrectlyNeighbored)
        {
            // If the cubes are lined up correctly, stop the music and play a sound
            // effect.
            if (isCorrectlyNeighbored) {

                if (mMusic != null) {
                    // Stop the music if it is currently playing.
                    if (mMusic.IsPlaying) {
                        mMusic.Stop ();
                    }
                    mMusic = null;

                    // To play a one-shot sound effect, just create a sound object and
                    // call its Play method.
                    //
                    // The audio system will clean up the sound object after it is done,
                    // so we don't have to hold on to a handle.
                    Sound s = Sounds.CreateSound ("gliss");
                    s.Play (1);
                }

            } else {
                if (mMusic == null) {

                    // To play a looping sound effect or music track, create the sound
                    // object and call its Play method with the extra argument to tell it
                    // to loop.
                    //
                    // We hold on to the sound object after we play it so that we can
                    // stop it later.

                    mMusic = Sounds.CreateSound ("music");

                    mMusic.Play (1, 1);

                }
            }
        }