private void LoadModIntoGame(PublishedFileId_t publishedFileId, bool owner) { ulong sizeOnDisk = 0; uint folderSize = 512; char[] temp = new char[folderSize]; string folder = new string(temp); uint timeStamp = 0; uint retval = SteamUGC.GetItemState(publishedFileId); EItemState state = (EItemState)retval; Debug.Log("Item state: " + state.ToString()); if (SteamUGC.GetItemInstallInfo(publishedFileId, out sizeOnDisk, out folder, folderSize, out timeStamp)) { try { foreach (Mod m in ModManager.importedMods) { if (m.path.Contains(folder)) { // Don't load twice return; } } // Register new mod in the ModManager ModImporter.ImportMod(folder, false, owner); } catch (System.Exception e) { Debug.LogWarning($"Failed to import {folder}: {e.Message}"); } } else { Debug.LogWarning("Attempted to load non-installed Steam Workshop item ID " + publishedFileId); } }
public static Dictionary <PublishedFileId_t, string> GetSubscribedItems() { if (!SteamManager.Initialised) { return(null); } uint numSubbed = SteamUGC.GetNumSubscribedItems(); PublishedFileId_t[] fileIds = new PublishedFileId_t[numSubbed]; SteamUGC.GetSubscribedItems(fileIds, numSubbed); ulong itemSize = 0; uint updatedTimestamp = 0; string folderPath = null; Dictionary <PublishedFileId_t, string> paths = new Dictionary <PublishedFileId_t, string>(); if (fileIds != null) { foreach (PublishedFileId_t fileId in fileIds) { EItemState state = (EItemState)SteamUGC.GetItemState(fileId); if ((state & EItemState.k_EItemStateInstalled) != 0) { if (SteamUGC.GetItemInstallInfo(fileId, out itemSize, out folderPath, 1024, out updatedTimestamp)) { paths.Add(fileId, folderPath); } } else { Logger.Debug("[WORKSHOP] State for Workshop Item " + fileId.m_PublishedFileId.ToString() + ": " + state.ToString()); } } } return(paths); }