added create*TextBox() methods for creating various types of text boxes
git-svn-id: svn://anubis/anaglym/trunk@160 99a6e188-d820-4881-8870-2d33a10e2619
This commit is contained in:
parent
3f429be13b
commit
8746e81fe4
@ -128,8 +128,8 @@ Engine::~Engine()
|
|||||||
{
|
{
|
||||||
delete it->second;
|
delete it->second;
|
||||||
}
|
}
|
||||||
for (std::map<int, SDL_Surface *>::iterator it = m_texts.begin();
|
for (std::map<int, SDL_Surface *>::iterator it = m_textboxes.begin();
|
||||||
it != m_texts.end();
|
it != m_textboxes.end();
|
||||||
it++)
|
it++)
|
||||||
{
|
{
|
||||||
SDL_FreeSurface(it->second);
|
SDL_FreeSurface(it->second);
|
||||||
@ -469,7 +469,8 @@ void Engine::debug_hook(lua_Debug * debug)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Engine::renderText(const char * text, int mode, Uint8 r, Uint8 g, Uint8 b,
|
int Engine::createTextBox(const char * text, int mode,
|
||||||
|
Uint8 r, Uint8 g, Uint8 b,
|
||||||
Uint8 br, Uint8 bg, Uint8 bb)
|
Uint8 br, Uint8 bg, Uint8 bb)
|
||||||
{
|
{
|
||||||
SDL_Surface * surf = NULL;
|
SDL_Surface * surf = NULL;
|
||||||
@ -490,7 +491,7 @@ int Engine::renderText(const char * text, int mode, Uint8 r, Uint8 g, Uint8 b,
|
|||||||
if (surf != NULL)
|
if (surf != NULL)
|
||||||
{
|
{
|
||||||
int id = m_next_text_index++;
|
int id = m_next_text_index++;
|
||||||
m_texts[id] = surf;
|
m_textboxes[id] = surf;
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
5
Engine.h
5
Engine.h
@ -135,7 +135,8 @@ class Engine
|
|||||||
bool import(const char * name);
|
bool import(const char * name);
|
||||||
GLuint loadTexture(const char * name);
|
GLuint loadTexture(const char * name);
|
||||||
void debug_hook(lua_Debug * debug);
|
void debug_hook(lua_Debug * debug);
|
||||||
int renderText(const char * text, int mode, Uint8 r, Uint8 g, Uint8 b,
|
int createTextBox(const char * text, int mode,
|
||||||
|
Uint8 r, Uint8 g, Uint8 b,
|
||||||
Uint8 br = 0, Uint8 bg = 0, Uint8 bb = 0);
|
Uint8 br = 0, Uint8 bg = 0, Uint8 bb = 0);
|
||||||
void getScreenSize(int * width, int * height);
|
void getScreenSize(int * width, int * height);
|
||||||
|
|
||||||
@ -171,7 +172,7 @@ class Engine
|
|||||||
OdeWorld m_world;
|
OdeWorld m_world;
|
||||||
std::map<int, Object *> m_objects;
|
std::map<int, Object *> m_objects;
|
||||||
int m_next_object_index;
|
int m_next_object_index;
|
||||||
std::map<int, SDL_Surface *> m_texts;
|
std::map<int, SDL_Surface *> m_textboxes;
|
||||||
int m_next_text_index;
|
int m_next_text_index;
|
||||||
GLdouble m_eye[3];
|
GLdouble m_eye[3];
|
||||||
GLdouble m_center[3];
|
GLdouble m_center[3];
|
||||||
|
85
ag.cc
85
ag.cc
@ -44,6 +44,9 @@ namespace ag
|
|||||||
{ "import", import },
|
{ "import", import },
|
||||||
{ "loadTexture", loadTexture },
|
{ "loadTexture", loadTexture },
|
||||||
{ "getScreenSize", getScreenSize },
|
{ "getScreenSize", getScreenSize },
|
||||||
|
{ "createSolidTextBox", createSolidTextBox},
|
||||||
|
{ "createShadedTextBox", createShadedTextBox},
|
||||||
|
{ "createBlendedTextBox", createBlendedTextBox},
|
||||||
|
|
||||||
{ "createBox", createBox},
|
{ "createBox", createBox},
|
||||||
{ "createStaticBox", createStaticBox},
|
{ "createStaticBox", createStaticBox},
|
||||||
@ -347,6 +350,88 @@ namespace ag
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int createTextBoxCommon(lua_State * L, int type, const char * text,
|
||||||
|
Uint8 r, Uint8 g, Uint8 b, Uint8 br, Uint8 bg, Uint8 bb)
|
||||||
|
{
|
||||||
|
int id = g_engine->createTextBox(text, type, r, g, b, br, bg, bb);
|
||||||
|
if (id != 0)
|
||||||
|
{
|
||||||
|
lua_newtable(L);
|
||||||
|
lua_pushinteger(L, id);
|
||||||
|
lua_setfield(L, -2, "id");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lua_pushnil(L);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int createSolidTextBox(lua_State * L)
|
||||||
|
{
|
||||||
|
int argc = lua_gettop(L);
|
||||||
|
if (argc == 4
|
||||||
|
&& lua_isstring(L, 1)
|
||||||
|
&& lua_isnumber(L, 2)
|
||||||
|
&& lua_isnumber(L, 3)
|
||||||
|
&& lua_isnumber(L, 4))
|
||||||
|
{
|
||||||
|
return createTextBoxCommon(L, 0,
|
||||||
|
lua_tostring(L, 1),
|
||||||
|
lua_tonumber(L, 2),
|
||||||
|
lua_tonumber(L, 3),
|
||||||
|
lua_tonumber(L, 4),
|
||||||
|
0, 0, 0);
|
||||||
|
}
|
||||||
|
lua_pushnil(L);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int createShadedTextBox(lua_State * L)
|
||||||
|
{
|
||||||
|
int argc = lua_gettop(L);
|
||||||
|
if (argc == 7
|
||||||
|
&& lua_isstring(L, 1)
|
||||||
|
&& lua_isnumber(L, 2)
|
||||||
|
&& lua_isnumber(L, 3)
|
||||||
|
&& lua_isnumber(L, 4)
|
||||||
|
&& lua_isnumber(L, 5)
|
||||||
|
&& lua_isnumber(L, 6)
|
||||||
|
&& lua_isnumber(L, 7))
|
||||||
|
{
|
||||||
|
return createTextBoxCommon(L, 1,
|
||||||
|
lua_tostring(L, 1),
|
||||||
|
lua_tonumber(L, 2),
|
||||||
|
lua_tonumber(L, 3),
|
||||||
|
lua_tonumber(L, 4),
|
||||||
|
lua_tonumber(L, 5),
|
||||||
|
lua_tonumber(L, 6),
|
||||||
|
lua_tonumber(L, 7));
|
||||||
|
}
|
||||||
|
lua_pushnil(L);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int createBlendedTextBox(lua_State * L)
|
||||||
|
{
|
||||||
|
int argc = lua_gettop(L);
|
||||||
|
if (argc == 4
|
||||||
|
&& lua_isstring(L, 1)
|
||||||
|
&& lua_isnumber(L, 2)
|
||||||
|
&& lua_isnumber(L, 3)
|
||||||
|
&& lua_isnumber(L, 4))
|
||||||
|
{
|
||||||
|
return createTextBoxCommon(L, 2,
|
||||||
|
lua_tostring(L, 1),
|
||||||
|
lua_tonumber(L, 2),
|
||||||
|
lua_tonumber(L, 3),
|
||||||
|
lua_tonumber(L, 4),
|
||||||
|
0, 0, 0);
|
||||||
|
}
|
||||||
|
lua_pushnil(L);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void addManagedObject(lua_State * L, bool is_static,
|
static void addManagedObject(lua_State * L, bool is_static,
|
||||||
OdeWorld::GeomType geom_type, refptr< vector<float> > args)
|
OdeWorld::GeomType geom_type, refptr< vector<float> > args)
|
||||||
{
|
{
|
||||||
|
3
ag.h
3
ag.h
@ -30,6 +30,9 @@ namespace ag
|
|||||||
int import(lua_State * L);
|
int import(lua_State * L);
|
||||||
int loadTexture(lua_State * L);
|
int loadTexture(lua_State * L);
|
||||||
int getScreenSize(lua_State * L);
|
int getScreenSize(lua_State * L);
|
||||||
|
int createSolidTextBox(lua_State * L);
|
||||||
|
int createShadedTextBox(lua_State * L);
|
||||||
|
int createBlendedTextBox(lua_State * L);
|
||||||
|
|
||||||
int createBox(lua_State * L);
|
int createBox(lua_State * L);
|
||||||
int createStaticBox(lua_State * L);
|
int createStaticBox(lua_State * L);
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
|
|
||||||
|
t = ag.createSolidTextBox("Hi there", 0, 0, 1)
|
||||||
|
ag.println("t: ", t)
|
||||||
|
|
||||||
function update_event()
|
function update_event()
|
||||||
ballx, bally, ballz = ball:getPosition()
|
ballx, bally, ballz = ball:getPosition()
|
||||||
ag.setCamera(7, -6, 15, ballx, bally, ballz, 0, 0, 1)
|
ag.setCamera(7, -6, 15, ballx, bally, ballz, 0, 0, 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user