鼠标控制及其他调整

创作者: Dragoon23
已更新:2026-06-16 11:36:02
2.5MB

关于此 MOD

在鼠标光标处攻击,大部分面板可用鼠标控制,即时字幕,成本倍率,死亡后禁用掉落物品,以及更多功能。
我只有 Steam 版本来游玩/测试。 
不确定其他版本的情况。
如果该选项在你的版本中不可用,请参考下方内容自行调整。 


兼容v1.15.8版本。


使用鼠标控制: 
你必须将“主要攻击”设置为鼠标左键,“次要攻击”设置为鼠标右键。

请勿将“互动”设置为鼠标左键或右键点击。 
这样做会破坏MOD。 

对于宝箱/英雄背包/售卖箱/展示面板:绿色轮廓选择框必须位于 右侧 而不是背包栏位。如果它在背包栏位上,则只会影响背包栏位。我让代码强制它始终从右侧开始。参见视频示例。


对于地下城镜面:点击镜面并通过互动键确认后,如果你想摧毁箱子中的物品,必须将选择器移到右侧。参见视频示例。 


在支持鼠标的面板中,我还让Page Up/Down、滚动条、商店标签页以及左/右标签页按钮变得可点击。 





选项,全部可自定义。默认为全部关闭/1。 
要重映射键盘按键,必须遵循下文命名规范中所列的格式: https://docs.unity3d.com/Manual/class-InputManager.html


跳过启动画面
跳过所有启动画面。

在鼠标光标处攻击
攻击鼠标光标所指的方向。如果威尔站立不动并攻击,会出现图形故障。攻击仍会朝鼠标方向进行。使用下方的按键进行切换。示例见视频。

"Facing_Mouse_Cursor_Toggle": "左 Alt",
这将强制威尔始终跟随鼠标光标移动,无论你是否点击。缺点在于,威尔必须面朝宝箱才能与其互动,而且在翻滚时他将始终面朝鼠标所指的方向。请参阅视频示例。


"面板_主菜单_选项页签_启用"

在主菜单中启用鼠标控制,并在选项界面中仅对选项标签页提供有限控制。请参考视频示例。

"Panels_PauseMenu_Enable"
在暂停菜单中启用鼠标控制。


"面板_日历_启用"

启用鼠标控制日历。

"面板_愿望单_启用"

为愿望单启用鼠标控制。

"Panels_Inventory_Enable"
启用鼠标控制:物品栏、箱子、装备栏、出售箱和展示柜。示例请参见视频。 

"面板_笔记本_启用"
启用鼠标控制记事本。 


"面板_城镇公告板_启用"

为城镇管理板的员工面板和商店升级面板启用鼠标控制。  

"铁匠铺_启用"

为铁匠启用鼠标控制。  

"面板_女巫_启用"

为魔药与附魔面板启用鼠标控制。 

"面板_小贩_启用"

启用斗犬的鼠标控制。 

"面板_对手_启用"
为对手商店启用鼠标控制。 

"宠物面板_启用"

为“伙伴”面板启用鼠标控制。   

"面板_装饰_启用"
启用装饰面板的鼠标控制。


即时字幕

更快的字幕。

"吊坠_成本_倍率"

吊坠成本的乘数。

徽章费用倍率
徽章成本倍率。

掉落率倍率

敌人掉落率倍率。 

已掉落物品数上限

如果敌人会掉落物品,会掉落最大数量的物品吗?

最大堆叠数量

你的物品堆叠上限可以有多大。 

死亡后禁止丢弃物品

死亡时将不再丢失背包中所有未受保护的物品。 

城镇公告板_投资倍数

城镇公告板投资倍数。 

镇务公告_商店_倍率
城镇公告栏商店的倍率。 


Blacksmith_Potions_Cost_Multiplier

药水花费的倍率。 

附魔费用倍率
附魔消耗倍率。  

"Rival_Cost_Multiplier"
竞争对手价格的成本倍数。   


小贩成本倍率
小贩商品成本倍率。   


人气保持不变

出售物品不会提升人气。

"DLC_Panels_Haggler_启用"

启用DLC讨价还价者的鼠标控制。 

DLC面板蓝图启用
为DLC蓝图/奇巧武器商店启用鼠标控制。  

“DLC面板_电梯通道_启用”

为DLC电梯地牢入口启用鼠标控制。 

DLC_电梯_金币_成本_倍率

DLC电梯解锁楼层的金币费用倍率。

DLC_电梯_史莱姆_成本_倍率

DLC升降机解锁楼层的史莱姆费用倍率。

DLC_电梯_禁用_诅咒_需求
移除物品需被诅咒才能解锁DLC电梯的要求。


"DLC_蓝图_史莱姆_成本_倍率"

兑换蓝图时史莱姆费用的倍率。

"DLC_TrickWeapon_Slime_Cost_Multiplier"
兑换诡奇武器所需粘液倍率。


"DLC工人成本倍率"
解锁DLC工人的金币成本倍率。


"DLC女巫药水金币成本倍率"
来自史莱姆女巫的药水金币费用倍率。 


DLC_女巫药水史莱姆_成本_倍率
史莱姆女巫的DLC药水史莱姆费用倍率。


"DLC_砍价_成本_倍率"
解锁DLC讨价还价者所需金币花费的倍数。


"DLC_砍价者_神器_费用_倍率"
DLC讨价还价者物品神器费用倍率。



如何安装: 

解压并将文件夹放置到/steamapps/common/Moonlighter中。

它应该会覆盖位于/steamapps/common/Moonlighter/Moonlighter_Data/Managed中的原始Assembly-CSharp.dll。 

它应该也已经把ModOptions.json添加到了/steamapps/common/Moonlighter/Moonlighter_Data/StreamingAssets中。

.bak 文件是原始文件的备份。 

要修改MOD选项,请前往/steamapps/common/Moonlighter/Moonlighter_Data/StreamingAssets,用记事本或Notepad++编辑ModOptions.json并保存。 


备注: 

你能给X面板添加鼠标控制吗?
可能不行。这个游戏的代码非常复杂,而且对鼠标支持极不友好。我已经尽可能给很多面板加了鼠标支持。有些面板我很想支持,比如选项面板,但它们bug太多,所以我放弃了。 

“它与X模组兼容吗?”
它会与任何同样替换Assembly-CSharp.dll的模组不兼容。对于使用BepInEx的模组,我不清楚,因为我没用过任何一个。我猜它应该能兼容那些不涉及相同代码段的模组。 


"你能做一个BepInEx版本吗?
不,我对BepInEx不熟悉。


如何自己动手做: 
剧透警告:  
显示

我使用 dnSpy

在dnspy中打开Assembly-CSharp.dll文件。 
文件位于Moonlighter/Moonlighter_Data/Managed

