diff options
Diffstat (limited to 'src/game/objlist.cpp')
| -rw-r--r-- | src/game/objlist.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/game/objlist.cpp b/src/game/objlist.cpp new file mode 100644 index 0000000..01ce49b --- /dev/null +++ b/src/game/objlist.cpp @@ -0,0 +1,44 @@ +#include "objlist.h" +#include "world/world.h" +#include "world/map.h" + +OBJECT_LIST* objl; + +OBJECT_LIST* objl_init() { + OBJECT_LIST* ret = new OBJECT_LIST; + ret->world = 0; + ret->pl = 0; + + return ret; +} + +void objl_clear( U8 delete_player ) { + objl->objects.each( fn( OBJECT** ptr ) { + OBJECT* obj = *ptr; + + if( !delete_player && obj == objl->pl ) + return; + + if( obj->deinit_fn ) + obj->deinit_fn( obj ); + delete obj; + } ); + + objl->objects.clear(); + objl->world = 0; + if( delete_player ) + objl->pl = 0; +} + +void objl_load_world( GAME_DATA* game, WORLD_MAP* map ) { + objl_clear(); + + objl->world = world_create( map ); + if( !objl->pl ) + objl->pl = player_create( map->startpos, map->startang ); + + if( !OK( world_populate_entities( objl->world ) ) ) { + objl_clear(); + dlog( "objl_load_world() : error populating entities\n" ); + } +} |
