From b06099d11eaa41ead47d24bd9d2f8d40f66cd955 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Sun, 7 Nov 2021 11:05:55 -0800 Subject: [PATCH] Fixed assets not loading. --- src/file/asset.c | 31 +++++++++++++++---------------- src/file/asset.h | 2 +- src/file/assetmanager.c | 17 ++++++++++++++++- src/file/gui.c | 12 ------------ src/file/gui.h | 14 -------------- src/game/dawn/dawngame.c | 4 ++-- src/game/sandbox/game.c | 2 +- src/script/api/asset.c | 19 ------------------- 8 files changed, 35 insertions(+), 66 deletions(-) delete mode 100644 src/file/gui.c delete mode 100644 src/file/gui.h diff --git a/src/file/asset.c b/src/file/asset.c index a413cf4c..01a962d1 100644 --- a/src/file/asset.c +++ b/src/file/asset.c @@ -59,24 +59,22 @@ char * assetStringLoad(char *assetName) { assetbuffer_t * assetBufferOpen(char *assetName) { // Get the directory based on the raw input by creating a new string. - FILE *fptr; - size_t lenAsset = strlen(assetName);// Get the length of asset - size_t lenPrefix = strlen(ASSET_PREFIX);// Get the length of the prefix - - // Create str to house both the prefix and asset, and null terminator - char *joined = malloc(lenAsset + lenPrefix + 1); - if(joined == NULL) return NULL;// Mem okay? + FILE *fptr; + char filename[512]; - joined[0] = '\0';//Start at null - strcat(joined, ASSET_PREFIX);//Add prefix - strcat(joined, assetName);//Add body + // Prep filename + filename[0] = '\0';//Start at null + strcat(filename, ASSET_PREFIX);//Add prefix + strcat(filename, assetName);//Add body - printf("Opening up %s\n", joined); + printf("Opening up %s\n", filename); // Open the file pointer now. - fptr = fopen(joined, "rb"); - free(joined);// Free the string we just created - if(!fptr) return NULL;// File available? + fptr = fopen(filename, "rb"); + if(fptr == NULL) { + printf("Error opening %s: %s\n", filename, strerror(errno)); + return NULL;// File available? + } return (assetbuffer_t *)fptr; } @@ -89,14 +87,15 @@ int32_t assetBufferRead(assetbuffer_t *buffer, char *data, size_t size) { } int32_t assetBufferEnd(assetbuffer_t *buffer) { - return feof((FILE *)buffer); + // return feof((FILE *)buffer); + return fseek((FILE *)buffer, 0, SEEK_END);// Seek to the end } int32_t assetBufferStart(assetbuffer_t *buffer) { return fseek((FILE *)buffer, 0, SEEK_SET); } -int32_t assetBufferSkip(assetbuffer_t *buffer, size_t n) { +int32_t assetBufferSkip(assetbuffer_t *buffer, long n) { return fseek((FILE *)buffer, n, SEEK_CUR); } diff --git a/src/file/asset.h b/src/file/asset.h index 2c9fabce..6b4f54b6 100644 --- a/src/file/asset.h +++ b/src/file/asset.h @@ -81,7 +81,7 @@ int32_t assetBufferStart(assetbuffer_t *buffer); * @param n Count of bytes to skip. * @return 0 if successful, otherwise unsuccessful. */ -int32_t assetBufferSkip(assetbuffer_t *buffer, size_t n); +int32_t assetBufferSkip(assetbuffer_t *buffer, long n); /** * Retreive the current byte position within the asset that the head is at. diff --git a/src/file/assetmanager.c b/src/file/assetmanager.c index d4f8ebdc..7683ced5 100644 --- a/src/file/assetmanager.c +++ b/src/file/assetmanager.c @@ -346,11 +346,26 @@ bool _assetManagerLoaderTextureScaleAsync(assetmanageritem_t *item) { char buffer[128]; scaledtexture_t *st; scaledtexturescale_t *sts; + size_t length; + st = item->data.scaleTexture.scaledTexture; sts = st->scales + item->data.scaleTexture.scale; + // Get filename sprintf(buffer, "%s/%s_%i.texture", st->path, st->file, sts->scale); - item->data.scaleTexture.data = (pixel_t *)assetRawLoad(buffer); + + // Create some space + length = assetRawLoad(buffer, NULL); + if(length == 0) return false; + item->data.scaleTexture.data = malloc(sizeof(pixel_t) * length); + + // Load + length = assetRawLoad(buffer, (uint8_t *)item->data.scaleTexture.data); + if(length == 0) { + free(item->data.scaleTexture.data); + return false; + } + return true; } diff --git a/src/file/gui.c b/src/file/gui.c deleted file mode 100644 index 965fa8c0..00000000 --- a/src/file/gui.c +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright (c) 2021 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ - -#include "gui.h" - -void guiLoad() { - -} \ No newline at end of file diff --git a/src/file/gui.h b/src/file/gui.h deleted file mode 100644 index 4a5c6b91..00000000 --- a/src/file/gui.h +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) 2021 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ - -#pragma once -#include "../libs.h" -#include "asset.h" -#include "csv.h" -#include "xml.h" - -void guiLoad(); diff --git a/src/game/dawn/dawngame.c b/src/game/dawn/dawngame.c index d5fb64d6..95b22983 100644 --- a/src/game/dawn/dawngame.c +++ b/src/game/dawn/dawngame.c @@ -24,8 +24,8 @@ void _renderTest( bool dawnGameInit(dawngame_t *game) { renderListInit(&game->renderList, 512, 512); - assetShaderLoad(&shader, "shaders/textured.vert", "shaders/textured.frag"); - assetTextureLoad(&texture, "test_texture.png"); + // assetShaderLoad(&shader, "shaders/textured.vert", "shaders/textured.frag"); + // assetTextureLoad(&texture, "test_texture.png"); cubeInit(&cube, 1, 1, 1); items[itemCount++].onRender = &_renderTest; diff --git a/src/game/sandbox/game.c b/src/game/sandbox/game.c index 9f4fd32b..f4181ae9 100644 --- a/src/game/sandbox/game.c +++ b/src/game/sandbox/game.c @@ -31,10 +31,10 @@ bool sandboxGameInit(sandboxgame_t *game) { void sandboxGameUpdate(sandboxgame_t *game) { camera_t camera; float n = assetManagerProgressGet(&game->manager); - printf("Loading %.2f\n", n); if(n < 1.0f) { assetManagerUpdate(&game->manager); + printf("Loading %.2f\n", n); return; } diff --git a/src/script/api/asset.c b/src/script/api/asset.c index 4984d99b..04babf13 100644 --- a/src/script/api/asset.c +++ b/src/script/api/asset.c @@ -7,24 +7,5 @@ #include "asset.h" -scripterreturn_t _scriptApiShaderLoad(scriptercontext_t *ctx) { - assetShaderLoad( - duk_to_pointer(ctx, 0), - duk_to_string(ctx, 1), - duk_to_string(ctx, 2) - ); - return 0; -} - -scripterreturn_t _scriptApiTextureLoad(scriptercontext_t *ctx) { - assetTextureLoad( - duk_to_pointer(ctx, 0), - duk_to_string(ctx, 1) - ); - return 0; -} - void scriptsApiAsset(scripter_t *s) { - scripterDefineMethod(s, "assetShaderLoad", 3, &_scriptApiShaderLoad); - scripterDefineMethod(s, "assetTextureLoad", 2, &_scriptApiTextureLoad); } \ No newline at end of file