跳过启动画面过场动画
    GameManager ->Start()
        删除所有与_startSequenceMovie和SplashScreen相关的内容
    主菜单面板->开始()
        删除if语句中的所有内容。
    MainMenuPanel->Update()
        删除这个。OnAnyKeyPressed();
        替换为:
        this.PlayOpenAnimation();
        this.StopPressKeyReminderAnimation();
        MainMenuPanel.OnOpeningMainMenuDoorsDelegate onOpeningMainMenuDoorsEvent = MainMenuPanel.OnOpeningMainMenuDoorsEvent;
        if (onOpeningMainMenuDoorsEvent != null)
        {
            onOpeningMainMenuDoorsEvent();
        }
       


向光标指向处发起攻击:

添加光标:
    职业 ->启用
添加:
            Cursor.visible = true;
            Cursor.lockState = CursorLockMode.Confined;

禁用光标:
    职业->停用
            Cursor.visible = disable;


主攻击 + 副攻击
    HeroMerchantController ->Update()
    替换为 this.inputDirection = this.ParseInputToDirection(this.inputDevice.LeftStick.X, this.inputDevice.LeftStick.Y);
    与
            if ( (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) && this.heroMerchant.currentMode == HeroMerchant.HeroMerchantMode.DungeonMode&& this.canAttack)
            {
                Vector2 finalPos = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - base.transform.position).normalized * 10f;
                this.inputDirection = this.UpdateDirection(finalPos.x, finalPos.y);
            }
            否则
            {
                this.inputDirection = this.ParseInputToDirection(this.inputDevice.LeftStick.X, this.inputDevice.LeftStick.Y);
            }

    HeroMerchantController-> UpdateDirection()
        用以下内容替换整个部分:
    float finX;
    float finY;
    if ((Input.GetMouseButtonDown(0) || Input.GetMouseButton(0) || Input.GetMouseButton(1) || Input.GetMouseButtonDown(1)) && this.heroMerchant.currentMode == HeroMerchant.HeroMerchantMode.DungeonMode&& this.canAttack)
    {
        Vector2 vector = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - base.transform.position).normalized * 10f;
        finX = vector.x;
        finY = vector.y;
    }
    否则
    {
        finX = X;
        finY = Y;
    }
    if (finX == 0f && finY == 0f)
    {
        返回this.heroDirection;
    }
    if (finX < 0f)
    {
        如果(finY < 0f)
        {
            if (Mathf.Abs(finX) > Mathf.Abs(finY))
            {
                this.SetDirection(HeroMerchantController.Direction.Left);
                return HeroMerchantController.Direction.Left;
            }
            this.SetDirection(HeroMerchantController.Direction.Front);
            return HeroMerchantController.Direction.Front;
        }
        否则
        {
            if (Mathf.Abs(finX) > Mathf.Abs(finY))
            {
                this.SetDirection(HeroMerchantController.Direction.Left);
                返回HeroMerchantController.Direction.Left;
            }
            this.SetDirection(HeroMerchantController.Direction.Back);
            返回HeroMerchantController.Direction.Back;
        }
    }
    else if (finY < 0f)
    {
        if (Mathf.Abs(finX) > Mathf.Abs(finY))
        {
            this.SetDirection(HeroMerchantController.Direction.Right);
            return HeroMerchantController.Direction.Right;
        }
        this.SetDirection(HeroMerchantController.Direction.Front);
        返回英雄商人控制器.方向.前;
    }
    否则
    {
        if (Mathf.Abs(finX) > Mathf.Abs(finY))
        {
            this.SetDirection(HeroMerchantController.Direction.Right);
            return HeroMerchantController.Direction.Right;
        }
        this.SetDirection(HeroMerchantController.Direction.Back);
        返回HeroMerchantController.Direction.Back;
    }

面向鼠标光标切换:
    英雄商人控制器。
    创建布尔值:FacingMouseCursorToggle
    创建一个按钮开关:
            public bool MouseCursorToggle()
    {
        if (Input.GetKeyDown("whichever Key"))
        {
            如果(this.FacingMouseCursorToggle)
            {
                this.FacingMouseCursorToggle = false;
            }
            否则
            {
                this.FacingMouseCursorToggle = true;
            }
        }
        返回此.FacingMouseCursorToggle;
    }
    HeroMerchantController->更新()
        找到ParseInputToDirection并替换为:
        if ( ( this.MouseCursorToggle()) && this.heroMerchant.currentMode == HeroMerchant.HeroMerchantMode.DungeonMode)
        {
            Vector2 vector = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - base.transform.position).normalized * 10f;
            this.inputDirection = this.UpdateDirection(vector.x, vector.y);
        }
        否则
        {
            this.inputDirection = this.ParseInputToDirection(this.inputDevice.LeftStick.X, this.inputDevice.LeftStick.Y);
        }   

更快的字幕
    按Ctrl+f查找OptionsManager.Get("GAME", "TextSpeed", 1);

    LabelTextScroll->TextScroll()
        提升速度。
    DialogGUIWIthButton->显示对话框
        this._speed
    CitizenDialog->ShowDialog()
        更改持续时间。
    自动打字器->写入()
        变更持续时间
    装饰购买面板->详情()
        变更持续时间
    DecorativePanel ->显示升级数值()
        变更时长
    MultipleOptionsDialog -> ShowDialog
        变更编号
    NotebookPanel->DetaillItem
        更改持续时间
    TutorialDialog->ShowDialog
        改变this._speed;

挂坠成本倍率
    HeroMerchant->GetPendantCost()
        返回你的号码;

纹章费用倍率
    HeroMerchant ->GetEmblemCost()
        返回你的号码;

提高地下城掉落率
    物品掉落->掉落物品()
        将此掉落概率乘以任何数值。

每次掉落最大掉落数
    ItemDrop->DropItem()
        将数字改为this.maxDropRate;

死亡时禁用掉落所有物品:
HeroMerchantInventory->DropAllNotSafeItem()
    将所有代码替换为return;
DungeonResultsPanel->PlayAnimation()
    在 this.SetWillResult(); 之后,添加 this._willDied = false;

城镇公告板投资成本倍数
    TownBoardStaffPanel->GetCostOfSelectedEntry()
        将返回值与任意值相乘。

城镇公告板商店费用倍率
    TownBoardShopPanel->GetCost()
        将返回值乘以任意值。

铁匠铺/药水配方费用倍率:
配方->获取总成本()
    乘以任意数值。

附魔费用倍率
附魔配方 -> 初始化
插入:
        this.labourCost = (int)((float)this.labourCost * 任意成本);

对手成本倍数
RivalPanel->GetCurrentPrice()
    将num乘以任何值。

小贩成本倍率
HawkerPanel-> OnAButtonPressed,ItemSelector_OnSelectedSlotChange,OnAcceptCraft
    int num = 改为任意数值。

设置道具流行度
    ItemPriceManager->设置流行度
    物品价格管理器->获取热门度
    两者都添加:
        itemPriceInfo.popularity = ItemPriceInfo.Popularity.中性;
        返回itemPriceInfo.popularity;   

更改最大堆叠数:
    物品堆叠->最大堆叠
        将返回数字改为任意值。

