feat: add event bus
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
using Client.Application.Extensions;
|
||||
using Client.Domain.Common;
|
||||
using Client.Domain.Entities;
|
||||
using Client.Domain.Events;
|
||||
using Client.Domain.ValueObjects;
|
||||
using Client.Domain.ViewModels;
|
||||
using System;
|
||||
@ -17,7 +18,13 @@ using System.Windows.Media;
|
||||
|
||||
namespace Client.Application.ViewModels
|
||||
{
|
||||
public class MainViewModel : NotifyPropertyChanged, MainViewModelInterface
|
||||
public class MainViewModel :
|
||||
NotifyPropertyChanged,
|
||||
MainViewModelInterface,
|
||||
EventHandlerInterface<HeroCreatedEvent>,
|
||||
EventHandlerInterface<HeroDeletedEvent>,
|
||||
EventHandlerInterface<NpcCreatedEvent>,
|
||||
EventHandlerInterface<NpcDeletedEvent>
|
||||
{
|
||||
|
||||
public void AddChatMessage(ChatMessage chatMessage)
|
||||
@ -25,32 +32,6 @@ namespace Client.Application.ViewModels
|
||||
ChatMessages.Add(new ChatMessageViewModel(chatMessage));
|
||||
}
|
||||
|
||||
public void CreateHero(Hero hero)
|
||||
{
|
||||
Hero = new HeroSummaryInfoViewModel(hero);
|
||||
this.hero = hero;
|
||||
OnPropertyChanged("Hero");
|
||||
}
|
||||
public void DeleteHero()
|
||||
{
|
||||
Hero = null;
|
||||
hero = null;
|
||||
OnPropertyChanged("Hero");
|
||||
}
|
||||
|
||||
public void AddNpc(NPC npc)
|
||||
{
|
||||
if (hero != null)
|
||||
{
|
||||
Creatures.Add(new NpcListViewModel(npc, hero));
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveNpc(NPC npc)
|
||||
{
|
||||
Creatures.RemoveAll(x => x.Id == npc.Id);
|
||||
}
|
||||
|
||||
public void AddPlayer(Player player)
|
||||
{
|
||||
if (hero != null)
|
||||
@ -77,6 +58,33 @@ namespace Client.Application.ViewModels
|
||||
Drops.RemoveAll(x => x.Id == drop.Id);
|
||||
}
|
||||
|
||||
public void Handle(HeroCreatedEvent @event)
|
||||
{
|
||||
Hero = new HeroSummaryInfoViewModel(@event.Hero);
|
||||
hero = @event.Hero;
|
||||
OnPropertyChanged("Hero");
|
||||
}
|
||||
|
||||
public void Handle(HeroDeletedEvent @event)
|
||||
{
|
||||
Hero = null;
|
||||
hero = null;
|
||||
OnPropertyChanged("Hero");
|
||||
}
|
||||
|
||||
public void Handle(NpcCreatedEvent @event)
|
||||
{
|
||||
if (hero != null)
|
||||
{
|
||||
Creatures.Add(new NpcListViewModel(@event.NPC, hero));
|
||||
}
|
||||
}
|
||||
|
||||
public void Handle(NpcDeletedEvent @event)
|
||||
{
|
||||
Creatures.RemoveAll(x => x.Id == @event.Id);
|
||||
}
|
||||
|
||||
public ObservableCollection<ChatMessageViewModel> ChatMessages { get; } = new ObservableCollection<ChatMessageViewModel>();
|
||||
public ObservableCollection<CreatureListViewModelInterface> Creatures { get; } = new ObservableCollection<CreatureListViewModelInterface>();
|
||||
public ObservableCollection<DropListViewModel> Drops { get; } = new ObservableCollection<DropListViewModel>();
|
||||
|
Reference in New Issue
Block a user