GameObjData* GameObjDataFactory::create (SCM symbol, SCM data) { /* if (Guile::equal_p(scm_str2symbol("tree"), symbol)) { return new TreeData (data); } else*/ if (Guile::equal_p(scm_str2symbol("tank"), symbol)) { std::cout << "GameObjDataFactory::create: not implemented" << std::endl; } else { std::cout << "GameObjDataFactory: Unknown symbol: " << std::flush; gh_display (symbol); gh_newline (); } return 0; }
/** ** Send command to ccl. */ global void CclCommand(char* command) { gh_display(gh_eval_str_with_standard_handler(command)); gh_newline(); }
/** ** Parse a clone map. ** ** @param list list of tuples keyword data */ local SCM CclCloneMap(SCM list) { SCM value; SCM name; SCM data; // // Parse the list: (still everything could be changed!) // while( !gh_null_p(list) ) { value=gh_car(list); //gh_display(value); //gh_newline(); if( gh_list_p(value) ) { name=gh_car(value); data=gh_cdr(value); if( !gh_symbol_p(name) ) { fprintf(stderr,"symbol expected\n"); return list; } if( gh_eq_p(name,gh_symbol2scm("version")) ) { DebugLevel1("VERSION:\n"); gh_display(data); gh_newline(); // FIXME: } else if( gh_eq_p(name,gh_symbol2scm("description")) ) { DebugLevel1("DESCRIPTION:\n"); gh_display(data); gh_newline(); // FIXME: } else if( gh_eq_p(name,gh_symbol2scm("terrain")) ) { int terrain; DebugLevel1("TERRAIN:\n"); gh_display(data); gh_newline(); value=gh_car(data); data=gh_cdr(data); terrain=gh_scm2int(value); TheMap.Terrain=terrain; // FIXME: } else if( gh_eq_p(name,gh_symbol2scm("dimension")) ) { int width; int height; DebugLevel1("DIMENSION:\n"); gh_display(data); gh_newline(); value=gh_car(data); width=gh_scm2int(value); data=gh_cdr(data); value=gh_car(data); height=gh_scm2int(value); TheMap.Width=width; TheMap.Height=height; TheMap.Fields=calloc(width*height,sizeof(*TheMap.Fields)); InitUnitCache(); } else if( gh_eq_p(name,gh_symbol2scm("tiles")) ) { int i; int l; DebugLevel1("TILES:\n"); value=gh_car(data); if( !gh_vector_p(value) ) { fprintf(stderr,"vector expected\n"); return SCM_UNSPECIFIED; } l=gh_vector_length(value); if( l!=TheMap.Width*TheMap.Height ) { fprintf(stderr,"Wrong tile table length %d\n",l); } for( i=0; i<l; ++i ) { TheMap.Fields[i].Tile= Tilesets[TilesetSummer].Table[ gh_scm2int(gh_vector_ref(value,gh_int2scm(i))) ]; } } else { ; } } else { fprintf(stderr,"list expected\n"); return list; } list=gh_cdr(list); } return list; }