DLC 女巫倍率
Moonlighter.DLC.Shop ->设置面板信息/顾客数量更新时/显示购买确认对话框/接受制作时
    设置 劳动金币/史莱姆

DLC讨价还价倍数
月族商人之旅:流浪者地牢→城镇→讨价还价者→计算最终金币价格
    将返回的num4改为任意值;

DLC工人倍率
月光族DLC·流浪者地牢·城镇->工人->计算最终金币价格
    将返回数字4更改为任意值;

DLC讨价还价费用倍率
启用议价
将 itemForVisitorQuantity、mimimumMod、insultMod、inititalClamp、minRandomClamp、maxRandomClamp 按任意值相乘。

DLC蓝图史莱姆费用倍率:
Moonlighter.DLC.WandererDungeon->WandererShopperPanel->ItemSelector_OnSelectedItemChange() & OnAcceptCraft()
    将wandererBlueprintItemMaster.slimeCost改为任意值

DLC TrickWeapon 史莱姆消耗倍率:
月光行者DLC·流浪者地牢->流浪者商店面板->获取当前楼层费用
    返回任意整数;
 


面板:
通过将其加入白名单来获取鼠标点击注册:
    GuiManager ->OnINControlInputProccessed()
        bool wasReleased <- 添加 Input.GetMouseDown(0) 和 Input.GetMouseDown(1)

添加此项可让选择器始终从右侧开始,从而激活菜单右侧:
    宝箱/展示柜/英雄/促销箱 物品栏面板->启用()
    在 base.Enable() 之后
    this.firstSelectedGameObject = this.xSlot[0].gameObject;

英雄装备面板
HeroInventoryPanel - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (base.OnAButtonReleased())
    {
        if (InventoryPanel.currentSelectedSlot != null && InventoryPanel.currentSelectedSlot.GetComponent<EquipmentInventorySlotGUI>() != null)
        {
            List<EquipmentInventorySlotGUI> list = this.weaponSlot;
            list.Add(this.amulet1Slot);
            list.Add(this.amulet2Slot);
            list.Add(this.bodySlot);
            list.Add(this.bootsSlot);
            list.Add(this.headSlot);
            list.Add(this.potionSlot);
            EquipmentInventorySlotGUI slot = InventoryPanel.currentSelectedSlot.GetComponent<EquipmentInventorySlotGUI>();
            float num = float.MaxValue;
            Vector3 鼠标位置 = 输入.鼠标位置;
            float distance = Mathf.Abs(this.bodySlot.transform.position.x - this.potionSlot.transform.position.x) / 2f;
            如果((Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) && mousePosition.x > this.headSlot.transform.position.x - distance)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                    if (sqrMagnitude < num)
                    {
                        num = sqrMagnitude;
                        slot = list[i];
                    }
                }
                if (!InventorySlotGUI.isAutoConsuming && InventorySlotGUI.swapItem)
                {
                    InventorySlotGUI.PickOrSwap(slot);
                }
                else if (Input.GetMouseButtonDown(0))
                {
                    InventorySlotGUI.PickItem(slot, false);
                }
                else if (Input.GetMouseButtonDown(1))
                {
                    InventorySlotGUI.PickItem(slot, true);
                }
            }
        }
        return true;
    }
    返回 false;
}

销售箱面板
SalesBoxInventoryPanel - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (base.OnAButtonReleased())
    {
        if (InventoryPanel.currentSelectedSlot != null && InventoryPanel.currentSelectedSlot.GetComponent<ChestSlotGUI>() != null)
        {
            List<ChestSlotGUI> list = this.chestSlots;
            ChestSlotGUI slot = InventoryPanel.currentSelectedSlot.GetComponent<ChestSlotGUI>();
            float num = float.MaxValue;
            Vector3 mousePosition = Input.mousePosition;
            float distance = Mathf.Abs(this.chestSlots[1].transform.position.x - this.chestSlots[0].transform.position.x) / 2f;
            如果((输入.获取鼠标按键按下(0)或输入.获取鼠标按键按下(1))且鼠标位置.x大于此.箱子格子[0].变换.位置.x - 距离)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                    if (sqrMagnitude < num)
                    {
                        num = sqrMagnitude;
                        slot = list[i];
                    }
                }
                if (!InventorySlotGUI.isAutoConsuming && InventorySlotGUI.swapItem)
                {
                    InventorySlotGUI.PickOrSwap(slot);
                }
                else if (Input.GetMouseButtonDown(0))
                {
                    InventorySlotGUI.PickItem(slot, false);
                }
                else if (Input.GetMouseButtonDown(1))
                {
                    InventorySlotGUI.PickItem(slot, true);
                }
            }
        }
        return true;
    }
    返回假;
}

展示面板
ShowcaseInventoryPanel - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (base.OnAButtonReleased())
    {
        if (InventoryPanel.currentSelectedSlot != null && InventoryPanel.currentSelectedSlot.GetComponent<ShowcaseSlotGUI>() != null)
        {
            List<ShowcaseSlotGUI> list = this.showcaseSlots;
            ShowcaseSlotGUI slot = InventoryPanel.currentSelectedSlot.GetComponent<ShowcaseSlotGUI>();
            float num = float.MaxValue;
            Vector3 mousePosition = Input.mousePosition;
            float distance = 0f;
            if (this.showcaseSlots.Count > 1)
            {
                distance = Mathf.Abs(this.showcaseSlots[0].transform.position.x - this.showcaseSlots[1].transform.position.x) / 3f;
            }
            如果(按下鼠标左键或右键)且鼠标位置X大于展示槽0的变换位置X减去间距
            {
                for (int i = 0; i < list.Count; i++)
                {
                    float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                    如果 (sqrMagnitude < num)
                    {
                        num = sqrMagnitude;
                        slot = list[i];
                    }
                }
                if (!InventorySlotGUI.isAutoConsuming && InventorySlotGUI.swapItem)
                {
                    InventorySlotGUI.PickOrSwap(slot);
                }
                否则如果(输入.获取鼠标按钮按下(0))
                {
                    InventorySlotGUI.PickItem(slot, false);
                }
                else if (Input.GetMouseButtonDown(1))
                {
                    InventorySlotGUI.PickItem(slot, true);
                }
            }
        }
        return true;
    }
    return false;
}

