summaryrefslogtreecommitdiff
path: root/src/game/objlist.cpp
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-09-03 20:10:09 +0200
committernavewindre <boneyaard@gmail.com>2025-09-03 20:10:09 +0200
commitf8b92ce3aa08b1445c9f956d8166830946562d12 (patch)
tree94e63a5aec9f8f52b577f56799e0c9201fd976a5 /src/game/objlist.cpp
a
Diffstat (limited to 'src/game/objlist.cpp')
-rw-r--r--src/game/objlist.cpp44
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" );
+ }
+}