aaa
This commit is contained in:
parent
95f105fd96
commit
ce5426cef5
14 changed files with 392 additions and 42 deletions
2
.vscode/c_cpp_properties.json
vendored
2
.vscode/c_cpp_properties.json
vendored
|
@ -7,7 +7,7 @@
|
|||
"${workspaceFolder}/raylib/src/extras"
|
||||
],
|
||||
"windowsSdkVersion": "10.0.19041.0",
|
||||
"compilerPath": "D:/mingw/mingw32/bin/gcc.exe",
|
||||
"compilerPath": "D:/mingw/mingw64/bin/gcc.exe",
|
||||
"cStandard": "c17",
|
||||
"cppStandard": "c++17",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
|
|
3
.vscode/workspace.code-workspace
vendored
3
.vscode/workspace.code-workspace
vendored
|
@ -15,7 +15,8 @@
|
|||
"*.m": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"raylib.h": "c",
|
||||
"math.h": "c"
|
||||
"math.h": "c",
|
||||
"raymath.h": "c"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,10 @@
|
|||
#include "raylib.h"
|
||||
|
||||
static Color const ERROR_COLOR = {255, 0, 255, 255};
|
||||
static Color const FLOOR_COLOR = {255, 255, 255, 255};
|
||||
static Color const WALL_COLOR = {0, 0, 0, 255};
|
||||
static Color const PLAYER_COLOR = {64, 64, 64 + 128, 255};
|
||||
|
||||
typedef struct Vector2i
|
||||
{
|
||||
int x;
|
||||
|
@ -12,20 +17,36 @@ typedef struct Entity
|
|||
Color color;
|
||||
} Entity;
|
||||
|
||||
typedef struct Room
|
||||
{
|
||||
int height;
|
||||
int width;
|
||||
Vector2i position;
|
||||
Vector2i center;
|
||||
} Room;
|
||||
|
||||
typedef struct Tile
|
||||
{
|
||||
bool walkable;
|
||||
Color color;
|
||||
} Tile;
|
||||
|
||||
Entity *createPlayer(Vector2i start_position);
|
||||
Tile **createMapTiles();
|
||||
void freeMapTiles(Tile **map_tiles);
|
||||
void renderEverything(RenderTexture2D target);
|
||||
bool tryMovePlayer(Vector2i const new_position);
|
||||
|
||||
void initGame();
|
||||
void mainLoop();
|
||||
void endGame();
|
||||
Entity *createPlayer(Vector2i const start_position);
|
||||
Tile **createMapTiles(void);
|
||||
Vector2i setupMap(void);
|
||||
void freeMapTiles(Tile **map_tiles);
|
||||
|
||||
Room createRoom(int x, int y, int height, int width);
|
||||
void addRoomToMap(Room room);
|
||||
void connectRoomCenters(Vector2i centerOne, Vector2i centerTwo);
|
||||
|
||||
void renderEverything(void);
|
||||
|
||||
void initGame(void);
|
||||
void mainLoop(void);
|
||||
void endGame(void);
|
||||
|
||||
extern unsigned int const MAP_HEIGHT;
|
||||
extern unsigned int const MAP_WIDTH;
|
||||
|
|
BIN
resources/3-by-5-pixel-font.ttf
Normal file
BIN
resources/3-by-5-pixel-font.ttf
Normal file
Binary file not shown.
BIN
resources/TINY.TTF
Normal file
BIN
resources/TINY.TTF
Normal file
Binary file not shown.
BIN
resources/bmfont64.exe
Normal file
BIN
resources/bmfont64.exe
Normal file
Binary file not shown.
100
resources/tiny.fnt
Normal file
100
resources/tiny.fnt
Normal file
|
@ -0,0 +1,100 @@
|
|||
info face="Tiny" size=-6 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,1,0,1 spacing=0,0 outline=0
|
||||
common lineHeight=6 base=5 scaleW=128 scaleH=128 pages=1 packed=0 alphaChnl=0 redChnl=3 greenChnl=3 blueChnl=3
|
||||
page id=0 file="tiny_0.png"
|
||||
chars count=96
|
||||
char id=32 x=0 y=28 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=33 x=37 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=34 x=7 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=35 x=16 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=36 x=13 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=37 x=70 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=38 x=77 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=39 x=25 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=40 x=118 y=21 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=41 x=113 y=21 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=42 x=19 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=43 x=25 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=44 x=41 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=45 x=37 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=46 x=57 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=47 x=119 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=48 x=43 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=49 x=49 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=50 x=55 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=51 x=61 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=52 x=67 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=53 x=73 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=54 x=79 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=55 x=85 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=56 x=102 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=57 x=91 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=58 x=33 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=59 x=29 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=60 x=97 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=61 x=103 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=62 x=109 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=63 x=115 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=64 x=121 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=65 x=0 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=66 x=6 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=67 x=12 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=68 x=31 y=7 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=69 x=18 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=70 x=24 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=71 x=30 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=72 x=36 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=73 x=42 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=74 x=48 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=75 x=98 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=76 x=54 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=77 x=0 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=78 x=91 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=79 x=105 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=80 x=90 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=81 x=63 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=82 x=66 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=83 x=72 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=84 x=78 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=85 x=56 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=86 x=48 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=87 x=40 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=88 x=84 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=89 x=32 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=90 x=84 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=91 x=5 y=28 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=92 x=112 y=0 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=93 x=15 y=28 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=94 x=96 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=95 x=102 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=96 x=108 y=21 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=97 x=108 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=98 x=114 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=99 x=120 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=100 x=0 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=101 x=6 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=102 x=10 y=28 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=103 x=20 y=28 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=104 x=18 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=105 x=45 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=106 x=49 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=107 x=24 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=108 x=61 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=109 x=24 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=110 x=30 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=111 x=36 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=112 x=42 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=113 x=48 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=114 x=123 y=21 width=5 height=7 xoffset=-1 yoffset=-1 xadvance=3 page=0 chnl=15
|
||||
char id=115 x=12 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=116 x=54 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=117 x=60 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=118 x=66 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=119 x=8 y=0 width=8 height=7 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=120 x=72 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=121 x=78 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=122 x=84 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=123 x=90 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=124 x=53 y=28 width=4 height=7 xoffset=-1 yoffset=-1 xadvance=2 page=0 chnl=15
|
||||
char id=125 x=96 y=21 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=126 x=0 y=7 width=7 height=7 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=127 x=60 y=14 width=6 height=7 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
BIN
resources/tiny_0.png
Normal file
BIN
resources/tiny_0.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 580 B |
10
src/draw.c
10
src/draw.c
|
@ -17,12 +17,8 @@ void drawEntity(Entity *entity)
|
|||
DrawPixel(entity->position.x, entity->position.y, entity->color);
|
||||
}
|
||||
|
||||
void renderEverything(RenderTexture2D target)
|
||||
void renderEverything()
|
||||
{
|
||||
BeginTextureMode(target);
|
||||
{
|
||||
drawMap(map);
|
||||
drawEntity(player);
|
||||
}
|
||||
EndTextureMode();
|
||||
drawMap(map);
|
||||
drawEntity(player);
|
||||
}
|
36
src/engine.c
36
src/engine.c
|
@ -1,5 +1,6 @@
|
|||
#include "raylib.h"
|
||||
#include "rogue.h"
|
||||
#include <time.h> // Required for: time_t, tm, time(), localtime(), strftime()
|
||||
|
||||
static int const PIXEL_SCALE = 10;
|
||||
static int const VIRTUAL_SCREEN_WIDTH = 80;
|
||||
|
@ -22,16 +23,19 @@ void initGame()
|
|||
//--------------------------------------------------------------------------------------
|
||||
#if defined(__DEBUG)
|
||||
SetTraceLogLevel(LOG_ALL);
|
||||
SetRandomSeed(0);
|
||||
#else
|
||||
SetTraceLogLevel(LOG_NONE);
|
||||
SetRandomSeed(time(NULL));
|
||||
#endif
|
||||
|
||||
SetConfigFlags(0);
|
||||
InitWindow(REAL_SCREEN_WIDTH, REAL_SCREEN_HEIGHT, "TODO: Add a title");
|
||||
|
||||
virtualScreen = LoadRenderTexture(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT);
|
||||
|
||||
player = createPlayer((Vector2i){VIRTUAL_SCREEN_WIDTH / 2, VIRTUAL_SCREEN_HEIGHT / 2});
|
||||
map = createMapTiles();
|
||||
player = createPlayer(setupMap());
|
||||
|
||||
// SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||
}
|
||||
|
@ -41,22 +45,24 @@ void update()
|
|||
// Update
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
Vector2i new_position = {player->position.x, player->position.y};
|
||||
if (IsKeyPressed(KEY_RIGHT))
|
||||
{
|
||||
player->position.x++;
|
||||
new_position.x++;
|
||||
}
|
||||
if (IsKeyPressed(KEY_LEFT))
|
||||
{
|
||||
player->position.x--;
|
||||
new_position.x--;
|
||||
}
|
||||
if (IsKeyPressed(KEY_UP))
|
||||
{
|
||||
player->position.y--;
|
||||
new_position.y--;
|
||||
}
|
||||
if (IsKeyPressed(KEY_DOWN))
|
||||
{
|
||||
player->position.y++;
|
||||
new_position.y++;
|
||||
}
|
||||
tryMovePlayer(new_position);
|
||||
}
|
||||
|
||||
void draw()
|
||||
|
@ -65,30 +71,14 @@ void draw()
|
|||
//----------------------------------------------------------------------------------
|
||||
BeginTextureMode(virtualScreen);
|
||||
{
|
||||
ClearBackground(BLACK);
|
||||
ClearBackground(ERROR_COLOR);
|
||||
|
||||
DrawPixel(player->position.x, player->position.y, player->color);
|
||||
|
||||
/*
|
||||
for (unsigned int x = 0; x < VIRTUAL_SCREEN_WIDTH; x++)
|
||||
{
|
||||
for (unsigned int y = 0; y < VIRTUAL_SCREEN_HEIGHT; y++)
|
||||
{
|
||||
const unsigned char r = (unsigned char)floorf((float)x / (float)VIRTUAL_SCREEN_WIDTH * 255.0f);
|
||||
const unsigned char b = (unsigned char)floorf((float)y / (float)VIRTUAL_SCREEN_HEIGHT * 255.0f);
|
||||
const unsigned char g = 255 - (r + b) / 2;
|
||||
const unsigned char a = 255;
|
||||
|
||||
DrawPixel(x, y, (Color){r, g, b, a});
|
||||
}
|
||||
}
|
||||
*/
|
||||
renderEverything();
|
||||
}
|
||||
EndTextureMode();
|
||||
|
||||
BeginDrawing();
|
||||
{
|
||||
ClearBackground(BLACK);
|
||||
// Draw rendered game texture
|
||||
DrawTexturePro(virtualScreen.texture, virtualScreenRect, realScreenRect, (Vector2){0.0f, 0.0f}, 0.0f, WHITE);
|
||||
|
||||
|
|
131
src/main.c
131
src/main.c
|
@ -7,6 +7,136 @@ Tile **map;
|
|||
|
||||
int main(void)
|
||||
{
|
||||
char chars[] = {
|
||||
' ',
|
||||
'!',
|
||||
'"',
|
||||
'#',
|
||||
'$',
|
||||
'%',
|
||||
'&',
|
||||
'\'',
|
||||
'(',
|
||||
')',
|
||||
'*',
|
||||
'+',
|
||||
',',
|
||||
'-',
|
||||
'.',
|
||||
'/',
|
||||
'0',
|
||||
'1',
|
||||
'2',
|
||||
'3',
|
||||
'4',
|
||||
'5',
|
||||
'6',
|
||||
'7',
|
||||
'8',
|
||||
'9',
|
||||
':',
|
||||
';',
|
||||
'<',
|
||||
'=',
|
||||
'>',
|
||||
'?',
|
||||
'@',
|
||||
'A',
|
||||
'B',
|
||||
'C',
|
||||
'D',
|
||||
'E',
|
||||
'F',
|
||||
'G',
|
||||
'H',
|
||||
'I',
|
||||
'J',
|
||||
'K',
|
||||
'L',
|
||||
'M',
|
||||
'N',
|
||||
'O',
|
||||
'P',
|
||||
'Q',
|
||||
'R',
|
||||
'S',
|
||||
'T',
|
||||
'U',
|
||||
'V',
|
||||
'W',
|
||||
'X',
|
||||
'Y',
|
||||
'Z',
|
||||
'[',
|
||||
'\\',
|
||||
']',
|
||||
'^',
|
||||
'_',
|
||||
'`',
|
||||
'a',
|
||||
'b',
|
||||
'c',
|
||||
'd',
|
||||
'e',
|
||||
'f',
|
||||
'g',
|
||||
'h',
|
||||
'i',
|
||||
'j',
|
||||
'k',
|
||||
'l',
|
||||
'm',
|
||||
'n',
|
||||
'o',
|
||||
'p',
|
||||
'q',
|
||||
'r',
|
||||
's',
|
||||
't',
|
||||
'u',
|
||||
'v',
|
||||
'w',
|
||||
'x',
|
||||
'y',
|
||||
'z',
|
||||
'{',
|
||||
'|',
|
||||
'}',
|
||||
'~',
|
||||
127,
|
||||
};
|
||||
InitWindow(800, 600, "Font test");
|
||||
|
||||
Font tiny = LoadFont("resources/tiny.png");
|
||||
RenderTexture2D target = LoadRenderTexture(80, 60);
|
||||
|
||||
static const int font_size = 6;
|
||||
float const charWidth = MeasureTextEx(tiny, " ", font_size, 0).x;
|
||||
|
||||
BeginTextureMode(target);
|
||||
ClearBackground(BLACK);
|
||||
for (unsigned char i = 0; i < 96; i++)
|
||||
{
|
||||
float const x = i * charWidth;
|
||||
float const y = ((int)x / target.texture.width) * font_size;
|
||||
char const *const text = TextFormat("%c", chars[i]);
|
||||
if (y != 0)
|
||||
{
|
||||
TraceLog(LOG_INFO, TextFormat("i: %i, x: %f, y: %f", i, x, y));
|
||||
}
|
||||
DrawTextEx(tiny, text, (Vector2){x, y}, font_size, 2, WHITE);
|
||||
}
|
||||
EndTextureMode();
|
||||
while (!WindowShouldClose())
|
||||
{
|
||||
BeginDrawing();
|
||||
DrawTexturePro(target.texture, (Rectangle){0, 0, 80, -60}, (Rectangle){0, 0, 800, 600}, (Vector2){0, 0}, 0, WHITE);
|
||||
EndDrawing();
|
||||
}
|
||||
|
||||
CloseWindow();
|
||||
return 0;
|
||||
/*
|
||||
initGame();
|
||||
|
||||
// Main game loop
|
||||
|
@ -18,4 +148,5 @@ int main(void)
|
|||
endGame();
|
||||
|
||||
return 0;
|
||||
*/
|
||||
}
|
42
src/map.c
42
src/map.c
|
@ -1,6 +1,6 @@
|
|||
#include "rogue.h"
|
||||
|
||||
Tile **createMapTiles()
|
||||
Tile **createMapTiles(void)
|
||||
{
|
||||
Tile **tiles = MemAlloc(sizeof(Tile *) * MAP_WIDTH);
|
||||
|
||||
|
@ -9,7 +9,7 @@ Tile **createMapTiles()
|
|||
tiles[x] = MemAlloc(sizeof(Tile) * MAP_HEIGHT);
|
||||
for (unsigned int y = 0; y < MAP_HEIGHT; y++)
|
||||
{
|
||||
tiles[x][y].color = WHITE;
|
||||
tiles[x][y].color = WALL_COLOR;
|
||||
tiles[x][y].walkable = false;
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,44 @@ Tile **createMapTiles()
|
|||
return tiles;
|
||||
}
|
||||
|
||||
static const unsigned int MIN_ROOM_WIDTH = 5;
|
||||
static const unsigned int MIN_ROOM_HEIGHT = 3;
|
||||
|
||||
static const unsigned int MAX_ROOM_WIDTH = 20;
|
||||
static const unsigned int MAX_ROOM_HEIGHT = 10;
|
||||
|
||||
Vector2i setupMap(void)
|
||||
{
|
||||
int y, x, height, width, n_rooms;
|
||||
n_rooms = GetRandomValue(5, 15);
|
||||
Vector2i start_pos;
|
||||
|
||||
Room *const rooms = MemAlloc(n_rooms * sizeof(Room));
|
||||
|
||||
for (int i = 0; i < n_rooms; i++)
|
||||
{
|
||||
x = GetRandomValue(1, MAP_WIDTH - MAX_ROOM_WIDTH - 1U);
|
||||
y = GetRandomValue(1, MAP_HEIGHT - MAX_ROOM_HEIGHT - 1U);
|
||||
|
||||
width = GetRandomValue(MIN_ROOM_WIDTH, MAX_ROOM_WIDTH);
|
||||
height = GetRandomValue(MIN_ROOM_HEIGHT, MAX_ROOM_HEIGHT);
|
||||
|
||||
rooms[i] = createRoom(x, y, width, height);
|
||||
|
||||
addRoomToMap(rooms[i]);
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
connectRoomCenters(rooms[i - 1].center, rooms[i].center);
|
||||
}
|
||||
}
|
||||
start_pos = (Vector2i){rooms[0].center.x, rooms[0].center.y};
|
||||
|
||||
MemFree(rooms);
|
||||
|
||||
return start_pos;
|
||||
}
|
||||
|
||||
void freeMapTiles(Tile **map_tiles)
|
||||
{
|
||||
for (unsigned int x = 0; x < MAP_WIDTH; x++)
|
||||
|
|
12
src/player.c
12
src/player.c
|
@ -6,7 +6,17 @@ Entity *createPlayer(Vector2i const start_position)
|
|||
Entity *const newPlayer = MemAlloc(sizeof(Entity));
|
||||
|
||||
newPlayer->position = start_position;
|
||||
newPlayer->color = DARKBLUE;
|
||||
newPlayer->color = PLAYER_COLOR;
|
||||
|
||||
return newPlayer;
|
||||
}
|
||||
|
||||
bool tryMovePlayer(Vector2i const new_position)
|
||||
{
|
||||
if (map[new_position.x][new_position.y].walkable)
|
||||
{
|
||||
player->position = new_position;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
63
src/room.c
Normal file
63
src/room.c
Normal file
|
@ -0,0 +1,63 @@
|
|||
#include "rogue.h"
|
||||
#include "raymath.h"
|
||||
|
||||
Room createRoom(int x, int y, int width, int height)
|
||||
{
|
||||
Room newRoom = {
|
||||
.position = {x, y},
|
||||
.height = height,
|
||||
.width = width,
|
||||
.center = {
|
||||
x + (int)(width / 2),
|
||||
y + (int)(height / 2),
|
||||
},
|
||||
};
|
||||
|
||||
return newRoom;
|
||||
}
|
||||
|
||||
void addRoomToMap(Room room)
|
||||
{
|
||||
for (int x = room.position.x; x < room.position.x + room.width; x++)
|
||||
{
|
||||
for (int y = room.position.y; y < room.position.y + room.height; y++)
|
||||
{
|
||||
map[x][y].color = FLOOR_COLOR;
|
||||
map[x][y].walkable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void connectRoomCenters(Vector2i center1, Vector2i center2)
|
||||
{
|
||||
Vector2i current = {
|
||||
center1.x,
|
||||
center1.y,
|
||||
};
|
||||
while (true)
|
||||
{
|
||||
if (abs((current.x - 1) - center2.x) < abs(current.x - center2.x))
|
||||
{
|
||||
current.x--;
|
||||
}
|
||||
else if (abs((current.x + 1) - center2.x) < abs(current.x - center2.x))
|
||||
{
|
||||
current.x++;
|
||||
}
|
||||
else if (abs((current.y - 1) - center2.y) < abs(current.y - center2.y))
|
||||
{
|
||||
current.y--;
|
||||
}
|
||||
else if (abs((current.y + 1) - center2.y) < abs(current.y - center2.y))
|
||||
{
|
||||
current.y++;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
map[current.x][current.y].color = FLOOR_COLOR;
|
||||
map[current.x][current.y].walkable = true;
|
||||
}
|
||||
}
|
Reference in a new issue