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); }
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>(); } }
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); } }
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); }