using System.Threading.Tasks;
using NLog;
using VRage.Game;
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}";
}
}
}