宝箱面板
ChestInventoryPanel - 添加覆写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (base.OnAButtonReleased())
    {
        如果(InventoryPanel.currentSelectedSlot != null 且 InventoryPanel.currentSelectedSlot.GetComponent<ChestSlotGUI>() != null 且(输入.获取鼠标按键按下(0)|| 输入.获取鼠标按键按下(1)))
        {
            List<ChestSlotGUI> list = this.chestSlots;
            ChestSlotGUI slot = InventoryPanel.currentSelectedSlot.GetComponent<ChestSlotGUI>();
            float num = float.MaxValue;
            Vector3 mousePosition = Input.mousePosition;
            float distance = (list[1].transform.position.x - list[0].transform.position.x) / 2f;
            if (mousePosition.x > list[0].transform.position.x - distance && mousePosition.y < list[0].transform.position.y + distance)
            {
                if (mousePosition.y > list[21].transform.position.y - distance)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                        if (sqrMagnitude < num)
                        {
                            num = sqrMagnitude;
                            slot = list[i];
                        }
                    }
                    if (!InventorySlotGUI.isAutoConsuming && InventorySlotGUI.swapItem)
                    {
                        InventorySlotGUI.PickOrSwap(slot);
                    }
                    else if (Input.GetMouseButtonDown(0))
                    {
                        InventorySlotGUI.PickItem(slot, false);
                    }
                    else if (Input.GetMouseButtonDown(1))
                    {
                        InventorySlotGUI.PickItem(slot, true);
                    }
                }
                否则如果(鼠标位置.x < 列表[24].变换.位置.x - 距离)
                {
                    int chestSum = this.currentOppenedChest.Size - 28;
                    如果(this.offset + 28 <= chestSum)
                    {
                        this.offset += 28;
                        this.SetChestSlots(this.currentOppenedChest, this.offset);
                    }
                }
                else if (mousePosition.x > list[24].transform.position.x + distance && this.offset >= 28)
                {
                    this.offset -= 28;
                    this.SetChestSlots(this.currentOppenedChest, this.offset);
                }
            }
        }
        返回真;
    }
    返回假;
}

物品栏面板
InventoryPanel ->OnAButtonReleased()
加入:

            if (InventoryPanel.currentSelectedSlot != null && InventoryPanel.currentSelectedSlot.GetComponent<InventorySlotGUI>() != null)
            {
                List<InventorySlotGUI> list = this.slots;
                float num = (list[1].transform.position.x - list[0].transform.position.x) / 2f;
                InventorySlotGUI inventorySlotGUI = InventoryPanel.currentSelectedSlot.GetComponent<InventorySlotGUI>();
                float num2 = float.MaxValue;
                Vector3 mousePosition = Input.mousePosition;
                如果((Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) && mousePosition.x < list[4].transform.position.x + num)
                {
                    if (mousePosition.y < list[0].transform.position.y + num && mousePosition.y > list[list.Count - 1].transform.position.y - num)
                    {
                        for (int i = 0; i < list.Count; i++)
                        {
                            float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                            if (sqrMagnitude < num2)
                            {
                                num2 = sqrMagnitude;
                                inventorySlotGUI = list[i];
                            }
                        }
                        UtilityInventorySlot utilityInventorySlot = inventorySlotGUI as UtilityInventorySlot;
                        if (utilityInventorySlot && utilityInventorySlot.canPick && !InventorySlotGUI.isAutoConsuming)
                        {
                            UtilityItem utility = utilityInventorySlot.utility;
                            if (utility != UtilityItem.Mirror)
                            {
                                if (utility - UtilityItem.Pendant <= 1)
                                {
                                    utilityInventorySlot.UseUtilityItem();
                                }
                            }
                            否则如果(utilityInventorySlot.canPick)
                            {
                                InventorySlotGUI.StartAutoConsuming(inventorySlotGUI);
                            }
                        }
                        else if (!InventorySlotGUI.isAutoConsuming && InventorySlotGUI.swapItem)
                        {
                            InventorySlotGUI.PickOrSwap(inventorySlotGUI);
                        }
                        否则如果(输入.获取鼠标按下(0))
                        {
                            InventorySlotGUI.PickItem(inventorySlotGUI, false);
                        }
                        else if (Input.GetMouseButtonDown(1))
                        {
                            InventorySlotGUI.PickItem(inventorySlotGUI, true);
                        }
                    }
                    else if (mousePosition.y < list[list.Count - 1].transform.position.y - num)
                    {
                        List<UtilityInventorySlot> listU = this.utilitySlots;
                        UtilityInventorySlot whichOne = listU[0];
                        float num3 = float.MaxValue;
                        for (int j = 0; j < listU.Count; j++)
                        {
                            float sqrMagnitude2 = (listU[j].transform.position - mousePosition).sqrMagnitude;
                            if (sqrMagnitude2 < num3)
                            {
                                num3 = sqrMagnitude2;
                                whichOne = listU[j];
                            }
                        }
                        if (whichOne && whichOne.canPick && !InventorySlotGUI.isAutoConsuming)
                        {
                            if (whichOne.utility != UtilityItem.Mirror)
                            {
                                if (whichOne.utility - UtilityItem.Pendant <= 1)
                                {
                                    whichOne.UseUtilityItem();
                                }
                            }
                            else if (whichOne.canPick)
                            {
                                whichOne.GetComponent<Selectable>().Select();
                            }
                        }
                    }
                }
            否则如果(!(输入.获取鼠标按键按下(0) && !(输入.获取鼠标按键按下(1))
            {
              在OG代码中复制/粘贴。
            }

主菜单:
主菜单面板 -> 更新() 添加
    List<GameObject> list = this.mainMenuButtons;
    Vector3 mousePosition = Input.mousePosition;
    float distance = Mathf.Abs(list[0].transform.position.y - list[1].transform.position.y) / 2f;
    if (Input.GetMouseButtonDown(0) && this._open && !this._lastSelectableWhenLostFocus && mousePosition.y < list[0].transform.position.y + distance)
    {
        List<GameObject> list = this.mainMenuButtons;
        GameObject whichButton = this.mainMenuButtons[0];
        float num = float.MaxValue;
        Vector3 mousePosition = Input.mousePosition;
        for (int i = 0; i < list.Count; i++)
        {
            float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
            if (sqrMagnitude < num)
            {
                num = sqrMagnitude;
                whichButton = list[i];
            }
        }
        whichButton.GetComponent<Selectable>().Select();
        EventSystem currentEventSystem = EventSystem.current;
        if (currentEventSystem)
        {
            按钮 button;
            if (currentEventSystem.currentSelectedGameObject.TryGetComponent<Button>(out button))
            {
                DOVirtual.DelayedCall(0.1f, delegate
                {
                    button.OnSubmit(new BaseEventData(currentEventSystem));
                }, true);
            }
        }
    }

选项标签页面板:
OptionPanel -> Update() 添加:
        Vector3 mousePosition = Input.mousePosition;
        float distance = (this.tabs[1].transform.position.x - this.tabs[0].transform.position.x) / 5f;
        if (Input.GetMouseButtonDown(0) && this.isFocused && mousePosition.y >= this.tabs[0].transform.position.y - distance)
        {
            List<RectTransform> 列表 = 此选项卡列表;
            float num = float.MaxValue;
            int ogTab = this._tab;
            for (int i = 0; i < list.Count; i++)
            {
                float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num)
                {
                    num = sqrMagnitude;
                    this._tab = i;
                }
            }
            如果(ogTab > this._tab)
            {
                int difference = ogTab - this._tab;
                this.tabContents[ogTab].Deselect();
                this._lbCanvas.DOKill(false);
                this._rbCanvas.DOKill(false);
                this._lbCanvas.DOFade(0f, this.animationStepDuration * 0.5f).SetUpdate(true);
                this._rbCanvas.DOFade(0f, this.animationStepDuration * 0.5f).SetUpdate(true);
                ogTab -= difference;
                while (!this.tabs[ogTab].gameObject.activeInHierarchy)
                {
                    ogTab -= difference;
                }
                如果(this._tab > 0)
                {
                    this._lbCanvas.DOFade(1f, this.animationStepDuration * 0.5f).SetDelay(this.animationStepDuration).SetUpdate(true);
                }
                this._rbCanvas.DOFade(1f, this.animationStepDuration * 0.5f).SetDelay(this.animationStepDuration).SetUpdate(true);
                this.rectLine.DOAnchorPosX(this.tabs[this._tab].anchoredPosition.x - 0f, this.animationStepDuration, false).SetEase(this.lineAnimationCurve).SetUpdate(true);
                this.tabContents[this._tab].Select(this.animationStepDuration);
                返回;
            }
            if (ogTab < this._tab)
            {
                int difference2 = this._tab - ogTab;
                this.tabContents[ogTab].Deselect();
                this._lbCanvas.DOKill(false);
                this._rbCanvas.DOKill(false);
                this._lbCanvas.DOFade(0f, this.animationStepDuration * 0.5f).SetUpdate(true);
                this._rbCanvas.DOFade(0f, this.animationStepDuration * 0.5f).SetUpdate(true);
                ogTab += difference2;
                while (!this.tabs[ogTab].gameObject.activeInHierarchy)
                {
                    ogTab += difference2;
                }
                this._lbCanvas.DOFade(1f, this.animationStepDuration * 0.5f).SetDelay(this.animationStepDuration).SetUpdate(true);
                if (this._tab < this.tabs.Count - 1)
                {
                    this._rbCanvas.DOFade(1f, this.animationStepDuration * 0.5f).SetDelay(this.animationStepDuration).SetUpdate(true);
                }
                this.rectLine.DOAnchorPosX(this.tabs[this._tab].anchoredPosition.x - 0f, this.animationStepDuration, false).SetEase(this.lineAnimationCurve).SetUpdate(true);
                this.tabContents[this._tab].Select(this.animationStepDuration);
            }
        }



笔记本面板
记事本面板 - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (Input.GetMouseButtonDown(0))
    {
        float num = (this.notebookSlots[0].transform.position.y - this.notebookSlots[1].transform.position.y) / 2f;
        Vector3 mousePosition = Input.mousePosition;
        if (mousePosition.y > this.notebookTabs[0].transform.position.y)
        {
            int num2 = 0;
            float num3 = float.MaxValue;
            int num4 = this.tabIndex;
            List<NotebookTabHandler> list = this.notebookTabs;
            for (int i = 0; i < list.Count; i++)
            {
                float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num3)
                {
                    num3 = sqrMagnitude;
                    num2 = i;
                }
            }
            if (num4 != num2)
            {
                this.RefreshTabSelection(num2 - num4);
            }
        }
        if (mousePosition.x > this.notebookSlots[0].transform.position.x + num * 4f && mousePosition.x < this.notebookSlots[0].transform.position.x + num * 6f)
        {
            if (mousePosition.y > this.notebookSlots[1].transform.position.y + num && mousePosition.y < this.notebookSlots[0].transform.position.y + num)
            {
                this.MovePageUp();
            }
            else if (mousePosition.y < this.notebookSlots[3].transform.position.y - num && mousePosition.y > this.notebookSlots[4].transform.position.y - num)
            {
                this.MovePageDown();
            }
        }
        else if (mousePosition.x < this.notebookSlots[0].transform.position.x + num)
        {
            if (mousePosition.y > this.notebookSlots[0].transform.position.y + num)
            {
                EventSystem.current.SetSelectedGameObject(this.gameObjectFilter);
                return true;
            }
            float num5 = float.MaxValue;
            NotebookSlotGUI notebookSlotGUI = this.notebookSlots[0];
            List<NotebookSlotGUI> list2 = this.notebookSlots;
            for (int j = 0; j < list2.Count; j++)
            {
                float sqrMagnitude2 = (list2[j].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude2 < num5)
                {
                    num5 = sqrMagnitude2;
                    notebookSlotGUI = list2[j];
                }
            }
            EventSystem.current.SetSelectedGameObject(notebookSlotGUI.gameObject);
        }
        return true;
    }
    返回假;
}

