/// <summary> /// [Server] 클라이언트에서 AddCharacterMessage 를 받았을 때 호출 /// </summary> /// <param name="player"></param> /// <param name="msg"></param> void OnServerAddPlayerInternal(INetworkPlayer player, AddCharacterMessage msg) { if (player.Identity != null) { throw new InvalidOperationException("There is already a player for this connection."); } OnServerAddPlayer(player); }
/// <summary> /// [Server] Handle <see cref="AddCharacterMessage"/> on server /// </summary> /// <param name="player"></param> /// <param name="msg"></param> void OnServerAddPlayerInternal(INetworkPlayer player, AddCharacterMessage msg) { if (player.Identity != null) { throw new InvalidOperationException("There is already a player for this connection."); } logger.Log($"[Server][OnServerAddPlayerInternal] recv {msg} from {player}"); OnServerAddPlayer(player); }
private void OnServerAddPlayerInternal(INetworkPlayer player, AddCharacterMessage msg) { logger.Log("CharacterSpawner.OnServerAddPlayer"); if (player.HasCharacter) { // player already has character on server, but client asked for it // so we respawn it here so that client recieves it again // this can happen when client loads normally, but server addititively ServerObjectManager.Spawn(player.Identity); } else { OnServerAddPlayer(player); } }
private void Handle(AddCharacterMessage message) { var account = AccountManager.FindAccountById(message.AccountId); if (account == null) { Client.SendError(string.Format("Account {0} not found", message.AccountId), message); return; } if (AccountManager.AddAccountCharacter(account, WorldServer, message.CharacterId)) { Client.ReplyRequest(new CommonOKMessage(), message); } else { Client.SendError(string.Format("Cannot add {0} character to {1} account", message.CharacterId, message.AccountId), message); } }