public static List <ushort> FindAllClosePlaces(this HumanAI humanAI, uint citizenId, ref Citizen citizen, Vector3 position, ItemClass.Service[] services, ItemClass.SubService[] subServices, float distance) { var simulationManager = SimulationManager.instance; var currentBuilding = citizen.GetBuilding(); if (currentBuilding != 0) { var buildingManager = BuildingManager.instance; var closeBuildings = buildingManager.FindAllBuildings(position, distance, services, subServices, Building.Flags.Created, Building.Flags.Demolishing | Building.Flags.Deleted | Building.Flags.Abandoned); return(GlobalLocationHandler.FilterAcceptableBuildingsForCitizen(ref citizen, closeBuildings)); } return(null); }
public static bool TryVisit(this HumanAI humanAI, uint citizenId, ref Citizen citizen, ushort buildingId) { var currentBuilding = citizen.GetBuilding(); if (buildingId != 0 && currentBuilding != 0 && currentBuilding != buildingId && GlobalLocationHandler.GoodBuildingToVisit(buildingId, ref citizen)) { var moving = humanAI.GoToBuilding(citizenId, ref citizen, buildingId); CitizenActivityMonitor.LogActivity(citizenId, CitizenActivityMonitor.Activity.GoingToVisit); return(moving); } return(false); }
public static bool CanMove(this Citizen citizen) => citizen.IsVisible() || GlobalLocationHandler.ShouldMove();