using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; [CustomEditor (typeof(inventoryManager), true)] public class inventoryManagerEditor : Editor { SerializedProperty inventoryEnabled; SerializedProperty openInventoryMenuEnabled; SerializedProperty infiniteSlots; SerializedProperty setInfiniteSlotValuesOnSaveLoad; SerializedProperty inventorySlotAmount; SerializedProperty infiniteAmountPerSlot; SerializedProperty amountPerSlot; SerializedProperty combineElementsAtDrop; SerializedProperty buttonUsable; SerializedProperty buttonNotUsable; SerializedProperty useOnlyWhenNeededAmountToUseObject; SerializedProperty activeNumberOfObjectsToUseMenu; SerializedProperty setTotalAmountWhenDropObject; SerializedProperty configureNumberObjectsToUseRate; SerializedProperty fasterNumberObjectsToUseRate; SerializedProperty waitTimeToUseFasterNumberObjectsToUseRate; SerializedProperty useBlurUIPanel; SerializedProperty showInventoryObjectsName; SerializedProperty showObjectAmountIfEqualOne; SerializedProperty selectFirstInventoryObjectWhenOpeningMenu; SerializedProperty dropSingleObjectOnInfiniteAmount; SerializedProperty showAllSettings; SerializedProperty showWeightSettings; SerializedProperty showWeaponsSettings; SerializedProperty showExamineSettings; SerializedProperty showMessagesSettings; SerializedProperty showSoundsSettings; SerializedProperty showOthersSettings; SerializedProperty showEventSettings; SerializedProperty showSaveLoadSettings; SerializedProperty showDebugSettings; SerializedProperty showElementSettings; SerializedProperty checkWeightLimitToPickObjects; SerializedProperty mainInventoryWeightManager; SerializedProperty storePickedWeaponsOnInventory; SerializedProperty useMaxNumberOfWeaponsToEquip; SerializedProperty maxNumberOfWeaponsToEquip; SerializedProperty maxNumberOfWeaponsEquippedMessage; SerializedProperty equipWeaponsWhenPicked; SerializedProperty equipPickedWeaponOnlyItNotPreviousWeaponEquipped; SerializedProperty changeToFireWeaponsModeWhenPickingFireWeapon; SerializedProperty changeToMeleeWeaponsModeWhenPickingMeleeWeapon; SerializedProperty useInventoryCameraEnabled; SerializedProperty examineObjectBeforeStoreEnabled; SerializedProperty distanceToPlaceObjectInCamera; SerializedProperty placeObjectInCameraSpeed; SerializedProperty numberOfRotationsObjectInCamera; SerializedProperty placeObjectInCameraRotationSpeed; SerializedProperty extraCameraFovOnExamineObjects; SerializedProperty rotationSpeed; SerializedProperty zoomSpeed; SerializedProperty maxZoomValue; SerializedProperty minZoomValue; SerializedProperty showMessageWhenObjectUsed; SerializedProperty usedObjectMessage; SerializedProperty fullInventoryMessage; SerializedProperty fullInventoryMessageTime; SerializedProperty combinedObjectMessage; SerializedProperty combineObjectMessageTime; SerializedProperty usedObjectMessageTime; SerializedProperty unableToUseObjectMessage; SerializedProperty nonNeededAmountAvaliable; SerializedProperty objectNotFoundMessage; SerializedProperty cantUseThisObjectHereMessage; SerializedProperty unableToCombineMessage; SerializedProperty canBeCombinedButObjectIsFullMessage; SerializedProperty notEnoughSpaceToCombineMessage; SerializedProperty weightLimitReachedMessage; SerializedProperty objectTooMuchHeavyToCarryMessage; SerializedProperty useAudioSounds; SerializedProperty mainAudioSource; SerializedProperty useInventoryOptionsOnSlot; SerializedProperty inventoryOptionsOnSlotPanel; SerializedProperty mainInventorySlotOptionsButtons; SerializedProperty usedByAI; SerializedProperty eventOnInventoryInitialized; SerializedProperty eventOnClickInventoryChange; SerializedProperty eventOnInventorySlotSelected; SerializedProperty eventOnInventorySlotUnSelected; SerializedProperty eventOnInventoryClosed; SerializedProperty eventOnInventoryOpened; SerializedProperty useEventIfSystemDisabled; SerializedProperty eventIfSystemDisabled; SerializedProperty eventOnInventoryListChange; SerializedProperty useEventOnInventoryObjectEquipped; SerializedProperty eventOnInventoryObjectEquipped; SerializedProperty useEventOnInventoryObjectUnEquipped; SerializedProperty eventOnInventoryObjectUnEquipped; SerializedProperty useEventOnRepairCurrentObject; SerializedProperty eventOnRepairCurrentObject; SerializedProperty eventOnUnableToRepairCurrentObject; SerializedProperty loadCurrentPlayerInventoryFromSaveFile; SerializedProperty saveCurrentPlayerInventoryToSaveFile; SerializedProperty inventoryOpened; SerializedProperty inventoryList; SerializedProperty inventoryPanel; SerializedProperty inventoryListContent; SerializedProperty inventoryListScrollRect; SerializedProperty objectIcon; SerializedProperty equipButton; SerializedProperty unequipButton; SerializedProperty useButtonImage; SerializedProperty equipButtonImage; SerializedProperty unequipButtonImage; SerializedProperty dropButtonImage; SerializedProperty combineButtonImage; SerializedProperty examineButtonImage; SerializedProperty discardButtonImage; SerializedProperty dropAllUnitsObjectButtonImage; SerializedProperty examineObjectPanel; SerializedProperty examineObjectName; SerializedProperty examineObjectDescription; SerializedProperty takeObjectInExaminePanelButton; SerializedProperty currentObjectName; SerializedProperty currentObjectInfo; SerializedProperty objectImage; SerializedProperty usableInventoryObjectInfoList; SerializedProperty inventoryCamera; SerializedProperty inventoryLight; SerializedProperty lookObjectsPosition; SerializedProperty emptyInventoryPrefab; SerializedProperty numberOfObjectsToUseMenu; SerializedProperty numberOfObjectsToUseMenuRectTransform; SerializedProperty numberOfObjectsToUseText; SerializedProperty numberOfObjectsToUseMenuPosition; SerializedProperty numberOfObjectsToDropMenuPosition; SerializedProperty inventorySlotsScrollbar; SerializedProperty inventoryObjectInforScrollbar; SerializedProperty mainMeleeWeaponsGrabbedManager; SerializedProperty weaponsManager; SerializedProperty playerControllerManager; SerializedProperty pauseManager; SerializedProperty playerInput; SerializedProperty mainInventoryListManager; SerializedProperty usingDevicesManager; SerializedProperty mainInventoryMenuPanelsSystem; SerializedProperty mainInventoryBankUISystem; SerializedProperty mainVendorUISystem; SerializedProperty inventoryListManagerList; SerializedProperty useScriptableObjectForInitialInventoryList; SerializedProperty mainInitialInventoryListData; SerializedProperty useMultipleScriptableObjectForInitialInventoryList; SerializedProperty mainMultipleInitialInventoryListData; SerializedProperty mainInventoryCharacterCustomizationSystem; SerializedProperty mainInventoryQuickAccessSlotsSystem; SerializedProperty mainInventoryManagerPrefab; SerializedProperty showDebugPrint; SerializedProperty destroyObjectsOnEmptyDurability; SerializedProperty dropObjectsOnEmptyDurability; SerializedProperty setObjectsAsBrokenOnEmptyDurability; SerializedProperty unequipObjectOnEmptyDurability; SerializedProperty brokenObjectsCantBeUsed; SerializedProperty brokenObjectsCantBeEquipped; SerializedProperty checkDurabilityOnObjectEnabled; SerializedProperty currentNumberOfWeaponsEquipped; SerializedProperty lastWeaponCarriedOnHandsName; SerializedProperty drawInitialWeaponEquippedOnStartEnabled; SerializedProperty drawFirstMeleeWeaponAvailable; SerializedProperty drawFirstFireWeaponAvailable; SerializedProperty drawLastWeaponCarriedOnHandsOnLoadEnabled; SerializedProperty menuPanelName; SerializedProperty sendGrabbedObjectToInventoryIfGrabbingNewOne; SerializedProperty takeOnlyOneUnitToGrab; inventoryManager manager; Color buttonColor; inventoryCaptureManager inventoryWindow; bool addInventoryObject; string isAdded; string menuOpened; string amountValue; bool isEquipped; string objectIsEquipped; int categoryIndex; int elementIndex; string buttonMessage; GUIStyle style = new GUIStyle (); GUIStyle buttonStyle = new GUIStyle (); void OnEnable () { inventoryEnabled = serializedObject.FindProperty ("inventoryEnabled"); openInventoryMenuEnabled = serializedObject.FindProperty ("openInventoryMenuEnabled"); infiniteSlots = serializedObject.FindProperty ("infiniteSlots"); setInfiniteSlotValuesOnSaveLoad = serializedObject.FindProperty ("setInfiniteSlotValuesOnSaveLoad"); inventorySlotAmount = serializedObject.FindProperty ("inventorySlotAmount"); infiniteAmountPerSlot = serializedObject.FindProperty ("infiniteAmountPerSlot"); amountPerSlot = serializedObject.FindProperty ("amountPerSlot"); combineElementsAtDrop = serializedObject.FindProperty ("combineElementsAtDrop"); buttonUsable = serializedObject.FindProperty ("buttonUsable"); buttonNotUsable = serializedObject.FindProperty ("buttonNotUsable"); useOnlyWhenNeededAmountToUseObject = serializedObject.FindProperty ("useOnlyWhenNeededAmountToUseObject"); activeNumberOfObjectsToUseMenu = serializedObject.FindProperty ("activeNumberOfObjectsToUseMenu"); setTotalAmountWhenDropObject = serializedObject.FindProperty ("setTotalAmountWhenDropObject"); configureNumberObjectsToUseRate = serializedObject.FindProperty ("configureNumberObjectsToUseRate"); fasterNumberObjectsToUseRate = serializedObject.FindProperty ("fasterNumberObjectsToUseRate"); waitTimeToUseFasterNumberObjectsToUseRate = serializedObject.FindProperty ("waitTimeToUseFasterNumberObjectsToUseRate"); useBlurUIPanel = serializedObject.FindProperty ("useBlurUIPanel"); showInventoryObjectsName = serializedObject.FindProperty ("showInventoryObjectsName"); showObjectAmountIfEqualOne = serializedObject.FindProperty ("showObjectAmountIfEqualOne"); selectFirstInventoryObjectWhenOpeningMenu = serializedObject.FindProperty ("selectFirstInventoryObjectWhenOpeningMenu"); dropSingleObjectOnInfiniteAmount = serializedObject.FindProperty ("dropSingleObjectOnInfiniteAmount"); showAllSettings = serializedObject.FindProperty ("showAllSettings"); showWeightSettings = serializedObject.FindProperty ("showWeightSettings"); showWeaponsSettings = serializedObject.FindProperty ("showWeaponsSettings"); showExamineSettings = serializedObject.FindProperty ("showExamineSettings"); showMessagesSettings = serializedObject.FindProperty ("showMessagesSettings"); showSoundsSettings = serializedObject.FindProperty ("showSoundsSettings"); showOthersSettings = serializedObject.FindProperty ("showOthersSettings"); showEventSettings = serializedObject.FindProperty ("showEventSettings"); showSaveLoadSettings = serializedObject.FindProperty ("showSaveLoadSettings"); showDebugSettings = serializedObject.FindProperty ("showDebugSettings"); showElementSettings = serializedObject.FindProperty ("showElementSettings"); checkWeightLimitToPickObjects = serializedObject.FindProperty ("checkWeightLimitToPickObjects"); mainInventoryWeightManager = serializedObject.FindProperty ("mainInventoryWeightManager"); storePickedWeaponsOnInventory = serializedObject.FindProperty ("storePickedWeaponsOnInventory"); useMaxNumberOfWeaponsToEquip = serializedObject.FindProperty ("useMaxNumberOfWeaponsToEquip"); maxNumberOfWeaponsToEquip = serializedObject.FindProperty ("maxNumberOfWeaponsToEquip"); maxNumberOfWeaponsEquippedMessage = serializedObject.FindProperty ("maxNumberOfWeaponsEquippedMessage"); equipWeaponsWhenPicked = serializedObject.FindProperty ("equipWeaponsWhenPicked"); equipPickedWeaponOnlyItNotPreviousWeaponEquipped = serializedObject.FindProperty ("equipPickedWeaponOnlyItNotPreviousWeaponEquipped"); changeToFireWeaponsModeWhenPickingFireWeapon = serializedObject.FindProperty ("changeToFireWeaponsModeWhenPickingFireWeapon"); changeToMeleeWeaponsModeWhenPickingMeleeWeapon = serializedObject.FindProperty ("changeToMeleeWeaponsModeWhenPickingMeleeWeapon"); useInventoryCameraEnabled = serializedObject.FindProperty ("useInventoryCameraEnabled"); examineObjectBeforeStoreEnabled = serializedObject.FindProperty ("examineObjectBeforeStoreEnabled"); distanceToPlaceObjectInCamera = serializedObject.FindProperty ("distanceToPlaceObjectInCamera"); placeObjectInCameraSpeed = serializedObject.FindProperty ("placeObjectInCameraSpeed"); numberOfRotationsObjectInCamera = serializedObject.FindProperty ("numberOfRotationsObjectInCamera"); placeObjectInCameraRotationSpeed = serializedObject.FindProperty ("placeObjectInCameraRotationSpeed"); extraCameraFovOnExamineObjects = serializedObject.FindProperty ("extraCameraFovOnExamineObjects"); rotationSpeed = serializedObject.FindProperty ("rotationSpeed"); zoomSpeed = serializedObject.FindProperty ("zoomSpeed"); maxZoomValue = serializedObject.FindProperty ("maxZoomValue"); minZoomValue = serializedObject.FindProperty ("minZoomValue"); showMessageWhenObjectUsed = serializedObject.FindProperty ("showMessageWhenObjectUsed"); usedObjectMessage = serializedObject.FindProperty ("usedObjectMessage"); fullInventoryMessage = serializedObject.FindProperty ("fullInventoryMessage"); fullInventoryMessageTime = serializedObject.FindProperty ("fullInventoryMessageTime"); combinedObjectMessage = serializedObject.FindProperty ("combinedObjectMessage"); combineObjectMessageTime = serializedObject.FindProperty ("combineObjectMessageTime"); usedObjectMessageTime = serializedObject.FindProperty ("usedObjectMessageTime"); unableToUseObjectMessage = serializedObject.FindProperty ("unableToUseObjectMessage"); nonNeededAmountAvaliable = serializedObject.FindProperty ("nonNeededAmountAvaliable"); objectNotFoundMessage = serializedObject.FindProperty ("objectNotFoundMessage"); cantUseThisObjectHereMessage = serializedObject.FindProperty ("cantUseThisObjectHereMessage"); unableToCombineMessage = serializedObject.FindProperty ("unableToCombineMessage"); canBeCombinedButObjectIsFullMessage = serializedObject.FindProperty ("canBeCombinedButObjectIsFullMessage"); notEnoughSpaceToCombineMessage = serializedObject.FindProperty ("notEnoughSpaceToCombineMessage"); weightLimitReachedMessage = serializedObject.FindProperty ("weightLimitReachedMessage"); objectTooMuchHeavyToCarryMessage = serializedObject.FindProperty ("objectTooMuchHeavyToCarryMessage"); useAudioSounds = serializedObject.FindProperty ("useAudioSounds"); mainAudioSource = serializedObject.FindProperty ("mainAudioSource"); useInventoryOptionsOnSlot = serializedObject.FindProperty ("useInventoryOptionsOnSlot"); inventoryOptionsOnSlotPanel = serializedObject.FindProperty ("inventoryOptionsOnSlotPanel"); mainInventorySlotOptionsButtons = serializedObject.FindProperty ("mainInventorySlotOptionsButtons"); usedByAI = serializedObject.FindProperty ("usedByAI"); eventOnInventoryInitialized = serializedObject.FindProperty ("eventOnInventoryInitialized"); eventOnClickInventoryChange = serializedObject.FindProperty ("eventOnClickInventoryChange"); eventOnInventorySlotSelected = serializedObject.FindProperty ("eventOnInventorySlotSelected"); eventOnInventorySlotUnSelected = serializedObject.FindProperty ("eventOnInventorySlotUnSelected"); eventOnInventoryClosed = serializedObject.FindProperty ("eventOnInventoryClosed"); eventOnInventoryOpened = serializedObject.FindProperty ("eventOnInventoryOpened"); useEventIfSystemDisabled = serializedObject.FindProperty ("useEventIfSystemDisabled"); eventIfSystemDisabled = serializedObject.FindProperty ("eventIfSystemDisabled"); eventOnInventoryListChange = serializedObject.FindProperty ("eventOnInventoryListChange"); useEventOnInventoryObjectEquipped = serializedObject.FindProperty ("useEventOnInventoryObjectEquipped"); eventOnInventoryObjectEquipped = serializedObject.FindProperty ("eventOnInventoryObjectEquipped"); useEventOnInventoryObjectUnEquipped = serializedObject.FindProperty ("useEventOnInventoryObjectUnEquipped"); eventOnInventoryObjectUnEquipped = serializedObject.FindProperty ("eventOnInventoryObjectUnEquipped"); useEventOnRepairCurrentObject = serializedObject.FindProperty ("useEventOnRepairCurrentObject"); eventOnRepairCurrentObject = serializedObject.FindProperty ("eventOnRepairCurrentObject"); eventOnUnableToRepairCurrentObject = serializedObject.FindProperty ("eventOnUnableToRepairCurrentObject"); loadCurrentPlayerInventoryFromSaveFile = serializedObject.FindProperty ("loadCurrentPlayerInventoryFromSaveFile"); saveCurrentPlayerInventoryToSaveFile = serializedObject.FindProperty ("saveCurrentPlayerInventoryToSaveFile"); inventoryOpened = serializedObject.FindProperty ("inventoryOpened"); inventoryList = serializedObject.FindProperty ("inventoryList"); inventoryPanel = serializedObject.FindProperty ("inventoryPanel"); inventoryListContent = serializedObject.FindProperty ("inventoryListContent"); inventoryListScrollRect = serializedObject.FindProperty ("inventoryListScrollRect"); objectIcon = serializedObject.FindProperty ("objectIcon"); equipButton = serializedObject.FindProperty ("equipButton"); unequipButton = serializedObject.FindProperty ("unequipButton"); useButtonImage = serializedObject.FindProperty ("useButtonImage"); equipButtonImage = serializedObject.FindProperty ("equipButtonImage"); unequipButtonImage = serializedObject.FindProperty ("unequipButtonImage"); dropButtonImage = serializedObject.FindProperty ("dropButtonImage"); combineButtonImage = serializedObject.FindProperty ("combineButtonImage"); examineButtonImage = serializedObject.FindProperty ("examineButtonImage"); discardButtonImage = serializedObject.FindProperty ("discardButtonImage"); dropAllUnitsObjectButtonImage = serializedObject.FindProperty ("dropAllUnitsObjectButtonImage"); examineObjectPanel = serializedObject.FindProperty ("examineObjectPanel"); examineObjectName = serializedObject.FindProperty ("examineObjectName"); examineObjectDescription = serializedObject.FindProperty ("examineObjectDescription"); takeObjectInExaminePanelButton = serializedObject.FindProperty ("takeObjectInExaminePanelButton"); currentObjectName = serializedObject.FindProperty ("currentObjectName"); currentObjectInfo = serializedObject.FindProperty ("currentObjectInfo"); objectImage = serializedObject.FindProperty ("objectImage"); usableInventoryObjectInfoList = serializedObject.FindProperty ("usableInventoryObjectInfoList"); inventoryCamera = serializedObject.FindProperty ("inventoryCamera"); inventoryLight = serializedObject.FindProperty ("inventoryLight"); lookObjectsPosition = serializedObject.FindProperty ("lookObjectsPosition"); emptyInventoryPrefab = serializedObject.FindProperty ("emptyInventoryPrefab"); numberOfObjectsToUseMenu = serializedObject.FindProperty ("numberOfObjectsToUseMenu"); numberOfObjectsToUseMenuRectTransform = serializedObject.FindProperty ("numberOfObjectsToUseMenuRectTransform"); numberOfObjectsToUseText = serializedObject.FindProperty ("numberOfObjectsToUseText"); numberOfObjectsToUseMenuPosition = serializedObject.FindProperty ("numberOfObjectsToUseMenuPosition"); numberOfObjectsToDropMenuPosition = serializedObject.FindProperty ("numberOfObjectsToDropMenuPosition"); inventorySlotsScrollbar = serializedObject.FindProperty ("inventorySlotsScrollbar"); inventoryObjectInforScrollbar = serializedObject.FindProperty ("inventoryObjectInforScrollbar"); mainMeleeWeaponsGrabbedManager = serializedObject.FindProperty ("mainMeleeWeaponsGrabbedManager"); weaponsManager = serializedObject.FindProperty ("weaponsManager"); playerControllerManager = serializedObject.FindProperty ("playerControllerManager"); pauseManager = serializedObject.FindProperty ("pauseManager"); playerInput = serializedObject.FindProperty ("playerInput"); mainInventoryListManager = serializedObject.FindProperty ("mainInventoryListManager"); usingDevicesManager = serializedObject.FindProperty ("usingDevicesManager"); mainInventoryMenuPanelsSystem = serializedObject.FindProperty ("mainInventoryMenuPanelsSystem"); mainInventoryBankUISystem = serializedObject.FindProperty ("mainInventoryBankUISystem"); mainVendorUISystem = serializedObject.FindProperty ("mainVendorUISystem"); inventoryListManagerList = serializedObject.FindProperty ("inventoryListManagerList"); useScriptableObjectForInitialInventoryList = serializedObject.FindProperty ("useScriptableObjectForInitialInventoryList"); mainInitialInventoryListData = serializedObject.FindProperty ("mainInitialInventoryListData"); useMultipleScriptableObjectForInitialInventoryList = serializedObject.FindProperty ("useMultipleScriptableObjectForInitialInventoryList"); mainMultipleInitialInventoryListData = serializedObject.FindProperty ("mainMultipleInitialInventoryListData"); mainInventoryCharacterCustomizationSystem = serializedObject.FindProperty ("mainInventoryCharacterCustomizationSystem"); mainInventoryQuickAccessSlotsSystem = serializedObject.FindProperty ("mainInventoryQuickAccessSlotsSystem"); mainInventoryManagerPrefab = serializedObject.FindProperty ("mainInventoryManagerPrefab"); showDebugPrint = serializedObject.FindProperty ("showDebugPrint"); destroyObjectsOnEmptyDurability = serializedObject.FindProperty ("destroyObjectsOnEmptyDurability"); dropObjectsOnEmptyDurability = serializedObject.FindProperty ("dropObjectsOnEmptyDurability"); setObjectsAsBrokenOnEmptyDurability = serializedObject.FindProperty ("setObjectsAsBrokenOnEmptyDurability"); unequipObjectOnEmptyDurability = serializedObject.FindProperty ("unequipObjectOnEmptyDurability"); brokenObjectsCantBeUsed = serializedObject.FindProperty ("brokenObjectsCantBeUsed"); brokenObjectsCantBeEquipped = serializedObject.FindProperty ("brokenObjectsCantBeEquipped"); checkDurabilityOnObjectEnabled = serializedObject.FindProperty ("checkDurabilityOnObjectEnabled"); currentNumberOfWeaponsEquipped = serializedObject.FindProperty ("currentNumberOfWeaponsEquipped"); lastWeaponCarriedOnHandsName = serializedObject.FindProperty ("lastWeaponCarriedOnHandsName"); drawInitialWeaponEquippedOnStartEnabled = serializedObject.FindProperty ("drawInitialWeaponEquippedOnStartEnabled"); drawFirstMeleeWeaponAvailable = serializedObject.FindProperty ("drawFirstMeleeWeaponAvailable"); drawFirstFireWeaponAvailable = serializedObject.FindProperty ("drawFirstFireWeaponAvailable"); drawLastWeaponCarriedOnHandsOnLoadEnabled = serializedObject.FindProperty ("drawLastWeaponCarriedOnHandsOnLoadEnabled"); menuPanelName = serializedObject.FindProperty ("menuPanelName"); sendGrabbedObjectToInventoryIfGrabbingNewOne = serializedObject.FindProperty ("sendGrabbedObjectToInventoryIfGrabbingNewOne"); takeOnlyOneUnitToGrab = serializedObject.FindProperty ("takeOnlyOneUnitToGrab"); manager = (inventoryManager)target; } public override void OnInspectorGUI () { EditorGUI.BeginChangeCheck (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (inventoryEnabled); EditorGUILayout.PropertyField (openInventoryMenuEnabled); GUILayout.EndVertical (); buttonStyle = new GUIStyle (GUI.skin.button); buttonStyle.fontStyle = FontStyle.Bold; buttonStyle.fontSize = 12; EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Slots Settings", "window"); EditorGUILayout.PropertyField (infiniteSlots); if (!infiniteSlots.boolValue) { EditorGUILayout.PropertyField (inventorySlotAmount); } EditorGUILayout.PropertyField (infiniteAmountPerSlot); if (!infiniteAmountPerSlot.boolValue) { EditorGUILayout.PropertyField (amountPerSlot); EditorGUILayout.PropertyField (combineElementsAtDrop); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Other Inventory Settings", "window"); EditorGUILayout.PropertyField (buttonUsable, new GUIContent ("Button Usable Color"), false); EditorGUILayout.PropertyField (buttonNotUsable, new GUIContent ("Button Not Usable Color"), false); EditorGUILayout.PropertyField (useOnlyWhenNeededAmountToUseObject); EditorGUILayout.PropertyField (activeNumberOfObjectsToUseMenu); EditorGUILayout.PropertyField (setTotalAmountWhenDropObject); EditorGUILayout.PropertyField (configureNumberObjectsToUseRate); EditorGUILayout.PropertyField (fasterNumberObjectsToUseRate); EditorGUILayout.PropertyField (waitTimeToUseFasterNumberObjectsToUseRate); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useBlurUIPanel); EditorGUILayout.PropertyField (showInventoryObjectsName); EditorGUILayout.PropertyField (showObjectAmountIfEqualOne); EditorGUILayout.PropertyField (selectFirstInventoryObjectWhenOpeningMenu); EditorGUILayout.PropertyField (dropSingleObjectOnInfiniteAmount); EditorGUILayout.Space (); EditorGUILayout.PropertyField (menuPanelName); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Objects Durability Settings", "window"); EditorGUILayout.PropertyField (checkDurabilityOnObjectEnabled); EditorGUILayout.PropertyField (destroyObjectsOnEmptyDurability); EditorGUILayout.PropertyField (dropObjectsOnEmptyDurability); EditorGUILayout.PropertyField (setObjectsAsBrokenOnEmptyDurability); EditorGUILayout.PropertyField (unequipObjectOnEmptyDurability); EditorGUILayout.PropertyField (brokenObjectsCantBeUsed); EditorGUILayout.PropertyField (brokenObjectsCantBeEquipped); GUILayout.EndVertical (); EditorGUILayout.Space (); buttonColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); EditorGUILayout.BeginHorizontal (); if (showWeightSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Weight")) { showWeightSettings.boolValue = !showWeightSettings.boolValue; } if (showWeaponsSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Weapons")) { showWeaponsSettings.boolValue = !showWeaponsSettings.boolValue; } if (showExamineSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Examine")) { showExamineSettings.boolValue = !showExamineSettings.boolValue; } if (showMessagesSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Messages")) { showMessagesSettings.boolValue = !showMessagesSettings.boolValue; } if (showSoundsSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Sounds")) { showSoundsSettings.boolValue = !showSoundsSettings.boolValue; } EditorGUILayout.EndHorizontal (); EditorGUILayout.BeginHorizontal (); if (showOthersSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Others")) { showOthersSettings.boolValue = !showOthersSettings.boolValue; } if (showEventSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Events")) { showEventSettings.boolValue = !showEventSettings.boolValue; } if (showSaveLoadSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Save/Load")) { showSaveLoadSettings.boolValue = !showSaveLoadSettings.boolValue; } if (showDebugSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Debug")) { showDebugSettings.boolValue = !showDebugSettings.boolValue; } EditorGUILayout.EndHorizontal (); EditorGUILayout.EndVertical (); if (showAllSettings.boolValue) { GUI.backgroundColor = Color.gray; buttonMessage = "Hide All Settings"; } else { GUI.backgroundColor = buttonColor; buttonMessage = "Show All Settings"; } if (GUILayout.Button (buttonMessage)) { showAllSettings.boolValue = !showAllSettings.boolValue; showWeightSettings.boolValue = showAllSettings.boolValue; showWeaponsSettings.boolValue = showAllSettings.boolValue; showExamineSettings.boolValue = showAllSettings.boolValue; showMessagesSettings.boolValue = showAllSettings.boolValue; showSoundsSettings.boolValue = showAllSettings.boolValue; showOthersSettings.boolValue = showAllSettings.boolValue; showEventSettings.boolValue = showAllSettings.boolValue; showSaveLoadSettings.boolValue = showAllSettings.boolValue; showDebugSettings.boolValue = showAllSettings.boolValue; showElementSettings.boolValue = false; } if (showElementSettings.boolValue) { GUI.backgroundColor = Color.gray; buttonMessage = "Hide Player Components"; } else { GUI.backgroundColor = buttonColor; buttonMessage = "Show Player Components"; } if (GUILayout.Button (buttonMessage)) { showElementSettings.boolValue = !showElementSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.Space (); if (GUILayout.Button ("Add Main Inventory Manager To Scene")) { manager.instantiateMainInventoryManagerPrefab (); } if (GUILayout.Button ("Select Main Inventory Manager On Scene")) { manager.selectMainInventoryManagerOnScene (); } EditorGUILayout.Space (); style.fontStyle = FontStyle.Bold; style.fontSize = 30; style.alignment = TextAnchor.MiddleCenter; if (showAllSettings.boolValue || showWeightSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("WEIGHT SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weight Settings", "window"); EditorGUILayout.PropertyField (checkWeightLimitToPickObjects); EditorGUILayout.PropertyField (mainInventoryWeightManager); GUILayout.EndVertical (); } if (showAllSettings.boolValue || showWeaponsSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("WEAPON SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Weapons Settings", "window"); EditorGUILayout.PropertyField (storePickedWeaponsOnInventory); if (storePickedWeaponsOnInventory.boolValue) { EditorGUILayout.PropertyField (equipWeaponsWhenPicked); EditorGUILayout.PropertyField (equipPickedWeaponOnlyItNotPreviousWeaponEquipped); EditorGUILayout.PropertyField (changeToFireWeaponsModeWhenPickingFireWeapon); EditorGUILayout.PropertyField (changeToMeleeWeaponsModeWhenPickingMeleeWeapon); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useMaxNumberOfWeaponsToEquip); if (useMaxNumberOfWeaponsToEquip.boolValue) { EditorGUILayout.PropertyField (maxNumberOfWeaponsToEquip); EditorGUILayout.Space (); EditorGUILayout.PropertyField (maxNumberOfWeaponsEquippedMessage); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (drawInitialWeaponEquippedOnStartEnabled); if (drawInitialWeaponEquippedOnStartEnabled.boolValue) { EditorGUILayout.PropertyField (drawFirstMeleeWeaponAvailable); EditorGUILayout.PropertyField (drawFirstFireWeaponAvailable); } EditorGUILayout.PropertyField (drawLastWeaponCarriedOnHandsOnLoadEnabled); } GUILayout.EndVertical (); } if (showAllSettings.boolValue || showExamineSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("EXAMINE SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Examine Object Settings", "window"); EditorGUILayout.PropertyField (examineObjectBeforeStoreEnabled); EditorGUILayout.PropertyField (distanceToPlaceObjectInCamera); EditorGUILayout.PropertyField (placeObjectInCameraSpeed); EditorGUILayout.PropertyField (numberOfRotationsObjectInCamera); EditorGUILayout.PropertyField (placeObjectInCameraRotationSpeed); EditorGUILayout.PropertyField (extraCameraFovOnExamineObjects); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Show Object Settings", "window"); EditorGUILayout.PropertyField (useInventoryCameraEnabled); EditorGUILayout.PropertyField (rotationSpeed); EditorGUILayout.PropertyField (zoomSpeed); EditorGUILayout.PropertyField (maxZoomValue); EditorGUILayout.PropertyField (minZoomValue); GUILayout.EndVertical (); } if (showAllSettings.boolValue || showMessagesSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("MESSAGES SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Messages Settings", "window"); EditorGUILayout.PropertyField (showMessageWhenObjectUsed); EditorGUILayout.PropertyField (usedObjectMessage); EditorGUILayout.PropertyField (fullInventoryMessage); EditorGUILayout.PropertyField (fullInventoryMessageTime); EditorGUILayout.PropertyField (combinedObjectMessage); EditorGUILayout.PropertyField (combineObjectMessageTime); EditorGUILayout.PropertyField (usedObjectMessageTime); EditorGUILayout.Space (); EditorGUILayout.PropertyField (unableToUseObjectMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (nonNeededAmountAvaliable); EditorGUILayout.Space (); EditorGUILayout.PropertyField (objectNotFoundMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (cantUseThisObjectHereMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (unableToCombineMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (canBeCombinedButObjectIsFullMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (notEnoughSpaceToCombineMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (weightLimitReachedMessage); EditorGUILayout.Space (); EditorGUILayout.PropertyField (objectTooMuchHeavyToCarryMessage); EditorGUILayout.Space (); GUILayout.EndVertical (); } if (showAllSettings.boolValue || showSoundsSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("SOUNDS SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Sound Settings", "window"); EditorGUILayout.PropertyField (useAudioSounds); EditorGUILayout.PropertyField (mainAudioSource); GUILayout.EndVertical (); } if (showAllSettings.boolValue || showOthersSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("OTHERS SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Options On Slot Settings", "window"); EditorGUILayout.PropertyField (useInventoryOptionsOnSlot); if (useInventoryOptionsOnSlot.boolValue) { EditorGUILayout.PropertyField (inventoryOptionsOnSlotPanel); EditorGUILayout.PropertyField (mainInventorySlotOptionsButtons); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("AI Settings", "window"); EditorGUILayout.PropertyField (usedByAI); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Grab Objects Settings", "window"); EditorGUILayout.PropertyField (sendGrabbedObjectToInventoryIfGrabbingNewOne); EditorGUILayout.PropertyField (takeOnlyOneUnitToGrab); GUILayout.EndVertical (); } if (showAllSettings.boolValue || showEventSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("EVENTS SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Events Settings", "window"); EditorGUILayout.PropertyField (eventOnInventoryInitialized); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnClickInventoryChange); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnInventorySlotSelected); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnInventorySlotUnSelected); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnInventoryClosed); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnInventoryOpened); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnInventoryListChange); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventOnInventoryObjectEquipped); if (useEventOnInventoryObjectEquipped.boolValue) { EditorGUILayout.PropertyField (eventOnInventoryObjectEquipped); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventOnInventoryObjectUnEquipped); if (useEventOnInventoryObjectUnEquipped.boolValue) { EditorGUILayout.PropertyField (eventOnInventoryObjectUnEquipped); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventOnRepairCurrentObject); if (useEventOnRepairCurrentObject.boolValue) { EditorGUILayout.PropertyField (eventOnRepairCurrentObject); EditorGUILayout.PropertyField (eventOnUnableToRepairCurrentObject); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventIfSystemDisabled); if (useEventIfSystemDisabled.boolValue) { EditorGUILayout.PropertyField (eventIfSystemDisabled); } GUILayout.EndVertical (); } if (showAllSettings.boolValue || showSaveLoadSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("SAVE/LOAD SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Save/Load Inventory Settings", "window"); EditorGUILayout.PropertyField (loadCurrentPlayerInventoryFromSaveFile); EditorGUILayout.PropertyField (saveCurrentPlayerInventoryToSaveFile); EditorGUILayout.PropertyField (setInfiniteSlotValuesOnSaveLoad); EditorGUILayout.Space (); if (GUILayout.Button ("Save Inventory List")) { manager.saveCurrentInventoryListToFileFromEditor (); } EditorGUILayout.Space (); GUILayout.EndVertical (); } if (showAllSettings.boolValue || showDebugSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("DEBUG SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Menu State", "window"); EditorGUILayout.PropertyField (showDebugPrint); menuOpened = "NO"; if (Application.isPlaying) { if (inventoryOpened.boolValue) { menuOpened = "YES"; } } GUILayout.Label ("Menu Opened \t " + menuOpened); GUILayout.Label ("Weapons Equipped \t " + currentNumberOfWeaponsEquipped.intValue.ToString ()); GUILayout.Label ("Last Weapon Carried \t " + lastWeaponCarriedOnHandsName.stringValue.ToString ()); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("(DEBUG ONLY)", "window"); GUILayout.BeginVertical ("Inventory List", "window"); showInventoryList (inventoryList); GUILayout.EndVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Drop All Inventory")) { manager.dropAllInventory (); } EditorGUILayout.Space (); if (GUILayout.Button ("Remove All Inventory")) { manager.removeAllInventoryWithoutDrops (); } GUILayout.EndVertical (); } if (showElementSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("ELEMENT SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Set here every element used in the inventory", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("UI ELEMENTS", EditorStyles.boldLabel); EditorGUILayout.Space (); EditorGUILayout.PropertyField (inventoryPanel); EditorGUILayout.PropertyField (inventoryListContent); EditorGUILayout.PropertyField (inventoryListScrollRect); EditorGUILayout.PropertyField (objectIcon); EditorGUILayout.PropertyField (equipButton); EditorGUILayout.PropertyField (unequipButton); EditorGUILayout.PropertyField (useButtonImage); EditorGUILayout.PropertyField (equipButtonImage); EditorGUILayout.PropertyField (unequipButtonImage); EditorGUILayout.PropertyField (dropButtonImage); EditorGUILayout.PropertyField (combineButtonImage); EditorGUILayout.PropertyField (examineButtonImage); EditorGUILayout.PropertyField (discardButtonImage); EditorGUILayout.PropertyField (dropAllUnitsObjectButtonImage); EditorGUILayout.PropertyField (examineObjectPanel); EditorGUILayout.PropertyField (examineObjectName); EditorGUILayout.PropertyField (examineObjectDescription); EditorGUILayout.PropertyField (takeObjectInExaminePanelButton); EditorGUILayout.PropertyField (currentObjectName); EditorGUILayout.PropertyField (currentObjectInfo); EditorGUILayout.PropertyField (objectImage); EditorGUILayout.PropertyField (inventoryCamera); EditorGUILayout.PropertyField (inventoryLight); EditorGUILayout.PropertyField (lookObjectsPosition); EditorGUILayout.PropertyField (emptyInventoryPrefab); EditorGUILayout.PropertyField (numberOfObjectsToUseMenu); EditorGUILayout.PropertyField (numberOfObjectsToUseMenuRectTransform); EditorGUILayout.PropertyField (numberOfObjectsToUseText); EditorGUILayout.PropertyField (numberOfObjectsToUseMenuPosition); EditorGUILayout.PropertyField (numberOfObjectsToDropMenuPosition); EditorGUILayout.PropertyField (inventorySlotsScrollbar); EditorGUILayout.PropertyField (inventoryObjectInforScrollbar); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("COMPONENTS", EditorStyles.boldLabel); EditorGUILayout.Space (); EditorGUILayout.PropertyField (weaponsManager); EditorGUILayout.PropertyField (mainMeleeWeaponsGrabbedManager); EditorGUILayout.PropertyField (playerControllerManager); EditorGUILayout.PropertyField (pauseManager); EditorGUILayout.PropertyField (playerInput); EditorGUILayout.PropertyField (mainInventoryListManager); EditorGUILayout.PropertyField (usingDevicesManager); EditorGUILayout.PropertyField (mainInventoryMenuPanelsSystem); EditorGUILayout.PropertyField (mainInventoryBankUISystem); EditorGUILayout.PropertyField (mainVendorUISystem); EditorGUILayout.PropertyField (mainInventoryQuickAccessSlotsSystem); EditorGUILayout.PropertyField (mainInventoryManagerPrefab); EditorGUILayout.PropertyField (mainInventoryCharacterCustomizationSystem); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Initial Inventory List", "window"); showInventoryListManagerList (inventoryListManagerList); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useScriptableObjectForInitialInventoryList); if (useScriptableObjectForInitialInventoryList.boolValue) { EditorGUILayout.PropertyField (useMultipleScriptableObjectForInitialInventoryList); EditorGUILayout.Space (); if (useMultipleScriptableObjectForInitialInventoryList.boolValue) { showSimpleList (mainMultipleInitialInventoryListData, "Main Multiple Initial InventoryList Data"); } else { EditorGUILayout.PropertyField (mainInitialInventoryListData); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Usable Inventory Objects Externally List", "window"); showUsableInventoryObjectInfoList (usableInventoryObjectInfoList); GUILayout.EndVertical (); EditorGUILayout.Space (); if (EditorGUI.EndChangeCheck ()) { serializedObject.ApplyModifiedProperties (); Repaint (); } } void showInventoryListElementInfo (SerializedProperty list, bool expanded, int index) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("objectInfo")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("inventoryGameObject")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isEquipped")); EditorGUILayout.Space (); GUILayout.BeginVertical ("Icon Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("icon")); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); GUILayout.Label ("Object Icon Preview \t"); GUILayout.BeginHorizontal ("box", GUILayout.Height (50), GUILayout.Width (50)); if (list.FindPropertyRelative ("icon").objectReferenceValue && expanded) { Object texture = list.FindPropertyRelative ("icon").objectReferenceValue as Texture2D; Texture2D myTexture = AssetPreview.GetAssetPreview (texture); GUILayout.Label (myTexture, GUILayout.Width (50), GUILayout.Height (50)); } GUILayout.EndHorizontal (); GUILayout.Label (""); GUILayout.EndHorizontal (); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Amount Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("amount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("amountPerUnit")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("infiniteAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("storeTotalAmountPerUnit")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("showAmountPerUnitInAmountText")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Use Object Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeUsed")); if (list.FindPropertyRelative ("canBeUsed").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNewBehaviorOnUse")); if (list.FindPropertyRelative ("useNewBehaviorOnUse").boolValue) { GUILayout.Label ("Tip: Use -AMOUNT- in the position of the text \n to replace the amount used if you need it"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("newBehaviorOnUseMessage")); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Equip Object Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeEquiped")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Drop Object Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeDropped")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeDiscarded")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Combine Object Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeCombined")); if (list.FindPropertyRelative ("canBeCombined").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNewBehaviorOnCombine")); if (list.FindPropertyRelative ("useNewBehaviorOnCombine").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useOneUnitOnNewBehaviourCombine")); EditorGUILayout.Space (); GUILayout.Label ("Tip: Use -OBJECT- in the position of the text \n to replace the second combined object name used if you need it"); GUILayout.Label ("Also, use -AMOUNT- in the position of the text \n to replace the amount used if you need it"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("newBehaviorOnCombineMessage")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("objectToCombine")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("combinedObject")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("combinedObjectMessage")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Vendor Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeSold")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("vendorPrice")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("sellPrice")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useMinLevelToBuy")); if (list.FindPropertyRelative ("useMinLevelToBuy").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("minLevelToBuy")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Durability Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useDurability")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("durabilityAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("maxDurabilityAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("sellMultiplierIfObjectIsBroken")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Max Amount Per Slot Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("setMaximumAmountPerSlot")); if (list.FindPropertyRelative ("setMaximumAmountPerSlot").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("maximumAmountPerSlot")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Other Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isWeapon")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isMeleeWeapon")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isArmorClothAccessory")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("categoryName")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weight")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("cantBeStoredOnInventory")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeHeld")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBePlaceOnQuickAccessSlot")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeSetOnQuickSlots")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeExamined")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("hideSlotOnMenu")); GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("button")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("menuIconElement")); GUILayout.EndVertical (); } void showInventoryList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Current Inventory List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of Objects: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { bool expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); amountValue = " - " + list.GetArrayElementAtIndex (i).FindPropertyRelative ("amount").intValue; EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent (list.GetArrayElementAtIndex (i).displayName + amountValue), false); if (list.GetArrayElementAtIndex (i).isExpanded) { expanded = true; showInventoryListElementInfo (list.GetArrayElementAtIndex (i), expanded, i); } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showInventoryListManagerListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("amount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isEquipped")); if (manager.inventoryManagerListString.Length > 0) { list.FindPropertyRelative ("categoryIndex").intValue = EditorGUILayout.Popup ("Category", list.FindPropertyRelative ("categoryIndex").intValue, manager.inventoryManagerListString); categoryIndex = list.FindPropertyRelative ("categoryIndex").intValue; if (categoryIndex < manager.inventoryManagerListString.Length) { list.FindPropertyRelative ("inventoryCategoryName").stringValue = manager.inventoryManagerListString [categoryIndex]; } if (manager.inventoryManagerStringInfoList.Count > 0) { list.FindPropertyRelative ("elementIndex").intValue = EditorGUILayout.Popup ("Inventory Object", list.FindPropertyRelative ("elementIndex").intValue, manager.inventoryManagerStringInfoList [categoryIndex].inventoryManagerListString); elementIndex = list.FindPropertyRelative ("elementIndex").intValue; if (elementIndex < manager.inventoryManagerStringInfoList [categoryIndex].inventoryManagerListString.Length) { list.FindPropertyRelative ("inventoryObjectName").stringValue = manager.inventoryManagerStringInfoList [categoryIndex].inventoryManagerListString [elementIndex]; } } EditorGUILayout.PropertyField (list.FindPropertyRelative ("addInventoryObject")); } GUILayout.EndVertical (); } void showInventoryListManagerList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Initial Inventory List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Configure the initial list of objects the player's inventory will contain", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); GUILayout.Label ("Number Of Objects: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Object")) { manager.addNewInventoryObjectToInventoryListManagerList (); } if (GUILayout.Button ("Clear List")) { manager.clearInitialInventoryListOnEditor (); } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Enable Add All")) { for (int i = 0; i < list.arraySize; i++) { manager.setAddAllObjectEnabledState (true); } } if (GUILayout.Button ("Disable Add All")) { for (int i = 0; i < list.arraySize; i++) { manager.setAddAllObjectEnabledState (false); } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); if (GUILayout.Button ("Disable Equip All")) { for (int i = 0; i < list.arraySize; i++) { manager.setEquipAllObjectEnabledState (false); } } EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { bool expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); addInventoryObject = list.GetArrayElementAtIndex (i).FindPropertyRelative ("addInventoryObject").boolValue; isAdded = " + "; if (!addInventoryObject) { isAdded = " - "; } isEquipped = list.GetArrayElementAtIndex (i).FindPropertyRelative ("isEquipped").boolValue; objectIsEquipped = ""; if (isEquipped) { objectIsEquipped = " E "; } EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent (list.GetArrayElementAtIndex (i).displayName + " (" + isAdded + objectIsEquipped + ")"), false); if (list.GetArrayElementAtIndex (i).isExpanded) { expanded = true; showInventoryListManagerListElement (list.GetArrayElementAtIndex (i)); } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } if (GUILayout.Button ("O")) { manager.setAddObjectEnabledState (i); } if (GUILayout.Button ("E")) { manager.setEquippedObjectState (i); } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } EditorGUILayout.Space (); if (GUILayout.Button ("Add Inventory Object")) { manager.addNewInventoryObjectToInventoryListManagerList (); } EditorGUILayout.Space (); if (GUILayout.Button ("Update Inventory Object List Names")) { manager.setInventoryObjectListNames (); } EditorGUILayout.Space (); if (GUILayout.Button ("Update Inventory List Available")) { manager.getInventoryListManagerList (); } EditorGUILayout.Space (); } GUILayout.EndVertical (); } void showUsableInventoryObjectInfoList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Usable Inventory Objects Externally List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Configure a list of objects which can be used by events, sending its string name", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); GUILayout.Label ("Number Of Objects: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Object")) { list.arraySize++; } if (GUILayout.Button ("Clear List")) { list.ClearArray (); } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { bool expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { expanded = true; showUsableInventoryObjectInfoListElement (list.GetArrayElementAtIndex (i)); } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } EditorGUILayout.Space (); } GUILayout.EndVertical (); } void showUsableInventoryObjectInfoListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("amountToUse")); GUILayout.EndVertical (); } void showSimpleList (SerializedProperty list, string listName) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + listName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of Elements: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Element")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { GUILayout.BeginHorizontal (); if (i < list.arraySize && i >= 0) { EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent ("", null, ""), false); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } GUILayout.EndHorizontal (); } } } } #endif