using System; using System.Threading.Tasks; using NLog; using VRage.Game; using Torch.Utils; using VRage.GameServices; namespace Torch.Server.ViewModels { /// /// Wrapper around VRage.Game.Objectbuilder_Checkpoint.ModItem /// that holds additional meta information /// (e.g. workshop description) /// public class ModItemInfo : ViewModel { MyObjectBuilder_Checkpoint.ModItem _modItem; private static readonly Logger Log = LogManager.GetCurrentClassLogger(); /// /// Human friendly name of the mod /// public string FriendlyName { get => _modItem.FriendlyName; set => SetValue(ref _modItem.FriendlyName, value); } /// /// Workshop ID of the mod /// public ulong PublishedFileId { get => _modItem.PublishedFileId; set => SetValue(ref _modItem.PublishedFileId, value); } /// /// Local filename of the mod /// public string Name { get => _modItem.Name; set => SetValue(ref _modItem.FriendlyName, value); } /// /// Whether or not the mod was added /// because another mod depends on it /// public bool IsDependency { get => _modItem.IsDependency; set => SetValue(ref _modItem.IsDependency, value); } private string _description; /// /// Workshop description of the mod /// public string Description { get => _description; set => SetValue(ref _description, value); } public string UgcService { get => _modItem.PublishedServiceName; set => SetValue(ref _modItem.PublishedServiceName, value); } /// /// Constructor, returns a new ModItemInfo instance /// /// The wrapped mod public ModItemInfo(MyObjectBuilder_Checkpoint.ModItem mod) { _modItem = mod; } /// /// Retrieve information about the /// wrapped mod from the workhop asynchronously /// via the Steam web API. /// /// public Task UpdateModInfoAsync() { return Task.FromResult(true); /*if (UgcService.ToLower() == "mod.io") return true; MyWorkshopItem modInfo; try { modInfo = await WorkshopQueryUtils.GetModInfo(_modItem); } catch( Exception e ) { Log.Error(e); return false; } Log.Info("Mod Info successfully retrieved!"); FriendlyName = modInfo.Title; Description = modInfo.Description;*/ } public override string ToString() { return $"{PublishedFileId}-{UgcService}"; } } }