コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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.
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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());
            }
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
 /// <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);
 }
コード例 #8
0
        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;
        }
コード例 #9
0
 private void SetCardToGrave(Card c)
 {
     MoveCardInstance.SetCardToGrave(c);
     MultiplayManager.singleton.SendCardToGrave(c.User.InGameData.PhotonId);
 }