[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Stratagus-CVS] stratagus/src/clone ccl_player.c
From: |
Jimmy Salmon |
Subject: |
[Stratagus-CVS] stratagus/src/clone ccl_player.c |
Date: |
Wed, 19 Nov 2003 22:42:05 -0500 |
CVSROOT: /cvsroot/stratagus
Module name: stratagus
Branch:
Changes by: Jimmy Salmon <address@hidden> 03/11/19 22:42:05
Modified files:
src/clone : ccl_player.c
Log message:
Added GetPlayerResource and SetPlayerResource
Patches:
Index: stratagus/src/clone/ccl_player.c
diff -u stratagus/src/clone/ccl_player.c:1.46
stratagus/src/clone/ccl_player.c:1.47
--- stratagus/src/clone/ccl_player.c:1.46 Sun Nov 16 01:49:25 2003
+++ stratagus/src/clone/ccl_player.c Wed Nov 19 22:42:05 2003
@@ -26,7 +26,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: ccl_player.c,v 1.46 2003/11/16 06:49:25 mr-russ Exp $
+// $Id: ccl_player.c,v 1.47 2003/11/20 03:42:05 jsalmon3 Exp $
//@{
@@ -66,6 +66,14 @@
return &Players[gh_scm2int(value)];
}
#elif defined(USE_LUA)
+local Player* CclGetPlayer(lua_State* l)
+{
+ if (!lua_isnumber(l, -1)) {
+ lua_pushstring(l, "incorrect argument");
+ lua_error(l);
+ }
+ return &Players[(int)lua_tonumber(l, -1)];
+}
#endif
/**
@@ -917,6 +925,34 @@
return ret;
}
#elif defined(USE_LUA)
+local int CclGetPlayerResource(lua_State* l)
+{
+ int i;
+ Player* plyr;
+ const char* res;
+
+ if (lua_gettop(l) != 2 || !lua_isstring(l, 2)) {
+ lua_pushstring(l, "incorrect argument");
+ lua_error(l);
+ }
+ lua_pushvalue(l, 1);
+ plyr = CclGetPlayer(l);
+ lua_pop(l, 1);
+ res = lua_tostring(l, 2);
+
+ for (i = 0; i < MaxCosts; ++i) {
+ if (!strcmp(res, DefaultResourceNames[i])) {
+ break;
+ }
+ }
+ if (i == MaxCosts) {
+ // FIXME: this leaves a half initialized player
+ lua_pushfstring(l, "Invalid resource", res);
+ lua_error(l);
+ }
+ lua_pushnumber(l, plyr->Resources[i]);
+ return 1;
+}
#endif
/**
@@ -937,7 +973,7 @@
value = gh_car(list);
list = gh_cdr(list);
for (i = 0; i < MaxCosts; ++i) {
- if (gh_eq_p(value, gh_symbol2scm((char*)DefaultResourceNames[i]))) {
+ if (gh_eq_p(value, gh_symbol2scm(DefaultResourceNames[i]))) {
break;
}
}
@@ -952,6 +988,43 @@
return SCM_UNSPECIFIED;
}
#elif defined(USE_LUA)
+local int CclSetPlayerResource(lua_State* l)
+{
+ int i;
+ Player* player;
+ const char* value;
+ int args;
+ int j;
+
+ args = lua_gettop(l);
+ lua_pushvalue(l, 1);
+ player = CclGetPlayer(l);
+ lua_pop(l, 1);
+ for (j = 1; j < args; ++j) {
+ if (!lua_isstring(l, j + 1)) {
+ lua_pushstring(l, "incorrect argument");
+ lua_error(l);
+ }
+ value = lua_tostring(l, j + 1);
+ ++j;
+ for (i = 0; i < MaxCosts; ++i) {
+ if (!strcmp(value, DefaultResourceNames[i])) {
+ break;
+ }
+ }
+ if (i == MaxCosts) {
+ // FIXME: this leaves a half initialized player
+ lua_pushfstring(l, "Unsupported tag: %s", value);
+ lua_error(l);
+ }
+ if (!lua_isnumber(l, j + 1)) {
+ lua_pushstring(l, "incorrect argument");
+ lua_error(l);
+ }
+ player->Resources[i] = lua_tonumber(l, j + 1);
+ }
+ return 0;
+}
#endif
// ----------------------------------------------------------------------------
@@ -1013,8 +1086,8 @@
lua_register(Lua, "NewColors", CclNewPlayerColors);
// player member access functions
-// lua_register(Lua, "GetPlayerResource", CclGetPlayerResource);
-// lua_register(Lua, "SetPlayerResource", CclSetPlayerResource);
+ lua_register(Lua, "GetPlayerResource", CclGetPlayerResource);
+ lua_register(Lua, "SetPlayerResource", CclSetPlayerResource);
#endif
}