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 FlockEntity.h
Game.cpp Game.cpp
Game.h Game.h
GameEnums.cpp
GameEnums.h GameEnums.h
GameplayVariables.cpp GameplayVariables.cpp
GameStructs.cpp GameStructs.cpp
@ -60,7 +61,6 @@ SET(AQUARIA_SRCS
ModSelector.h ModSelector.h
Network.cpp Network.cpp
Network.h Network.h
NotEntities.h
ParticleEditor.cpp ParticleEditor.cpp
Path.cpp Path.cpp
Path.h 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 CURSOR_LOOK = 4
}; };
enum AquariaActions enum AquariaActions // Keep in sync with GameEnums.cpp
{ {
ACTION_PRIMARY =0, ACTION_PRIMARY,
ACTION_SECONDARY =1, ACTION_SECONDARY,
ACTION_ESC =2, ACTION_ESC,
ACTION_TOGGLESCENEEDITOR =3, ACTION_TOGGLESCENEEDITOR,
ACTION_TOGGLEWORLDMAP =4, ACTION_TOGGLEWORLDMAP,
ACTION_TOGGLEGRID =5, ACTION_TOGGLEGRID,
// Automatically sent on either ACTION_SWIM* or sufficient analog controller input // Automatically sent on either ACTION_SWIM* or sufficient analog controller input
ACTION_MENULEFT =6, ACTION_MENULEFT,
ACTION_MENURIGHT =7, ACTION_MENURIGHT,
ACTION_MENUUP =8, ACTION_MENUUP,
ACTION_MENUDOWN =9, ACTION_MENUDOWN,
ACTION_PREVPAGE, ACTION_PREVPAGE,
ACTION_NEXTPAGE, ACTION_NEXTPAGE,
@ -78,7 +78,7 @@ enum AquariaActions
ACTION_TOGGLEMENU, ACTION_TOGGLEMENU,
// ------------------------
ACTION_SWIMUP = 100, ACTION_SWIMUP = 100,
ACTION_SWIMDOWN, ACTION_SWIMDOWN,
ACTION_SWIMLEFT, ACTION_SWIMLEFT,
@ -106,6 +106,7 @@ enum AquariaActions
ACTION_SLOW, // currently unused ACTION_SLOW, // currently unused
ACTION_REVERT, ACTION_REVERT,
// ------------------------
ACTION_ZOOMIN = 200, ACTION_ZOOMIN = 200,
ACTION_ZOOMOUT, ACTION_ZOOMOUT,
@ -144,8 +145,11 @@ enum AquariaActions
ACTION_LOOK , ACTION_LOOK ,
ACTION_TOGGLEHELPSCREEN, ACTION_TOGGLEHELPSCREEN,
ACTION_PLACE_AVATAR, ACTION_PLACE_AVATAR,
ACTION_SCREENSHOT ACTION_SCREENSHOT,
ACTION_MAX
}; };
const char *EnumName(AquariaActions a);
enum AuraType enum AuraType
{ {
@ -232,7 +236,7 @@ enum VisualEffectsType
VFX_MAX = 3 VFX_MAX = 3
}; };
enum Layers enum Layers // keep in sync with GameEnums.cpp
{ {
// GAME WILL CLEAR THESE // GAME WILL CLEAR THESE
LR_ZERO = 0, LR_ZERO = 0,
@ -313,6 +317,7 @@ enum Layers
LR_BLACKBARS , LR_BLACKBARS ,
LR_MAX LR_MAX
}; };
const char *EnumName(Layers lr);
enum IngredientType 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), 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 // F U N C T I O N S
//============================================================================================ //============================================================================================
@ -11828,6 +11842,8 @@ lua_State *ScriptInterface::createLuaVM()
lua_pushnumber(state, luaConstantTable[i].value); lua_pushnumber(state, luaConstantTable[i].value);
lua_setglobal(state, luaConstantTable[i].name); 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. // Add hooks to monitor global get/set operations if requested.
if (complainOnGlobalVar) if (complainOnGlobalVar)