Prepping map stuff
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include "type/assetpaletteimage.h"
|
||||
#include "type/assetalphaimage.h"
|
||||
#include "type/assetlanguage.h"
|
||||
#include "type/assetmap.h"
|
||||
#include <zip.h>
|
||||
|
||||
typedef enum {
|
||||
@@ -17,6 +18,7 @@ typedef enum {
|
||||
ASSET_TYPE_PALETTE_IMAGE,
|
||||
ASSET_TYPE_ALPHA_IMAGE,
|
||||
ASSET_TYPE_LANGUAGE,
|
||||
ASSET_TYPE_MAP,
|
||||
|
||||
ASSET_TYPE_COUNT,
|
||||
} assettype_t;
|
||||
@@ -64,5 +66,12 @@ static const assettypedef_t ASSET_TYPE_DEFINITIONS[ASSET_TYPE_COUNT] = {
|
||||
.header = "DLF",
|
||||
.loadStrategy = ASSET_LOAD_STRAT_CUSTOM,
|
||||
.custom = assetLanguageHandler
|
||||
},
|
||||
|
||||
[ASSET_TYPE_MAP] = {
|
||||
.header = "DMF",
|
||||
.loadStrategy = ASSET_LOAD_STRAT_ENTIRE,
|
||||
.dataSize = sizeof(assetmap_t),
|
||||
.entire = assetMapLoad
|
||||
}
|
||||
};
|
||||
@@ -9,4 +9,5 @@ target_sources(${DUSK_TARGET_NAME}
|
||||
assetalphaimage.c
|
||||
assetpaletteimage.c
|
||||
assetlanguage.c
|
||||
assetmap.c
|
||||
)
|
||||
33
src/asset/type/assetmap.c
Normal file
33
src/asset/type/assetmap.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include "asset/asset.h"
|
||||
#include "assert/assert.h"
|
||||
#include "util/memory.h"
|
||||
|
||||
errorret_t assetMapLoad(void *data, void *output) {
|
||||
assertNotNull(data, "Data cannot be NULL");
|
||||
assertNotNull(output, "Output cannot be NULL");
|
||||
|
||||
assetmap_t *mapData = (assetmap_t *)data;
|
||||
assetmapmodel_t *mesh = (assetmapmodel_t *)output;
|
||||
|
||||
memoryCopy(
|
||||
mesh,
|
||||
&mapData->models[0],
|
||||
sizeof(assetmapmodel_t)
|
||||
);
|
||||
|
||||
meshInit(
|
||||
&mesh->mesh,
|
||||
MESH_PRIMITIVE_TRIANGLES,
|
||||
mesh->vertexCount,
|
||||
mesh->vertices
|
||||
);
|
||||
|
||||
errorOk();
|
||||
}
|
||||
35
src/asset/type/assetmap.h
Normal file
35
src/asset/type/assetmap.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "error/error.h"
|
||||
#include "rpg/world/map.h"
|
||||
#include "display/mesh/mesh.h"
|
||||
|
||||
typedef struct {
|
||||
uint32_t vertexCount;
|
||||
meshvertex_t vertices[36];
|
||||
mesh_t mesh;
|
||||
} assetmapmodel_t;
|
||||
|
||||
#pragma pack(push, 1)
|
||||
typedef struct {
|
||||
uint32_t tileCount;
|
||||
uint8_t modelCount;
|
||||
tile_t tiles[CHUNK_TILE_COUNT];
|
||||
assetmapmodel_t models[1];
|
||||
} assetmap_t;
|
||||
#pragma pack(pop)
|
||||
|
||||
/**
|
||||
* Loads a map asset from the given data pointer into the output map structure.
|
||||
*
|
||||
* @param data Pointer to the raw assetmap_t data.
|
||||
* @param output Pointer to the map_t to load the map into.
|
||||
* @return An error code.
|
||||
*/
|
||||
errorret_t assetMapLoad(void *data, void *output);
|
||||
Reference in New Issue
Block a user