日历面板
CalendarPanel - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    float num = (this.monthPanel.days[1].transform.position.x - this.monthPanel.days[0].transform.position.x) / 2f;
    Vector3 mousePosition = Input.mousePosition;
    List<DayInventorySlotGUI> days = this.monthPanel.days;
    if (Input.GetMouseButtonDown(0))
    {
        if (mousePosition.y < days[0].transform.position.y + num && mousePosition.x < days[6].transform.position.x + num)
        {
            DayInventorySlotGUI dayInventorySlotGUI = this.monthPanel.days[0];
            float num2 = float.MaxValue;
            for (int i = 0; i < days.Count; i++)
            {
                float sqrMagnitude = (days[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    dayInventorySlotGUI = days[i];
                }
            }
            dayInventorySlotGUI.GetComponent<Selectable>().Select();
            this.dayInfoPanel.Init(dayInventorySlotGUI);
        }
        否则如果(鼠标位置.y > 天数[0].变换位置.y + 数字 且 鼠标位置.x < 天数[0].变换位置.x - 数字)
        {
            this.ShowPreviousMonth();
        }
        否则如果(鼠标位置.y > 天数[0].变换位置.y + 数值 且 鼠标位置.x > 天数[6].变换位置.x + 数值)
        {
            this.ShowNextMonth();
        }
        return true;
    }
    返回假;
}


愿望单面板:
WishlistPanel - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (Input.GetMouseButtonDown(0))
    {
        float num = (this.wishlistSlots[0].transform.position.y - this.wishlistSlots[1].transform.position.y) / 2f;
        Vector3 mousePosition = Input.mousePosition;
        如果(鼠标位置.x > 此.wishlistSlots[0].transform.position.x + num * 4f 且 鼠标位置.x < 此.wishlistSlots[0].transform.position.x + num * 6f)
        {
            if (mousePosition.y > this.wishlistSlots[1].transform.position.y + num && mousePosition.y < this.wishlistSlots[0].transform.position.y + num)
            {
                this.MovePageUp();
            }
            否则如果(鼠标位置Y小于此心愿单槽位[3]的变换位置Y减去数值,且鼠标位置Y大于此心愿单槽位[4]的变换位置Y减去数值)
            {
                this.MovePageDown();
            }
        }
        else if (mousePosition.x < this.wishlistSlots[0].transform.position.x + num)
        {
            float num2 = float.MaxValue;
            NotebookSlotGUI notebookSlotGUI = this.wishlistSlots[0];
            List<NotebookSlotGUI> list = this.wishlistSlots;
            for (int i = 0; i < list.Count; i++)
            {
                float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    notebookSlotGUI = list[i];
                }
            }
            EventSystem.current.SetSelectedGameObject(notebookSlotGUI.gameObject);
        }
        return true;
    }
    返回假;
}

