private void RPC_BlockClient(int defendId, int attackId, int defendUser, int attackUser, int count) { CreatureCard defendCard = GetCard(defendId, defendUser); CreatureCard attackCard = GetCard(attackId, attackUser); MoveCardInstance.SetCardsForBlock(defendCard, attackCard, count); }
private void RPC_PlayerPickCard(int cardUniqueId, int photonId) { PlayerHolder currentPlayer = GetPlayer(photonId).ThisPlayer; Card card = currentPlayer.CardManager.SearchCard(cardUniqueId); if (card == null) { Debug.LogError("CardISNULL"); return; } Debug.Log("AddCard"); GameObject go = Instantiate(MainData.CardPrefab) as GameObject; CardAppearance visual = go.GetComponent <CardAppearance>(); visual.LoadCard(card, go); card.Init(go); card.User = currentPlayer; MoveCardInstance.SetParentForCard(go.transform, currentPlayer.CardTransform.HandGrid.value); if (currentPlayer.CardManager.handCards.Count <= 7) { currentPlayer.CardManager.handCards.Add(card.GetCardData.UniqueId); } else { Setting.RegisterLog("Can't add card. Next card is deleted", Color.black); } }
public void SetCardBackToOrigin(Card card) { //Debug.LogFormat("{0} is going back to its original field location, {1}", card.Data.Name, // card.GetOriginFieldLocation().transform.gameObject.name); MoveCardInstance.SetParentForCard(card.PhysicalCondition.transform, card.PhysicalCondition.GetOriginFieldLocation()); //Replace card to original place //I think I need to find FieldArea gameobject and make it as parent of card. Should check this. }
public void RPC_DropCard(int cardId, int areaID) { CreatureCard c = GetCard(cardId); Area a = null; tmp.TryGetValue(areaID, out a); c.PhysicalCondition.SetOriginFieldLocation(a.transform); MoveCardInstance.DropCreatureCard(c); c.User.InGameData.ManaManager.UpdateCurrentMana(-(c.GetCardData.ManaCost)); Debug.Log("CardDroped"); }
private void RPC_Attack(int cardId) { CreatureCard c = GetCard(cardId); PlayerHolder currentPlayer = c.User; if (c.User.CardManager.CheckCardContainer(CardContainer.Field, c)) { currentPlayer.CardManager.attackingCards.Add(c.GetCardData.UniqueId); currentPlayer.CardTransform.SetCardOnBattleLine(c); } else if (c.User.CardManager.CheckCardContainer(CardContainer.Attack, c)) //Return to Original Place = Cancel Attack { currentPlayer.CardManager.attackingCards.Remove(c.GetCardData.UniqueId); MoveCardInstance.SetParentForCard(c.PhysicalCondition.transform, c.PhysicalCondition.GetOriginFieldLocation()); } }
/// <summary> /// Set card to 'BattleLine' Obj /// This need to get changed. There should be a battle line, /// but card should be placed at little towards enemy from original position /// </summary> /// <param name="card"></param> public void SetCardOnBattleLine(CreatureCard card) { Vector3 position = card.PhysicalCondition.gameObject.transform.position; MoveCardInstance.SetCardsForAttack(card.PhysicalCondition.transform, AttackingLine.value); }
/// <summary> /// Move Card Instance To Grave /// Due to Synchronization, It can't be placed on 'MoveCardInstance' /// </summary> /// <param name="c"></param> /// <param name="graveTransform"></param> public static void MoveCardToGrave(Card c, Transform graveTransform) { MoveCardInstance.SetParentForCard(c.PhysicalCondition.transform, graveTransform); //Debug.LogFormat("MoveCardToGrave: {0} is move to grave({1}) successfully", c.Data.Name, graveTransform.name); }
private void BattleResolveForPlayers() { CardBattle.BattleLogics battleLogic = new CardBattle.BattleLogics(); PlayerHolder currentPlayer = Setting.gameController.CurrentPlayer; PlayerHolder enemyPlayer = Setting.gameController.GetOpponentOf(currentPlayer); Element elementAttack = MainData.AttackElement; Element elementHealth = MainData.HealthElement; int battleResult = 0; //Debug.LogFormat ("CurrentPlayer is {0}. Is he owns photonview?: {1}", currentPlayer.player ,photonView.isMine); //When there is no attacking card, Battle resolve don't need to be run. End the phase if (enemyPlayer.CardManager.attackingCards.Count == 0) { photonView.RPC("RPC_BattleResolvesCallBack", PhotonTargets.All, currentPlayer.InGameData.PhotonId); return; } //Get defending cards from the manager //Dictionary<CardInstance, BlockInstance> defDic = gc.BlockManager.BlockInstDict; Dictionary <Card, BlockInstance> blockInstDict = GC.BlockManager.BlockInstDict; if (blockInstDict == null) { Debug.LogWarning("BattleResolve_Error: Defending card instance dictionary is null"); return; } //Every current player's attacking card, for (int atkCardIndex = 0; atkCardIndex < enemyPlayer.CardManager.attackingCards.Count; atkCardIndex++) { int atkId = enemyPlayer.CardManager.attackingCards[atkCardIndex]; CreatureCard atkInst = (CreatureCard)enemyPlayer.CardManager.SearchCard(atkId); if (atkInst == null) { Debug.LogError("FailCastingToCreature: Attacking card failed change to 'CreatureCard"); } BlockInstance blockInstance = GC.BlockManager.GetBlockInstanceByAttacker(atkInst, blockInstDict); battleResult = battleLogic.CardBattle(atkInst, blockInstance, MainData); if (battleResult == -1) { continue; } //BattleResult is remaining attack damage after destroying all block cards. //After remaining damage is dealt to user, card goes back to its original place. if (battleResult > 0) { battleLogic.AttackerWinFight(atkInst, battleResult); photonView.RPC("RPC_SyncPlayerHealth", PhotonTargets.All, currentPlayer.InGameData.PhotonId, currentPlayer.InGameData.Health); Setting.RegisterLog("Attack damage is " + battleResult, Color.red); } } //Return all alive blocking cards to its original field location foreach (Card c in blockInstDict.Keys) { if (c.CardCondition.IsDead) { Debug.LogWarningFormat("BattleResolve_BlockDictionary: {0} is dead", c.GetCardData.Name); continue; } else { Debug.LogFormat("BattleResolveForPlayer_BattleFinished: Card ( {0} ) Reset. Move Card to its original field location", c.GetCardData.Name); c.CardCondition.CanUse = true; MoveCardInstance.SetParentForCard(c.PhysicalCondition.transform, c.PhysicalCondition.GetOriginFieldLocation()); } } if (enemyPlayer.CardManager.fieldCards.Count != 0) { foreach (int id in enemyPlayer.CardManager.fieldCards) { Card c = enemyPlayer.CardManager.SearchCard(id); if (c.CardCondition.IsDead) { Debug.LogErrorFormat("BattleResolve_EnemyFieldCardError: {0} is dead__owner is {1}", c.GetCardData.Name , c.User.PlayerProfile.UniqueId); continue; } else { Debug.LogFormat("BattleResolveForPlayer_ResetEnemyCard__{0}", c.GetCardData.Name); MoveCardInstance.SetParentForCard(c.PhysicalCondition.transform, c.PhysicalCondition.GetOriginFieldLocation()); } } } Debug.Log("BattleResolveForPlayer: EndOfCode_CallBack_Run"); //After all battle logics are finished, run callback to clean up remaining variables photonView.RPC("RPC_BattleResolvesCallBack", PhotonTargets.All, currentPlayer.InGameData.PhotonId); return; }
private void SetCardToGrave(Card c) { MoveCardInstance.SetCardToGrave(c); MultiplayManager.singleton.SendCardToGrave(c.User.InGameData.PhotonId); }