Fix launch, file to unsigned char[]
This commit is contained in:
parent
647dc39920
commit
4fecba89dd
6 changed files with 41572 additions and 17 deletions
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
|
@ -11,7 +11,7 @@
|
||||||
"program": "${workspaceFolder}/output.exe",
|
"program": "${workspaceFolder}/output.exe",
|
||||||
"args": [],
|
"args": [],
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"cwd": "${fileDirname}",
|
"cwd": "${workspaceFolder}",
|
||||||
"environment": [],
|
"environment": [],
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"MIMode": "gdb",
|
"MIMode": "gdb",
|
||||||
|
|
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
|
@ -1,5 +1,10 @@
|
||||||
{
|
{
|
||||||
"C_Cpp.default.defines": [
|
"C_Cpp.default.defines": [
|
||||||
"__DEBUG"
|
"__DEBUG"
|
||||||
]
|
],
|
||||||
|
"files.associations": {
|
||||||
|
"*.lock": "yarnlock",
|
||||||
|
"monogram.h": "c",
|
||||||
|
"*.m": "cpp"
|
||||||
|
}
|
||||||
}
|
}
|
34
include/fileToCharArray.h
Normal file
34
include/fileToCharArray.h
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#include "raylib.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
void fileToBytes(const char *inputFileName, const char *outputFileName, const char *arrayName)
|
||||||
|
{
|
||||||
|
unsigned int fileSize = 0;
|
||||||
|
|
||||||
|
unsigned char *fileData = LoadFileData(inputFileName, &fileSize);
|
||||||
|
|
||||||
|
char *content = (char *)MemAlloc(sizeof(char) * fileSize * 10);
|
||||||
|
|
||||||
|
int cursor = 0;
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < fileSize; i++)
|
||||||
|
{
|
||||||
|
TextAppend(content, TextFormat(" 0x%02x,\n", fileData[i]), &cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
cursor = 0;
|
||||||
|
char *final = (char *)MemAlloc((sizeof("const unsigned char ") + sizeof("[] = {\n") + (fileSize * sizeof(" 0x00,\n")) + sizeof("};") + strlen(arrayName)) * sizeof(char));
|
||||||
|
|
||||||
|
TextAppend(final, "const unsigned char ", &cursor);
|
||||||
|
TextAppend(final, arrayName, &cursor);
|
||||||
|
TextAppend(final, TextFormat("[%d] = {\n", fileSize), &cursor);
|
||||||
|
TextAppend(final, content, &cursor);
|
||||||
|
TextAppend(final, " };", &cursor);
|
||||||
|
|
||||||
|
MemFree(content);
|
||||||
|
|
||||||
|
SaveFileText(outputFileName, final);
|
||||||
|
|
||||||
|
MemFree(final);
|
||||||
|
}
|
41510
include/monogram.ttf.h
Normal file
41510
include/monogram.ttf.h
Normal file
File diff suppressed because it is too large
Load diff
BIN
resources/arial10x10.png
Normal file
BIN
resources/arial10x10.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
34
src/main.c
34
src/main.c
|
@ -1,15 +1,18 @@
|
||||||
#include "raylib.h"
|
#include "raylib.h"
|
||||||
#include "raymath.h"
|
#include "raymath.h"
|
||||||
|
#include "monogram.ttf.h"
|
||||||
|
|
||||||
// Size of a gameboard pixel
|
// Size of a gameboard pixel
|
||||||
#define SCREEN_SCALE 256
|
#define SCREEN_SCALE 256
|
||||||
|
|
||||||
#define TOP_OFFSET 40
|
#define TOPBAR_HEIGHT 40
|
||||||
|
|
||||||
#define SCREEN_SIZE (SCREEN_SCALE * 3)
|
#define SCREEN_SIZE (SCREEN_SCALE * 3)
|
||||||
|
|
||||||
#define VIRTUAL_SCREEN_SIZE SCREEN_SIZE / SCREEN_SCALE
|
#define VIRTUAL_SCREEN_SIZE SCREEN_SIZE / SCREEN_SCALE
|
||||||
|
|
||||||
|
#define TEXT_SPACING 2.0f
|
||||||
|
|
||||||
typedef enum Player
|
typedef enum Player
|
||||||
{
|
{
|
||||||
NONE,
|
NONE,
|
||||||
|
@ -61,7 +64,10 @@ int main(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SetConfigFlags(0);
|
SetConfigFlags(0);
|
||||||
InitWindow(SCREEN_SIZE, SCREEN_SIZE + TOP_OFFSET, "Tic Tac Toe");
|
InitWindow(SCREEN_SIZE, SCREEN_SIZE + TOPBAR_HEIGHT, "Tic Tac Toe");
|
||||||
|
|
||||||
|
int fontChars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' '};
|
||||||
|
Font monogramFont = LoadFontFromMemory(".ttf", monogramFontBytes, sizeof(monogramFontBytes), TOPBAR_HEIGHT, fontChars, sizeof(fontChars));
|
||||||
|
|
||||||
/* For drawing */
|
/* For drawing */
|
||||||
RenderTexture2D target = LoadRenderTexture(VIRTUAL_SCREEN_SIZE, VIRTUAL_SCREEN_SIZE);
|
RenderTexture2D target = LoadRenderTexture(VIRTUAL_SCREEN_SIZE, VIRTUAL_SCREEN_SIZE);
|
||||||
|
@ -71,7 +77,7 @@ int main(void)
|
||||||
(float)VIRTUAL_SCREEN_SIZE,
|
(float)VIRTUAL_SCREEN_SIZE,
|
||||||
-(float)VIRTUAL_SCREEN_SIZE};
|
-(float)VIRTUAL_SCREEN_SIZE};
|
||||||
Rectangle destRec = {0.0f,
|
Rectangle destRec = {0.0f,
|
||||||
(float)(TOP_OFFSET),
|
(float)(TOPBAR_HEIGHT),
|
||||||
SCREEN_SIZE,
|
SCREEN_SIZE,
|
||||||
SCREEN_SIZE};
|
SCREEN_SIZE};
|
||||||
|
|
||||||
|
@ -105,7 +111,7 @@ int main(void)
|
||||||
|
|
||||||
Vector2 mousePos = GetMousePosition();
|
Vector2 mousePos = GetMousePosition();
|
||||||
// Floor instead of trunc to check negative values for out-of-bounds check for cursor
|
// Floor instead of trunc to check negative values for out-of-bounds check for cursor
|
||||||
char hovered = (char)floorf(mousePos.x / (float)SCREEN_SCALE) + 3 * (char)floorf((mousePos.y - ((float)TOP_OFFSET)) / (float)SCREEN_SCALE);
|
char hovered = (char)floorf(mousePos.x / (float)SCREEN_SCALE) + 3 * (char)floorf((mousePos.y - ((float)TOPBAR_HEIGHT)) / (float)SCREEN_SCALE);
|
||||||
|
|
||||||
if (hovered < 0 || hovered >= 9 || board[hovered] != NONE)
|
if (hovered < 0 || hovered >= 9 || board[hovered] != NONE)
|
||||||
{
|
{
|
||||||
|
@ -181,7 +187,7 @@ int main(void)
|
||||||
DrawTexturePro(target.texture, sourceRec, destRec, (Vector2){0.0f, 0.0f}, 0.0f, WHITE);
|
DrawTexturePro(target.texture, sourceRec, destRec, (Vector2){0.0f, 0.0f}, 0.0f, WHITE);
|
||||||
|
|
||||||
#if __DEBUG
|
#if __DEBUG
|
||||||
DrawFPS(0, TOP_OFFSET);
|
DrawFPS(0, TOPBAR_HEIGHT);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Draw Top Bar
|
// Draw Top Bar
|
||||||
|
@ -190,28 +196,28 @@ int main(void)
|
||||||
switch (currentPlayer)
|
switch (currentPlayer)
|
||||||
{
|
{
|
||||||
case RED_PLAYER:
|
case RED_PLAYER:
|
||||||
DrawRectangle(0, 0, TOP_OFFSET, TOP_OFFSET, RED);
|
DrawRectangle(0, 0, TOPBAR_HEIGHT, TOPBAR_HEIGHT, RED);
|
||||||
break;
|
break;
|
||||||
case BLUE_PLAYER:
|
case BLUE_PLAYER:
|
||||||
DrawRectangle(0, 0, TOP_OFFSET, TOP_OFFSET, BLUE);
|
DrawRectangle(0, 0, TOPBAR_HEIGHT, TOPBAR_HEIGHT, BLUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scores in top-left, labelled with colored squares
|
// Scores in top-left, labelled with colored squares
|
||||||
const char *blueScore = TextFormat("%03u ", points[2]);
|
const char *blueScore = TextFormat("%03u ", points[2]);
|
||||||
const int blueScoreWidth = MeasureText(blueScore, TOP_OFFSET);
|
const int blueScoreWidth = (int)MeasureTextEx(monogramFont, blueScore, TOPBAR_HEIGHT, TEXT_SPACING).x;
|
||||||
|
|
||||||
const char *redScore = TextFormat("%03u %s", points[1], blueScore);
|
const char *redScore = TextFormat("%03u %s", points[1], blueScore);
|
||||||
const int redScoreWidth = MeasureText(redScore, TOP_OFFSET);
|
const int redScoreWidth = (int)MeasureTextEx(monogramFont, redScore, TOPBAR_HEIGHT, TEXT_SPACING).x;
|
||||||
|
|
||||||
const char *scoreboard = TextFormat("%03u %s", points[0], redScore);
|
const char *scoreboard = TextFormat("%03u %s", points[0], redScore);
|
||||||
const int scoreboardWidth = MeasureText(scoreboard, TOP_OFFSET);
|
const int scoreboardWidth = (int)MeasureTextEx(monogramFont, scoreboard, TOPBAR_HEIGHT, TEXT_SPACING).x;
|
||||||
|
|
||||||
DrawText(scoreboard, SCREEN_SIZE - scoreboardWidth, 0, TOP_OFFSET, WHITE);
|
DrawTextEx(monogramFont, scoreboard, (Vector2){SCREEN_SIZE - scoreboardWidth, 0}, TOPBAR_HEIGHT, TEXT_SPACING, WHITE);
|
||||||
|
|
||||||
DrawRectangle(SCREEN_SIZE - TOP_OFFSET - blueScoreWidth - 2, 0, TOP_OFFSET, TOP_OFFSET, BLUE);
|
DrawRectangle(SCREEN_SIZE - TOPBAR_HEIGHT - blueScoreWidth - 2, 0, TOPBAR_HEIGHT, TOPBAR_HEIGHT, BLUE);
|
||||||
DrawRectangle(SCREEN_SIZE - TOP_OFFSET - redScoreWidth - 2, 0, TOP_OFFSET, TOP_OFFSET, RED);
|
DrawRectangle(SCREEN_SIZE - TOPBAR_HEIGHT - redScoreWidth - 2, 0, TOPBAR_HEIGHT, TOPBAR_HEIGHT, RED);
|
||||||
DrawRectangle(SCREEN_SIZE - TOP_OFFSET - scoreboardWidth - 2, 0, TOP_OFFSET, TOP_OFFSET, WHITE);
|
DrawRectangle(SCREEN_SIZE - TOPBAR_HEIGHT - scoreboardWidth - 2, 0, TOPBAR_HEIGHT, TOPBAR_HEIGHT, WHITE);
|
||||||
}
|
}
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
Reference in a new issue