//コンストラクタ public StageViewModel(StageModel model, MainViewModel mainViewModel) { MainViewModel = mainViewModel; _model = model; _model.MapModels.CollectionChanged += (sender, args) => { _model.Parent.ResetMapModels(); if (args.Action == NotifyCollectionChangedAction.Add) { var maps = args.NewItems.Cast<MapModel>(); foreach (var m in maps) { var l = new PropertyChangedEventListener(m, (o, eventArgs) => { RaisePropertyChanged(eventArgs.PropertyName); RaisePropertyChanged("CurrentMap"); }); CompositeDisposable.Add(l); } if (CurrentMapIsNull) { _model.CurrentMap = maps.FirstOrDefault(); } RaisePropertyChanged("CurrentMap"); } }; CompositeDisposable.Add(new PropertyChangedEventListener(_model, (sender, e) => RaisePropertyChanged(e.PropertyName))); }
/// <summary> /// ���ɑ��݂���StageModel����ҏW��ʗpViewModel��쐬 /// </summary> /// <param name="stageModel"></param> /// <param name="mainModel"></param> public EditStageViewModel(StageModel stageModel, MainModel mainModel) { _parent = mainModel; _model = stageModel; Initislize(stageModel); }
/// <summary> /// MessagePackのデータを使って初期化を行う /// </summary> /// <param name="parent"></param> /// <param name="mapModelPack"></param> public MapModel(MapModelPack mapModelPack, StageModel parent) { Initialize(parent); SetProperties(mapModelPack); MapChipModel = new MapChipModel(this, mapModelPack.MapChipPack); ObjectChipModel = new ObjectChipModel(this, mapModelPack.ObjectChipPack); SetEvent(); ChangeBackground(); }
/// <summary> /// 何も無い状態のコンストラクタ /// </summary> /// <param name="inputViewModel"></param> /// <param name="parent"></param> public MapModel(EditMapViewModel inputViewModel, StageModel parent) { Initialize(parent); SetProperties(inputViewModel, parent); this.MapChipModel = new MapChipModel(this, MapCellWidth, MapCellHeight); this.ObjectChipModel = new ObjectChipModel(this); SetEvent(); ChangeBackground(); }
/// <summary> /// 空のEditMapViewModelを作成 /// </summary> /// <param name="parent"></param> public EditMapViewModel(StageModel parent) { _parent = parent; InputID = _parent.GetNextID().ToString(); InputMapCellWidth = 40.ToString(); InputMapCellHeight = 40.ToString(); InputBackground = string.Format("{0}-{1}-{2}.png", _parent.World, _parent.Stage, InputID); InputMapName = string.Format("ワールド {0}, ステージ {1}, マップ {2}", _parent.World, _parent.Stage, InputID); Initialize(); }
private void Initislize(StageModel stageModel) { _InputWorld = stageModel.World.ToString(); _InputStage = stageModel.Stage.ToString(); _InputStageName = stageModel.StageName.ToString(); _InputStageDescription = stageModel.StageDescription.ToString(); }
/// <summary> /// 初期化メソッド /// </summary> /// <param name="parent"></param> private void Initialize(StageModel parent) { _parent = parent; _memento = new Memento(); MapSelect = new MapSelect(); ScrollPosition = new Point(0, 0); }
/// <summary> /// EditMapViewModelからMapModelの値のセット /// </summary> /// <param name="inputViewModel"></param> /// <param name="parent"></param> private void SetProperties(EditMapViewModel inputViewModel, StageModel parent) { this.ID = System.Int32.Parse(inputViewModel.InputID); this.MapName = string.Format("World{0}-Stage{1}-Map{2}", parent.World, parent.Stage, ID); this.Background = inputViewModel.InputBackground; this.MapCellWidth = System.Int32.Parse(inputViewModel.InputMapCellWidth); this.MapCellHeight = System.Int32.Parse(inputViewModel.InputMapCellHeight); this.BgNo = System.Int32.Parse(inputViewModel.InputBgNo); this.BGMNo = System.Int32.Parse(inputViewModel.InputBGMNo); this.ScrollSpeed = System.Int32.Parse(inputViewModel.InputScrollSpeed); this.ScrollAngle = System.Int32.Parse(inputViewModel.InputScrollAngle); this.MapChipType = System.Int32.Parse(inputViewModel.InputMapChipType); this.TimeLimit = System.Int32.Parse(inputViewModel.InputTimeLimit); }
/// <summary> /// 引数のModelがこのViewModelのModelかどうかチェックする /// </summary> /// <param name="stageModel"></param> /// <returns></returns> public bool HasModel(StageModel stageModel) { return _model == stageModel; }
/// <summary> /// 指定したStageModelでMapリストのリセット /// </summary> /// <param name="stageModel"></param> public void ResetMapModels(StageModel stageModel) { MapModels.Clear(); foreach (var stage in StageModels) stage.IsSelected = stage == stageModel; if (stageModel != null) { foreach (var m in stageModel.MapModels) MapModels.Add(m); } }
/// <summary> /// ステージファイルのパース /// </summary> /// <param name="filePath"></param> public void ParseFile(string filePath) { var stage = new StageModel(new FileInfo(filePath), this); AddStage(stage); }
/// <summary> /// StageModelsに既にそのステージが含まれているかどうか /// </summary> /// <param name="stageModel"></param> /// <returns></returns> public bool Contains(StageModel stageModel) { return StageModels.Contains(stageModel); }
/// <summary> /// StageModelのリストに読み込んだファイルを追加。 /// 読み込んだステージをカレントに設定。 /// </summary> /// <param name="stage"></param> public void AddStage(StageModel stage) { //すでに含まれていたら何もしない if (Contains(stage)) return; StageModels.Add(stage); CurrentStage = stage; //初期選択のMapを設定する CurrentMap = CurrentStage.MapModels.OrderBy(x => x.ID).FirstOrDefault(); }