Beispiel #1
0
        public void Store(PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
        {
            var entry = this.GetEntry(playerAppearCharacterViewModel.Id);

            if (entry != null)
            {
                var index = this.entrys.IndexOf(entry);
                this.entrys[index] = new PlayerAppearCharacterViewEntry()
                {
                    Id       = playerAppearCharacterViewModel.Id,
                    Position = new Position3Entry()
                    {
                        X = playerAppearCharacterViewModel.Position.x,
                        Y = playerAppearCharacterViewModel.Position.y,
                        Z = playerAppearCharacterViewModel.Position.z,
                    },
                    Rotation = new Position3Entry()
                    {
                        X = playerAppearCharacterViewModel.Rotation.x,
                        Y = playerAppearCharacterViewModel.Rotation.y,
                        Z = playerAppearCharacterViewModel.Rotation.z,
                    },
                    PlayerAppearCharacterReserveId = playerAppearCharacterViewModel.PlayerAppearCharacterReserveModel.Id,
                    IsReceiveReward = playerAppearCharacterViewModel.IsReceiveReward
                };
            }
            else
            {
                Debug.Assert(false, "要素が存在しません : " + playerAppearCharacterViewModel.Id.ToString());
            }
            PlayerContextMap.WriteEntry(this.entrys);
        }
        public AppearCharacterViewModel Generate(PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
        {
            var modelPrefab                       = ResourceLoader.LoadModel(appearCharacterModel.Name);
            var appearCharacterInstance           = Object.AppearToFloor(modelPrefab, GameManager.Instance.AppearCharacterManager.Root, playerAppearCharacterViewModel.Position);
            var appearCharacterView               = appearCharacterInstance.GetComponent <AppearCharacterView>();
            var generatedAppearCharacterViewModel = new AppearCharacterViewModel(
                appearCharacterView,
                playerAppearCharacterViewModel
                );

            return(generatedAppearCharacterViewModel);
        }
Beispiel #3
0
        public void Remove(PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
        {
            var entry = this.GetEntry(playerAppearCharacterViewModel.Id);

            if (entry != null)
            {
                var index = this.entrys.IndexOf(entry);
                this.entrys.RemoveAt(index);
            }
            else
            {
                Debug.Assert(false, "要素が存在しません : " + playerAppearCharacterViewModel.Id.ToString());
            }
            PlayerContextMap.WriteEntry(this.entrys);
        }
        public AppearCharacterViewModel(AppearCharacterView appearCharacterView, PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
        {
            this.appearCharacterView            = appearCharacterView;
            this.PlayerAppearCharacterViewModel = playerAppearCharacterViewModel;

            // キャラクタがタップされた時
            disposables.Add(appearCharacterView.OnSelectObservable
                            .SelectMany(_ => {
                var conversationMode = GameModeGenerator.GenerateConversationMode(this.PlayerAppearCharacterViewModel.PlayerAppearCharacterReserveModel.ConversationModel);
                GameManager.Instance.GameModeManager.EnqueueChangeModeWithHistory(conversationMode);
                return(GameManager.Instance.GameModeManager.GetModeEndObservable(conversationMode));
            })
                            .SelectMany(_ => {
                if (this.PlayerAppearCharacterViewModel.PlayerAppearCharacterReserveModel.RewardModel == null)
                {
                    return(new ImmediatelyObservable <int>(_));
                }
                if (this.PlayerAppearCharacterViewModel.IsReceiveReward)
                {
                    return(new ImmediatelyObservable <int>(_));
                }
                if (this.PlayerAppearCharacterViewModel.PlayerAppearCharacterReserveModel.RewardModel.RewardAmounts.Count <= 0)
                {
                    return(new ImmediatelyObservable <int>(_));
                }

                // 受け取り済みにする
                GameManager.Instance.AppearCharacterManager.ToReeiveRewards(this.PlayerAppearCharacterViewModel);

                var rewardMode = GameModeGenerator.GenerateReceiveRewardMode(this.PlayerAppearCharacterViewModel.PlayerAppearCharacterReserveModel.RewardModel);
                GameManager.Instance.GameModeManager.EnqueueChangeModeWithHistory(rewardMode);
                return(GameManager.Instance.GameModeManager.GetModeEndObservable(rewardMode));
            })
                            .Subscribe(_ => {
                // TODO 終了後に撤退の動作を始める
                // 予約から消す必要があれば消す
                if (GameManager.Instance.DailyAppearCharacterRegistManager.IsRemoveReserve(this.PlayerAppearCharacterViewModel.PlayerAppearCharacterReserveModel))
                {
                    GameManager.Instance.DailyAppearCharacterRegistManager.RemoveReserve(this.PlayerAppearCharacterViewModel.PlayerAppearCharacterReserveModel);
                }
            }));
        }
Beispiel #5
0
 public void ToReeiveRewards(PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
 {
     playerAppearCharacterViewModel.ToReceiveRewards();
     this.appearCharacterReceiveRewardsService.Execute(playerAppearCharacterViewModel);
 }
Beispiel #6
0
 public void Execute(PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
 {
     playerAppearCharacterViewModel.ToReceiveRewards();
     playerAppearCharacterViewRepository.Store(playerAppearCharacterViewModel);
 }
Beispiel #7
0
 public void Execute(PlayerAppearCharacterViewModel playerAppearCharacterViewModel)
 {
     playerAppearCharacterViewRepository.Remove(playerAppearCharacterViewModel);
 }