Exemple #1
0
        protected override void Update(GameTime gameTime)
        {
            double dt = gameTime.ElapsedGameTime.TotalSeconds / GameSpeed;

            if (isOnline)
            {
                client.Update(dt);
            }

            if (isOnline && !firstready && Keyboard.GetState().IsKeyDown(Keys.O))
            {
                isOnline = false;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.Q))
            {
                GameSpeed *= 0.99;
            }
            if (Keyboard.GetState().IsKeyDown(Keys.E))
            {
                GameSpeed *= 1.01;
            }

            if (!isOnline || firstready)
            {
                if (doTimer)
                {
                    timer += dt;
                    if (timer < 0.75)
                    {
                        builtmessage = message.Substring(0, (int)(timer * message.Length / 0.75));
                    }
                    else
                    {
                        builtmessage = message;
                    }
                    if (timer > 1.5)
                    {
                        timer    = 0;
                        doTimer  = false;
                        nextAnim = true;
                    }
                }

                MouseState state = Mouse.GetState();
                menu.Update(dt, state.LeftButton == ButtonState.Pressed, state.X, state.Y);
                phasecounter.Update(dt);
                arena.Rotate(dt, this);
                menu.Rotate(dt);
                effects.Rotate(dt);
                effects.Update(dt);
                leftbar.Update(dt);
                rightbar.Update(dt);
                user.Update(dt);
                opponent.Update(dt);

                if (isOnline)
                {
                    if (chosen)
                    {
                        if (!userchosen)
                        {
                            if (IsUserDeathTurn)
                            {
                                client.SendInput(0, (byte)MovementCategory.DO_NOTHING, menu.chosenCreature);
                                engine.Player1.SelectAction(0);
                                engine.Player1.SelectMovement(MovementCategory.DO_NOTHING);
                                engine.Player1.SelectCreature((byte)(menu.chosenCreature - 1));
                                IsUserDeathTurn = false;
                                j = 1;
                            }
                            else if (IsOpponentDeathTurn)
                            {
                                client.SendInput(0, (byte)MovementCategory.DO_NOTHING, 0);
                                engine.Player1.SelectAction(0);
                                engine.Player1.SelectMovement(MovementCategory.DO_NOTHING);
                                engine.Player1.SelectCreature(0);
                                IsOpponentDeathTurn = false;
                                j = 1;
                            }
                            else
                            {
                                client.SendInput((byte)(menu.chosenAction - 1), menu.chosenMovement, menu.chosenCreature);
                                engine.Player1.SelectAction((byte)(menu.chosenAction - 1));
                                engine.Player1.SelectMovement((MovementCategory)menu.chosenMovement);
                                if (menu.chosenCreature != 0)
                                {
                                    engine.Player1.SelectCreature((byte)(menu.chosenCreature - 1));
                                }
                                j = 10;
                            }
                            userchosen = true;
                        }
                        if (play)
                        {
                            TurnNumber++;
                            for (int i = 0; i < j; i++)
                            {
                                List <SceneAnimation> a = engine.Poll();
                                if (a != null)
                                {
                                    anim.AddRange(a);
                                }
                            }
                            PrintAnim();
                            chosen     = false;
                            userchosen = false;
                            nextAnim   = true;
                        }
                    }
                }
                else
                {
                    if (chosen)   //has finished with the menu selection
                    {
                        if (IsUserDeathTurn)
                        {
                            engine.Player1.SelectAction(0);
                            engine.Player1.SelectMovement(MovementCategory.DO_NOTHING);
                            if (menu.chosenCreature != 0)
                            {
                                engine.Player1.SelectCreature((byte)(menu.chosenCreature - 1));
                            }
                            engine.Player2.SelectAction(0);
                            engine.Player2.SelectMovement(MovementCategory.DO_NOTHING);
                            engine.Player2.SelectCreature(0);

                            IsUserDeathTurn = false;
                            List <SceneAnimation> a = engine.Poll();
                            if (a != null)
                            {
                                anim.AddRange(a);
                            }
                        }
                        else if (IsOpponentDeathTurn)
                        {
                            engine.Player1.SelectAction(0);
                            engine.Player1.SelectMovement(MovementCategory.DO_NOTHING);
                            engine.Player1.SelectCreature(0);
                            engine.Player2.SelectAction(0);
                            engine.Player2.SelectMovement(MovementCategory.DO_NOTHING);
                            engine.Player2.SelectCreature(ai.SelectCreature());

                            IsOpponentDeathTurn = false;
                            List <SceneAnimation> a = engine.Poll();
                            if (a != null)
                            {
                                anim.AddRange(a);
                            }
                        }
                        else
                        {
                            engine.Player1.SelectAction((byte)(menu.chosenAction - 1));
                            engine.Player1.SelectMovement((MovementCategory)menu.chosenMovement);
                            if (menu.chosenCreature != 0)
                            {
                                engine.Player1.SelectCreature((byte)(menu.chosenCreature - 1));
                            }
                            engine.Player2.SelectAction(ai.SelectAction());
                            engine.Player2.SelectMovement(ai.SelectMovement());
                            engine.Player2.SelectCreature(ai.SelectCreature());
                            Console.WriteLine(TurnNumber);
                            TurnNumber++;
                            for (int i = 0; i < 10; i++)
                            {
                                List <SceneAnimation> a = engine.Poll();
                                if (a != null)
                                {
                                    anim.AddRange(a);
                                }
                            }
                        }
                        PrintAnim();
                        chosen   = false;
                        nextAnim = true;
                    }
                }
                Animate();
            }
            base.Update(gameTime);
        }