Ejemplo n.º 1
0
        /// <summary>
        /// Returns a character with the default configuration. This can be called on client and server.
        /// </summary>
        /// <returns></returns>
        private CharacterResponse GetDefaultCharacter()
        {
            CharacterResponse character = new CharacterResponse();

            character.name = "John Doe";
            return(character);
        }
Ejemplo n.º 2
0
        public void SpawnPlayerAfterRoundStart(NetworkConnection conn)
        {
            Debug.Log("Spawn player from address " + conn.address);
            CharacterResponse character = SpawnPlayerWithoutLoginServer(conn);

            Debug.Log("Spawning player after round start " + "conn: " + conn.address + " character: " + character.name);
            //Something has gone horribly wrong
            if (character == null)
            {
                throw new Exception("Could not read character data");
            }

            // Spawn player based on their character choices
            Transform  startPos = GetStartPosition();
            GameObject player   = startPos != null
                ? Instantiate(playerPrefab, startPos.position, startPos.rotation)
                : Instantiate(playerPrefab);

            player.name = character.name;

            if (NetworkClient.connection.identity != null)
            {
                NetworkServer.DestroyPlayerForConnection(conn);
            }
            //Destroy dummy player
            //NetworkServer.DestroyPlayerForConnection(conn);

            //Spawn actual player
            NetworkServer.AddPlayerForConnection(conn, player);
        }
Ejemplo n.º 3
0
        public async Task <ServiceResponse <CharacterResponse> > GetAllCharacter()
        {
            ServiceResponse <CharacterResponse> serviceResponse = new ServiceResponse <CharacterResponse>();
            DataResponse <CharacterResponse>    dataResponse    = new DataResponse <CharacterResponse>();

            try
            {
                this.QueryData();

                List <CharacterResponse> lCharacters = new List <CharacterResponse>();

                foreach (var itemCharacter in characters)
                {
                    CharacterResponse characterResponse = new CharacterResponse();
                    characterResponse.Id          = itemCharacter.Id;
                    characterResponse.Name        = itemCharacter.Name;
                    characterResponse.Description = itemCharacter.Description;
                    characterResponse.ResourceURI = itemCharacter.ResourceUri;
                    characterResponse.Comics      = AddComics(comics.Where(item => item.Equals(itemCharacter.Id)));
                    characterResponse.Series      = AddSeries(series.Where(item => item.Equals(itemCharacter.Id)));
                    characterResponse.Stories     = AddStories(stories.Where(item => item.Equals(itemCharacter.Id)));
                    characterResponse.Events      = AddEvents(events.Where(item => item.Equals(itemCharacter.Id)));
                    lCharacters.Add(characterResponse);
                }

                dataResponse.Results = lCharacters;
                serviceResponse.data = dataResponse;

                return(serviceResponse);
            }
            catch (Exception)
            {
                return(serviceResponse);
            }
        }
Ejemplo n.º 4
0
        public override void OnServerAddPlayer(NetworkConnection conn, AddPlayerMessage extraMessage)
        {
            if (!IsPlayerPrefabValid(conn))
            {
                return;
            }

            if (extraMessage?.value == null)
            {
                base.OnServerAddPlayer(conn, null);
                return;
            }

            /*
             * Deserialize character data from byte[]
             * Format controlled in SpawnPlayerWithLoginServer()
             * Current expected format:
             * {
             *     "name" : "SomePlayerName"
             * }
             */
            string rawJson = System.Text.Encoding.UTF8.GetString(extraMessage.value);
            string name    = CharacterResponse.CreateFromJSON(rawJson).name;

            //Spawn player based on their character choices
            Transform  startPos = GetStartPosition();
            GameObject player   = startPos != null
                ? Instantiate(playerPrefab, startPos.position, startPos.rotation)
                : Instantiate(playerPrefab);

            player.name = name;

            NetworkServer.AddPlayerForConnection(conn, player);
        }
Ejemplo n.º 5
0
        private CharacterResponse SpawnPlayerWithoutLoginServer(NetworkConnection conn)
        {
            CharacterResponse characterResponse = GetDefaultCharacter();

            conn.Send(new CharacterSelectMessage {
                character = characterResponse
            });
            return(characterResponse);
        }
Ejemplo n.º 6
0
        /**
         * If the client is told that the login server doesn't exist, we build them a John Doe.
         */
        private void SpawnPlayerWithoutLoginServer(NetworkConnection conn)
        {
            CharacterResponse characterResponse = new CharacterResponse();

            characterResponse.name = "John Doe";
            conn.Send(new CharacterSelectMessage {
                character = characterResponse
            });
        }
Ejemplo n.º 7
0
        private void SpawnPlayerWithLoginServer(NetworkConnection conn, CharacterResponse characterResponse)
        {
            ClientScene.Ready(conn);
            string json = JsonUtility.ToJson(characterResponse);

            //Convert to byte[] and send
            byte[] data = System.Text.Encoding.UTF8.GetBytes(json);
            ClientScene.AddPlayer(conn, data);
        }
