1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-25 09:44:02 +00:00

Make all LR_* and ACTION_* enum values available to Lua

This commit is contained in:
fgenesis 2023-09-14 01:13:43 +02:00
parent fc920b3040
commit 67149a5b35
5 changed files with 225 additions and 36 deletions

View file

@ -32,6 +32,7 @@ SET(AQUARIA_SRCS
FlockEntity.h
Game.cpp
Game.h
GameEnums.cpp
GameEnums.h
GameplayVariables.cpp
GameStructs.cpp
@ -60,7 +61,6 @@ SET(AQUARIA_SRCS
ModSelector.h
Network.cpp
Network.h
NotEntities.h
ParticleEditor.cpp
Path.cpp
Path.h

189
Aquaria/GameEnums.cpp Normal file
View file

@ -0,0 +1,189 @@
#include "GameEnums.h"
#include "Base.h"
// keep in sync with enum Layers
static const char *s_LayerNames[LR_MAX] =
{
"LR_ZERO",
"LR_BACKDROP",
"LR_BACKGROUND",
"LR_SCENEBACKGROUNDIMAGE",
"LR_BACKDROP_ELEMENTS1",
"LR_BACKDROP_ELEMENTS2",
"LR_ENTITIES_MINUS4_PLACEHOLDER",
"LR_BACKDROP_ELEMENTS3",
"LR_BACKDROP_ELEMENTS4",
"LR_BACKDROP_ELEMENTS5",
"LR_BACKDROP_ELEMENTS6",
"LR_BACKGROUND_ELEMENTS1",
"LR_BACKGROUND_ELEMENTS2",
"LR_ENTITIES_MINUS3_PLACEHOLDER",
"LR_BACKGROUND_ELEMENTS3",
"LR_ENTITIES_MINUS2_PLACEHOLDER",
"LR_BLACKGROUND",
"LR_UPDATE_ELEMENTS_BG",
"LR_ELEMENTS1",
"LR_ELEMENTS2",
"LR_ELEMENTS3",
"LR_ELEMENTS4",
"LR_ELEMENTS5",
"LR_ELEMENTS6",
"LR_ELEMENTS7",
"LR_ELEMENTS8",
"LR_ELEMENTS9",
"LR_ELEMENTS10",
"LR_ELEMENTS11",
"LR_ELEMENTS12",
"LR_ELEMENTS13",
"LR_ELEMENTS14",
"LR_ELEMENTS15",
"LR_ELEMENTS16",
"LR_UPDATE_ELEMENTS_FG",
"LR_ENTITIES_MINUS4",
"LR_ENTITIES_MINUS3",
"LR_ENTITIES_MINUS2",
"LR_ENTITIES00",
"LR_ENTITIES0",
"LR_ENTITIES",
"LR_ENTITIES2",
"LR_WATERSURFACE",
"LR_WATERSURFACE2",
"LR_DARK_LAYER",
"LR_PROJECTILES",
"LR_LIGHTING",
"LR_PARTICLES",
"LR_PARTICLES2",
"LR_FOREGROUND_ELEMENTS1",
"LR_FOREGROUND_ELEMENTS2",
"LR_PARTICLES_TOP",
"LR_AFTER_EFFECTS",
"LR_SCENE_COLOR",
"LR_MENU",
"LR_MENU2",
"LR_HUD",
"LR_HUD2",
"LR_HUD3",
"LR_HUDUNDERLAY",
"LR_MINIMAP",
"LR_RECIPES",
"LR_WORLDMAP",
"LR_WORLDMAPHUD",
"LR_REGISTER_TEXT",
"LR_DAMAGESPRITE",
"LR_HELP",
"LR_TRANSITION",
"LR_OVERLAY",
"LR_FILEMENU",
"LR_CONFIRM",
"LR_CURSOR",
"LR_SUBTITLES",
"LR_PROGRESS",
"LR_DEBUG_TEXT",
"LR_BLACKBARS"
};
const char *EnumName(Layers lr)
{
compile_assert(Countof(s_LayerNames) == LR_MAX);
return lr < LR_MAX ? s_LayerNames[lr] : NULL;
}
const char *s_AquariaActionNames_0[ACTION_MAX] =
{
"ACTION_PRIMARY",
"ACTION_SECONDARY",
"ACTION_ESC",
"ACTION_TOGGLESCENEEDITO",
"ACTION_TOGGLEWORLDMAP",
"ACTION_TOGGLEGRID",
"ACTION_MENULEFT",
"ACTION_MENURIGHT",
"ACTION_MENUUP",
"ACTION_MENUDOWN",
"ACTION_PREVPAGE",
"ACTION_NEXTPAGE",
"ACTION_COOKFOOD",
"ACTION_FOODLEFT",
"ACTION_FOODRIGHT",
"ACTION_FOODDROP",
"ACTION_TOGGLEMENU"
};
const char *s_AquariaActionNames_100[ACTION_MAX] =
{
"ACTION_SWIMUP",
"ACTION_SWIMDOWN",
"ACTION_SWIMLEFT",
"ACTION_SWIMRIGHT",
"ACTION_SINGUP",
"ACTION_SINGDOWN",
"ACTION_SINGLEFT",
"ACTION_SINGRIGHT",
"ACTION_SONGSLOT1",
"ACTION_SONGSLOT2",
"ACTION_SONGSLOT3",
"ACTION_SONGSLOT4",
"ACTION_SONGSLOT5",
"ACTION_SONGSLOT6",
"ACTION_SONGSLOT7",
"ACTION_SONGSLOT8",
"ACTION_SONGSLOT9",
"ACTION_SONGSLOT10",
"ACTION_SONGSLOTEND",
"ACTION_ROLL",
"ACTION_SLOW",
"ACTION_REVERT"
};
const char *s_AquariaActionNames_200[ACTION_MAX] =
{
"ACTION_ZOOMIN",
"ACTION_ZOOMOUT",
"ACTION_CAMLEFT",
"ACTION_CAMRIGHT",
"ACTION_CAMUP",
"ACTION_CAMDOWN",
"ACTION_BONELEFT",
"ACTION_BONERIGHT",
"ACTION_BONEUP",
"ACTION_BONEDOWN",
"ACTION_BGLAYER1",
"ACTION_BGLAYER2",
"ACTION_BGLAYER3",
"ACTION_BGLAYER4",
"ACTION_BGLAYER5",
"ACTION_BGLAYER6",
"ACTION_BGLAYER7",
"ACTION_BGLAYER8",
"ACTION_BGLAYER9",
"ACTION_BGLAYER10",
"ACTION_BGLAYER11",
"ACTION_BGLAYER12",
"ACTION_BGLAYER13",
"ACTION_BGLAYER14",
"ACTION_BGLAYER15",
"ACTION_BGLAYER16",
"ACTION_BGLAYEREND",
"ACTION_MULTISELECT",
"ACTION_TOGGLEWORLDMAPEDITOR",
"ACTION_LOOK",
"ACTION_TOGGLEHELPSCREEN",
"ACTION_PLACE_AVATAR",
"ACTION_SCREENSHOT"
};
const char *EnumName(AquariaActions a)
{
unsigned i = a;
if(i < Countof(s_AquariaActionNames_0))
return s_AquariaActionNames_0[i];
i -= 100; // no problem if this underflows
if(i < Countof(s_AquariaActionNames_100))
return s_AquariaActionNames_100[i];
i -= 100;
if(i < Countof(s_AquariaActionNames_200))
return s_AquariaActionNames_200[i];
return NULL;
}

View file

@ -52,21 +52,21 @@ enum CursorType
CURSOR_LOOK = 4
};
enum AquariaActions
enum AquariaActions // Keep in sync with GameEnums.cpp
{
ACTION_PRIMARY =0,
ACTION_SECONDARY =1,
ACTION_ESC =2,
ACTION_TOGGLESCENEEDITOR =3,
ACTION_TOGGLEWORLDMAP =4,
ACTION_PRIMARY,
ACTION_SECONDARY,
ACTION_ESC,
ACTION_TOGGLESCENEEDITOR,
ACTION_TOGGLEWORLDMAP,
ACTION_TOGGLEGRID =5,
ACTION_TOGGLEGRID,
// Automatically sent on either ACTION_SWIM* or sufficient analog controller input
ACTION_MENULEFT =6,
ACTION_MENURIGHT =7,
ACTION_MENUUP =8,
ACTION_MENUDOWN =9,
ACTION_MENULEFT,
ACTION_MENURIGHT,
ACTION_MENUUP,
ACTION_MENUDOWN,
ACTION_PREVPAGE,
ACTION_NEXTPAGE,
@ -78,7 +78,7 @@ enum AquariaActions
ACTION_TOGGLEMENU,
// ------------------------
ACTION_SWIMUP = 100,
ACTION_SWIMDOWN,
ACTION_SWIMLEFT,
@ -106,6 +106,7 @@ enum AquariaActions
ACTION_SLOW, // currently unused
ACTION_REVERT,
// ------------------------
ACTION_ZOOMIN = 200,
ACTION_ZOOMOUT,
@ -144,8 +145,11 @@ enum AquariaActions
ACTION_LOOK ,
ACTION_TOGGLEHELPSCREEN,
ACTION_PLACE_AVATAR,
ACTION_SCREENSHOT
ACTION_SCREENSHOT,
ACTION_MAX
};
const char *EnumName(AquariaActions a);
enum AuraType
{
@ -232,7 +236,7 @@ enum VisualEffectsType
VFX_MAX = 3
};
enum Layers
enum Layers // keep in sync with GameEnums.cpp
{
// GAME WILL CLEAR THESE
LR_ZERO = 0,
@ -313,6 +317,7 @@ enum Layers
LR_BLACKBARS ,
LR_MAX
};
const char *EnumName(Layers lr);
enum IngredientType

View file

@ -1,21 +0,0 @@
/*
Copyright (C) 2007, 2010 - Bit-Blot
This file is part of Aquaria.
Aquaria is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

View file

@ -11740,6 +11740,20 @@ static const struct {
luaConstant(PATHSHAPE_CIRCLE),
};
template<typename T>
static void luaRegisterEnums(lua_State *L, T first, T last)
{
assert(first <= last);
for(T i = first; i <= last; i = T(i + 1))
{
if(const char *name = EnumName(i))
{
lua_pushinteger(L, i);
lua_setglobal(L, name);
}
}
}
//============================================================================================
// F U N C T I O N S
//============================================================================================
@ -11828,6 +11842,8 @@ lua_State *ScriptInterface::createLuaVM()
lua_pushnumber(state, luaConstantTable[i].value);
lua_setglobal(state, luaConstantTable[i].name);
}
luaRegisterEnums(state, LR_ZERO, LR_MAX);
luaRegisterEnums(state, ACTION_PRIMARY, ACTION_MAX);
// Add hooks to monitor global get/set operations if requested.
if (complainOnGlobalVar)