public static int GetMapPassValue(EnumMoveClassType moveClass, Vector2Int tilePos) //得到此处的人物通过消耗 { if (IsOccupiedByDiffentParty(tilePos)) //图块被敌方占用,则我方不可通过,敌方按正常计算 { return(100); } else { return(FeTileData.TileInfos[_MapTileType[tilePos.x, tilePos.y]].GetMoveCost(moveClass)); } }
public static void InitActionScope(EnumCharacterCamp camp, EnumMoveClassType moveClass, int Movement, Vector2Int pos, EnumSelectEffectRangeType weaponRangeType, Vector2Int atkRange) { _bPlayer = (camp != EnumCharacterCamp.Enemy);//0,2为我方的单位 _Mov = Movement; _MoveClass = moveClass; _CharacterCenter = pos; ResetMoveAcessList(); _bMoveAcessList[_CharacterCenter.x, _CharacterCenter.y] = true; _bMoveAcessListExcluded[_CharacterCenter.x, _CharacterCenter.y] = true; _FootData.Add(_CharacterCenter, new Vector2Int(-1, -1)); _TempFootData.Add(_CharacterCenter, _Mov); int countPoint = 0; while (countPoint < _Mov) { _FindDistance(_Mov);//递归查询距离 _FindDistance(Table._JobTable.getBranch(gamechar.attribute.Job), _Mov, 0, 0); countPoint++; } if (atkRange.x > 0 && atkRange.y > 0)//装备武器不为空 { _AttackRangeData.Clear(); _ItemRangeMin = atkRange.x; _ItemRangeMax = atkRange.y; _WeaponRangeType = weaponRangeType; if (_ItemRangeMax != 0 && _ItemRangeMax - _ItemRangeMin > -1) //武器有距离 { for (int i = 0; i < _PList.Count; i++) //遍历可移动的区域 { AttackScan(_PList[i]); //递归查询距离 _FindDistance(Table._JobTable.getBranch(gamechar.attribute.Job), _Mov, 0, 0); } } MoveAcessListToAttackRange(); } }
public int GetMoveCost(EnumMoveClassType t) { return(moveCost[(int)t]); }