This commit is contained in:
2024-09-11 22:49:07 +01:00
parent 6e289f79fd
commit 19ae9a2031
6 changed files with 137 additions and 59 deletions

View File

@@ -64,6 +64,28 @@ inline uint32 safeTruncateUInt64(uint64 val) {
return (uint32)val;
}
// === Platform to game services ===
#if HANDMADE_INTERNAL
struct DebugReadFileResult {
uint32 contentsSize;
void *contents;
};
#define DEBUG_PLATFORM_READ_ENTIRE_FILE(name) DebugReadFileResult name(char *filename)
typedef DEBUG_PLATFORM_READ_ENTIRE_FILE(DebugPlatformReadEntireFileFn);
#define DEBUG_PLATFORM_FREE_FILE_MEMORY(name) void name(void *fileMemory)
typedef DEBUG_PLATFORM_FREE_FILE_MEMORY(DebugPlatformFreeFileMemoryFn);
#define DEBUG_PLATFORM_WRITE_ENTIRE_FILE(name) bool32 name(char *filename, uint32 memorySize, void *memory)
typedef DEBUG_PLATFORM_WRITE_ENTIRE_FILE(DebugPlatformWriteEntireFileFn);
#define DEBUG_PLATFORM_PRINTF(name) void name(wchar_t* format, ...)
typedef DEBUG_PLATFORM_PRINTF(DebugPrintfFn);
#endif
// Game to platform layer services
struct GameSoundOutputBuffer {
int samplesPerSecond;
@@ -111,10 +133,17 @@ struct GameInput {
struct GameMemory {
bool32 isInitialised;
uint64 permanentStorageSize;
void *permanentStorage; // required to be initialised to zero at startup
uint64 transientStorageSize;
void *transientStorage; // required to be initialised to zero at startup
DebugPlatformReadEntireFileFn *debugReadEntireFile;
DebugPlatformFreeFileMemoryFn *debugFreeFileMemory;
DebugPlatformWriteEntireFileFn *debugWriteEntireFile;
DebugPrintfFn *debug_printf;
};
struct GameState {
@@ -125,22 +154,11 @@ struct GameState {
};
// === Game to platform services ===
internal void gameUpdateAndRender(GameMemory *memory, GameInput *input, GameOffscreenBuffer *videoBuf);
internal void gameGetSoundSamples(GameMemory *memory, GameSoundOutputBuffer *soundBuf);
// === Platform to game services ===
#if HANDMADE_INTERNAL
struct DebugReadFileResult {
uint32 contentsSize;
void *contents;
};
DebugReadFileResult DEBUG_platformReadEntireFile(char *filename);
void DEBUG_platformFreeFileMemory(void *memory);
bool32 DEBUG_platformWriteEntireFile(char *filename, uint32 memorySize, void *memory);
void debug_printf(wchar_t* format, ...);
#endif
#define GAME_UPDATE_AND_RENDER(name) void name(GameMemory *memory, GameOffscreenBuffer *videoBuf, GameInput *input)
typedef GAME_UPDATE_AND_RENDER(GameUpdateAndRenderFn);
GAME_UPDATE_AND_RENDER(gameUpdateAndRenderStub) {}
#define GAME_GET_SOUND_SAMPLES(name) void name(GameMemory *memory, GameSoundOutputBuffer *soundBuf)
typedef GAME_GET_SOUND_SAMPLES(GameGetSoundSamplesFn);
GAME_GET_SOUND_SAMPLES(gameGetSoundSamplesStub) {}