暂停菜单
暂停面板 - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (base.OnAButtonReleased() && Input.GetMouseButtonDown(0))
    {
        List<Button> list = this.buttons;
        Button whichSlot = list[0];
        float num = float.MaxValue;
        Vector3 mousePosition = Input.mousePosition;
        float distance = Mathf.Abs(list[0].transform.position.y - list[1].transform.position.y) / 2f;
        if (mousePosition.y < list[0].transform.position.y + distance)
        {
            for (int i = 0; i < list.Count; i++)
            {
                float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                如果(平方距离 < 数值)
                {
                    num = sqrMagnitude;
                    whichSlot = list[i];
                }
            }
            whichSlot.GetComponent<Selectable>().Select();
            EventSystem currentEventSystem = EventSystem.current;
            if (currentEventSystem)
            {
                按钮 按钮;
                if (currentEventSystem.currentSelectedGameObject.TryGetComponent<Button>(out button))
                {
                    DOVirtual.DelayedCall(0.1f, delegate
                    {
                        button.OnSubmit(新增BaseEventData(currentEventSystem));
                    }, true);
                }
            }
        }
        return true;
    }
    返回假;
}


铁匠铺面板
BlackSmithPanel - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<InventorySlotGUI> slots = this.itemSelector.slots;
    slots.Add(this.itemSelector.upNonFamilySlot);
    slots.Add(this.itemSelector.downNonFamilySlot);
    int v = 0;
    float num = Mathf.Abs(slots[2].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0) && !this._crafting && !this._shoperConfirmationPanel.IsActive() && !this._isAdvising)
    {
        if (mousePosition.y < slots[2].transform.position.y + num * 2.1f && mousePosition.x > slots[0].transform.position.x)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float x = mousePosition.x - num;
                float y = mousePosition.y - num * 0.1f;
                if (this.itemSelector.IsSpecialPage())
                {
                    x = mousePosition.x - num;
                    y = mousePosition.y;
                }
                Vector3 b = new Vector3(x, y);
                float sqrMagnitude = (slots[i].transform.position - b).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            if (this.itemSelector.IsSpecialPage() && v == slots.Count - 1)
            {
                this.itemSelector.SelectSlot(-1);
            }
            否则如果(this.itemSelector.IsSpecialPage() && v == slots.Count - 2)
            {
                this.itemSelector.SelectSlot(-2);
            }
            否则
            {
                this.itemSelector.SelectSlot(v);
            }
        }
        else if (mousePosition.y < slots[2].transform.position.y + num * 2f && mousePosition.y > slots[2].transform.position.y - num && mousePosition.x < slots[0].transform.position.x - num)
        {
            this.itemSelector.MovePageUp();
        }
        else if (mousePosition.y < slots[2].transform.position.y + num * 2f && mousePosition.y < slots[2].transform.position.y - num && mousePosition.x < slots[0].transform.position.x - num)
        {
            this.itemSelector.MovePageDown();
        }
        否则如果(鼠标位置.y > 插槽[2].变换.位置.y + 数字 * 2f)
        {
            if (mousePosition.x > slots[0].transform.position.x && mousePosition.x < slots[0].transform.position.x + num * 1.5f)
            {
                this.itemSelector.SelectTab(0);
            }
            else if (mousePosition.x > slots[0].transform.position.x + num * 1.5f && mousePosition.x < slots[0].transform.position.x + num * 3.1f)
            {
                this.itemSelector.SelectTab(1);
            }
            否则如果(鼠标位置.x 大于 槽位[0].变换.位置.x + 数量 * 3.1f 且 鼠标位置.x 小于 槽位[0].变换.位置.x + 数量 * 4.7f)
            {
                this.itemSelector.SelectTab(2);
            }
            否则如果(鼠标位置.x > 槽位[0].变换.位置.x + 数字 * 4.7f 且 鼠标位置.x < 槽位[0].变换.位置.x + 数字 * 6.3f)
            {
                this.itemSelector.SelectTab(3);
            }
            else if (mousePosition.x > slots[0].transform.position.x + num * 6.3f && mousePosition.x < slots[0].transform.position.x + num * 7.9f)
            {
                this.itemSelector.SelectTab(4);
            }
            否则如果(鼠标位置.x 大于 槽位[0].变换.位置.x + 数字 * 7.9f 且 鼠标位置.x 小于 槽位[0].变换.位置.x + 数字 * 9.5f)
            {
                this.itemSelector.SelectTab(5);
            }
        }
        return true;
    }
    返回 假;
}


女巫面板 药水与附魔
WitchPanel - 添加覆写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (Input.GetMouseButtonDown(0))
    {
        if (this._inPotionsPanel)
        {
            this.panelWitchPotions.OnAButtonPressed();
        }
        否则
        {
            this.panelWitchEnchantments.OnAButtonPressed();
        }
        return true;
    }
    return false;
}

