//コンストラクタ
        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);
        }
Exemple #3
0
        /// <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();
        }
Exemple #4
0
        /// <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();
 }
Exemple #7
0
 /// <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;
 }
Exemple #10
0
        /// <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);
            }
        }
Exemple #11
0
        /// <summary>
        /// ステージファイルのパース
        /// </summary>
        /// <param name="filePath"></param>
        public void ParseFile(string filePath)
        {
            var stage = new StageModel(new FileInfo(filePath), this);

            AddStage(stage);
        }
Exemple #12
0
 /// <summary>
 /// StageModelsに既にそのステージが含まれているかどうか
 /// </summary>
 /// <param name="stageModel"></param>
 /// <returns></returns>
 public bool Contains(StageModel stageModel)
 {
     return StageModels.Contains(stageModel);
 }
Exemple #13
0
        /// <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();
        }