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); }
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(); } }
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; } } } } }
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; } } }
// 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; }
// ### 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); } } }