public override void AI_RunActiveUnit() { Example1Unit myActiveUnit = (Example1Unit)_activeUnit; if (myActiveUnit.State == Example1Unit.CustomState.ReadyToMove) { int minDist = int.MaxValue; _targetUnit = null; foreach (SrpgUnit unit in _playerUnits) { int dist = SrpgGameUtils.CalcSimpleDistance(myActiveUnit, unit); if (dist < minDist) { minDist = dist; _targetUnit = (Example1Unit)unit; } } if (minDist == 1) { myActiveUnit.SetState(Example1Unit.CustomState.ReadyToAttack); ClearActiveUnitCells(); CreateActiveUnitAttackCells(); } else { minDist = int.MaxValue; SrpgCell targetCell = null; foreach (SrpgCell cell in _activeUnitCells) { int dist1 = SrpgGameUtils.CalcSimpleDistance(cell.x, cell.y, _activeUnit.x, _activeUnit.y); int dist2 = SrpgGameUtils.CalcSimpleDistance(cell.x, cell.y, _targetUnit.x, _targetUnit.y); int distSum = dist1 + dist2; if (distSum < minDist) { minDist = distSum; targetCell = cell; } } MoveActiveUnit(targetCell); } } else if (myActiveUnit.State == Example1Unit.CustomState.ReadyToAttack) { int dist = SrpgGameUtils.CalcSimpleDistance(myActiveUnit, _targetUnit); if (dist <= myActiveUnit.attackRange) { Attack(myActiveUnit, _targetUnit); } else { myActiveUnit.SetState(Example1Unit.CustomState.End); ClearActiveUnit(); } } }
public SrpgCell InstantiateCellIntoLayer(SrpgLayer layer, GameObject cellPrefab, int x, int y) { GameObject cellObj = Instantiate(cellPrefab, layer.transform); cellObj.name = string.Format("[{0}, {1}] {2}", x, y, cellObj.name); SrpgCell cell = cellObj.GetComponent <SrpgCell>(); cell.x = x; cell.y = y; cell.SetZIndex(layer.zIndexStart); float cellScale = _tileWidth / cell.GetSize().x; cellObj.transform.localScale = new Vector3(cellScale, cellScale, 1); cellObj.transform.position = CalcTilePosition(x, y); return(cell); }
public void MoveActiveUnit(SrpgCell cell) { MoveActiveUnit(cell.x, cell.y); }
public bool IsThereEnemyUnitAt(SrpgCell cell, SrpgUnit self = null) { return(IsThereEnemyUnitAt(cell.x, cell.y)); }
public bool IsTherePlayerUnitAt(SrpgCell cell, SrpgUnit self = null) { return(IsTherePlayerUnitAt(cell.x, cell.y, self)); }