private void HandleCharacterPositionMessage(String address, AbstractMessage message) { CharacterPositionMessage characterPositionMessage = (CharacterPositionMessage)message; Player currentPlayer = controller.GetPlayer(IPAddress.Parse(address)); if (serverStatus != ServerStatus.WaitingCharacterPosition || currentPlayer.Ready) { return; } foreach (String characterName in characterPositionMessage.CharactersPosition.Keys) { currentPlayer.GetCharacter(characterName).MapLocation = characterPositionMessage.CharactersPosition[characterName]; } foreach (Player player in controller.GetPlayers()) { if (player.IPAddress != currentPlayer.IPAddress) { controller.Server.SendData(player.IPAddress, message); } } currentPlayer.Ready = true; bool ready = true; foreach (Player player in controller.GetPlayers()) { if (!player.Ready) { ready = false; } } if (ready) { StartBattleMessage startBattleMessage = new StartBattleMessage(); BattleEngine battleEngine = BattleEngine.GetInstance(); serverStatus = ServerStatus.Game; battleEngine.NextCharacterTurn(); startBattleMessage.Turn = new Turn(battleEngine.ActualCharacter.RootName, battleEngine.ActualPlayer, false); startBattleMessage.Affects = ConvertEffectsToArray(battleEngine.ProcessSpecialAbilities()); controller.Server.SendToAll(startBattleMessage); battleEngine.ClearAffects(); } }
private void HandleCharacterPositionMessage(String address, AbstractMessage message) { CharacterPositionMessage characterPositionMessage = (CharacterPositionMessage)message; Player oponent = controller.GetPlayer(characterPositionMessage.PlayerName); DefaultDirection oponentDefaultDirection; AnimationType oponentDefaultAnimation; if (controller.IsServer) { oponentDefaultDirection = DefaultDirection.Left; oponentDefaultAnimation = AnimationType.StaticLeft; controller.SupressUpdate(); foreach (Character character in oponent.GetCharacters()) { character.ClearAnimatedMovements(); character.DefaultDirection = oponentDefaultDirection; character.MapLocation = characterPositionMessage.CharactersPosition[character.RootName]; character.AddAnimatedMovement(oponentDefaultAnimation, character.MapLocation); MapEngine.GetInstance().SetObject(character); } controller.ReleaseUpdate(); } else { oponentDefaultDirection = DefaultDirection.Right; oponentDefaultAnimation = AnimationType.StaticRight; controller.SupressUpdate(); foreach (String characterName in characterPositionMessage.CharactersPosition.Keys) { Character oponentCharacter = Bundle.Characters[characterName]; oponentCharacter.ClearAnimatedMovements(); oponentCharacter.DefaultDirection = oponentDefaultDirection; oponentCharacter.MapLocation = characterPositionMessage.CharactersPosition[characterName]; oponentCharacter.AddAnimatedMovement(oponentDefaultAnimation, oponentCharacter.MapLocation); oponent.AddCharacter(oponentCharacter); MapEngine.GetInstance().SetObject(oponentCharacter); } controller.ReleaseUpdate(); } Camera.GetInstance().UpdateLocations = true; }
private void HandleActionFinish() { gameScreen.SelectedCharacter = null; gameScreen.ChangeMode(GameScreenMode.BattleMode); CharacterPositionMessage message = new CharacterPositionMessage(); message.PlayerName = Controller.GetInstance().GetLocalPlayer().Name; foreach (Character character in Controller.GetInstance().GetLocalPlayer().GetCharacters()) { message.AddCharacter(character.RootName, character.MapLocation); } Controller.GetInstance().Client.SendData(message); }