public GatherTask(ResourceNodes _target, WorldEntities _actor) { nodeTarget = _target; actor = _actor; taskSpeed = GameState.instance.gatherSpeed; requiredTool = _target.requiredTool; type = TaskType.gather; unavailablePosition = new List <Vector2Int>(); }
public void RightClickUnit() { Vector2Int mousePos = CaseFromMouse(); GameObject target = Raycast(); Citizen select = ((Citizen)selected); if (target == null) { Tile tile = map.GetTile(mousePos.x, mousePos.y); if (tile.relatedObject) { target = tile.relatedObject.gameObject; } else { select.TaskMoveTo(mousePos); select.state.type = WorldEntities.State.StateType.moving; } } if (target != null) { Ennemy ennemy = target.GetComponent <Ennemy>(); Building build = target.GetComponent <Building>(); ResourceNodes ressource = target.GetComponent <ResourceNodes>(); if (ennemy != null) { select.state.orderedTask = new FightMTask(select, ennemy); } else if (build != null) { if (build.isConstructing) { select.state.orderedTask = new BuildTask(build, select); } else { if (build.patron.type == Building.BuildingType.entrepot) { select.state.orderedTask = new StockTask(build, select); } else { select.state.orderedTask = new GoInsideBuilding(build, select); } } } else if (ressource != null && ressource.quantityLeft > 0) { select.state.orderedTask = new GatherTask(ressource, select); } else { target = null; } } if (target == null) { select.TaskMoveTo(mousePos); } }