Example #1
0
 public GatherTask(ResourceNodes _target, WorldEntities _actor)
 {
     nodeTarget          = _target;
     actor               = _actor;
     taskSpeed           = GameState.instance.gatherSpeed;
     requiredTool        = _target.requiredTool;
     type                = TaskType.gather;
     unavailablePosition = new List <Vector2Int>();
 }
Example #2
0
    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);
        }
    }