Пример #1
0
        public void Combine(InvItem item1, InvItem item2)
        {
            if (item2 == null || item1 == null || item2.recipeSlot > -1)
            {
                return;
            }

            if (item2 == item1)
            {
                if ((KickStarter.settingsManager.interactionMethod != AC_InteractionMethod.ChooseHotspotThenInteraction || KickStarter.settingsManager.inventoryInteractions == InventoryInteractions.Single) && KickStarter.settingsManager.inventoryDragDrop && KickStarter.settingsManager.inventoryDropLook)
                {
                    Look(item2);
                }
                selectedItem = null;
            }
            else
            {
                if (selectedItem == null)
                {
                    InvItem tempItem = item1;
                    item1 = item2;
                    item2 = tempItem;
                }
                selectedItem = null;

                for (int i = 0; i < item2.combineID.Count; i++)
                {
                    if (item2.combineID[i] == item1.id && item2.combineActionList[i] != null)
                    {
                        PlayerMenus.ForceOffAllMenus(true);
                        AdvGame.RunActionListAsset(item2.combineActionList [i]);
                        return;
                    }
                }

                if (KickStarter.settingsManager.reverseInventoryCombinations || (KickStarter.settingsManager.SelectInteractionMethod() == SelectInteractions.CyclingCursorAndClickingHotspot && KickStarter.settingsManager.inventoryInteractions == InventoryInteractions.Multiple))
                {
                    // Try opposite: search selected item instead
                    for (int i = 0; i < item1.combineID.Count; i++)
                    {
                        if (item1.combineID[i] == item2.id && item1.combineActionList[i] != null)
                        {
                            ActionListAsset assetFile = item1.combineActionList[i];
                            PlayerMenus.ForceOffAllMenus(true);
                            AdvGame.RunActionListAsset(assetFile);
                            return;
                        }
                    }
                }

                // Found no combine match
                if (item1.unhandledCombineActionList)
                {
                    ActionListAsset unhandledActionList = item1.unhandledCombineActionList;
                    AdvGame.RunActionListAsset(unhandledActionList);
                }
                else if (unhandledCombine)
                {
                    PlayerMenus.ForceOffAllMenus(true);
                    AdvGame.RunActionListAsset(unhandledCombine);
                }
            }

            KickStarter.playerCursor.ResetSelectedCursor();
        }