Exemplo n.º 1
0
        public void DeleteCharacterHandler(GameSession session, CharacterDeleteReqMessage message)
        {
            Logger.ForAccount(session)
            .Information("Removing character {slot}", message.Slot);

            var plr = session.Player;

            if (plr == null)
            {
                return;
            }

            // Prevents player from deleting characters while playing
            if (plr.Room?.Id > 0 &&
                plr.Room?.GameState != GameState.Waiting &&
                plr.Room?.SubGameState != GameTimeState.HalfTime &&
                plr.RoomInfo.State != PlayerState.Lobby)
            {
                session.SendAsync(new ServerResultAckMessage(ServerResult.DeleteCharacterFailed));
                return;
            }

            try
            {
                session.Player?.CharacterManager?.Remove(message.Slot);
            }
            catch (Exception ex)
            {
                Logger.ForAccount(session).Error(ex.Message);
                session.SendAsync(new ServerResultAckMessage(ServerResult.DeleteCharacterFailed));
            }
        }
        public void DeleteCharacterHandler(GameSession session, CharacterDeleteReqMessage message)
        {
            Logger.ForAccount(session)
            .Information("Removing character {slot}", message.Slot);

            try
            {
                session.Player?.CharacterManager?.Remove(message.Slot);
            }
            catch (CharacterException ex)
            {
                Logger.ForAccount(session)
                .Error(ex.Message);
                session.SendAsync(new ServerResultAckMessage(ServerResult.DeleteCharacterFailed));
            }
        }