魔药炼制面板
添加到:WitchPanel.OnAButtonPressed()
    List<InventorySlotGUI> 列表 = this.itemSelector.slots;
    int whichSlot = 0;
    float distance = Mathf.Abs(list[0].transform.position.x - list[1].transform.position.x) / 2f;
    float tum = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0) && !this._crafting && !this.isConfirmationOpen && !this.isQuantityOpen)
    {
        if (mousePosition.y < list[0].transform.position.y + distance * 2f && mousePosition.x > list[0].transform.position.x - distance)
        {
            for (int i = 0; i < list.Count; i++)
            {
                float sqrMagnitude = (list[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < tum)
                {
                    tum = sqrMagnitude;
                    whichSlot = i;
                }
            }
            this.itemSelector.SelectSlot(whichSlot);
            返回;
        }
        if (mousePosition.y < list[0].transform.position.y + distance * 2f && mousePosition.y > list[0].transform.position.y - distance && mousePosition.x < list[0].transform.position.x - distance)
        {
            this.itemSelector.DragPageUp();
            返回;
        }
        如果(鼠标位置.y < 列表[0].变换.位置.y + 距离 * 2f 且 鼠标位置.y < 列表[0].变换.位置.y - 距离 且 鼠标位置.x < 列表[0].变换.位置.x - 距离)
        {
            this.itemSelector.DragPageDown();
        }
        return;
    }


女巫附魔面板
添加到女巫药水面板 -> 按下A按钮时()
    List<InventorySlotGUI> slots = this.itemSelector.slots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0) && !this._enchanting && !this._shoperConfirmationPanel.IsActive())
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.itemSelector.SelectSlot(v);
            返回;
        }
        如果(鼠标位置Y < 槽位[0].变换位置.Y + 数值 * 2f 且 鼠标位置Y > 槽位[0].变换位置.Y - 数值 且 鼠标位置X < 槽位[0].变换位置.X - 数值)
        {
            this.itemSelector.DragPageUp();
            返回;
        }
        if (mousePosition.y < slots[0].transform.position.y + num * 2f && mousePosition.y < slots[0].transform.position.y - num && mousePosition.x < slots[0].transform.position.x - num)
        {
            this.itemSelector.DragPageDown();
            返回;
        }
        如果 (mousePosition.y > slots[0].transform.position.y + num * 2.5f)
        {
            如果(鼠标位置.x > 槽位[0].变换.位置.x - 数值 * 3f && 鼠标位置.x < 槽位[0].变换.位置.x - 数值 * 1.6f)
            {
                this.itemSelector.SelectTab(0);
                return;
            }
            if (mousePosition.x > slots[0].transform.position.x - num * 1.6f && mousePosition.x < slots[0].transform.position.x + num * 0.8f)
            {
                this.itemSelector.SelectTab(1);
                返回;
            }
            if (mousePosition.x > slots[0].transform.position.x + num * 0.8f && mousePosition.x < slots[0].transform.position.x + num * 2.4f)
            {
                this.itemSelector.SelectTab(2);
                return;
            }
            if (mousePosition.x > slots[0].transform.position.x + num * 2.4f && mousePosition.x < slots[0].transform.position.x + num * 4f)
            {
                this.itemSelector.SelectTab(3);
                返回;
            }
            if (mousePosition.x > slots[0].transform.position.x + num * 4f && mousePosition.x < slots[0].transform.position.x + num * 5.6f)
            {
                this.itemSelector.SelectTab(4);
                返回;
            }
            if (mousePosition.x > slots[0].transform.position.x + num * 5.6f && mousePosition.x < slots[0].transform.position.x + num * 7.2f)
            {
                this.itemSelector.SelectTab(5);
                返回;
            }
        }
        返回;
    }


对手面板
对手面板:- 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<InventorySlotGUI> slots = this.itemSelector.slots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0) && !this._shoperConfirmationPanel.IsActive())
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                如果(sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.itemSelector.SelectSlot(v);
        }
        else if (mousePosition.y < slots[0].transform.position.y + num * 2.1f && mousePosition.y > slots[0].transform.position.y && mousePosition.x < slots[0].transform.position.x - num * 1.5f && mousePosition.x > slots[0].transform.position.x - num * 2.5f)
        {
            this.itemSelector.DragPageUp();
        }
        else if (mousePosition.y < slots[0].transform.position.y + num * 2.1f && mousePosition.y < slots[0].transform.position.y - num && mousePosition.x < slots[0].transform.position.x - num * 1.5f && mousePosition.x > slots[0].transform.position.x - num * 2.5f)
        {
            this.itemSelector.DragPageDown();
        }
        else if (mousePosition.y > slots[0].transform.position.y + num * 2.5f)
        {
            if (mousePosition.x > slots[0].transform.position.x - num * 3f && mousePosition.x < slots[0].transform.position.x - num * 1.6f)
            {
                this.itemSelector.SelectTab(0);
            }
            否则如果(鼠标位置.x > 槽位[0].变换.位置.x - 数值 * 1.6f 且 鼠标位置.x < 槽位[0].变换.位置.x + 数值 * 0.8f)
            {
                this.itemSelector.SelectTab(1);
            }
            否则如果(鼠标位置.x > 槽位[0].变换.位置.x + 数字 * 0.8f 且 鼠标位置.x < 槽位[0].变换.位置.x + 数字 * 2.4f)
            {
                this.itemSelector.SelectTab(2);
            }
            else if (mousePosition.x > slots[0].transform.position.x + num * 2.4f && mousePosition.x < slots[0].transform.position.x + num * 4f)
            {
                this.itemSelector.SelectTab(3);
            }
            else if (mousePosition.x > slots[0].transform.position.x + num * 4f && mousePosition.x < slots[0].transform.position.x + num * 5.6f)
            {
                this.itemSelector.SelectTab(4);
            }
            否则如果(鼠标位置.x > 槽位[0].变换位置.x + 数值 * 5.6f 且 鼠标位置.x < 槽位[0].变换位置.x + 数值 * 7.2f)
            {
                this.itemSelector.SelectTab(5);
            }
        }
        返回真;
    }
    return false;
}


豪克面板:
Hawker面板 - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<InventorySlotGUI> slots = this.itemSelector.slots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    浮点数 num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0) && !this._shoperConfirmationPanel.IsActive())
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                如果 (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.itemSelector.SelectSlot(v);
        }
        否则如果(鼠标位置.y > 槽位[0].变换位置.y + 数值 * 2.1f)
        {
            if (mousePosition.x > slots[0].transform.position.x - num && mousePosition.x < slots[0].transform.position.x + num / 2f)
            {
                this.itemSelector.SelectTab(0);
            }
            否则如果(鼠标位置.x > 槽位[0].变换.位置.x + 数字 / 2f && 鼠标位置.x < 槽位[0].变换.位置.x + 数字 * 1.6f)
            {
                this.itemSelector.SelectTab(1);
            }
            否则如果(鼠标位置.x > 槽位[0].变换.位置.x + 数字 * 1.6f 且 鼠标位置.x < 槽位[0].变换.位置.x + 数字 * 3.2f)
            {
                this.itemSelector.SelectTab(2);
            }
            否则如果(鼠标位置.x > 插槽[0].变换.位置.x + 数字 * 3.2f 且 鼠标位置.x < 插槽[0].变换.位置.x + 数字 * 4.8f)
            {
                this.itemSelector.SelectTab(3);
            }
            否则如果(鼠标位置.x > 槽位[0].变换.位置.x + 数字 * 4.8f 且 鼠标位置.x < 槽位[0].变换.位置.x + 数字 * 6.4f)
            {
                this.itemSelector.SelectTab(4);
            }
        }
        返回真;
    }
    return false;
}


魔宠面板
FamiliarsPanel - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<FamiliarSlotGUI> slots = this.familiarSlots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0))
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num / 2f)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.familiarSlots[v].GetComponent<Selectable>().Select();
        }
        else if (mousePosition.y > slots[0].transform.position.y + num * 1.2f && mousePosition.x < slots[0].transform.position.x - num)
        {
            this.MoveToPreviousPage();
        }
        else if (mousePosition.y > slots[0].transform.position.y + num * 1.2f && mousePosition.x > slots[2].transform.position.x + num)
        {
            this.MoveToNextPage();
        }
        return true;
    }
    return false;
}

