private void OnPublishModClick(MyGuiControlButton sender) { if (m_selectedRow == null) { return; } if (m_selectedRow.UserData == null) { return; } var mod = (MyObjectBuilder_Checkpoint.ModItem)m_selectedRow.UserData; var modFullPath = Path.Combine(MyFileSystem.ModsPath, mod.Name); var nameSB = m_selectedRow.GetCell(1).Text; var name = nameSB.ToString(); mod.PublishedFileId = MySteamWorkshop.GetWorkshopIdFromLocalMod(modFullPath); MyStringId textQuestion, captionQuestion; if (mod.PublishedFileId != 0) { textQuestion = MySpaceTexts.MessageBoxTextDoYouWishToUpdateMod; captionQuestion = MySpaceTexts.MessageBoxCaptionDoYouWishToUpdateMod; } else { textQuestion = MySpaceTexts.MessageBoxTextDoYouWishToPublishMod; captionQuestion = MySpaceTexts.MessageBoxCaptionDoYouWishToPublishMod; } MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( styleEnum : MyMessageBoxStyleEnum.Info, buttonType : MyMessageBoxButtonsType.YES_NO, messageText : MyTexts.Get(textQuestion), messageCaption : MyTexts.Get(captionQuestion), callback : delegate(MyGuiScreenMessageBox.ResultEnum val) { if (val == MyGuiScreenMessageBox.ResultEnum.YES) { string[] inTags = null; var subscribedItem = GetSubscribedItem(mod.PublishedFileId); if (subscribedItem != null) { inTags = subscribedItem.Tags; if (subscribedItem.SteamIDOwner != MySteam.UserId) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( messageText: MyTexts.Get(MySpaceTexts.MessageBoxTextPublishFailed_OwnerMismatchMod), messageCaption: MyTexts.Get(MySpaceTexts.MessageBoxCaptionModPublishFailed))); return; } } MyGuiSandbox.AddScreen(new MyGuiScreenWorkshopTags(MySteamWorkshop.WORKSHOP_MOD_TAG, MySteamWorkshop.ModCategories, inTags, delegate(MyGuiScreenMessageBox.ResultEnum tagsResult, string[] outTags) { if (tagsResult == MyGuiScreenMessageBox.ResultEnum.YES) { MySteamWorkshop.PublishModAsync(modFullPath, name, null, mod.PublishedFileId, outTags, SteamSDK.PublishedFileVisibility.Public, callbackOnFinished : delegate(bool success, Result result, ulong publishedFileId) { if (success) { MySteamWorkshop.GenerateModInfo(modFullPath, publishedFileId, MySteam.UserId); MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( styleEnum: MyMessageBoxStyleEnum.Info, messageText: MyTexts.Get(MySpaceTexts.MessageBoxTextModPublished), messageCaption: MyTexts.Get(MySpaceTexts.MessageBoxCaptionModPublished), callback: (a) => { MySteam.API.OpenOverlayUrl(string.Format("http://steamcommunity.com/sharedfiles/filedetails/?id={0}", publishedFileId)); FillList(); })); } else { MyStringId error; switch (result) { case Result.AccessDenied: error = MySpaceTexts.MessageBoxTextPublishFailed_AccessDenied; break; default: error = MySpaceTexts.MessageBoxTextWorldPublishFailed; break; } MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( messageText: MyTexts.Get(error), messageCaption: MyTexts.Get(MySpaceTexts.MessageBoxCaptionModPublishFailed))); } }); } })); } })); }