From f8b92ce3aa08b1445c9f956d8166830946562d12 Mon Sep 17 00:00:00 2001 From: navewindre Date: Wed, 3 Sep 2025 20:10:09 +0200 Subject: a --- src/game/objlist.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/game/objlist.cpp (limited to 'src/game/objlist.cpp') 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" ); + } +} -- cgit v1.2.3