Exemple #1
0
    private void extractGameInfos(JSONObject json)
    {
        max_cards_action_played = JSONTools.GetIntValue(json, "max_cards_action_played", GameStateReader.INVALID_INT);
        tablespeed = JSONTools.GetIntValue(json, "tablespeed", GameStateReader.INVALID_INT);
        rtc_mode   = JSONTools.GetIntValue(json, "rtc_mode", GameStateReader.INVALID_INT);
        game_result_neutralized = JSONTools.GetStrValue(json, "game_result_neutralized");
        neutralized_player_id   = JSONTools.GetStrValue(json, "neutralized_player_id");

        Debug.Assert(JSONTools.HasFieldOfTypeObject(json, "actions"));
        JSONObject actions = json.GetField("actions");

        action_nbr = JSONTools.GetIntValue(actions, "action_nbr", GameStateReader.INVALID_INT);

        playerorder = new List <string>();
        Debug.Assert(JSONTools.HasFieldOfTypeArray(json, "playerorder"));
        foreach (JSONObject id in json.GetField("playerorder").list)
        {
            Debug.Assert(id.IsString || id.IsNumber);
            if (id.IsString)
            {
                playerorder.Add(id.str);
            }
            else
            {
                playerorder.Add(Mathf.RoundToInt(id.n).ToString());
            }
        }
        Debug.Assert(playerorder.Count == 2);
    }
Exemple #2
0
    private void extractNotifications(JSONObject json)
    {
        Debug.Assert(JSONTools.HasFieldOfTypeObject(json, "notifications"));
        JSONObject notifications = json.GetField("notifications");

        last_packet_id = JSONTools.GetIntValue(notifications, "last_packet_id", GameStateReader.INVALID_INT);
        move_nbr       = JSONTools.GetIntValue(notifications, "move_nbr", GameStateReader.INVALID_INT);
    }
Exemple #3
0
    private void extractCards(JSONObject json)
    {
        cards = new List <GameStateReaderCard>();
        Debug.Assert(JSONTools.HasFieldOfTypeObject(json, "hand"));
        JSONObject hand = json.GetField("hand");

        foreach (string key in hand.keys)
        {
            cards.Add(new GameStateReaderCard(hand.GetField(key)));
        }
    }
Exemple #4
0
    /// Extraction methods
    private void extractPlayerScores(JSONObject json)
    {
        players = new List <GameStateReaderPlayer>();
        Debug.Assert(JSONTools.HasFieldOfTypeObject(json, "players"));
        JSONObject jsonplayers = json.GetField("players");

        foreach (string key in jsonplayers.keys)
        {
            Debug.Assert(JSONTools.HasFieldOfTypeObject(jsonplayers, key));
            players.Add(new GameStateReaderPlayer(jsonplayers.GetField(key)));
        }
        Debug.Assert(players.Count == 2);
    }
Exemple #5
0
            private List <string> GetFighterNames(string group)
            {
                List <string> fighters = new List <string>();
                JSONObject    arg      = GetArg(0);

                Debug.Assert(JSONTools.HasFieldOfTypeObject(arg, group));
                JSONObject figthers = arg.GetField(group);

                Debug.Assert(JSONTools.HasFieldOfTypeObject(figthers, "args"));
                JSONObject args = figthers.GetField("args");

                foreach (var key in args.keys)
                {
                    fighters.Add(JSONTools.GetStrValue(args, key));
                }
                return(fighters);
            }
Exemple #6
0
    private void extractTokenTypes(JSONObject json)
    {
        tokenTypes = new List <List <GameStateReaderTokenType> >();
        tokenTypes.Add(new List <GameStateReaderTokenType>()); // player 1
        tokenTypes.Add(new List <GameStateReaderTokenType>()); // player 2
        Debug.Assert(JSONTools.HasFieldOfTypeObject(json, "token_types"));
        JSONObject jsontokens = json.GetField("token_types");

        foreach (string key in jsontokens.keys)
        {
            Debug.Assert(JSONTools.HasFieldOfTypeObject(jsontokens, key));
            JSONObject jsontoken = jsontokens.GetField(key);
            string     category  = JSONTools.GetStrValue(jsontoken, "category");
            Debug.Assert(category != null);

            Multi.Logger.Instance.Log("LOG", "READER: register " + key + " " + category);
            tokenTypes[0].Add(new GameStateReaderTokenType(key, category));
            tokenTypes[1].Add(new GameStateReaderTokenType(key, category));
        }
        Debug.Assert(tokenTypes[0].Count == 14 && tokenTypes[1].Count == 14);
    }
Exemple #7
0
    private void extractGameState(JSONObject json)
    {
        Debug.Assert(JSONTools.HasFieldOfTypeObject(json, "gamestate"));
        JSONObject gamestate = json.GetField("gamestate");

        name = JSONTools.GetStrValue(gamestate, "name");
        type = JSONTools.GetStrValue(gamestate, "type");

        active_players = new List <string>();
        switch (type)
        {
        case "manager":
        case "game":
        case "activeplayer":
            active_players.Add(JSONTools.GetStrValue(gamestate, "active_player"));
            break;

        case "multipleactiveplayer":
            Debug.Assert(JSONTools.HasFieldOfTypeArray(gamestate, "multiactive"));
            foreach (JSONObject id in gamestate.GetField("multiactive").list)
            {
                Debug.Assert(id.IsString || id.IsNumber);
                if (id.IsString)
                {
                    active_players.Add(id.str);
                }
                else
                {
                    active_players.Add(Mathf.RoundToInt(id.n).ToString());
                }
            }
            Debug.Assert(active_players.Count <= 2);
            break;

        default:
            Debug.Assert(false, "unhandled gamestate type");
            break;
        }

        current_player      = null;
        discoveredRoom      = GameStateReader.INVALID_INT;
        selectedCharacterId = GameStateReader.INVALID_INT;
        targetId            = GameStateReader.INVALID_INT;
        pointsRemaining     = GameStateReader.INVALID_INT;
        modifiedTokens      = new Dictionary <int, GameStateReaderToken>();

        Debug.Assert(gamestate.HasField("args"));
        JSONObject args = gamestate.GetField("args");

        switch (name)
        {
        case "movingCharacter":
        case "movingCharacterContinue":
        {
            Debug.Assert(args.IsObject);
            selectedCharacterId = JSONTools.GetIntValue(args, "character_id");
            pointsRemaining     = JSONTools.GetIntValue(args, "points");
            if (JSONTools.HasFieldOfTypeArray(args, "inital_objects"))
            {
                foreach (var token in args.GetField("inital_objects").list)
                {
                    var tokenData = new GameStateReaderToken(token, true);
                    Debug.Assert(!modifiedTokens.ContainsKey(tokenData.id));
                    modifiedTokens[tokenData.id] = tokenData;
                }
            }
        }
        break;

        case "discoverRoomPlaceToken":
        {
            Debug.Assert(args.IsObject);
            current_player = JSONTools.GetStrValue(args, "turn");
            discoveredRoom = JSONTools.GetIntValue(args, "room", GameStateReader.INVALID_INT);
        }
        break;

        case "combatChooseCard":
        {
            Debug.Assert(args.IsObject);
            selectedCharacterId = JSONTools.GetIntValue(args, "character_id");
            targetId            = JSONTools.GetIntValue(args, "target_id");
        }
        break;
        }
    }