/// <summary> /// Fills in the required mod info from Steam. /// </summary> /// <param name="details">The mod details.</param> internal void Populate(SteamUGCDetails_t details) { state = SteamModState.DetailsDirty; ugcMod = new SteamUGCService.Mod(details, ugcMod?.previewImage); fileId = details.m_hFile; previewId = details.m_hPreviewFile; }
private Mod MakeMod(SteamUGCService.Mod subscribed) { if (subscribed == null) { return(null); } if ((SteamUGC.GetItemState(subscribed.fileId) & 4) == 0) { return(null); } PublishedFileId_t fileId = subscribed.fileId; string id = fileId.m_PublishedFileId.ToString(); Label label = default(Label); label.id = id; label.distribution_platform = Label.DistributionPlatform.Steam; label.version = (long)subscribed.lastUpdateTime; label.title = subscribed.title; Label label2 = label; if (!SteamUGC.GetItemInstallInfo(subscribed.fileId, out ulong _, out string pchFolder, 1024u, out uint _)) { Global.Instance.modManager.events.Add(new Event { event_type = EventType.InstallInfoInaccessible, mod = label2 }); return(null); } return(new Mod(label2, subscribed.description, new ZipFile(pchFolder), UI.FRONTEND.MODS.TOOLTIPS.MANAGE_STEAM_SUBSCRIPTION, delegate { Application.OpenURL("https://steamcommunity.com/sharedfiles/filedetails/?id=" + id); })); }
/// <summary> /// Applied after FindMod runs. /// </summary> internal static void Postfix(PublishedFileId_t item, ref SteamUGCService.Mod __result) { if (!SafeMode) { __result = SteamUGCServiceFixed.Instance.FindMod(item); } }
/// <summary> /// Looks for a mod in the mod list. /// </summary> /// <param name="item">The mod ID to look up.</param> /// <returns>The mod found, or null if no mod with that ID was found.</returns> public SteamUGCService.Mod FindMod(PublishedFileId_t item) { SteamUGCService.Mod ret = null; if (allMods.TryGetValue(item, out ModInfo mod)) { ret = mod.ugcMod; } return(ret); }
internal ModInfo(PublishedFileId_t id) { clientSeen = false; fileId = UGCHandle_t.Invalid; installPath = null; previewDirty = false; previewId = UGCHandle_t.Invalid; state = SteamModState.NeedsDetails; // Fill in with a proxy mod by default ugcMod = new SteamUGCService.Mod(id); Summon(); }
public void UpdateMods(IEnumerable <PublishedFileId_t> added, IEnumerable <PublishedFileId_t> updated, IEnumerable <PublishedFileId_t> removed, IEnumerable <SteamUGCService.Mod> loaded_previews) { foreach (PublishedFileId_t item in added) { SteamUGCService.Mod mod = SteamUGCService.Instance.FindMod(item); if (mod == null) { DebugUtil.DevAssert(false, "SteamUGCService just told us this id was valid!"); } else { Mod mod2 = MakeMod(mod); if (mod2 != null) { Global.Instance.modManager.Subscribe(mod2, this); } } } foreach (PublishedFileId_t item2 in updated) { SteamUGCService.Mod mod3 = SteamUGCService.Instance.FindMod(item2); if (mod3 == null) { DebugUtil.DevAssert(false, "SteamUGCService just told us this id was valid!"); } else { Mod mod4 = MakeMod(mod3); if (mod4 != null) { Global.Instance.modManager.Update(mod4, this); } } } foreach (PublishedFileId_t item3 in removed) { PublishedFileId_t current3 = item3; Global.Instance.modManager.Unsubscribe(new Label { id = current3.m_PublishedFileId.ToString(), distribution_platform = Label.DistributionPlatform.Steam }, this); } if (added.Count() != 0) { Global.Instance.modManager.Sanitize(null); } else { Global.Instance.modManager.Report(null); } }
private void ShowDetails(PublishedFileId_t item) { activeItem = item; SteamUGCService.Mod mod = SteamUGCService.Instance.FindMod(item); if (mod != null) { scenarioTitle.text = mod.title; scenarioDetails.text = mod.description; } loadScenarioButton.onClick += delegate { LoadScenario(item); }; detailsRoot.gameObject.SetActive(true); }
private static string GetLanguageFileFromSteam(PublishedFileId_t item, out System.DateTime lastModified) { lastModified = System.DateTime.MinValue; if (item == PublishedFileId_t.Invalid) { Debug.LogWarning("Cant get INVALID file id from Steam"); return(null); } SteamUGCService.Mod mod = SteamUGCService.Instance.FindMod(item); if (mod == null) { Debug.LogWarning("Mod is not in published list"); return(null); } byte[] bytesFromZip = SteamUGCService.GetBytesFromZip(item, poFile, out lastModified, false); if (bytesFromZip == null || bytesFromZip.Length == 0) { Debug.LogWarning("Failed to read from Steam mod installation"); return(null); } return(Encoding.UTF8.GetString(bytesFromZip)); }