stratagus-cvs
[Top][All Lists]
Advanced

[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
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]