using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using MHSEC_G.Annotations; namespace MHSEC_G { internal class ViewModel : INotifyPropertyChanged { public List gene_name { get { return Monster.GENE_NAME; } } private readonly Model _model; public Model model { get { return _model;} } private readonly Character _character; public Character character { get { return _character; } } private readonly ObservableCollection _armors; public ObservableCollection armors { get { return _armors; } } private Monster _cur_monster_selection; private readonly ObservableCollection _monsters; public Monster cur_monster { get { return _cur_monster_selection; } set { _cur_monster_selection = value; OnPropertyChanged(nameof(cur_monster)); } } public ObservableCollection monsters { get { return _monsters; } } private readonly ObservableCollection _talismans; public ObservableCollection talismans { get { return _talismans; } } private readonly ObservableCollection _eggs; public ObservableCollection eggs { get { return _eggs; } } private readonly ObservableCollection _weapons; public ObservableCollection weapons { get { return _weapons; } } private readonly List _items; public List items { get { return _items; } } private readonly ObservableCollection _egg_fragments; public ObservableCollection egg_fragments { get { return _egg_fragments; } } public ViewModel(byte[] save) { if (save == null) { BugCheck.bug_check(BugCheck.ErrorCode.VIEWMODEL_NULL_SAVE, "The save file reference is NULL."); } _model = new Model(save); _character = new Character(_model); _items = Item.read_all_items(_model); _monsters = new ObservableCollection(Monster.read_all_monsters(_model)); _cur_monster_selection = _monsters.ElementAt(0); _egg_fragments = EggFragment.read_all_egg_fragments(_model); _talismans = Talisman.read_all_talismans(_model); _weapons = Weapon.read_all_weapons(_model); _armors = Armor.read_all_armors(_model); _eggs = Egg.read_all_eggs(_model); } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }