PeepingTom/Peeping Tom.Ipc/Targeter.cs

37 lines
1.2 KiB
C#
Executable File

using System;
using System.Linq;
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using Newtonsoft.Json;
namespace PeepingTom.Ipc {
[Serializable]
public class Targeter {
[JsonConverter(typeof(SeStringConverter))]
public SeString Name { get; }
public uint HomeWorldId { get; }
public uint ObjectId { get; }
public DateTime When { get; }
public Targeter(PlayerCharacter character) {
this.Name = character.Name;
this.HomeWorldId = character.HomeWorld.Id;
this.ObjectId = character.ObjectId;
this.When = DateTime.UtcNow;
}
[JsonConstructor]
public Targeter(SeString name, uint homeWorldId, uint objectId, DateTime when) {
this.Name = name;
this.HomeWorldId = homeWorldId;
this.ObjectId = objectId;
this.When = when;
}
public PlayerCharacter? GetPlayerCharacter(IObjectTable objectTable) {
return objectTable.FirstOrDefault(actor => actor.ObjectId == this.ObjectId && actor is PlayerCharacter) as PlayerCharacter;
}
}
}