コード例 #1
0
        private void UpdateSlotView(AvatarState avatarState)
        {
            var game        = Game.Game.instance;
            var playerModel = game.Stage.GetPlayer().Model;

            nicknameText.text = string.Format(
                NicknameTextFormat,
                avatarState.level,
                avatarState.NameWithHash);

            var title = avatarState.inventory.Costumes.FirstOrDefault(costume =>
                                                                      costume.ItemSubType == ItemSubType.Title &&
                                                                      costume.equipped);

            titleText.text = title is null
                ? ""
                : title.GetLocalizedName();

            cpText.text = CPHelper
                          .GetCPV2(avatarState, game.TableSheets.CharacterSheet, game.TableSheets.CostumeStatSheet)
                          .ToString();

            costumeSlots.SetPlayerCostumes(playerModel, ShowTooltip, null);
            equipmentSlots.SetPlayerEquipments(playerModel, ShowTooltip, null);
        }
コード例 #2
0
        private void UpdateSlotView(AvatarState avatarState)
        {
            var game = Game.Game.instance;
            // var playerModel = game.Stage.GetPlayer().Model;
            var playerModel = _player.Model;

            nicknameText.text = string.Format(
                NicknameTextFormat,
                avatarState.level,
                avatarState.NameWithHash);

            var title = avatarState.inventory.Costumes.FirstOrDefault(costume =>
                                                                      costume.ItemSubType == ItemSubType.Title &&
                                                                      costume.equipped);

            titleText.text = title is null
                ? ""
                : title.GetLocalizedName();

            costumeSlots.SetPlayerCostumes(playerModel, ShowTooltip, Unequip);
            equipmentSlots.SetPlayerEquipments(playerModel, ShowTooltip, Unequip);

            var currentAvatarState = game.States.CurrentAvatarState;

            if (avatarState.Equals(currentAvatarState))
            {
                // 인벤토리 아이템의 장착 여부를 `equipmentSlots`의 상태를 바탕으로 설정하기 때문에 `equipmentSlots.SetPlayer()`를 호출한 이후에 인벤토리 아이템의 장착 상태를 재설정한다.
                // 또한 인벤토리는 기본적으로 `OnEnable()` 단계에서 `OnResetItems` 이벤트를 일으키기 때문에 `equipmentSlots.SetPlayer()`와 호출 순서 커플링이 생기게 된다.
                // 따라서 강제로 상태를 설정한다.
                inventory.gameObject.SetActive(true);
                SubscribeInventoryResetItems(inventory);

                var currentPlayer = game.Stage.selectedPlayer;
                cpText.text = CPHelper.GetCP(currentPlayer.Model, game.TableSheets.CostumeStatSheet)
                              .ToString();
            }
            else
            {
                inventory.gameObject.SetActive(false);
                cpText.text = CPHelper.GetCPV2(avatarState, game.TableSheets.CharacterSheet, game.TableSheets.CostumeStatSheet)
                              .ToString();
            }

            UpdateUIPlayer();
        }
コード例 #3
0
        public override void Show(bool ignoreShowAnimation = false)
        {
            base.Show(ignoreShowAnimation);
            inventory.SharedModel.State.Value = ItemType.Equipment;

            consumableTitleText.text = L10nManager.Localize("UI_EQUIP_CONSUMABLES");
            equipmentTitleText.text  = L10nManager.Localize("UI_EQUIP_EQUIPMENTS");

            Mixpanel.Track("Unity/Click Stage");
            _stage = Game.Game.instance.Stage;
            _stage.LoadBackground("dungeon_01");
            _player = _stage.GetPlayer(_stage.questPreparationPosition);
            if (_player is null)
            {
                throw new NotFoundComponentException <Game.Character.Player>();
            }

            if (_reset)
            {
                _reset = false;

                // stop run immediately.
                _player.gameObject.SetActive(false);
                _player.gameObject.SetActive(true);
                _player.SpineController.Appear();
                var currentAvatarState = Game.Game.instance.States.CurrentAvatarState;
                _player.Set(currentAvatarState);

                equipmentSlots.SetPlayerEquipments(_player.Model, ShowTooltip, Unequip);
                // 인벤토리 아이템의 장착 여부를 `equipmentSlots`의 상태를 바탕으로 설정하기 때문에 `equipmentSlots.SetPlayer()`를 호출한 이후에 인벤토리 아이템의 장착 상태를 재설정한다.
                // 또한 인벤토리는 기본적으로 `OnEnable()` 단계에서 `OnResetItems` 이벤트를 일으키기 때문에 `equipmentSlots.SetPlayer()`와 호출 순서 커플링이 생기게 된다.
                // 따라서 강제로 상태를 설정한다.
                SubscribeInventoryResetItems(inventory);

                foreach (var consumableSlot in consumableSlots)
                {
                    consumableSlot.Set(_player.Level);
                }

                var costumeStatSheet = Game.Game.instance.TableSheets.CostumeStatSheet;
                _player.Model.SetCostumeStat(costumeStatSheet);
                var tuples = _player.Model.Stats.GetBaseAndAdditionalStats();
                var idx    = 0;
                foreach (var(statType, value, additionalValue) in tuples)
                {
                    var info = statusRows[idx];
                    info.Show(statType, value, additionalValue);
                    ++idx;
                }
            }

            var worldMap = Find <WorldMap>();

            _worldId       = worldMap.SelectedWorldId;
            _stageId.Value = worldMap.SelectedStageId;

            Find <BottomMenu>().Show(
                UINavigator.NavigationType.Back,
                SubscribeBackButtonClick,
                true,
                BottomMenu.ToggleableType.Mail,
                BottomMenu.ToggleableType.Quest,
                BottomMenu.ToggleableType.Chat,
                BottomMenu.ToggleableType.IllustratedBook);

            ReactiveAvatarState.ActionPoint
            .Subscribe(_ => ReadyToQuest(EnoughToPlay))
            .AddTo(_disposables);
            _tempStats = _player.Model.Stats.Clone() as CharacterStats;
            inventory.SharedModel.UpdateEquipmentNotification();
            questButton.gameObject.SetActive(true);
        }