示例#1
0
 /// <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;
 }
示例#2
0
        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);
     }
 }
示例#4
0
 /// <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);
 }
示例#5
0
 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();
 }
示例#6
0
 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);
     }
 }
示例#7
0
 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);
 }
示例#8
0
 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));
 }