public override void Initialize()
        {
            base.Initialize();

            _weaponSlot = equipmentSlots.First(es => es.ItemSubType == ItemSubType.Weapon);

            inventory.SharedModel.DimmedFunc.Value = inventoryItem =>
                                                     inventoryItem.ItemBase.Value.ItemType == ItemType.Costume ||
                                                     inventoryItem.ItemBase.Value.ItemType == ItemType.Material;
            inventory.SharedModel.SelectedItemView
            .Subscribe(SubscribeInventorySelectedItem)
            .AddTo(gameObject);
            inventory.OnDoubleClickItemView
            .Subscribe(itemView =>
            {
                if (itemView is null ||
                    itemView.Model is null ||
                    itemView.Model.Dimmed.Value)
                {
                    return;
                }

                Equip(itemView.Model);
            })
            .AddTo(gameObject);
            inventory.OnResetItems.Subscribe(SubscribeInventoryResetItems).AddTo(gameObject);

            _stageId.Subscribe(SubscribeStage).AddTo(gameObject);

            questButton.OnClickAsObservable().Subscribe(_ => QuestClick(false)).AddTo(gameObject);

            Game.Event.OnRoomEnter.AddListener(b => Close());

            foreach (var slot in equipmentSlots)
            {
                slot.ShowUnlockTooltip = true;
            }

            foreach (var slot in consumableSlots)
            {
                slot.ShowUnlockTooltip = true;
            }
        }