diff --git a/Barotrauma/BarotraumaClient/Source/Networking/SteamManager.cs b/Barotrauma/BarotraumaClient/Source/Networking/SteamManager.cs index a7e1a484b..224623330 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/SteamManager.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/SteamManager.cs @@ -590,7 +590,7 @@ namespace Barotrauma.Steam } else { - DebugConsole.ThrowError("Publishing workshop item " + item.Title + " failed. " + item.Error); + DebugConsole.NewMessage("Publishing workshop item " + item.Title + " failed. " + item.Error, Microsoft.Xna.Framework.Color.Red); } SaveUtil.ClearFolder(WorkshopItemStagingFolder); diff --git a/Barotrauma/BarotraumaClient/Source/Screens/SteamWorkshopScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/SteamWorkshopScreen.cs index af3414813..1a62ec6db 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/SteamWorkshopScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/SteamWorkshopScreen.cs @@ -748,7 +748,7 @@ namespace Barotrauma for (int i = 0; i < item.Tags.Length && i < 5; i++) { if (string.IsNullOrEmpty(item.Tags[i])) { continue; } - string tag = TextManager.Get("Workshop.ContentTag." + item.Tags[i], true); + string tag = TextManager.Get("Workshop.ContentTag." + item.Tags[i].Replace(" ", ""), true); if (string.IsNullOrEmpty(tag)) { tag = item.Tags[i].CapitaliseFirstInvariant(); } tags.Add(tag); } @@ -1386,9 +1386,20 @@ namespace Barotrauma } else { - new GUIMessageBox( - TextManager.Get("Error"), - TextManager.GetWithVariable("WorkshopItemPublishFailed", "[itemname]", TextManager.EnsureUTF8(item.Title)) + item.Error); + string errorMsg = item.ErrorCode.HasValue ? + TextManager.Get("WorkshopPublishError." + item.ErrorCode.Value.ToString(), returnNull: true) : + null; + + if (errorMsg == null) + { + new GUIMessageBox( + TextManager.Get("Error"), + TextManager.GetWithVariable("WorkshopItemPublishFailed", "[itemname]", TextManager.EnsureUTF8(item.Title)) + item.Error); + } + else + { + new GUIMessageBox(TextManager.Get("Error"), errorMsg); + } } createItemFrame.ClearChildren(); diff --git a/Barotrauma/BarotraumaShared/Source/Networking/SteamManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/SteamManager.cs index f72c8354b..937048f9c 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/SteamManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/SteamManager.cs @@ -21,7 +21,11 @@ namespace Barotrauma.Steam { "monster", 8 }, { "art", 8 }, { "mission", 8 }, - { "environment", 5 } + { "event set", 8 }, + { "total conversion", 5 }, + { "environment", 5 }, + { "item assembly", 5 }, + { "language", 5 } }; private List popularTags = new List(); diff --git a/Libraries/Facepunch.Steamworks/Interfaces/Workshop.Editor.cs b/Libraries/Facepunch.Steamworks/Interfaces/Workshop.Editor.cs index 36bcb330d..771768dbd 100644 --- a/Libraries/Facepunch.Steamworks/Interfaces/Workshop.Editor.cs +++ b/Libraries/Facepunch.Steamworks/Interfaces/Workshop.Editor.cs @@ -24,6 +24,7 @@ namespace Facepunch.Steamworks public bool Publishing { get; internal set; } public ItemType? Type { get; set; } public string Error { get; internal set; } = null; + public SteamNative.Result? ErrorCode { get; internal set; } = null; public string ChangeNote { get; set; } = ""; public uint WorkshopUploadAppId { get; set; } public string MetaData { get; set; } = null; @@ -99,6 +100,7 @@ namespace Facepunch.Steamworks Publishing = true; Error = null; + ErrorCode = null; if ( Id == 0 ) { @@ -129,12 +131,14 @@ namespace Facepunch.Steamworks if ( obj.Result == SteamNative.Result.OK && !Failed ) { Error = null; + ErrorCode = null; Id = obj.PublishedFileId; PublishChanges(); return; } Error = $"Error creating new file: {obj.Result} ({obj.PublishedFileId})"; + ErrorCode = obj.Result; Publishing = false; OnChangesSubmitted?.Invoke( (Result) obj.Result ); @@ -221,6 +225,7 @@ namespace Facepunch.Steamworks NeedToAgreeToWorkshopLegal = obj.UserNeedsToAcceptWorkshopLegalAgreement; Publishing = false; + ErrorCode = obj.Result; Error = obj.Result != SteamNative.Result.OK ? $"Error publishing changes: {obj.Result} ({NeedToAgreeToWorkshopLegal})" : null; diff --git a/Libraries/Facepunch.Steamworks/SteamNative/SteamNative.Enums.cs b/Libraries/Facepunch.Steamworks/SteamNative/SteamNative.Enums.cs index f57eb4066..5729eca44 100644 --- a/Libraries/Facepunch.Steamworks/SteamNative/SteamNative.Enums.cs +++ b/Libraries/Facepunch.Steamworks/SteamNative/SteamNative.Enums.cs @@ -20,7 +20,7 @@ namespace SteamNative // // EResult // - internal enum Result : int + public enum Result : int { OK = 1, Fail = 2,