Map refactoring to prep for loading
Some checks failed
Build Dusk / build-linux (push) Successful in 1m35s
Build Dusk / build-psp (push) Failing after 1m46s

This commit is contained in:
2025-12-26 15:01:43 +10:00
parent b16dbaceec
commit 7940f4c487
11 changed files with 108 additions and 16 deletions

View File

@@ -89,6 +89,8 @@ void sceneMapEntityGetPosition(const entity_t *entity, vec3 outPosition) {
}
void sceneMapRender(scenedata_t *data) {
if(!mapIsLoaded()) return;
// Look at target.
vec3 cameraTarget;
switch(RPG_CAMERA.mode) {
@@ -166,6 +168,8 @@ void sceneMapRenderEntity(entity_t *entity) {
}
void sceneMapRenderMap() {
assertTrue(mapIsLoaded(), "No map loaded to render");
// For each chunk.
for(uint32_t i = 0; i < MAP_CHUNK_COUNT; i++) {
chunk_t *chunk = MAP.chunkOrder[i];

View File

@@ -10,6 +10,8 @@
#include "assert/assert.h"
#include "display/framebuffer.h"
#include "util/string.h"
#include "asset/asset.h"
#include "script/scriptmanager.h"
scenemanager_t SCENE_MANAGER;
@@ -60,9 +62,20 @@ errorret_t sceneManagerSetScene(scene_t *scene) {
SCENE_MANAGER.current = scene;
if(scene && scene->init) {
if(scene && (scene->flags & SCENE_FLAG_INITIALIZED) == 0) {
scene->flags |= SCENE_FLAG_INITIALIZED;
errorChain(scene->init(&SCENE_MANAGER.sceneData));
if(scene->init) errorChain(scene->init(&SCENE_MANAGER.sceneData));
// Execute scene script if it exists
char_t buffer[256];
snprintf(buffer, sizeof(buffer), "scene/%s.dsf", scene->name);
if(assetFileExists(buffer)) {
scriptcontext_t ctx;
scriptContextInit(&ctx);
errorChain(scriptContextExecFile(&ctx, buffer));
scriptContextDispose(&ctx);
}
}
errorOk();