void GetBlueprints(string directory, MyBlueprintTypeEnum type) { if (!Directory.Exists(directory)) { return; } string[] folders = Directory.GetDirectories(directory); List <string> fileNames = new List <string>(); List <string> blueprintNames = new List <string>(); foreach (var f in folders) { fileNames.Add(f + "\\bp.sbc"); var tokens = f.Split('\\'); blueprintNames.Add(tokens[tokens.Length - 1]); } for (int i = 0; i < blueprintNames.Count; i++) { String name = blueprintNames[i]; var info = new MyBlueprintItemInfo(type); var item = new MyGuiControlListbox.Item(text: new StringBuilder(name), toolTip: name, userData: info, icon: MyGuiConstants.TEXTURE_ICON_BLUEPRINTS_LOCAL.Normal); m_blueprintList.Add(item); } }
static void ShareBlueprintRequest(ref ShareBlueprintMsg msg, MyNetworkClient sender) { if (Sync.IsServer && msg.SendToId != Sync.MyId) { Sync.Layer.SendMessage(ref msg, msg.SendToId); } else { var itemId = msg.WorkshopId; var name = msg.Name; var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.SHARED, id: itemId); var item = new MyGuiControlListbox.Item(new StringBuilder(name.ToString()), userData: info, icon: MyGuiConstants.TEXTURE_BLUEPRINTS_ARROW.Normal); item.ColorMask = new Vector4(0.7f); if (!m_recievedBlueprints.Any(item2 => (item2.UserData as MyBlueprintItemInfo).PublishedItemId == (item.UserData as MyBlueprintItemInfo).PublishedItemId)) { m_recievedBlueprints.Add(item); m_blueprintList.Add(item); if (sender != null) { var notification = new MyHudNotificationDebug(sender.DisplayName + " just shared a blueprint with you.", 2500); MyHud.Notifications.Add(notification); } } } }
void GetLocalBlueprintNames(bool reload = false) { string filePath = m_localBlueprintFolder; if (!Directory.Exists(filePath)) { return; } string[] folders = Directory.GetDirectories(filePath); List <string> fileNames = new List <string>(); List <string> blueprintNames = new List <string>(); foreach (var f in folders) { fileNames.Add(f + "\\bp.sbc"); var tokens = f.Split('\\'); blueprintNames.Add(tokens[tokens.Length - 1]); } for (int i = 0; i < blueprintNames.Count; i++) { String name = blueprintNames[i]; var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.LOCAL); var item = new MyGuiControlListbox.Item(text: new StringBuilder(name), toolTip: name, userData: info, icon: MyGuiConstants.TEXTURE_ICON_BLUEPRINTS_LOCAL.Normal); m_blueprintList.Add(item); } if (m_task.IsComplete) { if (reload) { GetWorkshopBlueprints(); } else { GetWorkshopItemsLocal(); } } foreach (var i in m_recievedBlueprints) { m_blueprintList.Add(i); } }
void GetWorkshopItemsLocal() { var filePath = Path.Combine(m_workshopBlueprintFolder, "temp"); if (Directory.Exists(filePath)) { var folders = Directory.GetDirectories(filePath); var blueprintNames = new List <string>(); var fileNames = new List <string>(); foreach (var f in folders) { var tokens = f.Split('\\'); blueprintNames.Add(tokens[tokens.Length - 1]); } for (int i = 0; i < blueprintNames.Count; i++) { var modInfoPath = Path.Combine(filePath, blueprintNames[i], "info.temp"); MyObjectBuilder_ModInfo modInfo = null; if (File.Exists(modInfoPath)) { MyAnalyticsHelper.ReportActivityStart(null, "show_blueprints", string.Empty, "gui", string.Empty); var success = MyObjectBuilderSerializer.DeserializeXML(modInfoPath, out modInfo); if (!ValidateModInfo(modInfo) || !success) { continue; } String name = modInfo.SubtypeName; var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.STEAM, modInfo.WorkshopId); var item = new MyGuiControlListbox.Item(text: new StringBuilder(name), toolTip: name, userData: info, icon: MyGuiConstants.TEXTURE_ICON_MODS_WORKSHOP.Normal); m_blueprintList.Add(item); } } } }
void OpenSharedBlueprint(MyBlueprintItemInfo itemInfo) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( buttonType : MyMessageBoxButtonsType.YES_NO_CANCEL, styleEnum : MyMessageBoxStyleEnum.Info, messageCaption : new StringBuilder("Shared Blueprint"), messageText : new StringBuilder("Do you want to open this blueprint in steam workshop?"), callback : delegate(MyGuiScreenMessageBox.ResultEnum callbackReturn) { if (callbackReturn == MyGuiScreenMessageBox.ResultEnum.YES) { MySteam.API.OpenOverlayUrl(string.Format("http://steamcommunity.com/sharedfiles/filedetails/?id={0}", itemInfo.PublishedItemId)); m_recievedBlueprints.Remove(m_selectedItem); m_selectedItem = null; RefreshBlueprintList(); } else if (callbackReturn == MyGuiScreenMessageBox.ResultEnum.NO) { m_recievedBlueprints.Remove(m_selectedItem); m_selectedItem = null; RefreshBlueprintList(); } })); }
void ExtractWorkShopItems() { ProfilerShort.Begin("Blueprint screen - Extracting bluepritns"); if (!Directory.Exists(m_workshopBlueprintFolder)) { Directory.CreateDirectory(m_workshopBlueprintFolder); } var downloadedMods = Directory.GetFiles(m_workshopBlueprintFolder); foreach (var mod in downloadedMods) { var fileName = Path.GetFileNameWithoutExtension(mod); var id = ulong.Parse(fileName); if (!m_subscribedItemsList.Any(item => item.PublishedFileId == id)) { File.Delete(mod); } } var tempPath = Path.Combine(m_workshopBlueprintFolder, "temp"); if (Directory.Exists(tempPath)) { Directory.Delete(tempPath, true); } var tempDir = Directory.CreateDirectory(tempPath); foreach (var subItem in m_subscribedItemsList) { if (downloadedMods.Any(item => item.Contains(subItem.PublishedFileId.ToString()))) { string archive = Array.Find(downloadedMods, item => item.Contains(subItem.PublishedFileId.ToString())); var extractPath = Path.Combine(tempDir.FullName, subItem.PublishedFileId.ToString()); if (!File.Exists(extractPath)) { Directory.CreateDirectory(extractPath); var extracted = MyZipArchive.OpenOnFile(archive); var modInfo = new MyObjectBuilder_ModInfo(); modInfo.SubtypeName = subItem.Title; modInfo.WorkshopId = subItem.PublishedFileId; modInfo.SteamIDOwner = subItem.SteamIDOwner; var infoFile = Path.Combine(m_workshopBlueprintFolder, "temp", subItem.PublishedFileId.ToString(), "info.temp"); if (File.Exists(infoFile)) { File.Delete(infoFile); } var infoSuccess = MyObjectBuilderSerializer.SerializeXML(infoFile, false, modInfo); if (extracted.FileExists("thumb.png")) { var stream = extracted.GetFile("thumb.png").GetStream(); if (stream != null) { using (var file = File.Create(Path.Combine(extractPath, "thumb.png"))) { stream.CopyTo(file); } } stream.Close(); } extracted.Dispose(); var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.STEAM, subItem.PublishedFileId); var listItem = new MyGuiControlListbox.Item(text: new StringBuilder(subItem.Title), toolTip: subItem.Title, icon: MyGuiConstants.TEXTURE_ICON_MODS_WORKSHOP.Normal, userData: info); var itemIndex = m_blueprintList.Items.FindIndex(item => ((item.UserData as MyBlueprintItemInfo).PublishedItemId == (listItem.UserData as MyBlueprintItemInfo).PublishedItemId) && (item.UserData as MyBlueprintItemInfo).Type == MyBlueprintTypeEnum.STEAM); if (itemIndex == -1) { m_blueprintList.Add(listItem); } } } } ProfilerShort.End(); }
void OpenSharedBlueprint(MyBlueprintItemInfo itemInfo) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( buttonType: MyMessageBoxButtonsType.YES_NO_CANCEL, styleEnum: MyMessageBoxStyleEnum.Info, messageCaption: new StringBuilder("Shared Blueprint"), messageText: new StringBuilder("Do you want to open this blueprint in steam workshop?"), callback: delegate(MyGuiScreenMessageBox.ResultEnum callbackReturn) { if (callbackReturn == MyGuiScreenMessageBox.ResultEnum.YES) { MySteam.API.OpenOverlayUrl(string.Format("http://steamcommunity.com/sharedfiles/filedetails/?id={0}", itemInfo.PublishedItemId)); m_recievedBlueprints.Remove(m_selectedItem); m_selectedItem = null; RefreshBlueprintList(); } else if (callbackReturn == MyGuiScreenMessageBox.ResultEnum.NO) { m_recievedBlueprints.Remove(m_selectedItem); m_selectedItem = null; RefreshBlueprintList(); } })); }
void ExtractWorkShopItems() { ProfilerShort.Begin("Blueprint screen - Extracting bluepritns"); if (!Directory.Exists(m_workshopBlueprintFolder)) { Directory.CreateDirectory(m_workshopBlueprintFolder); } var downloadedMods = Directory.GetFiles(m_workshopBlueprintFolder); foreach (var mod in downloadedMods) { var fileName = Path.GetFileNameWithoutExtension(mod); var id = ulong.Parse(fileName); if(!m_subscribedItemsList.Any(item => item.PublishedFileId == id)) { File.Delete(mod); } } var tempPath = Path.Combine(m_workshopBlueprintFolder, "temp"); if (Directory.Exists(tempPath)) { Directory.Delete(tempPath, true); } var tempDir = Directory.CreateDirectory(tempPath); foreach (var subItem in m_subscribedItemsList) { if (downloadedMods.Any(item => item.Contains(subItem.PublishedFileId.ToString()))) { string archive = Array.Find(downloadedMods, item => item.Contains(subItem.PublishedFileId.ToString())); var extractPath = Path.Combine(tempDir.FullName, subItem.PublishedFileId.ToString()); if (!File.Exists(extractPath)) { Directory.CreateDirectory(extractPath); var extracted = MyZipArchive.OpenOnFile(archive); var modInfo = new MyObjectBuilder_ModInfo(); modInfo.SubtypeName = subItem.Title; modInfo.WorkshopId = subItem.PublishedFileId; modInfo.SteamIDOwner = subItem.SteamIDOwner; var infoFile = Path.Combine(m_workshopBlueprintFolder, "temp", subItem.PublishedFileId.ToString(), "info.temp"); if (File.Exists(infoFile)) { File.Delete(infoFile); } var infoSuccess = MyObjectBuilderSerializer.SerializeXML(infoFile, false, modInfo); if (extracted.FileExists("thumb.png")) { var stream = extracted.GetFile("thumb.png").GetStream(); if (stream != null) { using (var file = File.Create(Path.Combine(extractPath, "thumb.png"))) { stream.CopyTo(file); } } stream.Close(); } extracted.Dispose(); var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.STEAM, subItem.PublishedFileId); var listItem = new MyGuiControlListbox.Item(text: new StringBuilder(subItem.Title), toolTip: subItem.Title, icon: MyGuiConstants.TEXTURE_ICON_MODS_WORKSHOP.Normal, userData: info); var itemIndex = m_blueprintList.Items.FindIndex(item => ((item.UserData as MyBlueprintItemInfo).PublishedItemId == (listItem.UserData as MyBlueprintItemInfo).PublishedItemId) && (item.UserData as MyBlueprintItemInfo).Type == MyBlueprintTypeEnum.STEAM); if (itemIndex == -1) { m_blueprintList.Add(listItem); } } } } ProfilerShort.End(); }
void GetWorkshopItemsLocal() { var filePath = Path.Combine(m_workshopBlueprintFolder, "temp"); if (Directory.Exists(filePath)) { var folders = Directory.GetDirectories(filePath); var blueprintNames = new List<string>(); var fileNames = new List<string>(); foreach (var f in folders) { var tokens = f.Split('\\'); blueprintNames.Add(tokens[tokens.Length - 1]); } for (int i = 0; i < blueprintNames.Count; i++) { var modInfoPath = Path.Combine(filePath, blueprintNames[i], "info.temp"); MyObjectBuilder_ModInfo modInfo = null; if (File.Exists(modInfoPath)) { MyAnalyticsHelper.ReportActivityStart(null, "show_blueprints", string.Empty, "gui", string.Empty); var success = MyObjectBuilderSerializer.DeserializeXML(modInfoPath, out modInfo); if (!ValidateModInfo(modInfo) || !success) continue; String name = modInfo.SubtypeName; var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.STEAM, modInfo.WorkshopId); var item = new MyGuiControlListbox.Item(text: new StringBuilder(name), toolTip: name, userData: info, icon: MyGuiConstants.TEXTURE_ICON_MODS_WORKSHOP.Normal); m_blueprintList.Add(item); } } } }
void GetBlueprints(string directory, MyBlueprintTypeEnum type) { if (!Directory.Exists(directory)) return; string[] folders = Directory.GetDirectories(directory); List<string> fileNames = new List<string>(); List<string> blueprintNames = new List<string>(); foreach (var f in folders) { fileNames.Add(f + "\\bp.sbc"); var tokens = f.Split('\\'); blueprintNames.Add(tokens[tokens.Length - 1]); } for (int i = 0; i < blueprintNames.Count; i++) { String name = blueprintNames[i]; var info = new MyBlueprintItemInfo(type); var item = new MyGuiControlListbox.Item(text: new StringBuilder(name), toolTip: name, userData: info, icon: MyGuiConstants.TEXTURE_ICON_BLUEPRINTS_LOCAL.Normal); m_blueprintList.Add(item); } }
void ExtractWorkshopItem(MySteamWorkshop.SubscribedItem subItem) { string archive = Path.Combine(m_workshopBlueprintFolder, subItem.PublishedFileId.ToString() + m_workshopBlueprintSuffix); var extractPath = Path.Combine(TEMP_PATH, subItem.PublishedFileId.ToString()); if (Directory.Exists(extractPath)) { Directory.Delete(extractPath); } Directory.CreateDirectory(extractPath); var extracted = MyZipArchive.OpenOnFile(archive); var modInfo = new MyObjectBuilder_ModInfo(); modInfo.SubtypeName = subItem.Title; modInfo.WorkshopId = subItem.PublishedFileId; modInfo.SteamIDOwner = subItem.SteamIDOwner; var infoFile = Path.Combine(TEMP_PATH,subItem.PublishedFileId.ToString(), "info.temp"); if (File.Exists(infoFile)) { File.Delete(infoFile); } var infoSuccess = MyObjectBuilderSerializer.SerializeXML(infoFile, false, modInfo); if (extracted.FileExists("thumb.png")) { var stream = extracted.GetFile("thumb.png").GetStream(); if (stream != null) { using (var file = File.Create(Path.Combine(extractPath, "thumb.png"))) { stream.CopyTo(file); } } stream.Close(); } extracted.Dispose(); var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.STEAM, subItem.PublishedFileId); var listItem = new MyGuiControlListbox.Item(text: new StringBuilder(subItem.Title), toolTip: subItem.Title, icon: MyGuiConstants.TEXTURE_ICON_MODS_WORKSHOP.Normal, userData: info); var itemIndex = m_blueprintList.Items.FindIndex(item => ((item.UserData as MyBlueprintItemInfo).PublishedItemId == (listItem.UserData as MyBlueprintItemInfo).PublishedItemId) && (item.UserData as MyBlueprintItemInfo).Type == MyBlueprintTypeEnum.STEAM); if (itemIndex == -1) { m_blueprintList.Add(listItem); } }
void GetWorkshopItemsSteam() { for (int i = 0; i < m_subscribedItemsList.Count; i++) { MySteamWorkshop.SubscribedItem suscribedItem = m_subscribedItemsList[i]; MyAnalyticsHelper.ReportActivityStart(null, "show_blueprints", string.Empty, "gui", string.Empty); String name = suscribedItem.Title; var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.STEAM, suscribedItem.PublishedFileId) {Item = suscribedItem }; var item = new MyGuiControlListbox.Item(text: new StringBuilder(name), toolTip: name, userData: info, icon: MyGuiConstants.TEXTURE_ICON_MODS_WORKSHOP.Normal); m_blueprintList.Add(item); } }
static void ShareBlueprintRequestClient(ulong workshopId, string name, ulong sendToId, string senderName) { var itemId = workshopId; var info = new MyBlueprintItemInfo(MyBlueprintTypeEnum.SHARED, id: itemId); var item = new MyGuiControlListbox.Item(new StringBuilder(name.ToString()), userData: info, icon: MyGuiConstants.TEXTURE_BLUEPRINTS_ARROW.Normal); item.ColorMask = new Vector4(0.7f); if (!m_recievedBlueprints.Any(item2 => (item2.UserData as MyBlueprintItemInfo).PublishedItemId == (item.UserData as MyBlueprintItemInfo).PublishedItemId)) { m_recievedBlueprints.Add(item); m_blueprintList.Add(item); var notification = new MyHudNotificationDebug(senderName + " just shared a blueprint with you.", 2500); MyHud.Notifications.Add(notification); } }