装饰面板
装饰面板 - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<InventorySlotGUI> slots = this.decorativeSlots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0))
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num / 2f)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                如果 (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.decorativeSlots[v].GetComponent<Selectable>().Select();
        }
        否则
        {
            if (mousePosition.y > slots[0].transform.position.y + num && mousePosition.x < slots[0].transform.position.x - num / 2f)
            {
                this._page = Mathf.Max(this._page - 1, 0);
                this.SetPage(this._page);
            }
            如果(鼠标位置.y > 槽位[0].变换位置.y + 数字 && 鼠标位置.x > 槽位[2].变换位置.x + 数字 / 2f)
            {
                this._page = Mathf.Min(this._page + 1, this._maxPage);
                this.SetPage(this._page);
            }
        }
        return true;
    }
    返回假;
}

城镇公告板面板
TownBoardPanel - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    if (!Input.GetMouseButtonDown(0))
    {
        返回错误;
    }
    if (!this.animator.GetBool("EnchantmentOpen"))
    {
        List<TownBoardStaffPanel.TownBoardStaffEntry> list4 = this.staffPanel.entries;
        float num4 = float.MaxValue;
        TownBoardStaffPanel.TownBoardStaffEntry whichOne2 = list4[0];
        Vector3 mousePosition4 = Input.mousePosition;
        for (int i = 0; i < list4.Count; i++)
        {
            float sqrMagnitude4 = (list4[i].slot.transform.position - mousePosition4).sqrMagnitude;
            if (sqrMagnitude4 < num4)
            {
                num4 = sqrMagnitude4;
                whichOne2 = list4[i];
            }
        }
        whichOne2.slot.GetComponent<Selectable>().Select();
        返回真;
    }
    List<TownBoardShopPanel.TownBoardShopEntry> list5 = this.shopPanel.shopEntries;
    list5.AddRange(this.shopPanel.salesBoxEntries);
    list5.AddRange(this.shopPanel.cashMachineEntries);
    list5.AddRange(this.shopPanel.bedEntries);
    list5.AddRange(this.shopPanel.bedChestEntries);
    float num5 = float.MaxValue;
    int whichOne3 = 0;
    Vector3 mousePosition5 = Input.mousePosition;
    for (int j = 0; j < list5.Count; j++)
    {
        float sqrMagnitude5 = (list5[j].slot.transform.position - mousePosition5).sqrMagnitude;
        if (sqrMagnitude5 < num5)
        {
            num5 = sqrMagnitude5;
            whichOne3 = j;
        }
    }
    if (whichOne3 < 4)
    {
        this.shopPanel.shopEntries[whichOne3].slot.GetComponent<Selectable>().Select();
        return true;
    }
    if (whichOne3 >= 4 && whichOne3 < 7)
    {
        this.shopPanel.salesBoxEntries[whichOne3 - 4].slot.GetComponent<Selectable>().Select();
        return true;
    }
    if (whichOne3 >= 7 && whichOne3 < 10)
    {
        this.shopPanel.cashMachineEntries[whichOne3 - 7].slot.GetComponent<Selectable>().Select();
        返回真;
    }
    if (whichOne3 >= 10 && whichOne3 < 13)
    {
        this.shopPanel.bedEntries[whichOne3 - 10].slot.GetComponent<Selectable>().Select();
        return true;
    }
    如果(whichOne3 >= 13)
    {
        this.shopPanel.bedChestEntries[whichOne3 - 13].slot.GetComponent<Selectable>().Select();
    }
    返回真值;
}

DLC 讨价还价商贩面板
WandererHagglerPanel - 添加覆盖方法 OnAButtonReleased() 的布尔返回值
public override bool OnAButtonReleased()
{
    List<InventorySlotGUI> slots = this.itemSelector.slots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0) && !this._shoperConfirmationPanel.IsActive())
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.itemSelector.SelectSlot(v);
        }
        否则如果(鼠标位置.y < 槽位[0].变换位置.y + 数量 * 2.1f 且 鼠标位置.y > 槽位[0].变换位置.y 且 鼠标位置.x < 槽位[0].变换位置.x - 数量 * 1.5f 且 鼠标位置.x > 槽位[0].变换位置.x - 数量 * 2.5f)
        {
            this.itemSelector.DragPageUp();
        }
        否则如果(鼠标位置.y < 槽位[0].变换.位置.y + 数值 * 2.1f 且 鼠标位置.y < 槽位[0].变换.位置.y - 数值 且 鼠标位置.x < 槽位[0].变换.位置.x - 数值 * 1.5f 且 鼠标位置.x > 槽位[0].变换.位置.x - 数值 * 2.5f)
        {
            this.itemSelector.DragPageDown();
        }
        return true;
    }
    返回假;
}

DLC蓝图面板
Moonlighter.DLC.WandererDungeon->WandererShopperPanel. - 添加重写布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<InventorySlotGUI> slots = this.itemSelector.slots;
    int v = 0;
    float num = Mathf.Abs(slots[0].transform.position.x - slots[1].transform.position.x) / 2f;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0))
    {
        if (mousePosition.y < slots[0].transform.position.y + num && mousePosition.x > slots[0].transform.position.x - num)
        {
            for (int i = 0; i < slots.Count; i++)
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
            this.itemSelector.SelectSlot(v);
        }
        否则如果(鼠标位置Y坐标小于槽位[0]的变换位置Y坐标加数值乘以2.1,且鼠标位置Y坐标大于槽位[0]的变换位置Y坐标,且鼠标位置X坐标小于槽位[0]的变换位置X坐标减数值乘以1.5,且鼠标位置X坐标大于槽位[0]的变换位置X坐标减数值乘以2.5)
        {
            this.itemSelector.DragPageUp();
        }
        否则如果(鼠标位置.y 小于 栏位[0].变换.位置.y + 数值 * 2.1f 且 鼠标位置.y 小于 栏位[0].变换.位置.y - 数值 且 鼠标位置.x 小于 栏位[0].变换.位置.x - 数值 * 1.5f 且 鼠标位置.x 大于 栏位[0].变换.位置.x - 数值 * 2.5f)
        {
            this.itemSelector.DragPageDown();
        }
        返回真;
    }
    返回错误;
}

DLC升降机检修面板
Moonlighter.DLC.WandererDungeon->WandererDungeonLiftAccessPanel - 添加覆盖布尔方法 OnAButtonReleased()
public override bool OnAButtonReleased()
{
    List<WandererDungeonLiftAccessPanel_FloorElement> 槽位 = 此.楼层;
    List<int> unlockedFloors = this._accessReference.unlockedFloors;
    int v = 0;
    float num2 = float.MaxValue;
    Vector3 mousePosition = Input.mousePosition;
    if (Input.GetMouseButtonDown(0))
    {
        for (int i = 0; i < slots.Count; i++)
        {
            if (unlockedFloors.Contains(slots[i].floor))
            {
                float sqrMagnitude = (slots[i].transform.position - mousePosition).sqrMagnitude;
                if (sqrMagnitude < num2)
                {
                    num2 = sqrMagnitude;
                    v = i;
                }
            }
        }
        this.floors[v].GetComponent<Selectable>().Select();
        return true;
    }
    返回 false;
}





使用 Xmod 解锁 夜勤人 的全部潜力 — 今天就探索这些顶级 MOD!