stuff
This commit is contained in:
parent
2dbfa1b99e
commit
b1230534c5
22 changed files with 547 additions and 429 deletions
20
alyson/src/alargs.c
Normal file
20
alyson/src/alargs.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
#include <alargs.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
* ALArgs
|
||||
*/
|
||||
ALArgs al_args_create(int argc, char** argv)
|
||||
{
|
||||
ALArgs args = malloc(sizeof(alyson_args_t));
|
||||
args->argc = argc;
|
||||
args->argv = argv;
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
void al_args_destroy(ALArgs args)
|
||||
{
|
||||
free(args);
|
||||
}
|
|
@ -1,287 +1,8 @@
|
|||
#include <alyson.h>
|
||||
|
||||
|
||||
#include <raylib.h>
|
||||
#include <raymath.h>
|
||||
|
||||
#include <rlyson.h>
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
/*
|
||||
* ALArgs
|
||||
*/
|
||||
ALArgs al_args_create(int argc, char** argv)
|
||||
{
|
||||
ALArgs args = malloc(sizeof(alyson_args_t));
|
||||
args->argc = argc;
|
||||
args->argv = argv;
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
void al_args_destroy(ALArgs args)
|
||||
{
|
||||
free(args);
|
||||
}
|
||||
|
||||
/*
|
||||
* ALResource
|
||||
*/
|
||||
|
||||
|
||||
ALPath al_demangle_path(const char* path)
|
||||
{
|
||||
/*
|
||||
* mangled path format:
|
||||
* <type>://(<group>/)<name>:<path>
|
||||
*
|
||||
* e.g. res://test:/tests/test.png
|
||||
* type: "res"
|
||||
* group: ""
|
||||
* name: "test"
|
||||
* path: "/tests/test.png"
|
||||
*
|
||||
*
|
||||
* demangled path format:
|
||||
* ./<type_path>/<demangled_path>
|
||||
*
|
||||
* e.g.
|
||||
* type_path: res -> ./assets/
|
||||
* demangled_path: tests/test.png
|
||||
* -> ./assets/tests/test.png
|
||||
*
|
||||
* type max length: 4
|
||||
*
|
||||
* smallest possible path: ://:a (5 chars)
|
||||
*
|
||||
* groups max length: 26
|
||||
* groups:
|
||||
* e.g. res://image/test:/tests/test.png
|
||||
* type: "res"
|
||||
* group: "image"
|
||||
* name: "test"
|
||||
* path: "/tests/test.png"
|
||||
* -> ./assets/tests/test.png
|
||||
*/
|
||||
const ALPath res = malloc(sizeof(alyson_path_t));
|
||||
res->type[0] = '\0';
|
||||
res->group[0] = '\0';
|
||||
res->name = NULL;
|
||||
res->path = NULL;
|
||||
|
||||
const usx len = strlen(path);
|
||||
usx back_ptr = 0;
|
||||
|
||||
if (len < 5)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; too short\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// type
|
||||
for (usx i = 0; i < 4; i++)
|
||||
{
|
||||
if (path[i] == ':')
|
||||
{
|
||||
res->type[i] = '\0';
|
||||
back_ptr = i + 1;
|
||||
break;
|
||||
}
|
||||
res->type[i] = path[i];
|
||||
}
|
||||
if (back_ptr == 0)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; type not found\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (path[back_ptr] != '/' || path[back_ptr+1] != '/') {
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; type not followed by '://'\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
back_ptr += 2;
|
||||
|
||||
// group + name
|
||||
for (usx i = back_ptr; i < len; i++)
|
||||
{
|
||||
if (path[i] == '/')
|
||||
{
|
||||
if (res->group[0] != '\0')
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; group already set\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
if (back_ptr == i) break;
|
||||
strncpy(res->group, (char*)path + back_ptr, i - back_ptr);
|
||||
res->group[i-back_ptr] = '\0';
|
||||
back_ptr = i + 1;
|
||||
}
|
||||
|
||||
if (path[i] == ':')
|
||||
{
|
||||
res->name = malloc(sizeof(char) * (i - back_ptr + 1));
|
||||
strncpy(res->name, (char*)path + back_ptr, i - back_ptr);
|
||||
res->name[i - back_ptr] = '\0';
|
||||
back_ptr = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// path
|
||||
if (back_ptr == len)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; path not found\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
res->path = malloc(sizeof(char) * (len - back_ptr + 1));
|
||||
strncpy(res->path, (char*)path + back_ptr, len - back_ptr);
|
||||
res->path[len - back_ptr] = '\0';
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
char* al_mangle_path(const ALPath path)
|
||||
{
|
||||
char* str = malloc(sizeof(char) * (
|
||||
strlen(path->type) +
|
||||
strlen(path->group) +
|
||||
strlen(path->name) +
|
||||
strlen(path->path) +
|
||||
5 ));
|
||||
if (path->group[0] != '\0')
|
||||
{
|
||||
sprintf(str, "%s://%s/%s:%s", path->type, path->group, path->name, path->path);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(str, "%s://%s:%s", path->type, path->name, path->path);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
ALPath al_create_path(const char* type, const char* path, const char* name, const char* group)
|
||||
{
|
||||
const ALPath res = malloc(sizeof(alyson_path_t));
|
||||
res->type[0] = '\0';
|
||||
res->name = NULL;
|
||||
res->path = NULL;
|
||||
|
||||
if (type != NULL)
|
||||
{
|
||||
if (strlen(type) > 4)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Type name too long: %s\n", type);
|
||||
return NULL;
|
||||
}
|
||||
strncpy(res->type, type, strlen(type));
|
||||
res->type[4] = '\0';
|
||||
}
|
||||
|
||||
if (path != NULL)
|
||||
{
|
||||
res->path = strdup(path);
|
||||
res->path[strlen(path)] = '\0';
|
||||
}
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
res->name = malloc(sizeof(char) * (strlen(name) + 1));
|
||||
strncpy(res->name, name, strlen(name));
|
||||
res->name[strlen(name)] = '\0';
|
||||
}
|
||||
|
||||
if (group != NULL)
|
||||
{
|
||||
if (strlen(group) > 26)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Group name too long: %s\n", group);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
strncpy(res->group, group, strlen(group));
|
||||
res->group[strlen(group)] = '\0';
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
void al_destroy_path(ALPath path)
|
||||
{
|
||||
if (path->name != NULL)
|
||||
{
|
||||
free(path->name);
|
||||
path->name = NULL;
|
||||
}
|
||||
if (path->path != NULL)
|
||||
{
|
||||
free(path->path);
|
||||
path->path = NULL;
|
||||
}
|
||||
free(path);
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALResource al_resource_create(ALPath path)
|
||||
{
|
||||
ALResource resource = malloc(sizeof(alyson_resource_t));
|
||||
resource->id = 0;
|
||||
memcpy(&resource->path, path, sizeof(alyson_path_t));
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
ALResource al_resource_create_from_file(char* name, char* path)
|
||||
{
|
||||
ALResource resource = malloc(sizeof(alyson_resource_t));
|
||||
resource->id = 0;
|
||||
|
||||
usx len = strlen(path);
|
||||
resource->path.path = malloc(sizeof(char) * (len + 1));
|
||||
memcpy(resource->path.path, path, sizeof(char) * len);
|
||||
resource->path.path[len] = '\0';
|
||||
|
||||
memcpy(&resource->path.type, "res", 4);
|
||||
resource->path.type[4] = '\0';
|
||||
|
||||
len = strlen(name);
|
||||
resource->path.name = malloc(sizeof(char) * len + 1);
|
||||
memcpy(resource->path.name, name, sizeof(char) * len);
|
||||
resource->path.name[len] = '\0';
|
||||
|
||||
memcpy(&resource->path.group, "runtime", 7);
|
||||
resource->path.group[7] = '\0';
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
void al_destroy_resource(ALResource resource)
|
||||
{
|
||||
if (resource->path.name != NULL)
|
||||
{
|
||||
free(resource->path.name);
|
||||
resource->path.name = NULL;
|
||||
}
|
||||
if (resource->path.path != NULL)
|
||||
{
|
||||
free(resource->path.path);
|
||||
resource->path.path = NULL;
|
||||
}
|
||||
|
||||
free(resource);
|
||||
resource = NULL;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
#include "raylib.h"
|
||||
#include "raymath.h"
|
||||
|
||||
SpriteAnimation CreateSpriteAnimation(Texture2D texture, Vector2 sprite_texture_dimentions, Vector2 sprite_size, float rotation, float scale, int frameCount) {
|
||||
SpriteAnimation CreateSpriteAnimation(Texture2D texture, Vector2 sprite_texture_dimentions, Vector2 sprite_size, float rotation, float scale, int frameCount, float speed)
|
||||
{
|
||||
SpriteAnimation spriteAnimation = malloc(sizeof(sprite_animation_t));
|
||||
spriteAnimation->texture = texture;
|
||||
spriteAnimation->dimentions = sprite_texture_dimentions;
|
||||
|
@ -15,7 +16,7 @@ SpriteAnimation CreateSpriteAnimation(Texture2D texture, Vector2 sprite_texture_
|
|||
spriteAnimation->frameCount = frameCount;
|
||||
spriteAnimation->currentFrame = 0;
|
||||
spriteAnimation->time = 0.f;
|
||||
spriteAnimation->speed = 1.f;
|
||||
spriteAnimation->speed = speed;
|
||||
|
||||
return spriteAnimation;
|
||||
}
|
||||
|
@ -55,4 +56,10 @@ void DrawSpriteAnimation(SpriteAnimation spriteAnimation, Vector2 position) {
|
|||
spriteAnimation->rotation,
|
||||
WHITE
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void DestroySpriteAnimation(SpriteAnimation spriteAnimation)
|
||||
{
|
||||
free(spriteAnimation);
|
||||
}
|
||||
|
||||
|
|
210
alyson/src/resources/alpath.c
Normal file
210
alyson/src/resources/alpath.c
Normal file
|
@ -0,0 +1,210 @@
|
|||
#include <resources/alpath.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
/*
|
||||
* mangled path format:
|
||||
* <type>://(<group>/)<name>:<path>
|
||||
*
|
||||
* e.g. res://test:/tests/test.png
|
||||
* type: "res"
|
||||
* group: ""
|
||||
* name: "test"
|
||||
* path: "/tests/test.png"
|
||||
*
|
||||
*
|
||||
* demangled path format:
|
||||
* ./<type_path>/<demangled_path>
|
||||
*
|
||||
* e.g.
|
||||
* type_path: res -> ./assets/
|
||||
* demangled_path: tests/test.png
|
||||
* -> ./assets/tests/test.png
|
||||
*
|
||||
* type max length: 4
|
||||
*
|
||||
* smallest possible path: ://:a (5 chars)
|
||||
*
|
||||
* groups max length: 26
|
||||
* groups:
|
||||
* e.g. res://image/test:/tests/test.png
|
||||
* type: "res"
|
||||
* group: "image"
|
||||
* name: "test"
|
||||
* path: "/tests/test.png"
|
||||
* -> ./assets/tests/test.png
|
||||
*/
|
||||
|
||||
|
||||
// Path
|
||||
|
||||
ALPath al_demangle_path(const char* path)
|
||||
{
|
||||
|
||||
const ALPath res = malloc(sizeof(alyson_path_t));
|
||||
res->type[0] = '\0';
|
||||
res->group[0] = '\0';
|
||||
res->name = NULL;
|
||||
res->path = NULL;
|
||||
|
||||
const usx len = strlen(path);
|
||||
usx back_ptr = 0;
|
||||
|
||||
if (len < 5)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; too short\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// type
|
||||
for (usx i = 0; i < sizeof(res->type); i++)
|
||||
{
|
||||
if (path[i] == ':')
|
||||
{
|
||||
res->type[i] = '\0';
|
||||
back_ptr = i + 1;
|
||||
break;
|
||||
}
|
||||
res->type[i] = path[i];
|
||||
}
|
||||
if (back_ptr == 0)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; type not found\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (path[back_ptr] != '/' || path[back_ptr+1] != '/') {
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; type not followed by '://'\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
back_ptr += 2;
|
||||
|
||||
// group + name
|
||||
for (usx i = back_ptr; i < len; i++)
|
||||
{
|
||||
if (path[i] == '/')
|
||||
{
|
||||
if (res->group[0] != '\0')
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; group already set\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
if (back_ptr == i) break;
|
||||
strncpy(res->group, (char*)path + back_ptr, i - back_ptr);
|
||||
res->group[i-back_ptr] = '\0';
|
||||
back_ptr = i + 1;
|
||||
}
|
||||
|
||||
if (path[i] == ':')
|
||||
{
|
||||
res->name = malloc(sizeof(char) * (i - back_ptr + 1));
|
||||
strncpy(res->name, (char*)path + back_ptr, i - back_ptr);
|
||||
res->name[i - back_ptr] = '\0';
|
||||
back_ptr = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// path
|
||||
if (back_ptr == len)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Invalid path: \"%s\"; path not found\n", path);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
res->path = malloc(sizeof(char) * (len - back_ptr + 1));
|
||||
strncpy(res->path, (char*)path + back_ptr, len - back_ptr);
|
||||
res->path[len - back_ptr] = '\0';
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
char* al_mangle_path(const ALPath path)
|
||||
{
|
||||
char* str = malloc(sizeof(char) * (
|
||||
strlen(path->type) +
|
||||
strlen(path->group) +
|
||||
strlen(path->name) +
|
||||
strlen(path->path) +
|
||||
5 ));
|
||||
if (path->group[0] != '\0')
|
||||
{
|
||||
sprintf(str, "%s://%s/%s:%s", path->type, path->group, path->name, path->path);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(str, "%s://%s:%s", path->type, path->name, path->path);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
ALPath al_create_path(const char* type, const char* path, const char* name, const char* group)
|
||||
{
|
||||
const ALPath res = malloc(sizeof(alyson_path_t));
|
||||
res->type[0] = '\0';
|
||||
res->name = NULL;
|
||||
res->path = NULL;
|
||||
|
||||
if (type != NULL)
|
||||
{
|
||||
if (strlen(type) > 4)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Type name too long: %s\n", type);
|
||||
return NULL;
|
||||
}
|
||||
strncpy(res->type, type, strlen(type));
|
||||
res->type[4] = '\0';
|
||||
}
|
||||
|
||||
if (path != NULL)
|
||||
{
|
||||
usx len = strlen(path);
|
||||
res->path = malloc(sizeof(char) * (len + 1));
|
||||
strncpy(res->path, path, len);
|
||||
res->path[len] = '\0';
|
||||
}
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
res->name = malloc(sizeof(char) * (strlen(name) + 1));
|
||||
strncpy(res->name, name, strlen(name));
|
||||
res->name[strlen(name)] = '\0';
|
||||
}
|
||||
|
||||
if (group != NULL)
|
||||
{
|
||||
if (strlen(group) > 26)
|
||||
{
|
||||
fprintf(stderr, "[ALResource] Group name too long: %s\n", group);
|
||||
al_destroy_path(res);
|
||||
return NULL;
|
||||
}
|
||||
strncpy(res->group, group, strlen(group));
|
||||
res->group[strlen(group)] = '\0';
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
void al_destroy_path(ALPath path)
|
||||
{
|
||||
if (path->name != NULL)
|
||||
{
|
||||
free(path->name);
|
||||
path->name = NULL;
|
||||
}
|
||||
if (path->path != NULL)
|
||||
{
|
||||
free(path->path);
|
||||
path->path = NULL;
|
||||
}
|
||||
free(path);
|
||||
path = NULL;
|
||||
}
|
54
alyson/src/resources/alresource.c
Normal file
54
alyson/src/resources/alresource.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <resources/alresource.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
ALResource al_resource_create(ALPath path)
|
||||
{
|
||||
ALResource resource = malloc(sizeof(alyson_resource_t));
|
||||
resource->id = 0;
|
||||
memcpy(&resource->path, path, sizeof(alyson_path_t));
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
ALResource al_resource_create_from_file(char* name, char* path)
|
||||
{
|
||||
ALResource resource = malloc(sizeof(alyson_resource_t));
|
||||
resource->id = 0;
|
||||
|
||||
usx len = strlen(path);
|
||||
resource->path.path = malloc(sizeof(char) * (len + 1));
|
||||
memcpy(resource->path.path, path, sizeof(char) * len);
|
||||
resource->path.path[len] = '\0';
|
||||
|
||||
memcpy(&resource->path.type, "res", 4);
|
||||
resource->path.type[4] = '\0';
|
||||
|
||||
len = strlen(name);
|
||||
resource->path.name = malloc(sizeof(char) * len + 1);
|
||||
memcpy(resource->path.name, name, sizeof(char) * len);
|
||||
resource->path.name[len] = '\0';
|
||||
|
||||
memcpy(&resource->path.group, "runtime", 7);
|
||||
resource->path.group[7] = '\0';
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
void al_destroy_resource(ALResource resource)
|
||||
{
|
||||
if (resource->path.name != NULL)
|
||||
{
|
||||
free(resource->path.name);
|
||||
resource->path.name = NULL;
|
||||
}
|
||||
if (resource->path.path != NULL)
|
||||
{
|
||||
free(resource->path.path);
|
||||
resource->path.path = NULL;
|
||||
}
|
||||
|
||||
free(resource);
|
||||
resource = NULL;
|
||||
}
|
0
alyson/src/resources/alresource_manager.c
Normal file
0
alyson/src/resources/alresource_manager.c
Normal file
|
@ -18,8 +18,6 @@ void DrawTextFull(
|
|||
{
|
||||
const Vector2 textSize = MeasureTextEx(font, text, fontSize, spacing);
|
||||
|
||||
DrawCircleV(origin, 10, RED);
|
||||
|
||||
const Vector2 pos = origin;
|
||||
origin = (Vector2){0,0};
|
||||
|
||||
|
@ -37,9 +35,6 @@ void DrawTextFull(
|
|||
}
|
||||
|
||||
origin.y += textSize.y / 2;
|
||||
|
||||
DrawCircleV(Vector2Add(origin, pos), 10, DARKGREEN);
|
||||
|
||||
SetTextLineSpacing((int)lineSpacing);
|
||||
|
||||
DrawTextPro(font, text, pos, origin, rotation, fontSize, spacing, tint);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue