public override void LoadContent() { MyGame.Manager.SpriteManager.SmallTarget.SetHomeSpot(); base.LoadContent(); MyGame.Manager.IconManager.UpdateFireIcon(0); MyGame.Manager.RenderManager.SetGridDelay(MyGame.Manager.LevelManager.LevelConfigData.GridDelay); Byte scoreKills = MyGame.Manager.ScoreManager.ScoreKills; Byte enemyTotal = MyGame.Manager.EnemyManager.EnemyTotal; Byte hitRatio = (Byte)(scoreKills / (Single)enemyTotal * 100); hitRatioText = hitRatio.ToString().PadLeft(3, '0'); hitRatioText += Globalize.PERCENTAGE; deltaX = homeSpot.X - MyGame.Manager.SpriteManager.LargeTarget.Position.X; deltaY = homeSpot.Y - MyGame.Manager.SpriteManager.LargeTarget.Position.Y; timer1 = 0; timer2 = 0; timer3 = 0; Flag2 = true; flag = false; flag3 = false; finishState = FinishState.PauseSml; }
void Awake() { startState = new StartState(this); inLapState = new InLapState(this); finishState = new FinishState(this); ; }
void Awake() { startState = new StartState(this); inLapState = new InLapState(this); finishState = new FinishState(this); ; }
void ShowAlert (FinishState finishState) { InvokeOnMainThread (() => { var alert = new NSAlert (); switch (finishState) { case FinishState.NothingToDo: alert.MessageText = "Up-to-date"; alert.InformativeText = "Your MonoTouch documentation is already based on the latest version of the Apple documentation"; break; case FinishState.Processed: alert.MessageText = "Success"; alert.InformativeText = "Your MonoTouch documentation was successfully updated"; break; case FinishState.Canceled: alert.MessageText = "Canceled"; alert.InformativeText = "The update operation was canceled"; break; case FinishState.Error: alert.MessageText = "An error occured"; alert.InformativeText = "A fatal error occured during one of the documentation installer step"; break; } alert.RunModal (); NSApplication.SharedApplication.Terminate (this); }); }
/// <summary> /// 执行步骤 /// </summary> private static void ExecuteStep() { NTP request = null; switch (CurrentExecuteState) { case ExecuteState.SetInvalidType: //获取控制器类型 request = NTPBuildRequest.GetControllerTypeRequest(); SendCommand(request); break; case ExecuteState.SetOver: //单步完成 发送 发送完毕 指令 request = NTPBuildRequest.GetSendOverRequest(); SendCommand(request); break; case ExecuteState.SetState: //发送请求指令 如果没有请求 结束 if (CurrentNTPList != null && CurrentNTPList.Count > 0) { request = CurrentNTPList[0]; SendCommand(request); } else { CurrentFinishState = FinishState.Succeessed; CurrentExecuteState = ExecuteState.Untreated; } break; } }
/// <summary> /// Default constructor. /// </summary> /// <param name="position"> Location in game.</param> /// <param name="level"> Level object.</param> /// <param name="content"> Content manager object.</param> public FinishLine(Vector2 position, Level level, ContentManager content) : base(position, 32, 64, level) { Sprite = new MonoSprite(content.Load <Texture2D>("Images/Finish"), new Rectangle(0, 0, Width, Height), position, Width, Height); _state = FinishState.OPEN; // Add finishing animation Animations.Add(new Animation( id: (int)FinishState.OPEN, baseFrame: Vector2.Zero, frameSize: new Vector2(Width, Height), rows: 1, columns: 4, msPerFrame: 150 )); Animations.Add(new Animation( id: (int)FinishState.CLOSED, baseFrame: new Vector2(0, 64), frameSize: new Vector2(Width, Height), rows: 1, columns: 4, msPerFrame: 150 )); Padding = new Vector2(8, 3); Solid = false; Animations.Play((int)_state); }
void ShowAlert (FinishState finishState) { InvokeOnMainThread (() => { var alert = new NSAlert (); switch (finishState) { case FinishState.NothingToDo: alert.MessageText = "Up to date"; alert.InformativeText = "Your MonoTouch documentation is already based on the latest Apple documentation."; break; case FinishState.Processed: alert.MessageText = "Success"; alert.InformativeText = "Your MonoTouch documentation was successfully merged with the latest Apple documentation."; break; case FinishState.Canceled: alert.MessageText = "Cancelled"; alert.InformativeText = "The update operation was cancelled."; break; case FinishState.Error: alert.MessageText = "An error occurred"; alert.InformativeText = "A fatal error occurred during one of the merge steps. Please report it."; break; case FinishState.NotAdmin: alert.MessageText = "Not enough rights"; alert.InformativeText = "You need to be an administrator to use this tool."; break; } alert.RunModal (); NSApplication.SharedApplication.Terminate (this); }); }
/// <summary> /// Function gets called when a collision with this object occurs. /// </summary> /// <param name="ent"> Entity this object collides with.</param> /// <param name="penetration"> Amount of penetration.</param> /// <param name="side"> The side the objects collide on.</param> /// <param name="axis"> The axis that is being checked.</param> /// <param name="fromBounds"> Where the colliding entity came from.</param> public override void OnCollision(Entity ent, int penetration, CollisionTester.CollisionSide side, CollisionTester.Axis axis, Rectangle fromBounds) { if (ent is Player && _state == FinishState.OPEN) { _state = FinishState.CLOSED; Animations.Play((int)_state); OnClosed?.Invoke(this, new EventArgs()); } }
public void OnLose() { CurrentState = State.Finished; CurrentFinishState = FinishState.Lose; if (TimerView != null) TimerView.UpdateView(); if (OnFinishCallBack != null) { OnFinishCallBack(this); } }
/// <summary> /// 执行获取任务 /// </summary> /// <param name="type">控制器类型</param> /// <returns>NTP协议列表</returns> public static List <NTP> ExecuteGetTask(ControllerType type) { List <NTP> list = new List <NTP>(); try { logger.Debug("Start task to get!"); lock (SerialLocker) { if (CurrentExecuteState != ExecuteState.Untreated) { return(null); } CurrentContrllerType = type; CurrentNTPList = new List <NTP>(); CurrentExecuteState = ExecuteState.GetInvalidType; } while (true) { Thread.Sleep(100); lock (SerialLocker) { if (CurrentFinishState == FinishState.Succeessed) { logger.Debug("Successed"); list = CurrentNTPList; CurrentNTPList = null; CurrentFinishState = FinishState.Unfinished; break; } else if (CurrentFinishState == FinishState.Failed) { logger.Error("Failed"); list = null; CurrentNTPList = null; CurrentFinishState = FinishState.Unfinished; break; } } } } catch (Exception ex) { logger.Error(ex.Message, ex); } return(list); }
public void OnUnityAdsFinish(string p0, FinishState p1) { // Implement functionality for a user finishing an ad. if (p1 == FinishState.Completed) { // Reward the user for watching the ad to completion. } else if (p1 == FinishState.Skipped) { // Do not reward the user for skipping the ad. } else if (p1 == FinishState.Error) { // Log an error. } }
/// <summary> /// 执行设置任务 /// </summary> /// <param name="list">NTP协议列表</param> /// <param name="type">控制器类型</param> /// <returns>是否成功</returns> public static bool ExecuteSetTask(List <NTP> list, ControllerType type) { bool resutl = false; try { logger.Debug("Start task to set!"); lock (SerialLocker) { if (CurrentExecuteState != ExecuteState.Untreated) { return(false); } CurrentContrllerType = type; CurrentNTPList = list; CurrentExecuteState = ExecuteState.SetInvalidType; } while (true) { Thread.Sleep(100); lock (SerialLocker) { if (CurrentFinishState == FinishState.Succeessed) { logger.Debug("successed"); resutl = true; CurrentFinishState = FinishState.Unfinished; break; } else if (CurrentFinishState == FinishState.Failed) { logger.Error("failed"); resutl = false; CurrentFinishState = FinishState.Unfinished; break; } } } } catch (Exception ex) { logger.Error(ex.Message, ex); } return(resutl); }
/// <summary> /// Get the time adjustment for Survival mode /// </summary> /// <param name="answered"></param> /// <remarks>It is intended to have a slowly decreasing return as you play, to increase difficulty</remarks> /// <returns></returns> public float GetTimeAdjustmentForSurvival(FinishState answered, int round) { float adjustment = 0f; // based on the max rounds, we want to adjust the falloff such that // by the time the target round is reached, no time is being added. At that point // they are on skill and combos alone. var falloff = ((float)round / (float)Rounds) * BaseRecoverySeconds; adjustment = BaseRecoverySeconds - falloff; if (answered == FinishState.Right) { } else if (answered == FinishState.Wrong) { adjustment *= -.5f; // cut them some slack for messing up ? } // Debug.LogFormat("round {0} survival adjustment time: {1}", round, adjustment); return(adjustment); }
public void Finish(FinishState state) { switch (state) { case FinishState.Win: _wallet += amounts.x; break; case FinishState.HalfWin: _wallet += amounts.y; break; case FinishState.Lose: _wallet -= amounts.z; break; } if (OnFinish != null) { OnFinish(state); } }
void ShowAlert(FinishState finishState) { InvokeOnMainThread(() => { var alert = new NSAlert(); switch (finishState) { case FinishState.NothingToDo: alert.MessageText = "Up to date"; alert.InformativeText = "Your MonoTouch documentation is already based on the latest Apple documentation."; break; case FinishState.Processed: alert.MessageText = "Success"; alert.InformativeText = "Your MonoTouch documentation was successfully merged with the latest Apple documentation."; break; case FinishState.Canceled: alert.MessageText = "Cancelled"; alert.InformativeText = "The update operation was cancelled."; break; case FinishState.Error: alert.MessageText = "An error occurred"; alert.InformativeText = "A fatal error occurred during one of the merge steps. Please report it."; break; case FinishState.NotAdmin: alert.MessageText = "Not enough rights"; alert.InformativeText = "You need to be an administrator to use this tool."; break; } alert.RunModal(); NSApplication.SharedApplication.Terminate(this); }); }
/// <summary> /// 执行设置指令 /// </summary> private static void ExecuteSet(NTP ntp) { switch (ntp.PState) { case NTPState.Successed: switch (CurrentExecuteState) { case ExecuteState.SetState: //移除已经发送的指令 等待巡检 发送 发送完毕 CurrentExecuteState = ExecuteState.SetOver; break; case ExecuteState.SetOver: //等待巡检 发送下一条指令 if (CurrentNTPList != null && CurrentNTPList.Count > 0) { CurrentNTPList.RemoveAt(0); } if (CurrentNTPList != null && CurrentNTPList.Count > 0) { CurrentExecuteState = ExecuteState.SetState; } else { CurrentFinishState = FinishState.Succeessed; CurrentExecuteState = ExecuteState.Untreated; } break; } break; case NTPState.Failed: if (ErrorMaxCount <= 0) //暂未使用 { CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Failed; logger.Error("控制器验证错误数量太多!"); } break; case NTPState.Normal: switch (ntp.Command) { case CommandType.MachineTypeResponose: //控制器类型 if (CheckIsValidType(ntp)) { logger.Debug("machine type matched!"); CurrentExecuteState = ExecuteState.SetState; NTP request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); } else { CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Failed; logger.Error("machine type unmatched!"); } break; case CommandType.Patrol: //巡检 ExecuteStep(); break; } break; } }
/// <summary> /// 执行获取指令 /// </summary> private static void ExecuteGet(NTP ntp) { NTP request = null; switch (ntp.PState) { case NTPState.Successed: case NTPState.Failed: break; case NTPState.Normal: switch (ntp.Command) { case CommandType.MachineTypeResponose: //控制器类型 if (CheckIsValidType(ntp)) { logger.Debug("machine type matched!"); CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); } else { CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Failed; logger.Error("machine type unmatched!"); } break; case CommandType.Patrol: //巡检 break; case CommandType.Ready: //准备发送 logger.Debug("ready!"); CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.DeviceUp: //器件设置 logger.Debug("device up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.StandardUp: //标准组态 logger.Debug("Standard up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.MixedUp: //混合组态 logger.Debug("Mixed up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.GeneralUp: //通用组态 logger.Debug("General up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.ManualUp: //手控盘 logger.Debug("Manual up!"); if (CurrentNTPList != null) { CurrentNTPList.Add(ntp); } CurrentExecuteState = ExecuteState.GetState; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; case CommandType.Over: //发送完毕 case CommandType.Over8003: logger.Debug("Get over!"); CurrentExecuteState = ExecuteState.Untreated; CurrentFinishState = FinishState.Succeessed; request = NTPBuildRequest.GetConfirmRequest(true); SendCommand(request); break; } break; } }
public void Finished(FinishState FS, Sprite script) { LevelSelect.lSelect.loadStagedata(); Sprite keepPlaying = restart; //set a boolean to switch off any remaining actions itsoverman = true; StopCoroutine(dropScore()); //stop bullets from moving gameSpeed = 0; scrollbar.onValueChanged.RemoveListener(scrollbarCallBack); switch (FS) { //the player wins! case FinishState.ALIVE: //Have we already beat this level? if (thisLevel.complete == true) { keepPlaying = restart; //did we get a new highscore? if (thisLevel.score < levelScore) { //set our new level score switch to true NLS.SetActive(true); //calculate the new score int dif = levelScore - thisLevel.score; thisLevel.score = levelScore; if (GameControl.control.stagedata[GameControl.control.Stage].phases[thisLevel.phase].completed) { StartCoroutine(scoreup(dif)); } //GameControl.control.stagedata[GameControl.control.Stage].score += dif; } //make the button click load the same level GameControl.control.leveltoLoad = thisLevel; } //did we beat a new level? else { //set our new level score switch to true NLS.SetActive(true); //set the save data to load this level as complete GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].levels[thisLevel.number % 5].complete = true; //make the button click load the next level keepPlaying = nextLevl; //are there more levels in the phase? if (LevelSelect.lSelect.inactivebuttons.Count != 0) { //calculate the new score thisLevel.score = levelScore; //if we decided we are going to genereate the next level GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].levels[thisLevel.number % 5].complete = true; //set the highest reached level reference to the number of the next level./ GameControl.control.stagedata[GameControl.control.Stage].highestReachedLevel = nextLevel().number; //add a button to the phase LevelSelect.lSelect.AddButton(nextLevel()); //make the button click load the next level GameControl.control.leveltoLoad = nextLevel(); } //is the phase complete? else { //calculate the new score thisLevel.score = levelScore; //set the save data to load this phase as complete GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].completed = true; //are there still phases in the stage? if (GameControl.control.phasenum + 1 < LevelSelect.lSelect.phase[GameControl.control.Stage].intArray.Length) { getphasescore(); StartCoroutine(scoreup(GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].score)); //change the phase num to reference the next phase GameControl.control.phasenum++; //check if achievements were unlocked LevelSelect.lSelect.achUn = true; // LevelSelect.lSelect.unlockAchievement(GameControl.control.stagedata[GameControl.control.Stage].score); //set the next level number as the highest reached level. GameControl.control.stagedata[GameControl.control.Stage].highestReachedLevel++; //add a new instance of a phase to the stage LevelSelect.lSelect.addPhase(GameControl.control.phasenum, GameControl.control.Stage, true); //make the button click load the next level GameControl.control.leveltoLoad = nextLevel(); //add a new button to the phase. LevelSelect.lSelect.AddButton(GameControl.control.leveltoLoad); } //did we complete the stage? else { //change the Stage num to reference the next stage. GameControl.control.Stage++; // GameControl.control.leveltoLoad = nextLevel(); newstage = true; } } } break; //end the operation //the player died but still has lives. case FinishState.DEAD: //set the button to restart button graphic keepPlaying = restart; //if this was not an old level if (!thisLevel.complete) { // did the player have a key? if (GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].keyLevel == thisLevel.number) { //well, not anymore. GameControl.control.key = false; } //lose a life too. GameControl.control.lives--; } else // if this was an old level { if (thisLevel.number == GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].levels[4].number) { //make sure the doors unlocked GameControl.control.key = true; } } //make the button click load the same level GameControl.control.leveltoLoad = thisLevel; break; //the player died and has no lives case FinishState.GAMEOVER: //the player didnt complete this level if (!thisLevel.complete) { //the probelm here is I need to set the Buttons back to the disabled queue //take away all the progress of the current stage. //make the highest reached level the last level of the previous phase. GameControl.control.stagedata[GameControl.control.Stage].highestReachedLevel -= (4 - LevelSelect.lSelect.inactivebuttons.Count); // erase all memory of the current phase GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].levels.Clear(); //just completely removin the thing. better check into this line of code................................... GameControl.control.stagedata[GameControl.control.Stage].phases.RemoveAt(GameControl.control.phasenum); //add a new instance of a phase to the stage LevelSelect.lSelect.addPhase(GameControl.control.phasenum, GameControl.control.Stage, true); //make the button click load the first level if the phase GameControl.control.leveltoLoad = GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].levels[0]; //add the new levels button LevelSelect.lSelect.AddButton(GameControl.control.leveltoLoad); Invoke("GameOverCountdown", 3); } // the player did complete this level else { GameControl.control.leveltoLoad = thisLevel; } break; } // GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum].levels[thisLevel.number % 5] = thisLevel; //save everything for next load session GameControl.control.Save(); //make the level card appear levelCard.gameObject.SetActive(true); //calculate how much time has passed int min = (int)Time.time / 60; int sec = (int)Time.time % 60; levelCard.GetComponentInChildren <Text>().text = "Time: " + min.ToString() + ":" + sec.ToString() + "\n Score: " + levelScore; foreach (Image img in levelCard.GetComponentsInChildren <Image>()) { if (img.tag == "stats") { img.GetComponentInChildren <Text>().text = "Score " + levelScore + "\n + Time: "; } if (img.tag == "timeStop") { img.GetComponentInChildren <Text>().text = AdventureBag.aBag.times.ToString(); } if (img.tag == "zoom") { img.GetComponentInChildren <Text>().text = AdventureBag.aBag.zooms.ToString(); } if (img.tag == "fly") { img.GetComponentInChildren <Text>().text = AdventureBag.aBag.flys.ToString(); } if (img.tag == "resultText") { img.GetComponent <Image>().sprite = script; } if (img.tag == "winloseButton") { img.GetComponent <Image>().sprite = keepPlaying; //Level lv = GameControl.control.stagedata[GameControl.control.Stage].phases[GameControl.control.phasenum] img.gameObject.GetComponent <Button>().onClick.AddListener(() => loadLevel(GameControl.control.leveltoLoad)); } if (img.tag == "livesFront") { if (FS == FinishState.ALIVE) { img.GetComponentInChildren <Text>().text = GameControl.control.lives.ToString(); img.GetComponent <Rigidbody2D>().gravityScale = 0; } else if (FS == FinishState.DEAD) { img.GetComponentInChildren <Text>().text = (GameControl.control.lives + 1).ToString(); img.GetComponent <Animator>().Play("paper", 0, 0); img.GetComponent <Rigidbody2D>().gravityScale = 1; } //else if(FS == FinishState.GAMEOVER) //{ // Invoke ("GameOverCountdown", 3); //} } if (img.tag == "livesBack") { img.GetComponentInChildren <Text>().text = (GameControl.control.lives).ToString(); } } foreach (Text img in levelCard.GetComponentsInChildren <Text>()) { if (img.tag == "LevelScoreText") { img.GetComponent <Text>().text = ("Level Score: " + thisLevel.score.ToString()); } if (img.tag == "CountdownText") { int dif = levelScore - thisLevel.score; img.GetComponent <Text>().text = ("Stage Score: " + GameControl.control.stagedata[GameControl.control.Stage].score); } } }
public override Int32 Update(GameTime gameTime) { base.Update(gameTime); if (GamePause) { return((Int32)CurrScreen); } // Update bullets to finish off.. MyGame.Manager.BulletManager.Update(gameTime); timer3 += (UInt16)gameTime.ElapsedGameTime.Milliseconds; if (timer3 >= finishDelay) { CompleteScreen(); return((Int32)NextScreen); } timer1 += (UInt16)gameTime.ElapsedGameTime.Milliseconds; if (FinishState.PauseSml == finishState && timer1 <= pauseDelay) { return((Int32)CurrScreen); } if (FinishState.PauseSml == finishState && timer1 > pauseDelay) { timer1 -= pauseDelay; finishState = FinishState.MusicSfx; MyGame.Manager.SoundManager.StopMusic(); MyGame.Manager.SoundManager.PlaySoundEffect(SoundEffectType.Finish); finishState = FinishState.PauseMed; return((Int32)CurrScreen); } if (FinishState.PauseMed == finishState) { flag3 = true; timer2 += (UInt16)gameTime.ElapsedGameTime.Milliseconds; if (timer2 > promptDelay) { Flag2 = !Flag2; timer2 -= promptDelay; } } if (FinishState.PauseMed == finishState && timer1 <= startDelay) { return((Int32)CurrScreen); } if (FinishState.PauseMed == finishState && timer1 > startDelay) { timer1 -= startDelay; finishState = FinishState.AutoMove; return((Int32)CurrScreen); } // After initial slight pause and 2s wait check if player wants to skip auto move... UpdateFlag1(gameTime); if (Selected) { CompleteScreen(); return((Int32)NextScreen); } Boolean fire = MyGame.Manager.InputManager.Select(); Boolean left = MyGame.Manager.InputManager.LeftsSide(); Boolean rght = MyGame.Manager.InputManager.RightSide(); if (fire || left || rght) { Flag1 = true; } if (Flag1) { MyGame.Manager.SoundManager.StopSoundEffect(SoundEffectType.Finish); PlaySoundEffect(); return((Int32)CurrScreen); } if (FinishState.AutoMove == finishState) { if (!flag) { Single deltaT = (Single)gameTime.ElapsedGameTime.TotalSeconds; Vector2 targetPosition = MyGame.Manager.SpriteManager.LargeTarget.Position; if (Math.Abs(homeSpot.X - targetPosition.X) > offset) { targetPosition.X += deltaX * deltaT * multiplier; } if (Math.Abs(homeSpot.Y - targetPosition.Y) > offset) { targetPosition.Y += deltaY * deltaT * multiplier; } MyGame.Manager.SpriteManager.LargeTarget.SetPosition(targetPosition); if (Math.Abs(homeSpot.X - targetPosition.X) <= offset && Math.Abs(homeSpot.Y - targetPosition.Y) <= offset) { finishState = FinishState.WaitingX; UpdateGrid = false; flag = true; } return((Int32)CurrScreen); } } if (FinishState.WaitingX == finishState && timer1 <= startDelay) { return((Int32)CurrScreen); } if (FinishState.WaitingX == finishState && timer1 > startDelay) { timer1 -= startDelay; MyGame.Manager.SoundManager.StopMusic(); MyGame.Manager.SoundManager.PlaySoundEffect(SoundEffectType.Cheat); finishState = FinishState.Complete; return((Int32)CurrScreen); } return((Int32)CurrScreen); }