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); }
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); }
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 int CheckAddSummon(bool _isMine, int _uid, int _pos) { List <int> handCards; int money; Turrent[] turrent; if (_isMine) { handCards = mHandCards; money = mMoney; turrent = mTurrent; } else { handCards = oHandCards; money = oMoney; turrent = oTurrent; } int handCardsIndex = handCards.IndexOf(_uid); if (handCardsIndex != -1) { int unitID = GetCard(_isMine, _uid); IUnitSDS sds = GetUnitData(unitID); if (sds.GetCost() > money) { return(1); } int row = _pos / BattleConst.MAP_WIDTH; if (Array.IndexOf(sds.GetRow(), row) != -1) { int x = _pos % BattleConst.MAP_WIDTH; for (int i = 0; i < sds.GetPos().Length; i++) { int pos = sds.GetPos()[i]; int offsetX = pos % BattleConst.MAP_WIDTH; if (x + offsetX < BattleConst.MAP_WIDTH) { if (turrent[_pos + pos] != null) { return(6); } } else { return(4); } } } else { return(3); } return(-1); } else { return(7); } }