mhsec-g/MHSEC-G/MHSEC-G/ViewModel.cs

116 lines
3.1 KiB
C#

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<string> 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<Armor> _armors;
public ObservableCollection<Armor> armors
{
get { return _armors; }
}
private Monster _cur_monster_selection;
private readonly ObservableCollection<Monster> _monsters;
public Monster cur_monster
{
get { return _cur_monster_selection; }
set { _cur_monster_selection = value; OnPropertyChanged(nameof(cur_monster)); }
}
public ObservableCollection<Monster> monsters
{
get
{
return _monsters;
}
}
private readonly ObservableCollection<Talisman> _talismans;
public ObservableCollection<Talisman> talismans
{
get { return _talismans; }
}
private readonly ObservableCollection<Egg> _eggs;
public ObservableCollection<Egg> eggs
{
get { return _eggs; }
}
private readonly ObservableCollection<Weapon> _weapons;
public ObservableCollection<Weapon> weapons
{
get { return _weapons; }
}
private readonly List<Item> _items;
public List<Item> items
{
get { return _items; }
}
private readonly ObservableCollection<EggFragment> _egg_fragments;
public ObservableCollection<EggFragment> 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>(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));
}
}
}