コード例 #1
0
        private static void InitCards(BattleRecordData _recordData, IList <int> _mCards, IList <int> _oCards)
        {
            _recordData.mCards = new int[Math.Min(_mCards.Count, BattleConst.DECK_CARD_NUM)];

            int[] tmpArr = new int[_mCards.Count];

            for (int i = 0; i < _mCards.Count; i++)
            {
                tmpArr[i] = _mCards[i];
            }

            BattlePublicTools.Shuffle(tmpArr, random.Next);

            Array.Copy(tmpArr, _recordData.mCards, _recordData.mCards.Length);

            _recordData.oCards = new int[Math.Min(_oCards.Count, BattleConst.DECK_CARD_NUM)];

            tmpArr = new int[_oCards.Count];

            for (int i = 0; i < _oCards.Count; i++)
            {
                tmpArr[i] = _oCards[i];
            }

            BattlePublicTools.Shuffle(tmpArr, random.Next);

            Array.Copy(tmpArr, _recordData.oCards, _recordData.oCards.Length);
        }
コード例 #2
0
        public override bool Enter(Func <int, int> _getRandomValueCallBack, BattleCore _t, bool _u, AiSummonData _v)
        {
            Turrent[] turrentArr = _u ? _t.mTurrent : _t.oTurrent;

            int id = _t.GetCard(_u, _v.uid);

            IUnitSDS unitSDS = BattleCore.GetUnitData(id);

            for (int i = 0; i < BattleConst.MAP_HEIGHT; i++)
            {
                if (Array.IndexOf(unitSDS.GetRow(), i) != -1)
                {
                    for (int m = 0; m < BattleConst.MAP_WIDTH; m++)
                    {
                        int unitPos = i * BattleConst.MAP_WIDTH + m;

                        bool canSet = true;

                        for (int n = 0; n < unitSDS.GetPos().Length; n++)
                        {
                            int posFix = unitSDS.GetPos()[n];

                            int x = posFix % BattleConst.MAP_WIDTH;

                            if (m + x < BattleConst.MAP_WIDTH)
                            {
                                int pos = unitPos + posFix;

                                if (turrentArr[pos] != null)
                                {
                                    canSet = false;

                                    break;
                                }
                            }
                            else
                            {
                                canSet = false;

                                break;
                            }
                        }

                        if (canSet)
                        {
                            int score = BattlePublicTools.GetUnitAttackTargetScore(_t, _u, id, unitPos, turrentTargetScore, baseTargetScore);

                            if (score > 0)
                            {
                                _v.summonPosList.Add(new KeyValuePair <int, int>(unitPos, score));
                            }
                        }
                    }
                }
            }

            return(_v.summonPosList.Count > 0);
        }
コード例 #3
0
        private bool DoAction(out BattleAttackVO _vo)
        {
            Dictionary <KeyValuePair <int, int>, int> recDic = null;

            if (sds.GetAttackDamageAdd() > 0)
            {
                recDic = lastTargetDic;

                lastTargetDic = new Dictionary <KeyValuePair <int, int>, int>();
            }

            List <int> result = BattlePublicTools.GetTurrentAttackTargetList(battleCore, parent.isMine, sds, pos);

            if (result != null)
            {
                Turrent[] oppTurrent = parent.isMine ? battleCore.oTurrent : battleCore.mTurrent;

                List <KeyValuePair <int, int> > damageDataList = new List <KeyValuePair <int, int> >();

                for (int i = 0; i < result.Count; i++)
                {
                    int targetPos = result[i];

                    if (targetPos < 0)
                    {
                        if (sds.GetAttackDamageAdd() > 0)
                        {
                            if (!lastTargetDic.ContainsKey(new KeyValuePair <int, int>(-1, -1)))
                            {
                                int lastTargetTime;

                                if (recDic.TryGetValue(new KeyValuePair <int, int>(-1, -1), out lastTargetTime))
                                {
                                    lastTargetDic.Add(new KeyValuePair <int, int>(-1, -1), lastTargetTime);
                                }
                                else
                                {
                                    lastTargetDic.Add(new KeyValuePair <int, int>(-1, -1), time);
                                }
                            }
                        }

                        int damage = DamageBase();

                        damageDataList.Add(new KeyValuePair <int, int>(-1, damage));
                    }
                    else
                    {
                        Turrent targetTurrent = oppTurrent[targetPos];

                        if (sds.GetAttackDamageAdd() > 0)
                        {
                            if (!lastTargetDic.ContainsKey(new KeyValuePair <int, int>(targetTurrent.parent.uid, targetTurrent.pos)))
                            {
                                int lastTargetTime;

                                if (recDic.TryGetValue(new KeyValuePair <int, int>(targetTurrent.parent.uid, targetTurrent.pos), out lastTargetTime))
                                {
                                    lastTargetDic.Add(new KeyValuePair <int, int>(targetTurrent.parent.uid, targetTurrent.pos), lastTargetTime);
                                }
                                else
                                {
                                    lastTargetDic.Add(new KeyValuePair <int, int>(targetTurrent.parent.uid, targetTurrent.pos), time);
                                }
                            }
                        }

                        int damage = DamageTurrent(targetTurrent);

                        damageDataList.Add(new KeyValuePair <int, int>(targetPos, damage));
                    }
                }

                _vo = new BattleAttackVO(parent.isMine, pos, damageDataList);

                return(true);
            }
            else
            {
                _vo = new BattleAttackVO();

                return(false);
            }
        }