archivemuh
This commit is contained in:
13
archive/dusksdl2/display/scene/CMakeLists.txt
Normal file
13
archive/dusksdl2/display/scene/CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
# Copyright (c) 2025 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
# Sources
|
||||
target_sources(${DUSK_TARGET_NAME}
|
||||
PRIVATE
|
||||
renderscene.c
|
||||
)
|
||||
|
||||
# Subdirs
|
||||
# add_subdirectory(draw)
|
42
archive/dusksdl2/display/scene/renderscene.c
Normal file
42
archive/dusksdl2/display/scene/renderscene.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include "renderscene.h"
|
||||
#include "display/overworld/renderoverworld.h"
|
||||
|
||||
renderscenecallback_t RENDER_SCENE_CALLBACKS[SCENE_COUNT] = {
|
||||
[SCENE_INITIAL] = {
|
||||
.init = NULL,
|
||||
.draw = NULL,
|
||||
.dispose = NULL
|
||||
},
|
||||
|
||||
[SCENE_OVERWORLD] = {
|
||||
.init = renderOverworldInit,
|
||||
.draw = renderOverworldDraw,
|
||||
.dispose = renderOverworldDispose
|
||||
},
|
||||
};
|
||||
|
||||
void renderSceneInit(void) {
|
||||
for(int32_t i = 0; i < SCENE_COUNT; i++) {
|
||||
if(!RENDER_SCENE_CALLBACKS[i].init) continue;
|
||||
RENDER_SCENE_CALLBACKS[i].init();
|
||||
}
|
||||
}
|
||||
|
||||
void renderSceneDraw(void) {
|
||||
if(!RENDER_SCENE_CALLBACKS[SCENE_CURRENT].draw) return;
|
||||
RENDER_SCENE_CALLBACKS[SCENE_CURRENT].draw();
|
||||
}
|
||||
|
||||
void renderSceneDispose(void) {
|
||||
for(int32_t i = 0; i < SCENE_COUNT; i++) {
|
||||
if(!RENDER_SCENE_CALLBACKS[i].dispose) continue;
|
||||
RENDER_SCENE_CALLBACKS[i].dispose();
|
||||
}
|
||||
}
|
32
archive/dusksdl2/display/scene/renderscene.h
Normal file
32
archive/dusksdl2/display/scene/renderscene.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "display/scene.h"
|
||||
|
||||
typedef struct {
|
||||
void (*init)(void);
|
||||
void (*draw)(void);
|
||||
void (*dispose)(void);
|
||||
} renderscenecallback_t;
|
||||
|
||||
extern renderscenecallback_t RENDER_SCENE_CALLBACKS[SCENE_COUNT];
|
||||
|
||||
/**
|
||||
* Initializes the render scene module.
|
||||
*/
|
||||
void renderSceneInit(void);
|
||||
|
||||
/**
|
||||
* Draws the current scene.
|
||||
*/
|
||||
void renderSceneDraw(void);
|
||||
|
||||
/**
|
||||
* Disposes of the render scene module.
|
||||
*/
|
||||
void renderSceneDispose(void);
|
Reference in New Issue
Block a user