L2Bot2.0/Client/Domain/Entities/Hero.cs
2023-01-31 17:35:18 +04:00

101 lines
3.3 KiB
C#

using Client.Domain.Common;
using Client.Domain.ValueObjects;
using System.ComponentModel;
using System.Diagnostics;
namespace Client.Domain.Entities
{
public class Hero : NotifyPropertyChanged, EntityInterface, CreatureInterface
{
private FullName fullName;
private Phenotype phenotype;
private CreatureInterface? target;
private uint targetId;
public uint Id { get; set; }
public Transform Transform { get; set; }
public VitalStats VitalStats { get; set; }
public ExperienceInfo ExperienceInfo { get; set; }
public PermanentStats PermanentStats { get; set; }
public VariableStats VariableStats { get; set; }
public Reputation Reputation { get; set; }
public InventoryInfo InventoryInfo { get; set; }
public uint TargetId { get => targetId; set { if (value != targetId) { targetId = value; OnPropertyChanged("TargetId"); } } }
public CreatureInterface? Target { get => target; set { if (value != target) { target = value; OnPropertyChanged("Target"); } } }
public bool IsStanding { get; set; }
public FullName FullName
{
get => fullName;
set
{
fullName = value;
if (fullName != null)
{
FullName.PropertyChanged += FullName_PropertyChanged; ;
}
}
}
public Phenotype Phenotype
{
get => phenotype;
set
{
phenotype = value;
if (phenotype != null)
{
Phenotype.PropertyChanged += Phenotype_PropertyChanged;
}
}
}
public string Name
{
get
{
return FullName.Nickname;
}
}
public string BriefInfo
{
get
{
//todo race and class strings
return Phenotype.Race.ToString() + ", " + Phenotype.Class.ToString();
}
}
public Hero(uint id, Transform transform, FullName fullName, VitalStats vitalStats, Phenotype phenotype, ExperienceInfo experienceInfo, PermanentStats permanentStats, VariableStats variableStats, Reputation reputation, InventoryInfo inventoryInfo, uint targetId, bool isStanding)
{
Id = id;
Transform = transform;
this.fullName = FullName = fullName;
VitalStats = vitalStats;
this.phenotype = Phenotype = phenotype;
ExperienceInfo = experienceInfo;
PermanentStats = permanentStats;
VariableStats = variableStats;
Reputation = reputation;
InventoryInfo = inventoryInfo;
TargetId = targetId;
IsStanding = isStanding;
}
private void Phenotype_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Race" || e.PropertyName == "Class")
{
OnPropertyChanged("BriefInfo");
}
}
private void FullName_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Nickname")
{
OnPropertyChanged("Name");
}
}
}
}