feat: add ai type and state info

This commit is contained in:
Иванов Иван
2024-08-24 12:13:40 +02:00
parent ee37ffb219
commit f50e218013
7 changed files with 78 additions and 30 deletions

View File

@@ -1,4 +1,5 @@
using Client.Domain.Common;
using Client.Domain.AI;
using Client.Domain.Common;
using Client.Domain.Entities;
using Client.Domain.ValueObjects;
using System;
@@ -59,13 +60,6 @@ namespace Client.Application.ViewModels
return hero.InventoryInfo;
}
}
public ulong Money
{
get
{
return 0;
}
}
public TargetSummaryInfoViewModel? Target
{
@@ -81,10 +75,24 @@ namespace Client.Application.ViewModels
return hero.AttackerIds.ToList();
}
}
public HeroSummaryInfoViewModel(Hero hero)
public string AIType
{
get
{
return ai.Type.ToString();
}
}
public string AIState
{
get
{
return ai.IsEnabled ? ai.CurrentState.ToString() : "Disabled";
}
}
public HeroSummaryInfoViewModel(Hero hero, AIInterface ai)
{
this.hero = hero;
this.ai = ai;
hero.FullName.PropertyChanged += FullName_PropertyChanged;
hero.Phenotype.PropertyChanged += Phenotype_PropertyChanged;
hero.ExperienceInfo.PropertyChanged += ExperienceInfo_PropertyChanged;
@@ -92,6 +100,19 @@ namespace Client.Application.ViewModels
hero.VitalStats.PropertyChanged += VitalStats_PropertyChanged;
hero.InventoryInfo.PropertyChanged += InventoryInfo_PropertyChanged;
hero.PropertyChanged += Hero_PropertyChanged;
ai.PropertyChanged += Ai_PropertyChanged;
}
private void Ai_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Type")
{
OnPropertyChanged("AIType");
}
if (e.PropertyName == "CurrentState" || e.PropertyName == "IsEnabled")
{
OnPropertyChanged("AIState");
}
}
private void Hero_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
@@ -147,6 +168,7 @@ namespace Client.Application.ViewModels
}
private readonly Hero hero;
private readonly AIInterface ai;
private TargetSummaryInfoViewModel? target;
}
}

View File

@@ -39,7 +39,7 @@ namespace Client.Application.ViewModels
public void Handle(HeroCreatedEvent @event)
{
Hero = new HeroSummaryInfoViewModel(@event.Hero);
Hero = new HeroSummaryInfoViewModel(@event.Hero, ai);
hero = @event.Hero;
Map.Hero = hero;
Map.CombatZone = new AICombatZoneMapViewModel(aiConfig.Combat.Zone, hero);