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); }
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); } }
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); }