aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornathansmith117 <nathansmith117@sdf.org>2025-02-03 16:03:37 +0000
committernathansmith117 <nathansmith117@sdf.org>2025-02-03 16:03:37 +0000
commit7ecace4284edc98d48e12348372c2c2af4342ad8 (patch)
tree21d2b51e676047d218e6a73d0ff813dfa25b2927
parent69733d1f2171978e3d15078d24323af39d54c518 (diff)
downloadsldj-7ecace4284edc98d48e12348372c2c2af4342ad8.tar.gz
sldj-7ecace4284edc98d48e12348372c2c2af4342ad8.tar.bz2
sldj-7ecace4284edc98d48e12348372c2c2af4342ad8.zip
Scripting working very well
-rw-r--r--src/scripting.c59
-rw-r--r--src/sldj.c14
-rw-r--r--test/scanTest1.c2
3 files changed, 48 insertions, 27 deletions
diff --git a/src/scripting.c b/src/scripting.c
index af5d993..9781f5f 100644
--- a/src/scripting.c
+++ b/src/scripting.c
@@ -7,27 +7,12 @@ void handle_tcc_error(void* opaque, const char* msg)
void initScripting(SldjScripting* scripting)
{
- scripting->state = tcc_new();
- scripting->lineScanner = NULL;
- scripting->fileBuf = NULL;
-
- if (!scripting->state)
- {
- TraceLog(LOG_ERROR, "Could not open tcc state");
- return;
- }
-
- tcc_set_error_func(scripting->state, stderr, handle_tcc_error);
-}
-
-void closeScripting(SldjScripting* scripting)
-{
- tcc_delete(scripting->state);
-
- if (scripting->fileBuf != NULL)
- {
- free(scripting->fileBuf);
- }
+ *scripting = (SldjScripting){
+ .state = NULL,
+ .lineScanner = NULL,
+ .fileBuf = NULL,
+ .fileSize = 0
+ };
}
void compileScript(SldjScripting* scripting, const char filePath[SLDJ_NAMEMAX])
@@ -69,10 +54,25 @@ void compileScript(SldjScripting* scripting, const char filePath[SLDJ_NAMEMAX])
scripting->fileBuf[scripting->fileSize - 1] = '\0';
fclose(file);
- // Compile shit now.
+ // Setup compiler.
+ if (scripting->state != NULL)
+ {
+ tcc_delete(scripting->state);
+ }
+
+ scripting->state = tcc_new();
+
+ if (scripting->state == NULL)
+ {
+ TraceLog(LOG_ERROR, "Could not open tcc state");
+ return;
+ }
+
+ tcc_set_error_func(scripting->state, stderr, handle_tcc_error);
tcc_set_output_type(scripting->state, TCC_OUTPUT_MEMORY);
- if (tcc_compile_string(scripting->state, scripting->fileBuf) == -1)
+ // Compile.
+ if (tcc_compile_string(scripting->state, scripting->fileBuf) < 0)
{
return;
}
@@ -85,3 +85,16 @@ void compileScript(SldjScripting* scripting, const char filePath[SLDJ_NAMEMAX])
scripting->lineScanner = tcc_get_symbol(scripting->state, "lineScanner");
}
+void closeScripting(SldjScripting* scripting)
+{
+ if (scripting->state != NULL)
+ {
+ tcc_delete(scripting->state);
+ }
+
+ if (scripting->fileBuf != NULL)
+ {
+ free(scripting->fileBuf);
+ }
+}
+
diff --git a/src/sldj.c b/src/sldj.c
index ca566b7..2e40a00 100644
--- a/src/sldj.c
+++ b/src/sldj.c
@@ -15,7 +15,7 @@ void initSldj(Sldj* sldj)
// Scripting.
initScripting(&sldj->scripting);
- compileScript(&sldj->scripting, "/home/nathan/Documents/dev/sldj/test/scanTest1.c");
+ //compileScript(&sldj->scripting, "/home/nathan/Documents/dev/sldj/test/scanTest1.c");
if (sldj->scripting.lineScanner != NULL)
{
@@ -42,14 +42,15 @@ void updateSldj(Sldj* sldj)
for (int x = 0; x < sldj->viewport.texture.width; ++x)
{
DrawPixel(x, y, sldj->scripting.lineScanner(xScan, yScan, sldj->frameCounter));
- ++xScan;
+ xScan += sldj->xCount;
}
- ++yScan;
+ yScan += sldj->yCount;
}
}
EndTextureMode();
+ ClearBackground(DARKGRAY);
// Draw scanned image.
Texture viewport = sldj->viewport.texture;
@@ -63,6 +64,13 @@ void updateSldj(Sldj* sldj)
WHITE
);
+ DrawFPS(0, 0);
+
+ if (IsKeyPressed(KEY_R))
+ {
+ compileScript(&sldj->scripting, "/home/nathan/Documents/dev/sldj/test/scanTest1.c");
+ }
+
EndDrawing();
++sldj->frameCounter;
diff --git a/test/scanTest1.c b/test/scanTest1.c
index e14a620..06057f2 100644
--- a/test/scanTest1.c
+++ b/test/scanTest1.c
@@ -10,6 +10,6 @@ typedef struct Color {
Color lineScanner(uint16_t x, uint16_t y, uint32_t frameNumber)
{
- return (Color){.r = 0, .g = 0, .b = 255, .a = 255};
+ return (Color){.r = random() % 255, .g = random() % 255, .b = random() % 255, .a = 255};
}