From 3e01cecdcc3f275c67ccf93d943e9d6063c9d259 Mon Sep 17 00:00:00 2001 From: zznty Date: Fri, 7 May 2021 19:02:28 +0700 Subject: [PATCH] mod.io support and eos fix --- .../Managers/MultiplayerManagerDedicated.cs | 24 +++++-- Torch.Server/ViewModels/ModItemInfo.cs | 19 ++++++ Torch.Server/Views/ModListControl.xaml | 8 ++- Torch.Server/Views/ModListControl.xaml.cs | 45 ++++++++----- Torch/Torch.csproj | 2 +- Torch/Utils/ModItemUtils.cs | 15 ++++- Torch/VRageGame.cs | 63 +++++++++++-------- 7 files changed, 124 insertions(+), 52 deletions(-) diff --git a/Torch.Server/Managers/MultiplayerManagerDedicated.cs b/Torch.Server/Managers/MultiplayerManagerDedicated.cs index 034c882..70e7e8e 100644 --- a/Torch.Server/Managers/MultiplayerManagerDedicated.cs +++ b/Torch.Server/Managers/MultiplayerManagerDedicated.cs @@ -134,13 +134,21 @@ namespace Torch.Server.Managers public override void Attach() { base.Attach(); - _gameServerValidateAuthTicketReplacer = _gameServerValidateAuthTicketFactory.Invoke(); - _gameServerUserGroupStatusReplacer = _gameServerUserGroupStatusFactory.Invoke(); + if (Torch.Config.UgcServiceType == UGCServiceType.Steam) + { + _gameServerValidateAuthTicketReplacer = _gameServerValidateAuthTicketFactory.Invoke(); + _gameServerUserGroupStatusReplacer = _gameServerUserGroupStatusFactory.Invoke(); + } + else + { + _gameServerValidateAuthTicketReplacer = _eosServerValidateAuthTicketFactory.Invoke(); + _gameServerUserGroupStatusReplacer = _eosServerUserGroupStatusFactory.Invoke(); + } _gameServerValidateAuthTicketReplacer.Replace( new Action(ValidateAuthTicketResponse), MyGameService.GameServer); _gameServerUserGroupStatusReplacer.Replace(new Action(UserGroupStatusResponse), MyGameService.GameServer); - _log.Info("Inserted steam authentication intercept"); + _log.Info("Inserted authentication intercept"); } /// @@ -150,7 +158,7 @@ namespace Torch.Server.Managers _gameServerValidateAuthTicketReplacer.Restore(MyGameService.GameServer); if (_gameServerUserGroupStatusReplacer != null && _gameServerUserGroupStatusReplacer.Replaced) _gameServerUserGroupStatusReplacer.Restore(MyGameService.GameServer); - _log.Info("Removed steam authentication intercept"); + _log.Info("Removed authentication intercept"); base.Detach(); } @@ -163,6 +171,14 @@ namespace Torch.Server.Managers [ReflectedEventReplace("VRage.Steam.MySteamGameServer, VRage.Steam", "UserGroupStatusResponse", typeof(MyDedicatedServerBase), "GameServer_UserGroupStatus")] private static Func _gameServerUserGroupStatusFactory; + + [ReflectedEventReplace("VRage.EOS.MyEOSGameServer, VRage.EOS", "ValidateAuthTicketResponse", + typeof(MyDedicatedServerBase), "GameServer_ValidateAuthTicketResponse")] + private static Func _eosServerValidateAuthTicketFactory; + + [ReflectedEventReplace("VRage.EOS.MyEOSGameServer, VRage.EOS", "UserGroupStatusResponse", + typeof(MyDedicatedServerBase), "GameServer_UserGroupStatus")] + private static Func _eosServerUserGroupStatusFactory; private ReflectedEventReplacer _gameServerValidateAuthTicketReplacer; private ReflectedEventReplacer _gameServerUserGroupStatusReplacer; diff --git a/Torch.Server/ViewModels/ModItemInfo.cs b/Torch.Server/ViewModels/ModItemInfo.cs index 9212fa1..1b78d96 100644 --- a/Torch.Server/ViewModels/ModItemInfo.cs +++ b/Torch.Server/ViewModels/ModItemInfo.cs @@ -7,8 +7,10 @@ using System.Threading.Tasks; using System.Windows.Threading; using System.Runtime.CompilerServices; using NLog; +using Sandbox.Engine.Networking; using VRage.Game; using Torch.Server.Annotations; +using Torch.Utils; using Torch.Utils.SteamWorkshopTools; namespace Torch.Server.ViewModels @@ -84,6 +86,15 @@ namespace Torch.Server.ViewModels } } + public string UgcService + { + get { return _modItem.PublishedServiceName; } + set + { + SetValue(ref _modItem.PublishedServiceName, value); + } + } + /// /// Constructor, returns a new ModItemInfo instance /// @@ -101,6 +112,9 @@ namespace Torch.Server.ViewModels /// public async Task UpdateModInfoAsync() { + if (UgcService.ToLower() == "mod.io") + return true; + var msg = ""; var workshopService = WebAPI.Instance; PublishedItemDetails modInfo = null; @@ -127,5 +141,10 @@ namespace Torch.Server.ViewModels return true; } } + + public override string ToString() + { + return $"{PublishedFileId}-{UgcService}"; + } } } diff --git a/Torch.Server/Views/ModListControl.xaml b/Torch.Server/Views/ModListControl.xaml index 11969ab..b24ec07 100644 --- a/Torch.Server/Views/ModListControl.xaml +++ b/Torch.Server/Views/ModListControl.xaml @@ -103,6 +103,7 @@ + @@ -115,10 +116,11 @@ VerticalAlignment="Center" Grid.Column="0" Grid.Row="1"/> -