Files
fps_project_1/addons/dreadpon.spatial_gardener/utility/globals.gd

332 lines
8.5 KiB
GDScript

@tool
#-------------------------------------------------------------------------------
# A list of global consts with methods to work with them
# A mirror of some of GlobalScope enums
# Because they can't be accessed as "enum" and only as "const int"
# And I need "enums" to expose them to ProjectSettings
#-------------------------------------------------------------------------------
# Convert index starting from "0" to an enum value, where first index is the first enum value
# E.g. for KeyboardKey, index of "0" would represent a value of "SPKEY | 0x01" or simply "16777217")
static func index_to_enum(index:int, enum_dict:Dictionary):
return enum_dict.values()[index]
# The opposite of index_to_enum()
static func enum_to_index(enum_val:int, enum_dict:Dictionary):
return enum_dict.values().find(enum_val)
# Access and format an error message
static func get_err_message(err_code):
return str("[", err_code, "]: ", Error[err_code])
# Controls per how many units is density calculated
const PLANT_DENSITY_UNITS:int = 100
# A string to be used in tooltips/hints regarding plugin settings
const AS_IN_SETTINGS_STRING:String = "As specified in 'Project' -> 'Project Settings' -> 'Dreadpons Node3D Gardener'"
# KeyboardKey
# Taken from https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html
enum KeyboardKey {
KEY_NONE = 0,
KEY_SPECIAL = 4194304,
KEY_ESCAPE = 4194305,
KEY_TAB = 4194306,
KEY_BACKTAB = 4194307,
KEY_BACKSPACE = 4194308,
KEY_ENTER = 4194309,
KEY_KP_ENTER = 4194310,
KEY_INSERT = 4194311,
KEY_DELETE = 4194312,
KEY_PAUSE = 4194313,
KEY_PRINT = 4194314,
KEY_SYSREQ = 4194315,
KEY_CLEAR = 4194316,
KEY_HOME = 4194317,
KEY_END = 4194318,
KEY_LEFT = 4194319,
KEY_UP = 4194320,
KEY_RIGHT = 4194321,
KEY_DOWN = 4194322,
KEY_PAGEUP = 4194323,
KEY_PAGEDOWN = 4194324,
KEY_SHIFT = 4194325,
KEY_CTRL = 4194326,
KEY_META = 4194327,
KEY_ALT = 4194328,
KEY_CAPSLOCK = 4194329,
KEY_NUMLOCK = 4194330,
KEY_SCROLLLOCK = 4194331,
KEY_F1 = 4194332,
KEY_F2 = 4194333,
KEY_F3 = 4194334,
KEY_F4 = 4194335,
KEY_F5 = 4194336,
KEY_F6 = 4194337,
KEY_F7 = 4194338,
KEY_F8 = 4194339,
KEY_F9 = 4194340,
KEY_F10 = 4194341,
KEY_F11 = 4194342,
KEY_F12 = 4194343,
KEY_F13 = 4194344,
KEY_F14 = 4194345,
KEY_F15 = 4194346,
KEY_F16 = 4194347,
KEY_F17 = 4194348,
KEY_F18 = 4194349,
KEY_F19 = 4194350,
KEY_F20 = 4194351,
KEY_F21 = 4194352,
KEY_F22 = 4194353,
KEY_F23 = 4194354,
KEY_F24 = 4194355,
KEY_F25 = 4194356,
KEY_F26 = 4194357,
KEY_F27 = 4194358,
KEY_F28 = 4194359,
KEY_F29 = 4194360,
KEY_F30 = 4194361,
KEY_F31 = 4194362,
KEY_F32 = 4194363,
KEY_F33 = 4194364,
KEY_F34 = 4194365,
KEY_F35 = 4194366,
KEY_KP_MULTIPLY = 4194433,
KEY_KP_DIVIDE = 4194434,
KEY_KP_SUBTRACT = 4194435,
KEY_KP_PERIOD = 4194436,
KEY_KP_ADD = 4194437,
KEY_KP_0 = 4194438,
KEY_KP_1 = 4194439,
KEY_KP_2 = 4194440,
KEY_KP_3 = 4194441,
KEY_KP_4 = 4194442,
KEY_KP_5 = 4194443,
KEY_KP_6 = 4194444,
KEY_KP_7 = 4194445,
KEY_KP_8 = 4194446,
KEY_KP_9 = 4194447,
KEY_MENU = 4194370,
KEY_HYPER = 4194371,
KEY_HELP = 4194373,
KEY_BACK = 4194376,
KEY_FORWARD = 4194377,
KEY_STOP = 4194378,
KEY_REFRESH = 4194379,
KEY_VOLUMEDOWN = 4194380,
KEY_VOLUMEMUTE = 4194381,
KEY_VOLUMEUP = 4194382,
KEY_MEDIAPLAY = 4194388,
KEY_MEDIASTOP = 4194389,
KEY_MEDIAPREVIOUS = 4194390,
KEY_MEDIANEXT = 4194391,
KEY_MEDIARECORD = 4194392,
KEY_HOMEPAGE = 4194393,
KEY_FAVORITES = 4194394,
KEY_SEARCH = 4194395,
KEY_STANDBY = 4194396,
KEY_OPENURL = 4194397,
KEY_LAUNCHMAIL = 4194398,
KEY_LAUNCHMEDIA = 4194399,
KEY_LAUNCH0 = 4194400,
KEY_LAUNCH1 = 4194401,
KEY_LAUNCH2 = 4194402,
KEY_LAUNCH3 = 4194403,
KEY_LAUNCH4 = 4194404,
KEY_LAUNCH5 = 4194405,
KEY_LAUNCH6 = 4194406,
KEY_LAUNCH7 = 4194407,
KEY_LAUNCH8 = 4194408,
KEY_LAUNCH9 = 4194409,
KEY_LAUNCHA = 4194410,
KEY_LAUNCHB = 4194411,
KEY_LAUNCHC = 4194412,
KEY_LAUNCHD = 4194413,
KEY_LAUNCHE = 4194414,
KEY_LAUNCHF = 4194415,
KEY_UNKNOWN = 8388607,
KEY_SPACE = 32,
KEY_EXCLAM = 33,
KEY_QUOTEDBL = 34,
KEY_NUMBERSIGN = 35,
KEY_DOLLAR = 36,
KEY_PERCENT = 37,
KEY_AMPERSAND = 38,
KEY_APOSTROPHE = 39,
KEY_PARENLEFT = 40,
KEY_PARENRIGHT = 41,
KEY_ASTERISK = 42,
KEY_PLUS = 43,
KEY_COMMA = 44,
KEY_MINUS = 45,
KEY_PERIOD = 46,
KEY_SLASH = 47,
KEY_0 = 48,
KEY_1 = 49,
KEY_2 = 50,
KEY_3 = 51,
KEY_4 = 52,
KEY_5 = 53,
KEY_6 = 54,
KEY_7 = 55,
KEY_8 = 56,
KEY_9 = 57,
KEY_COLON = 58,
KEY_SEMICOLON = 59,
KEY_LESS = 60,
KEY_EQUAL = 61,
KEY_GREATER = 62,
KEY_QUESTION = 63,
KEY_AT = 64,
KEY_A = 65,
KEY_B = 66,
KEY_C = 67,
KEY_D = 68,
KEY_E = 69,
KEY_F = 70,
KEY_G = 71,
KEY_H = 72,
KEY_I = 73,
KEY_J = 74,
KEY_K = 75,
KEY_L = 76,
KEY_M = 77,
KEY_N = 78,
KEY_O = 79,
KEY_P = 80,
KEY_Q = 81,
KEY_R = 82,
KEY_S = 83,
KEY_T = 84,
KEY_U = 85,
KEY_V = 86,
KEY_W = 87,
KEY_X = 88,
KEY_Y = 89,
KEY_Z = 90,
KEY_BRACKETLEFT = 91,
KEY_BACKSLASH = 92,
KEY_BRACKETRIGHT = 93,
KEY_ASCIICIRCUM = 94,
KEY_UNDERSCORE = 95,
KEY_QUOTELEFT = 96,
KEY_BRACELEFT = 123,
KEY_BAR = 124,
KEY_BRACERIGHT = 125,
KEY_ASCIITILDE = 126,
KEY_YEN = 165,
KEY_SECTION = 167,
KEY_GLOBE = 4194416,
KEY_KEYBOARD = 4194417,
KEY_JIS_EISU = 4194418,
KEY_JIS_KANA = 4194419
}
# KeyModifierMask
# Taken from https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html
enum {
KEY_CODE_MASK = 8388607,
KEY_MODIFIER_MASK = 532676608,
KEY_MASK_CMD_OR_CTRL = 16777216,
KEY_MASK_SHIFT = 33554432,
KEY_MASK_ALT = 67108864,
KEY_MASK_META = 134217728,
KEY_MASK_CTRL = 268435456,
KEY_MASK_KPAD = 536870912,
KEY_MASK_GROUP_SWITCH = 1073741824
}
# MouseButton
# Taken from https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html
enum MouseButton {
MOUSE_BUTTON_NONE = 0,
MOUSE_BUTTON_LEFT = 1,
MOUSE_BUTTON_RIGHT = 2,
MOUSE_BUTTON_MIDDLE = 3,
MOUSE_BUTTON_WHEEL_UP = 4,
MOUSE_BUTTON_WHEEL_DOWN = 5,
MOUSE_BUTTON_WHEEL_LEFT = 6,
MOUSE_BUTTON_WHEEL_RIGHT = 7,
MOUSE_BUTTON_XBUTTON1 = 8,
MOUSE_BUTTON_XBUTTON2 = 9,
}
# MouseButtonMask
# Taken from https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html
enum MouseButtonMask {
MOUSE_BUTTON_MASK_LEFT = (1 << (MOUSE_BUTTON_LEFT - 1)),
MOUSE_BUTTON_MASK_RIGHT = (1 << (MOUSE_BUTTON_RIGHT - 1)),
MOUSE_BUTTON_MASK_MIDDLE = (1 << (MOUSE_BUTTON_MIDDLE - 1)),
MOUSE_BUTTON_MASK_XBUTTON1 = (1 << (MOUSE_BUTTON_XBUTTON1 - 1)),
MOUSE_BUTTON_MASK_XBUTTON2 = (1 << (MOUSE_BUTTON_XBUTTON2 - 1))
}
# Error
# Taken from https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html
const Error = {
OK: "OK",
FAILED: "Generic error",
ERR_UNAVAILABLE: "Unavailable error",
ERR_UNCONFIGURED: "Unconfigured error",
ERR_UNAUTHORIZED: "Unauthorized error",
ERR_PARAMETER_RANGE_ERROR: "Parameter range error",
ERR_OUT_OF_MEMORY: "Out of memory (OOM) error",
ERR_FILE_NOT_FOUND: "File: Not found error",
ERR_FILE_BAD_DRIVE: "File: Bad drive error",
ERR_FILE_BAD_PATH: "File: Bad path error",
ERR_FILE_NO_PERMISSION: "File: No permission error",
ERR_FILE_ALREADY_IN_USE: "File: Already in use error",
ERR_FILE_CANT_OPEN: "File: Can't open error",
ERR_FILE_CANT_WRITE: "File: Can't write error",
ERR_FILE_CANT_READ: "File: Can't read error",
ERR_FILE_UNRECOGNIZED: "File: Unrecognized error",
ERR_FILE_CORRUPT: "File: Corrupt error",
ERR_FILE_MISSING_DEPENDENCIES: "File: Missing dependencies error",
ERR_FILE_EOF: "File: End of file (EOF) error",
ERR_CANT_OPEN: "Can't open error",
ERR_CANT_CREATE: "Can't create error",
ERR_QUERY_FAILED: "Query failed error",
ERR_ALREADY_IN_USE: "Already in use error",
ERR_LOCKED: "Locked error",
ERR_TIMEOUT: "Timeout error",
ERR_CANT_CONNECT: "Can't connect error",
ERR_CANT_RESOLVE: "Can't resolve error",
ERR_CONNECTION_ERROR: "Connection error",
ERR_CANT_ACQUIRE_RESOURCE: "Can't acquire resource error",
ERR_CANT_FORK: "Can't fork process error",
ERR_INVALID_DATA: "Invalid data error",
ERR_INVALID_PARAMETER: "Invalid parameter error",
ERR_ALREADY_EXISTS: "Already exists error",
ERR_DOES_NOT_EXIST: "Does not exist error",
ERR_DATABASE_CANT_READ: "Database: Read error",
ERR_DATABASE_CANT_WRITE: "Database: Write error",
ERR_COMPILATION_FAILED: "Compilation failed error",
ERR_METHOD_NOT_FOUND: "Method not found error",
ERR_LINK_FAILED: "Linking failed error",
ERR_SCRIPT_FAILED: "Script failed error",
ERR_CYCLIC_LINK: "Cycling link (import cycle) error",
ERR_INVALID_DECLARATION: "Invalid declaration error",
ERR_DUPLICATE_SYMBOL: "Duplicate symbol error",
ERR_PARSE_ERROR: "Parse error",
ERR_BUSY: "Busy error",
ERR_SKIP: "Skip error",
ERR_HELP: "Help error",
ERR_BUG: "Bug error",
ERR_PRINTER_ON_FIRE: "Printer on fire error",
}