feat: save world written
This commit is contained in:
@@ -75,6 +75,7 @@ int main(int argc, char **argv)
|
|||||||
game->draw.camera = camera;
|
game->draw.camera = camera;
|
||||||
World *world = M_ArenaPush(arena, World);
|
World *world = M_ArenaPush(arena, World);
|
||||||
game->world = world;
|
game->world = world;
|
||||||
|
world->arena = arena;
|
||||||
world->random = Random_Seed(29237489723847);
|
world->random = Random_Seed(29237489723847);
|
||||||
world->npcCount = 2;
|
world->npcCount = 2;
|
||||||
for(U32 i = 0; i < world->npcCount; i++) {
|
for(U32 i = 0; i < world->npcCount; i++) {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
#include "../player.h"
|
#include "../player.h"
|
||||||
#include "../aabb.h"
|
#include "../aabb.h"
|
||||||
#include <SDL3/SDL_events.h>
|
#include <SDL3/SDL_events.h>
|
||||||
|
#include <SDL3/SDL_keycode.h>
|
||||||
|
#include <SDL3/SDL_oldnames.h>
|
||||||
|
|
||||||
void UpdateWorld(F32 delta, World *world)
|
void UpdateWorld(F32 delta, World *world)
|
||||||
{
|
{
|
||||||
@@ -30,6 +32,9 @@ void UpdateNPCs(F32 delta, World *world)
|
|||||||
void ProcessEvents(SDL_Event *event, World *world)
|
void ProcessEvents(SDL_Event *event, World *world)
|
||||||
{
|
{
|
||||||
PlayerInput(event, &world->player);
|
PlayerInput(event, &world->player);
|
||||||
|
if(event->type == SDL_EVENT_KEY_DOWN && event->key.key == SDLK_F5){
|
||||||
|
SaveWorld(world->arena, world);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderWorld(World *world, D_Context *draw) {
|
void RenderWorld(World *world, D_Context *draw) {
|
||||||
@@ -69,3 +74,16 @@ void G_WorldDraw(G_State *game, World *world) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SaveWorld(M_Arena *arena, World *world) {
|
||||||
|
printf("Saving world\n");
|
||||||
|
World *saveWorld = M_ArenaPush(arena, World);
|
||||||
|
NavMesh *saveNavMesh = M_ArenaPush(arena, NavMesh);
|
||||||
|
M_CopySize(saveWorld, world, sizeof(World));
|
||||||
|
M_CopySize(saveNavMesh, world->navMesh, sizeof(NavMesh));
|
||||||
|
OS_Handle file =FS_FileOpen(S("world.sgdat"), FS_ACCESS_WRITE);
|
||||||
|
FS_FileWrite(file, saveWorld, sizeof(World)+sizeof(NavMesh), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
World *load(Str8 levelData) {
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ typedef struct World World;
|
|||||||
#include "bandit.h"
|
#include "bandit.h"
|
||||||
|
|
||||||
struct World {
|
struct World {
|
||||||
|
//// Utils
|
||||||
|
M_Arena *arena;
|
||||||
//// Static stuff
|
//// Static stuff
|
||||||
NavMesh *navMesh;
|
NavMesh *navMesh;
|
||||||
Random random;
|
Random random;
|
||||||
@@ -43,4 +45,7 @@ function void UpdateNPCs(F32 delta, World *world);
|
|||||||
function void UpdateNPC(F32 delta, NPC *npc, World *world);
|
function void UpdateNPC(F32 delta, NPC *npc, World *world);
|
||||||
function void UpdateBandit(F32 delta, Bandit *bandit, World *world);
|
function void UpdateBandit(F32 delta, Bandit *bandit, World *world);
|
||||||
|
|
||||||
|
function World *LoadWorld(Str8 levelData);
|
||||||
|
function void SaveWorld(M_Arena *arena, World *world);
|
||||||
|
|
||||||
#endif // LD_GAME_WORLD_H_
|
#endif // LD_GAME_WORLD_H_
|
||||||
|
|||||||
Reference in New Issue
Block a user