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)); }
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); }