コード例 #1
0
        public static int GetUnitAttackTargetScore(BattleCore _battleCore, bool _isMine, int _id, int _pos, int _turrentScore, int _baseScore)
        {
            int score = 0;

            IUnitSDS unitSDS = BattleCore.GetUnitData(_id);

            for (int i = 0; i < unitSDS.GetPos().Length; i++)
            {
                int pos = _pos + unitSDS.GetPos()[i];

                ITurrentSDS turrentSDS = unitSDS.GetTurrent()[i];

                List <int> result = GetTurrentAttackTargetList(_battleCore, _isMine, turrentSDS, pos);

                if (result != null)
                {
                    for (int m = 0; m < result.Count; m++)
                    {
                        int targetPos = result[m];

                        if (targetPos < 0)
                        {
                            score += _baseScore;
                        }
                        else
                        {
                            score += _turrentScore;
                        }
                    }
                }
            }

            return(score);
        }
コード例 #2
0
        internal void Init(BattleCore _battleCore, Unit _parent, ITurrentSDS _sds, int _pos, int _time)
        {
            battleCore = _battleCore;

            parent = _parent;

            sds = _sds;

            pos = _pos;

            time = _time + _parent.sds.GetCd();

            if (sds.GetAttackDamageAdd() > 0)
            {
                lastTargetDic = new Dictionary <KeyValuePair <int, int>, int>();
            }
        }
コード例 #3
0
ファイル: Unit.cs プロジェクト: ludidilu/Turrent
        public void Init(BattleCore _battleCore, bool _isMine, IUnitSDS _sds, int _uid, int _pos, int _time)
        {
            battleCore = _battleCore;

            isMine = _isMine;

            sds = _sds;

            uid = _uid;

            pos = _pos;

            hp = sds.GetHp();

            state = UnitState.CD;

            if (sds.GetLiveTime() > 0)
            {
                dieTime = _time + sds.GetLiveTime();
            }

            Turrent[] turrentPos = isMine ? battleCore.mTurrent : battleCore.oTurrent;

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

                ITurrentSDS turrentSDS = sds.GetTurrent()[i];

                Turrent turrent = new Turrent();

                turrent.Init(battleCore, this, turrentSDS, pos + posFix, _time);

                turrentPos[pos + posFix] = turrent;

                turrentList.Add(turrent);
            }
        }
コード例 #4
0
        public static List <int> GetTurrentAttackTargetList(BattleCore _battleCore, bool _isMine, ITurrentSDS _sds, int _pos)
        {
            List <int> result = null;

            int x = _pos % BattleConst.MAP_WIDTH;

            int oppX = BattleConst.MAP_WIDTH - 1 - x;

            Turrent[] oppTurrent = _isMine ? _battleCore.oTurrent : _battleCore.mTurrent;

            for (int i = 0; i < _sds.GetAttackTargetPos().Length; i++)
            {
                KeyValuePair <int, int>[] targetPosFixArr = _sds.GetAttackTargetPos()[i];

                bool getTarget = false;

                for (int n = 0; n < targetPosFixArr.Length; n++)
                {
                    KeyValuePair <int, int> targetPosFix = targetPosFixArr[n];

                    int targetX = oppX + targetPosFix.Key;

                    if (targetX >= BattleConst.MAP_WIDTH || targetX < 0)
                    {
                        continue;
                    }

                    int targetY = targetPosFix.Value;

                    int targetPos = targetY * BattleConst.MAP_WIDTH + targetX;

                    Turrent targetTurrent = oppTurrent[targetPos];

                    if (targetTurrent != null)
                    {
                        if (!getTarget)
                        {
                            getTarget = true;

                            result = new List <int>();
                        }

                        result.Add(targetPos);
                    }
                }

                if (getTarget)
                {
                    KeyValuePair <int, int>[] arr = _sds.GetAttackSplashPos()[i];

                    for (int m = 0; m < arr.Length; m++)
                    {
                        KeyValuePair <int, int> targetPosFix = arr[m];

                        int targetX = oppX + targetPosFix.Key;

                        if (targetX >= BattleConst.MAP_WIDTH || targetX < 0)
                        {
                            continue;
                        }

                        int targetY = targetPosFix.Value;

                        int targetPos = targetY * BattleConst.MAP_WIDTH + targetX;

                        Turrent targetTurrent = oppTurrent[targetPos];

                        if (targetTurrent != null)
                        {
                            result.Add(targetPos);
                        }
                    }

                    return(result);
                }
            }

            if (_sds.GetCanAttackBase())
            {
                result = new List <int>();

                result.Add(-1);
            }

            return(result);
        }