[Add] Time bindings to mission lua.

This commit is contained in:
Allanis 2013-04-22 14:10:19 +01:00
parent 7c1816aa2b
commit b156c96662

View File

@ -11,6 +11,7 @@
#include "toolkit.h" #include "toolkit.h"
#include "land.h" #include "land.h"
#include "player.h" #include "player.h"
#include "ltime.h"
#include "misn_lua.h" #include "misn_lua.h"
#define MISN_DEBUG(str, args...) (fprintf(stdout, "Mission '%s': "str"\n", \ #define MISN_DEBUG(str, args...) (fprintf(stdout, "Mission '%s': "str"\n", \
@ -96,6 +97,17 @@ static const luaL_Reg space_methods[] = {
{ 0, 0 } { 0, 0 }
}; };
// Time.
static int time_get(lua_State* L);
static int time_str(lua_State* L);
static int time_units(lua_State* L);
static const luaL_reg time_methods[] = {
{ "get", time_get },
{ "str", time_str },
{ "units", time_units },
{0, 0}
};
// Player. // Player.
static int player_freeSpace(lua_State* L); static int player_freeSpace(lua_State* L);
static int player_addCargo(lua_State* L); static int player_addCargo(lua_State* L);
@ -139,6 +151,7 @@ int misn_loadLibs(lua_State* L) {
luaL_register(L, "misn", misn_methods); luaL_register(L, "misn", misn_methods);
luaL_register(L, "var", var_methods); luaL_register(L, "var", var_methods);
luaL_register(L, "space", space_methods); luaL_register(L, "space", space_methods);
luaL_register(L, "time", time_methods);
luaL_register(L, "player", player_methods); luaL_register(L, "player", player_methods);
luaL_register(L, "rnd", rnd_methods); luaL_register(L, "rnd", rnd_methods);
luaL_register(L, "hook", hook_methods); luaL_register(L, "hook", hook_methods);
@ -502,6 +515,31 @@ static int space_landName(lua_State* L) {
return 0; return 0;
} }
// -- Time. --
static int time_get(lua_State* L) {
lua_pushnumber(L, ltime_get());
return 1;
}
static int time_str(lua_State* L) {
char* lt;
if((lua_gettop(L) > 0) && (lua_isnumber(L, -1)))
lt = ltime_pretty((unsigned int) lua_tonumber(L, -1));
else
lt = ltime_pretty(ltime_get());
lua_pushstring(L, lt);
free(lt);
return 1;
}
static int time_units(lua_State* L) {
if((lua_gettop(L) > 0) && (lua_isnumber(L, -1)))
lua_pushnumber(L, (unsigned int) lua_tonumber(L, -1) * LTIME_UNIT_LENGTH);
else
lua_pushnumber(L, LTIME_UNIT_LENGTH);
return 1;
}
// -- Player. -- // -- Player. --
static int player_freeSpace(lua_State* L) { static int player_freeSpace(lua_State* L) {
lua_pushnumber(L, pilot_freeCargo(player)); lua_pushnumber(L, pilot_freeCargo(player));