Esempio n. 1
0
    private void SetCarriedTokenPosition(GameDataCharacter holderData)
    {
        Token holder  = GameManager.gManager.GetTokenByNameAndOwnerIndex(holderData.name, holderData.playerIndex);
        Token carried = GameManager.gManager.GetTokenByNameAndOwnerIndex(holderData.tokenHeldName, holderData.tokenHeldOwnerIndex);

        carried.caseActuelle = holder.caseActuelle;
        carried.setPosition(carried.caseActuelle.transform.position);
        carried.tokenHolder = holder.GetComponent <CharacterBehavior>();
        carried.transform.SetParent(holder.transform);
        holder.GetComponent <CharacterBehaviorIHM>().ramasserToken(carried.gameObject, false);
    }
Esempio n. 2
0
    private void saveTokens()
    {
        List <CharacterBehavior> characters = new List <CharacterBehavior>();
        List <Item> items = new List <Item>();

        foreach (GameObject g in GameObject.FindGameObjectsWithTag("Token"))
        {
            if (g.GetComponent <CharacterBehavior>() != null)
            {
                characters.Add(g.GetComponent <CharacterBehavior>());
            }
            else if (g.GetComponent <Item>() != null)
            {
                items.Add(g.GetComponent <Item>());
            }
            else
            {
                Debug.LogError("GameState, saveGameState: Le Token n'est ni un personnage ni un objet");
            }
        }

        foreach (CharacterBehavior chara in characters)
        {
            int row = -1, column = -1;
            if (chara.caseActuelle != null)
            {
                CaseBehavior cell = chara.caseActuelle.GetComponent <CaseBehavior>();
                row    = cell.row;
                column = cell.column;
            }
            GameDataCharacter newCharacterEntry = new GameDataCharacter(chara.getTokenName(), chara.getOwnerIndex(), row, column, chara.tokenPlace, chara.horsJeu, chara.wounded, chara.freshlyWounded, chara.freshlyHealed, chara.killed, chara.actionPoints);
            if (chara.cibleToken != null)
            {
                if (chara.cibleToken.transform.parent != null)
                {
                    newCharacterEntry.indexRoomAssociated = chara.cibleToken.transform.parent.GetComponent <HiddenTileBehavior>().tileAssociated.GetComponent <TileBehavior>().index;
                }
                else
                {
                    newCharacterEntry.row    = chara.cibleToken.caseActuelle.row;
                    newCharacterEntry.column = chara.cibleToken.caseActuelle.column;
                }
            }
            if (chara.tokenHolder != null)
            {
                newCharacterEntry.associatedCharacterName       = chara.tokenHolder.getTokenName();
                newCharacterEntry.associatedCharacterOwnerIndex = chara.tokenHolder.getOwnerIndex();
            }
            if (chara.tokenTranporte != null)
            {
                newCharacterEntry.tokenHeldName       = chara.tokenTranporte.GetComponent <Token>().getTokenName();
                newCharacterEntry.tokenHeldOwnerIndex = chara.tokenTranporte.GetComponent <Token>().getOwnerIndex();
            }
            charactersData.Add(newCharacterEntry);
        }
        foreach (Item item in items)
        {
            int row = -1, column = -1;
            if (item.caseActuelle != null)
            {
                CaseBehavior cell = item.caseActuelle.GetComponent <CaseBehavior>();
                row    = cell.row;
                column = cell.column;
            }
            GameDataItem newItemEntry = new GameDataItem(item.getTokenName(), item.getOwnerIndex(), row, column, item.tokenPlace, item.horsJeu);
            if (item.cibleToken != null)
            {
                if (item.cibleToken.transform.parent != null)
                {
                    newItemEntry.indexRoomAssociated = item.cibleToken.transform.parent.GetComponent <HiddenTileBehavior>().tileAssociated.GetComponent <TileBehavior>().index;
                }
                else
                {
                    newItemEntry.row    = item.cibleToken.caseActuelle.row;
                    newItemEntry.column = item.cibleToken.caseActuelle.column;
                }
            }
            if (item.tokenHolder != null)
            {
                newItemEntry.associatedCharacterName       = item.tokenHolder.getTokenName();
                newItemEntry.associatedCharacterOwnerIndex = item.tokenHolder.getOwnerIndex();
            }
            itemsData.Add(newItemEntry);
        }
    }
