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; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Numerics; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; namespace Client.Application.ViewModels { public class MainViewModel : NotifyPropertyChanged, MainViewModelInterface, EventHandlerInterface, EventHandlerInterface, EventHandlerInterface, EventHandlerInterface { public void AddChatMessage(ChatMessage chatMessage) { ChatMessages.Add(new ChatMessageViewModel(chatMessage)); } public void AddDrop(Drop drop) { if (hero != null) { Drops.Add(new DropListViewModel(drop, hero)); } } public void RemoveDrop(Drop drop) { 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(CreatureCreatedEvent @event) { if (hero != null) { Creatures.Add(new CreatureListViewModel(@event.Creature, hero)); } } public void Handle(CreatureDeletedEvent @event) { Creatures.RemoveAll(x => x.Id == @event.Id); } public ObservableCollection ChatMessages { get; } = new ObservableCollection(); public ObservableCollection Creatures { get; } = new ObservableCollection(); public ObservableCollection Drops { get; } = new ObservableCollection(); public HeroSummaryInfoViewModel? Hero { get; private set; } public Hero? hero; } }