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); }