Ejemplo n.º 8
0
        public static CharacterResponse[] ToResponse(Character[] characters)
        {
            List <CharacterResponse> responses = new List <CharacterResponse>();

            foreach (Character character in characters)
            {
                responses.Add(CharacterResponse.FromCharacter(character));
            }

            return(responses.ToArray());
        }
Ejemplo n.º 9
0
        public void HandleCharacterSelectButton()
        {
            CharacterResponse characterResponse = characterScreen.GetSelectedCharacterData();

            if (characterResponse == null)
            {
                characterScreen.DisplayErrorMessage("Could not find character data.");
                return;
            }

            loginManager.SpawnPlayer(characterResponse);
        }
Ejemplo n.º 10
0
        public async Task GetCharacterDetailsAsync_ShouldLoadCharacterFromService_ThenMapItIntoCharacterResponse_WhenNoGroup()
        {
            const int characterId       = 2;
            var       character         = new Character();
            var       characterResponse = new CharacterResponse();

            _characterService.LoadCharacterDetailsAsync(_executionContext, characterId)
            .Returns(character);
            _mapper.Map <CharacterResponse>(character)
            .Returns(characterResponse);

            var result = await _controller.GetCharacterDetailsAsync(_executionContext, characterId);

            result.Value.Should().BeSameAs(characterResponse);
        }
Ejemplo n.º 11
0
        public IAsyncResult BeginCreate(CreateRequest request, string acctname, string name, AsyncCallback callback, object asyncState)
        {
            CharacterResponse response = null;
            Account           account  = Account.Login(acctname, request.Login.Password);

            if (account != null)
            {
                response = Character.Create(account, name, request.Class, request.Race, request.Faction);
            }
            else
            {
                response = new CharacterResponse("Error: Bad username or password.", null);
            }
            return(new CompletedAsyncResult <CharacterResponse>(response));
        }
