Files
TorchPlugins/LuckPerms.Torch/PlatformApi/LpPlayerModel.cs
2023-11-09 19:47:20 +07:00

60 lines
1.9 KiB
C#

using LuckPerms.Torch.Impl;
using me.lucko.luckperms.common.context.manager;
using me.lucko.luckperms.common.model;
using me.lucko.luckperms.common.verbose.@event;
using net.luckperms.api.query;
using net.luckperms.api.util;
using Torch.ViewModels;
namespace LuckPerms.Torch.PlatformApi;
public class LpPlayerModel(ulong steamId, string? name = null) : PlayerViewModel(steamId, name)
{
public QueryOptionsCache? QueryOptionsCache { get; private set; }
public User? LpUser { get; private set; }
internal void InitializePermissions(User user)
{
LpUser = user;
QueryOptionsCache ??= ((LpContextManager)user.getPlugin().getContextManager()).CreateQueryOptionsCache(this);
}
public Tristate HasPermission(string permission)
{
if (LpUser is null || QueryOptionsCache is null)
return Tristate.UNDEFINED;
return HasPermission(permission, QueryOptionsCache.getQueryOptions());
}
public Tristate HasPermission(string permission, QueryOptions queryOptions)
{
if (LpUser is null || QueryOptionsCache is null)
return Tristate.UNDEFINED;
var data = LpUser.getCachedData().getPermissionData(queryOptions);
return data.checkPermission(permission, CheckOrigin.PLATFORM_API_HAS_PERMISSION).result();
}
public string? GetOption(string key)
{
if (LpUser is null || QueryOptionsCache is null)
return null;
return GetOption(key, QueryOptionsCache.getQueryOptions());
}
public string? GetOption(string key, QueryOptions queryOptions)
{
if (LpUser is null || QueryOptionsCache is null)
return null;
var cache = LpUser.getCachedData().getMetaData(queryOptions);
return cache.getMetaOrChatMetaValue(key, CheckOrigin.PLATFORM_API);
}
public override string ToString() => $"Player {{ SteamId = {SteamId}, Name = {Name} }}";
}