Esempio n. 1
0
        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);
     ;
 }
Esempio n. 3
0
 void Awake()
 {
     startState  = new StartState(this);
     inLapState  = new InLapState(this);
     finishState = new FinishState(this);
     ;
 }
Esempio n. 4
0
		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);
			});
		}
Esempio n. 5
0
        /// <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;
            }
        }
Esempio n. 6
0
        /// <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);
			});
		}
Esempio n. 8
0
        /// <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());
            }
        }
Esempio n. 9
0
    public void OnLose()
    {
        CurrentState = State.Finished;
        CurrentFinishState = FinishState.Lose;

        if (TimerView != null)
            TimerView.UpdateView();
        
        if (OnFinishCallBack != null)
        {
            OnFinishCallBack(this);
        }
    }
Esempio n. 10
0
        /// <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);
        }
Esempio n. 11
0
            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.
                }
            }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 14
0
        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);
            });
        }
Esempio n. 16
0
        /// <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;
            }
        }
Esempio n. 17
0
        /// <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;
            }
        }
Esempio n. 18
0
    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);
            }
        }
    }
Esempio n. 19
0
        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);
        }