static int tolua_bindings_atlantis_read_game00(lua_State* tolua_S) { #ifndef TOLUA_RELEASE tolua_Error tolua_err; if ( !tolua_isstring(tolua_S,1,0,&tolua_err) || !tolua_isnoobj(tolua_S,2,&tolua_err) ) goto tolua_lerror; else #endif { const char* filename = ((const char*) tolua_tostring(tolua_S,1,0)); { int tolua_ret = (int) read_game(filename); tolua_pushnumber(tolua_S,(lua_Number)tolua_ret); } } return 1; #ifndef TOLUA_RELEASE tolua_lerror: tolua_error(tolua_S,"#ferror in function 'read_game'.",&tolua_err); return 0; #endif }
int Ctbg::patch_baldur_gam(int fhandle) { npc_header tbgnentry; int npccount; int ret; if(read(fhandle,&tbgnheader.unused,sizeof(tbgnheader)-4)!=sizeof(tbgnheader)-4) { return -2; } if(tbgnheader.npcoffset!=sizeof(tbgnheader)) { return -2; } if(read_game("BALDUR")) { return -6; //current ie engine doesn't support npcs (only bg2/bg1) } for(npccount=0;npccount<tbgnheader.npccount;npccount++) { if(read(fhandle,&tbgnentry,sizeof(npc_header) )!=sizeof(npc_header) ) { return -2; } ret=the_game.AddNpc(tbgnentry.npcname,tbgnentry.area, tbgnentry.x, tbgnentry.y); if(ret<0) return ret; } return write_game("BALDUR",""); }
static void test_group_readwrite_dead_faction(CuTest *tc) { gamedata data; storage store; faction *f, *f2; unit * u; group *g; ally *al; int fno; test_cleanup(); f = test_create_faction(0); fno = f->no; CuAssertPtrEquals(tc, f, factions); CuAssertPtrEquals(tc, 0, f->next); f2 = test_create_faction(0); CuAssertPtrEquals(tc, f2, factions->next); u = test_create_unit(f2, test_create_region(0, 0, 0)); CuAssertPtrNotNull(tc, u); g = join_group(u, "group"); CuAssertPtrNotNull(tc, g); al = ally_add(&g->allies, f); CuAssertPtrNotNull(tc, al); CuAssertPtrEquals(tc, f, factions); destroyfaction(&factions); CuAssertTrue(tc, !f->_alive); CuAssertPtrEquals(tc, f2, factions); mstream_init(&data.strm); gamedata_init(&data, &store, RELEASE_VERSION); write_game(&data); free_gamedata(); f = f2 = NULL; data.strm.api->rewind(data.strm.handle); read_game(&data); mstream_done(&data.strm); gamedata_done(&data); CuAssertPtrEquals(tc, 0, findfaction(fno)); f2 = factions; CuAssertPtrNotNull(tc, f2); u = f2->units; CuAssertPtrNotNull(tc, u); g = get_group(u); CuAssertPtrNotNull(tc, g); CuAssertPtrEquals(tc, 0, g->allies); test_cleanup(); }
int main(int argc,char **argv) { int n; int curr_arg; bool bDebug; int initial_move; int retval; struct game curr_game; if ((argc < 2) || (argc > 3)) { printf(usage); return 1; } bDebug = false; for (curr_arg = 1; curr_arg < argc; curr_arg++) { if (!strcmp(argv[curr_arg],"-debug")) bDebug = true; else break; } if (argc - curr_arg != 1) { printf(usage); return 2; } retval = read_game(argv[argc-1],&curr_game,err_msg); if (retval) { printf("read_game of %s failed: %d\n",argv[argc-1],retval); printf("curr_move = %d\n",curr_game.curr_move); return 3; } printf("%s\n",curr_game.chessfilename); printf("title = %s\n",curr_game.title); printf("orientation = %d\n",curr_game.orientation); printf("num_moves = %d\n",curr_game.num_moves); return 0; }