This inventory system allows for several ways of navigating around the items it holds and includes different categories to better sort your objects. To enable the project to scroll through these correctly some 'settings' need to be defined for the inventory.
For each inventory category, we need to tell the system whether or not it can scroll left or right to the next category, set the category title to the correct text and update the ItemSlot objects to make sure they're drawing their information from the correct array.
There are also some settings needed for the page scrolling Booleans, which are controlled depending on how many pages the currently selected inventory has. For example, if a category only has one page, then scrolling through pages needs to be disabled. If a category has multiple pages but you're looking at the last one, then scrolling to the right needs to be disabled, but leftwards scrolling enabled:
Navigating around the inventory itself is only enabled when the InvOpen Boolean is true – in the same way that player movement is only enabled when InvOpen is false. Remember, simply pressing the spacebar will toggle whether InvOpen is true or false.
When we set InvOpen to true, the Inventory layer is set to visible, the UpdateInv function is called to ensure the correct data is being displayed and the player's Tile Movement behavior is disabled.
The left and right keys allow slot by slot movement and will scroll to the next/previous category if you're at the edge of an inventory page. A modulo operator is used to determine if the player is currently selecting one of the edge slots. Taking the Right key as an example:
Condition
Keyboard ▶︎ On Right Key pressed
Sub-event Condition
System ▶︎ CurrentItemSlot % 5 = 4
Sub-event Action
Functions ▶︎ Call CategoryCheck (CheckWhich: "Page", Direction: "Right")
Functions ▶︎ Call UpdateInv
Sub-event Conditions
System ▶︎ Else
Sub-event Action
Functions ▶︎ Call MoveCursor (Direction: "Right")
Functions ▶︎ Call UpdateInv
The up and down keys allow you to scroll between rows in the inventory, unless you're already looking at an item in the top or bottom row. A simple variable comparison enforces the movement rules here:
Condition
Keyboard ▶︎ On Down Key pressed
System ▶︎ CurrentItemSlot ≤ 14
Action
Functions ▶︎ Call MoveCursor (Direction: "Down")
Functions ▶︎ Call UpdateInv
Sometimes, it's useful to be able to skip directly to the next/previous category without having to scroll through multiple pages. The square brackets are the keys assigned to this:
Condition
Keyboard ▶︎ On ] pressed
Action
Functions ▶︎ Call CategoryCheck (CheckWhich: "Cat", Direction: "Right")