private BuildingBase GetCraftingPad(ResourceBase resource)
        {
            var buildingSensor = Agent.Sensors.Get <BuildingSensor>();

            if (buildingSensor == null)
            {
                return(null);
            }

            Predicate <CraftingPad> predicate;

            switch (resource.resourceType)
            {
            case ResourceTypes.None:
                return(null);

            case ResourceTypes.Iron:
                predicate = c => c.NeedsIron;
                break;

            case ResourceTypes.Coal:
                predicate = c => c.NeedsCoal;
                break;

            case ResourceTypes.Copper:
                predicate = c => c.NeedsCopper;
                break;

            default:
                Debug.LogError("invalid resource type: " + resource.resourceType);
                return(null);
            }

            return(buildingSensor.FindClosestBuilding(BuildingTypes.CraftingPad, Agent.Owner.transform.position, predicate));
        }
Ejemplo n.º 2
0
        protected override bool Begin(IStateMachine <AIAttributes, object> stateMachine)
        {
            var item = (IGrabbableItem)Agent.Memory.Get(AIAttributes.HeldItem);

            if (!(item is ResourceBase resource) || resource.resourceType != ResourceTypes.Coal)
            {
                return(false);
            }
            fuel = resource;
            return(fuel != null);
        }