raylua v3.0b 😎
Add support of asset loading from payload. (filesystem override) Update raylib.
This commit is contained in:
parent
0066987f84
commit
3d7a4ceaf0
2
raylib
2
raylib
@ -1 +1 @@
|
|||||||
Subproject commit 62b7064e903fa04a403282ff2af55856da3e037d
|
Subproject commit 91e36777625b6d808e31fc2eb46a5519054bd801
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
local load = loadstring
|
local load = loadstring
|
||||||
|
|
||||||
raylua.version = "v3.0a"
|
raylua.version = "v3.0b"
|
||||||
|
|
||||||
function raylua.repl()
|
function raylua.repl()
|
||||||
print("> raylua " .. raylua.version .. " <")
|
print("> raylua " .. raylua.version .. " <")
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
#include <lualib.h>
|
#include <lualib.h>
|
||||||
#include <lauxlib.h>
|
#include <lauxlib.h>
|
||||||
|
|
||||||
|
#include <raylib.h>
|
||||||
|
|
||||||
#include "raylua.h"
|
#include "raylua.h"
|
||||||
#include "lib/miniz.h"
|
#include "lib/miniz.h"
|
||||||
|
|
||||||
@ -51,13 +53,12 @@ int raylua_loadfile(lua_State *L)
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t size = stat.m_uncomp_size;
|
size_t size = stat.m_uncomp_size;
|
||||||
char *buffer = malloc(size + 1);
|
char *buffer = malloc(size);
|
||||||
if (buffer == NULL) {
|
if (buffer == NULL) {
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
lua_pushfstring(L, "%s: Can't allocate file buffer.", path);
|
lua_pushfstring(L, "%s: Can't allocate file buffer.", path);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
buffer[size] = '\0';
|
|
||||||
|
|
||||||
mz_zip_reader_extract_to_mem(&zip_file, index, buffer, size, 0);
|
mz_zip_reader_extract_to_mem(&zip_file, index, buffer, size, 0);
|
||||||
|
|
||||||
@ -66,6 +67,60 @@ int raylua_loadfile(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned char *raylua_loadFileData(const char *path, unsigned int *out_size)
|
||||||
|
{
|
||||||
|
int index = mz_zip_reader_locate_file(&zip_file, path, NULL, 0);
|
||||||
|
if (index == -1) {
|
||||||
|
printf("RAYLUA: WARN: File not found in payload : '%s'", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mz_zip_archive_file_stat stat;
|
||||||
|
if (!mz_zip_reader_file_stat(&zip_file, index, &stat)) {
|
||||||
|
printf("RAYLUA: WARN: Can't get file information of '%s' in payload.", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t size = stat.m_uncomp_size;
|
||||||
|
unsigned char *buffer = RL_MALLOC(size);
|
||||||
|
if (buffer == NULL) {
|
||||||
|
printf("RAYLUA: WARN: Can't allocate file buffer for '%s'.", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mz_zip_reader_extract_to_mem(&zip_file, index, buffer, size, 0);
|
||||||
|
|
||||||
|
*out_size = size;
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *raylua_loadFileText(const char *path)
|
||||||
|
{
|
||||||
|
int index = mz_zip_reader_locate_file(&zip_file, path, NULL, 0);
|
||||||
|
if (index == -1) {
|
||||||
|
printf("RAYLUA: WARN: File not found in payload : '%s'", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mz_zip_archive_file_stat stat;
|
||||||
|
if (!mz_zip_reader_file_stat(&zip_file, index, &stat)) {
|
||||||
|
printf("RAYLUA: WARN: Can't get file information of '%s' in payload.", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t size = stat.m_uncomp_size;
|
||||||
|
char *buffer = RL_MALLOC(size + 1);
|
||||||
|
if (buffer == NULL) {
|
||||||
|
printf("RAYLUA: WARN: Can't allocate file buffer for '%s'.", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer[size] = '\0';
|
||||||
|
|
||||||
|
mz_zip_reader_extract_to_mem(&zip_file, index, buffer, size, 0);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
static bool raylua_init_payload(const char *path)
|
static bool raylua_init_payload(const char *path)
|
||||||
{
|
{
|
||||||
mz_zip_zero_struct(&zip_file);
|
mz_zip_zero_struct(&zip_file);
|
||||||
@ -109,6 +164,11 @@ int main(int argc, const char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
SetFilesystemOverride((FilesystemOverride){
|
||||||
|
.loadFileData = &raylua_loadFileData,
|
||||||
|
.loadFileText = &raylua_loadFileText,
|
||||||
|
});
|
||||||
|
|
||||||
if (!raylua_init_payload(path)) {
|
if (!raylua_init_payload(path)) {
|
||||||
#ifdef RAYLUA_NO_BUILDER
|
#ifdef RAYLUA_NO_BUILDER
|
||||||
puts("RAYLUA: No payload.");
|
puts("RAYLUA: No payload.");
|
||||||
|
@ -181,7 +181,6 @@ bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius);
|
|||||||
bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3);
|
bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3);
|
||||||
Image LoadImage(const char *fileName);
|
Image LoadImage(const char *fileName);
|
||||||
Image LoadImageEx(Color *pixels, int width, int height);
|
Image LoadImageEx(Color *pixels, int width, int height);
|
||||||
Image LoadImagePro(void *data, int width, int height, int format);
|
|
||||||
Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize);
|
Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize);
|
||||||
void ExportImage(Image image, const char *fileName);
|
void ExportImage(Image image, const char *fileName);
|
||||||
void ExportImageAsCode(Image image, const char *fileName);
|
void ExportImageAsCode(Image image, const char *fileName);
|
||||||
@ -228,8 +227,8 @@ void ImageDrawCircle(Image *dst, int centerX, int centerY, int radius, Color col
|
|||||||
void ImageDrawCircleV(Image *dst, Vector2 center, int radius, Color color);
|
void ImageDrawCircleV(Image *dst, Vector2 center, int radius, Color color);
|
||||||
void ImageDrawLine(Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color);
|
void ImageDrawLine(Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color);
|
||||||
void ImageDrawLineV(Image *dst, Vector2 start, Vector2 end, Color color);
|
void ImageDrawLineV(Image *dst, Vector2 start, Vector2 end, Color color);
|
||||||
void ImageDrawText(Image *dst, Vector2 position, const char *text, int fontSize, Color color);
|
void ImageDrawText(Image *dst, const char *text, int posX, int posY, int fontSize, Color color);
|
||||||
void ImageDrawTextEx(Image *dst, Vector2 position, Font font, const char *text, float fontSize, float spacing, Color color);
|
void ImageDrawTextEx(Image *dst, Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint);
|
||||||
void ImageFlipVertical(Image *image);
|
void ImageFlipVertical(Image *image);
|
||||||
void ImageFlipHorizontal(Image *image);
|
void ImageFlipHorizontal(Image *image);
|
||||||
void ImageRotateCW(Image *image);
|
void ImageRotateCW(Image *image);
|
||||||
|
Loading…
Reference in New Issue
Block a user