public static bool TryFetchFunctionMarker(LG_Zone zone, ZonePlacementWeights weight, ExpeditionFunction function, out LG_DistributeItem distItem, out AIG_CourseNode distNode, bool createNew = true) { float rand = RandomUtil.Value("LG_Distribute_WardenObjective"); var exist = LG_DistributionJobUtils.TryGetExistingZoneFunctionDistribution(zone, function, rand, weight, out distItem, out distNode); if (!exist && createNew) { PushFunctionMarker(zone, weight, function, out distItem, out distNode); return(true); } return(exist); }
public static void PushFunctionMarker(LG_Zone zone, ZonePlacementWeights weight, ExpeditionFunction function, out LG_DistributeItem distItem, out AIG_CourseNode distNode) { var randNode = LG_DistributionJobUtils.GetRandomNodeFromZoneForFunction(zone, function, Builder.BuildSeedRandom.Value("FindFunctionMarker"), 1f); var newDistItem = new LG_DistributeItem() { m_function = function, m_amount = 1.0f, m_assignedNode = randNode }; randNode.m_zone.DistributionData.GenericFunctionItems.Enqueue(newDistItem); distItem = newDistItem; distNode = randNode; }
public static bool TryGetRandomPlaceSingleZone(CustomExpHandlerBase handlerContext, out LG_Zone zone, out ZonePlacementWeights weight) { return(LG_DistributionJobUtils.TryGetRandomPlacementZone(handlerContext.Layer, handlerContext.LayerData.ObjectiveData.ZonePlacementDatas, out zone, out weight)); }