Ejemplo n.º 12
0
        bool ValidateIfDuplicateOrExcluded(Comment comment, string compareComment, CharacterResponse response)
        {
            //Dont post response if phrase matched excluded phrases
            if (Constants.EXCLUDE_PHRASES.Any(x => x.ToLower() == compareComment))
            {
                return(false);
            }

            //Dont reply if bot has already replied
            if (comment.Comments.Any(x => x.AuthorName == m_botUsername))
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Ejemplo n.º 13
0
        public IAsyncResult BeginDelete(CharacterBaseRequest request, string acctname, string name, AsyncCallback callback, object asyncState)
        {
            CharacterResponse response = null;
            Account           account  = Account.Login(acctname, request.Login.Password);

            if (account != null)
            {
                response = Character.Load(acctname, name);
                if (response.Success)
                {
                    string message = response.Character.Delete();
                    response = new CharacterResponse(message, response.Character);
                }
            }
            else
            {
                response = new CharacterResponse("Error: Bad username or password.", null);
            }
            return(new CompletedAsyncResult <CharacterResponse>(response));
        }
Ejemplo n.º 14
0
        void HandleCharacterRequest()
        {
            CharacterResponse response = new CharacterResponse();

            DataRow[] tmp = accountData.GetChildRows("AccountData_CharacterData");

            if (tmp.Length == 0)
            {
                Console.WriteLine("0 characters");
            }
            else
            {
                for (int i = 0; i < tmp.Length; i++)
                {
                    response.Names[i]  = (tmp[i] as PlayerData.CharacterDataRow).Name;
                    response.Images[i] = (tmp[i] as PlayerData.CharacterDataRow).Image;
                }
            }
            response.CharacterCount = (Byte)tmp.Length;
            client.BeginSend(response);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Posts a formatted reply with the voice line linking to the voice line url to a comment
        /// </summary>
        /// <param name="originalComment">The original comment</param>
        /// <param name="responseLine">The response line</param>
        void PostReply(Comment originalComment, CharacterResponse response)
        {
            //Check AuthorName & Body to see if it's the same
            if (m_repliedToComments.Any(c => c.Body == originalComment.Body && c.AuthorName == originalComment.AuthorName))
            {
                return;
            }

            Debug.Log($"Replying to '{originalComment.AuthorName}'s comment with response '{response.Character}' - '{response.Response}'");

            string reply = $"[{response.Character}: {response.Response}]({response.Url})" +
                           Environment.NewLine +
                           "*****" +
                           Environment.NewLine +
                           "^^Got ^^a ^^question? ^^Ask ^^/u/JoshLmao ^^- ^^[Github](https://github.com/JoshLmao/WitcherResponsesBot) ^^- ^^[Suggestions/Issues](https://github.com/JoshLmao/WitcherResponsesBot/issues)";

            m_redditService.ReplyToComment(originalComment, reply);
            m_repliedToComments.Add(originalComment);

            response.UseCount++;
        }
Ejemplo n.º 16
0
    public IEnumerator GetData()
    {
        UnityWebRequest www = UnityWebRequest.Get("https://api.airtable.com/v0/appQ3dmrqe9MBHoos/Characters?maxRecords=" + maxRecords + "&view=" + view);

        www.SetRequestHeader("Authorization", "Bearer " + airtableConfig.token);
        yield return(www.Send());

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log("AirtableConfig is not valid");
            airtableConfig.isValid = false;
        }
        else
        {
            Debug.Log("AirtableConfig is valid");
            Debug.Log(www.downloadHandler.text);
            response = JsonUtility.FromJson <CharacterResponse> (www.downloadHandler.text);
            if (OnUpdate != null)
            {
                OnUpdate();
            }
        }
    }
Ejemplo n.º 17
0
        public IAsyncResult BeginUpdate(UpdateRequest request, string acctname, string name, AsyncCallback callback, object asyncState)
        {
            CharacterResponse response = null;
            Account           account  = Account.Login(acctname, request.Login.Password);

            if (account != null)
            {
                response = Character.Load(acctname, name);
                if (response.Success && !response.Character.Deleted)
                {
                    string message = response.Character.UpdateCharacter(account, request.Faction, request.Race, request.Class);
                    if (message != string.Empty)
                    {
                        response = new CharacterResponse(message, response.Character);
                    }
                }
            }
            else
            {
                response = new CharacterResponse("Error: Bad username or password.", null);
            }
            return(new CompletedAsyncResult <CharacterResponse>(response));
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> Get(string hero, string villain)
        {
            var characters = await _charactersProvider.GetCharacters();

            foreach (var character in characters.Items)
            {
                if (character.Name == hero)
                {
                    _character1 = character;
                }
                if (character.Name == villain)
                {
                    _character2 = character;
                }
            }

            if (_character1.Score > _character2.Score)
            {
                return(Ok(_character1));
            }

            return(Ok(_character2));
        }
Ejemplo n.º 19
0
        private static void PrintResult(CharacterResponse response)
        {
            var result = $"Name: {response.Name}, Gender: {response.Gender}, Height: {response.Height}";

            Console.WriteLine(result);
        }
Ejemplo n.º 20
0
 public void SpawnPlayer(CharacterResponse characterResponse)
 {
     spawnPlayerAction(characterResponse);
     HideLoginWindow();
 }
Ejemplo n.º 21
0
 /**
  * Once the player has selected a character, the client tells the server of the chosen character.
  */
 private void SpawnPlayerWithLoginServer(NetworkConnection conn, CharacterResponse characterResponse)
 {
     conn.Send(new CharacterSelectMessage {
         character = characterResponse
     });
 }
Ejemplo n.º 22
0
        public bool HandleRequest(Client client, HttpListenerContext context, params string[] args)
        {
            if (!UserManager.Connected(client))
            {
                context.Send("not connected");
                return(true);
            }

            User user = UserManager.GetUser(UserManager.GetUserID(client));

            if (user == null)
            {
                context.Send("user not found");
                return(true);
            }

            if (context.Request.HttpMethod == "POST")
            {
                if (args.Length == 0)
                {
                    return(true);
                }

                if (args[0] == "create")
                {
                    string body = new StreamReader(context.Request.InputStream).ReadToEnd();

                    JObject json = JObject.Parse(body);

                    string replaced = CharacterManager.DefaultCharacterJSON.Replace("__NAME__", json["charactername"].ToString());

                    JObject data = JObject.Parse(replaced);

                    CharacterManager.CreateCharacter(user, JsonConvert.SerializeObject(data));

                    return(true);
                }

                if (args.Length == 2 && args[1] == "update")
                {
                    string body = new StreamReader(context.Request.InputStream).ReadToEnd();

                    JObject json = JObject.Parse(body);

                    // TODO add some validation here to make sure we don't receive junk
                    int characterId = Convert.ToInt32(args[0]);

                    CharacterManager.UpdateCharacter(characterId, JsonConvert.SerializeObject(json));
                }


                if (args.Length == 2)
                {
                    int characterId = Convert.ToInt32(args[0]);

                    Character character = CharacterManager.GetCharacter(characterId);

                    if (character == null)
                    {
                        return(true);
                    }

                    if (character.UserId != user.Id)
                    {
                        return(true);
                    }

                    if (args[1] == "delete")
                    {
                        CharacterManager.DeleteCharacter(characterId);
                    }

                    return(true);
                }
            }


            int id = Convert.ToInt32(args[0]);

            Character carac = CharacterManager.GetCharacter(id);

            context.Send(SerializationHelper.SerializeToJSON(CharacterResponse.FromCharacter(carac)));

            return(true);
        }