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); }
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(); }
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); }