public static void SetGUID(LG_DistributeItem item, string guid = "") { if (string.IsNullOrEmpty(guid)) { guid = Guid.NewGuid().ToString(); } if (TryGetGUIDData(item.m_localTerminalLogFiles, out var existingGuid)) { existingGuid.FileContent = guid; } else { if (item.m_localTerminalLogFiles == null) { item.m_localTerminalLogFiles = new LogList(); } item.m_localTerminalLogFiles.Add(new TerminalLogFileData() { FileName = "!PLUGIN_RESERVED_SPECIAL_GUID", FileContent = guid }); } }
public static BuilderInfo FindInfoByItem(LG_DistributeItem item) { var guid = GetGUID(item); if (guid == null) { return(null); } return(_ItemBuilderDict.ContainsKey(guid) ? _ItemBuilderDict[guid] : null); }
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 void RegisterItem(LG_DistributeItem item, string guid = "", Action <GameObject> onSpawn = null) { ItemUtil.SetGUID(item, guid); if (onSpawn != null) { ItemMessage.OnItemSpawned += (itemGuid, gameObject) => { if (itemGuid != GetGUID(item)) { return; } onSpawn?.Invoke(gameObject); }; } }
public static void RegisterItem(LG_DistributeItem item, Action <GameObject> onSpawn) { var info = FindInfoByItem(item); if (info == null) { info = new BuilderInfo(); ItemUtil.SetGUID(item); _ItemBuilderDict.Add(ItemUtil.GetGUID(item), info); } //TODO: Refactor code ItemMessage.OnItemSpawned += (guid, gameObject) => { if (guid == GetGUID(item)) { onSpawn?.Invoke(gameObject); } }; }
public static bool TryFetchFunctionMarker(LG_Zone zone, ZonePlacementWeights weight, ExpeditionFunction function, out LG_DistributeItem distItem) { return(TryFetchFunctionMarker(zone, weight, function, out distItem, out _)); }
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); }
internal static void Postfix(LG_DistributeItem __instance, ref bool __result) { __result = ItemUtil.IsReusableItem(__instance); }
public static bool IsReusableItem(LG_DistributeItem item) { return(!IsWardenObjectiveItem(item)); }
public static bool IsWardenObjectiveItem(LG_DistributeItem item) { return(FindInfoByItem(item)?.IsWardenObjectiveItem ?? false); }
public static bool HasRegistered(LG_DistributeItem item) { return(FindInfoByItem(item) != null); }
public static string GetGUID(LG_DistributeItem item) { return(GetGUID(item.m_localTerminalLogFiles)); }