public void ClickTile(MBTile tile) { MapCoordinate coordinate = tiles.Get(tile); switch (State) { case ControlState.DESELECTED: MoveCursorTo(coordinate); break; case ControlState.UNIT_MOVE: MoveCursorTo(coordinate); if (InRange(coordinate) && !IsOccupied(cursorPos)) { MoveUnit(units.Get(selected), new List <MapCoordinate>() { selected, coordinate }); CloseRangeSelection(); Deselect(); } break; case ControlState.UNIT_ATTACK: if (InRange(cursorPos) && IsOccupied(cursorPos)) { ClickUnit(units.Get(cursorPos)); } MoveCursorTo(coordinate); break; default: break; } }
private void MoveCursorTo(MapCoordinate coordinate) { if (InBounds(coordinate) && InRange(coordinate)) { MapCoordinate oldPos = cursorPos; this.cursorPos = coordinate; cursor.localPosition = cursorPos.Vector3 + (Vector3.up * Heights[cursorPos]); mbCamera.MoveTo(coordinate.Vector3); MBTile tile = tiles.Get(coordinate); if (tile != null) { tile.setSelectedColor(); if (InRange(oldPos) && State == ControlState.UNIT_MOVE) { tiles.Get(oldPos).setMoveRangeColor(); } else { tiles.Get(oldPos).setDefaultColor(); } } } }