コード例 #1
0
        public async Task <LoginResponseData> Login(LoginData data, string connectionId)
        {
            if (serverManager.GetServerStatus() != GameServerStatus.Started)
            {
                return(new LoginResponseData()
                {
                    ResponseType = LoginResponseType.ServerNotStarted
                });
            }

            if (!await accountService.UsernameExists(data.Username))
            {
                logService.Log($"{data.Username} was not found!");
                return(new LoginResponseData()
                {
                    ResponseType = LoginResponseType.UsernameNotFound
                });
            }

            if (!await accountService.CheckLoginCredentials(data.Username, data.Password))
            {
                logService.Log($"Incorrect password!");
                return(new LoginResponseData()
                {
                    ResponseType = LoginResponseType.PasswordIncorrect
                });
            }


            var playerName = await accountService.GetPlayerName(data.Username);

            var playerData = await databaseService.GetPlayerData(playerName);

            playerData.ConnectionId = connectionId;


            // Add that object to the game
            gameStateService.AddPlayerToGame(playerData);
            var characters = await databaseService.GetAllCharactersFromPlayer(playerData.PlayerName);

            foreach (var character in characters)
            {
                gameStateService.AddCharacterToGame(character);
            }
            characterPlacementService.PlaceAllPlayerCharactersIntoTheGame(playerData.PlayerName);

            // Add character to areas


            logService.Log($"Account was found and player data was added to the game");

            return(new LoginResponseData()
            {
                UniverseSyncData = gameStateService.GetUniverseSyncData(),
                PlayerData = playerData,
                ResponseType = LoginResponseType.Success
            });
        }