private void ExecuteActionHeal(ActionHeal action) { if (gManager.onlineGameInterface.WaitingForExpectedState()) { gManager.onlineGameInterface.ForceEndReplayAction(); return; } CharacterBehaviorIHM character = GetTokenByNameAndPlayerId(action.tokenName, action.playerId).GetComponent <CharacterBehaviorIHM>(); CharacterBehaviorIHM target = GetTokenById(action.targetId).GetComponent <CharacterBehaviorIHM>(); if (action.tokenName == "Troll") { Debug.Assert(character == target); Debug.Assert(character is CB_TrollIHM); character.characterSelection(); character.GetComponent <CB_TrollIHM>().regenerate(); gManager.onlineGameInterface.ForceEndReplayAction(); } else if (action.tokenName == "Cleric") { Debug.Assert(character == target); Debug.Assert(character is CB_ClercIHM); character.characterSelection(); character.GetComponent <CB_ClercIHM>().healCharacter(); // TODO: the target seems not to be actually applied // EndReplay is done by the clerc } else { Debug.Assert(false, "Unexpected character type"); gManager.onlineGameInterface.ForceEndReplayAction(); } }
private void ExecuteActionDoor(ActionDoor action) { if (gManager.onlineGameInterface.WaitingForExpectedState()) { gManager.onlineGameInterface.ForceEndReplayAction(); return; } CaseBehavior actionCharacterCell = gManager.getCase(action.y1, action.x1).GetComponent <CaseBehavior>(); CharacterBehavior c = actionCharacterCell.getNonWoundedCharacter(); Debug.Assert(c != null); CharacterBehaviorIHM character = c.GetComponent <CharacterBehaviorIHM>(); character.characterSelection(); if (action.action == ActionType.DESTROYDOOR) { Debug.Assert(character is CB_GuerrierIHM); character.GetComponent <CB_GuerrierIHM>().briserHerse(); } else { Debug.Assert(character is CB_VoleuseIHM); character.GetComponent <CB_VoleuseIHM>().changerEtatHerse(); } gManager.onlineGameInterface.ForceEndReplayAction(); }
private void ExecuteActionRoomRotated(ActionRoomRotated action) { if (gManager.onlineGameInterface.WaitingForExpectedState()) { gManager.onlineGameInterface.ForceEndReplayAction(); return; } TileBehaviorIHM tile = GetTileOfIndex(action.tileIndex).GetComponent <TileBehaviorIHM>(); CharacterBehaviorIHM chara = GetTokenByNameAndPlayerId(action.tokenName, action.playerId).GetComponent <CharacterBehaviorIHM>(); chara.characterSelection(); tile.inverseRotationDirection = (tile.associatedTile.clockwiseRotation != action.clockwise); tile.enableTileRotation(); // enable rotation, apply the rotation and than disable rotation // EndReplayAction is called at the end of the rotation. }
private void ExecuteActionCombatStart(ActionCombatStart action) { if (gManager.onlineGameInterface.WaitingForExpectedState()) { gManager.onlineGameInterface.ForceEndReplayAction(); return; } Debug.Assert(action.attackers.Count > 0); Debug.Assert(action.defenders.Count > 0); CharacterBehaviorIHM character = GetTokenByNameAndPlayerId(action.attackers[0], action.playerId).GetComponent <CharacterBehaviorIHM>(); string opponentId = gManager.onlineGameInterface.playerId(1 - gManager.onlineGameInterface.playerIndex(action.playerId)); CharacterBehaviorIHM target = GetTokenByNameAndPlayerId(action.defenders[0], opponentId).GetComponent <CharacterBehaviorIHM>(); character.characterSelection(); gManager.combatManager.combat(target.gameObject); gManager.onlineGameInterface.ForceEndReplayAction(); }
private void ExecuteActionMove(ActionMove action) { if (gManager.onlineGameInterface.WaitingForExpectedState()) { gManager.onlineGameInterface.ForceEndReplayAction(); return; } CharacterBehavior chara = GetTokenByNameAndPlayerId(action.tokenName, action.playerId).GetComponent <CharacterBehavior>(); CharacterBehaviorIHM charaIHM = chara.GetComponent <CharacterBehaviorIHM>(); if (!chara.selected) { charaIHM.characterSelection(); } // synchronize carried token if (gManager.onlineGameInterface.IsCarrier(action.tokenId)) { int carriedId = gManager.onlineGameInterface.GetCarriedToken(action.tokenId); Token carriedToken = GetTokenById(carriedId); if (chara.tokenTranporte != null && chara.tokenTranporte.GetComponent <Token>() == carriedToken) { charaIHM.deposerToken(); } if (chara.tokenTranporte == null) { charaIHM.ramasserToken(carriedToken.gameObject); } } else { if (chara.tokenTranporte != null) { charaIHM.deposerToken(); } } CaseBehavior target = gManager.getCase(action.y, action.x).GetComponent <CaseBehavior>(); target.cibleAssociated.GetComponent <CibleDeplacementIHM>().moveSelectedTokenToTarget(); // jump will automatically call end movement // for simple walk, end movement is called when leaving movingCharacterContinue state. }
private void ExecuteActionRemove(ActionRemove action) { if (gManager.onlineGameInterface.WaitingForExpectedState()) { gManager.onlineGameInterface.ForceEndReplayAction(); return; } if (action.score > 0) // get out { Debug.Assert(false, "Not implemented yet"); //GameObject character = ... //moveCharacter(character.GetComponent<CharacterBehavior>()); //endCharacterMovement(character.GetComponent<TokenIHM>()); gManager.onlineGameInterface.ForceEndReplayAction(); } else // use potion, fireballwand { Debug.Assert(action.removeTokenIds.Count == 1); // 1 item is consummed Token token = GetTokenById(action.removeTokenIds[0]); if (token is Item_PotionDeVitesse) { CharacterBehaviorIHM character = GetTokenByNameAndPlayerId(action.tokenName, action.playerId).GetComponent <CharacterBehaviorIHM>(); character.characterSelection(); token.GetComponent <Item_PotionDeVitesse_IHM>().speedPotion(); gManager.onlineGameInterface.ForceEndReplayAction(); } else if (token is Item_BatonDeBouleDeFeu) { Multi.Logger.Instance.Log("LOG", "Skip removal of fireball"); gManager.onlineGameInterface.ForceEndReplayAction(); } else { Debug.Assert(false, "Unexpected token"); } } }