/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "map.h" #include "assert/assert.h" #include "util/memory.h" shaderbuffer_t MAP_BUFFER; mapdata_t MAP_DATA; void mapInit() { memoryZero(&MAP_DATA, sizeof(mapdata_t)); shaderBufferInit(&MAP_BUFFER, sizeof(mapdata_t)); assertTrue( sizeof(MAP_DATA.tileIds) == sizeof(OVERWORLD.tileIds), "Map shader tile data and Overworld tile data are not the same size." ); } void mapUpdate() { // Copy tile ids. memoryCopyRangeSafe( MAP_DATA.tileIds, OVERWORLD.tileIds, &OVERWORLD.tileIds[ OVERWORLD.mapWidth * OVERWORLD.mapHeight * OVERWORLD.mapLayerCount ], sizeof(MAP_DATA.tileIds) ); // Copy map size. memoryCopyRangeSafe( &MAP_DATA.mapSize, &OVERWORLD.mapWidth, &OVERWORLD.mapLayerCount + sizeof(uint8_t), sizeof(MAP_DATA.mapSize) ); shaderBufferBind(&MAP_BUFFER); shaderBufferSetData(&MAP_BUFFER, &MAP_DATA); } void mapDispose() { shaderBufferDispose(&MAP_BUFFER); }