Пример #1
0
        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)));
                                }
                            });
                        }
                    }));
                }
            }));
        }