BaseSquareCursor

local BaseSquareCursor = require("Starlit/client/BaseSquareCursor")

BaseSquareCursor is a base class for square cursors, such as the Vanilla building cursor. It exists primarily because Vanilla does not have an easy to use base cursor class: every cursor is built on top of the building cursor, manually disabling all of its functionality. This is hard to work with and requires a large amount of boilerplate code.

To activate a cursor, create an instance of the class and set it as the player’s drag:

local cursor = MyCursor.new(player)
getCell():setDrag(player:getPlayerNum(), cursor)

Warning

The following names are reserved for internal Starlit usage in this class: _isStarlitCursor, _selectedThisTick, _isValidCache, _isValidCacheSquare, rotateKey If you create new members with these names, you may run into issues.

class starlit.BaseSquareCursor

Base class for square cursors.

player: IsoPlayer

The player the cursor belongs to.

xJoypad: integer

Current X co-ordinate of the cursor, if it is controlled by a joypad. -1 means uninitialised or not a joypad player.

yJoypad: integer

Current Y co-ordinate of the cursor, if it is controlled by a joypad. -1 means uninitialised or not a joypad player.

zJoypad: integer

Current Z co-ordinate of the cursor, if it is controlled by a joypad. -1 means uninitialised or not a joypad player.

select(self, square: IsoGridSquare, hide?: boolean): nil

Called when the player clicks on a square.

Parameters:
  • square (IsoGridSquare) – The selected square.

  • hide? (boolean) – Whether to hide the cursor. Defaults to true.

isValid(self, square?: IsoGridSquare): (valid: boolean)

Called when checking if a square is valid. This function caches the result - in most cases you only want to override isValidInternal.

Parameters:

square? (IsoGridSquare) – The square to check.

Returns:

valid (boolean) – Whether the square is valid.

isValidInternal(self, square?: IsoGridSquare): (valid: boolean)

Calculates if a square is valid. Invalid squares cannot be selected.

Parameters:

square? (IsoGridSquare) – The square to check.

Returns:

valid (boolean) – Whether the square is valid.

render(
    self,
    x: integer,
    y: integer,
    z: integer,
    square: IsoGridSquare
): nil

Called every tick to render the cursor.

Parameters:
  • x (integer) – The X coordinate of the square the cursor is over.

  • y (integer) – The Y coordinate of the square the cursor is over.

  • z (integer) – The Z coordinate of the square the cursor is over.

  • square (IsoGridSquare) – The square the cursor is over.

rotateKey(self, key: integer): nil

Called when the player hits a key while the cursor is active. Override keyPressed instead if you don’t want your api to have dumb names

keyPressed(self, key: integer)

Called when the player hits a key while the cursor is active.

Parameters:

key (integer) – The key that was pressed.

onJoypadPressButton(
    self,
    joypadIndex: integer,
    joypadData: JoypadData,
    button: integer
): nil

Called when a joypad button is pressed. For most cases it makes more sense to override the onJoypadPress functions instead.

onJoypadDirDown(self, joypadData: JoypadData): nil

Called when down is presssed on the joypad’s directional pad.

onJoypadDirUp(self, joypadData: JoypadData): nil

Called when up is presssed on the joypad’s directional pad.

onJoypadDirRight(self, joypadData: JoypadData): nil

Called when right is presssed on the joypad’s directional pad.

onJoypadDirLeft(self, joypadData: JoypadData): nil

Called when left is presssed on the joypad’s directional pad.

onJoypadPressA(self, joypadData: JoypadData): nil

Called when the joypad A button is pressed.

onJoypadPressB(self, joypadData: JoypadData): nil

Called when the joypad B button is pressed.

onJoypadPressY(self, joypadData: JoypadData): nil

Called when the joypad Y button is pressed.

onJoypadPressLB(self, joypadData: JoypadData)

Called when the joypad left bumper is pressed.

onJoypadPressRB(self, joypadData: JoypadData)

Called when the joypad right bumper is pressed.

getAPrompt(self): (prompt?: string)

Returns the prompt for the joypad A button.

Returns:

prompt? (string) – Text to display as a prompt for the A button, or nil to display nothing.

getBPrompt(self): (prompt?: string)

Returns the prompt for the joypad B button.

Returns:

prompt? (string) – Text to display as a prompt for the B button, or nil to display nothing.

getYPrompt(self): (prompt?: string)

Returns the prompt for the joypad Y button.

Returns:

prompt? (string) – Text to display as a prompt for the Y button, or nil to display nothing.

getLBPrompt(self): (prompt?: string)

Returns the prompt for the joypad left bumper.

Returns:

prompt? (string) – Text to display as a prompt for the left bumper, or nil to display nothing.

getRBPrompt(self): (prompt?: string)

Returns the prompt for the joypad right bumper.

Returns:

prompt? (string) – Text to display as a prompt for the right bumper, or nil to display nothing.

staticmethod new(player: IsoPlayer): (cursor: starlit.BaseSquareCursor)

Creates a new BaseSquareCursor. After creation the cursor can be made active using IsoCell.setDrag().

Parameters:

player (IsoPlayer) – The player to create the cursor for.

Returns:

cursor (starlit.BaseSquareCursor) – The cursor.