Esempio n. 3
0
    private List <GameDataCharacter> buildCharactersData()
    {
        List <GameDataCharacter> charactersData = new List <GameDataCharacter>();

        // build revealed characters
        foreach (var token in tokens)
        {
            if (token.isCharacter)
            {
                int    playerIndex = getPlayerIndex(token.player_id);
                string name        = pickAndAssignToken(playerIndex, token.type);
                Multi.Logger.Instance.Log("LOG", CreateCoolTokenLogMessage(name, token, "character"));
                Debug.Assert(name != null);
                string tokenname     = board.ConvertToGame(name);
                int    row           = board.ConvertY(token.y);
                int    col           = board.ConvertX(token.x);
                var    characterData = new GameDataCharacter(tokenname, playerIndex, row, col, token.isOnBoard || token.isRemovedFromGame, token.isRemovedFromGame, token.wounded, token.wounded_this_turn, token.blocked_this_turn, token.isKilled, token.additional_actions);
                if (token.isOnTile)
                {
                    characterData.indexRoomAssociated = board.ConvertTile(token.associatedTileId);
                }
                if (token.toBePlaced && gamestate.discoveredRoom != INVALID_INT)
                {
                    characterData.indexRoomAssociated = board.ConvertTile(gamestate.discoveredRoom);
                }
                if (token.isCarried)
                {
                    board.GetTokenFromId(token.holdingCharacterId, out characterData.associatedCharacterOwnerIndex, out characterData.associatedCharacterName);
                    characterData.associatedCharacterName = board.ConvertToGame(characterData.associatedCharacterName);
                }
                if (carriedTokenMap.ContainsKey(token.id))
                {
                    board.GetTokenFromId(carriedTokenMap[token.id], out characterData.tokenHeldOwnerIndex, out characterData.tokenHeldName);
                    characterData.tokenHeldName = board.ConvertToGame(characterData.tokenHeldName);
                }
                if (gamestate.modifiedTokens.ContainsKey(token.id))
                {
                    var previousState = gamestate.modifiedTokens[token.id];
                    if (previousState.isCarried)
                    {
                        board.GetTokenFromId(previousState.holdingCharacterId, out characterData.previousAssociatedCharacterOwnerIndex, out characterData.previousAssociatedCharacterName);
                        characterData.previousAssociatedCharacterName = board.ConvertToGame(characterData.previousAssociatedCharacterName);
                    }
                    else
                    {
                        characterData.previousRow    = board.ConvertY(previousState.y);
                        characterData.previousColumn = board.ConvertX(previousState.x);
                    }
                }
                charactersData.Add(characterData);
            }
        }
        // build hidden characters
        foreach (var token in tokens)
        {
            if (token.isHidden)
            {
                int    playerIndex = getPlayerIndex(token.player_id);
                string name        = randomPickAndAssignCharacter(playerIndex);
                Multi.Logger.Instance.Log("LOG", CreateCoolTokenLogMessage(name, token, "character"));
                if (name != null)
                {
                    string tokenname     = board.ConvertToGame(name);
                    int    row           = board.ConvertY(token.y);
                    int    col           = board.ConvertX(token.x);
                    var    characterData = new GameDataCharacter(tokenname, playerIndex, row, col, token.isOnBoard || token.isRemovedFromGame, token.isRemovedFromGame, token.wounded, token.wounded_this_turn, token.blocked_this_turn, token.isKilled, token.additional_actions);
                    if (token.isOnTile)
                    {
                        characterData.indexRoomAssociated = board.ConvertTile(token.associatedTileId);
                    }
                    charactersData.Add(characterData);
                }
            }
        }
        return(charactersData);
    }