WIP, refactoring style (Rotation Borked)

This commit is contained in:
Cole
2024-01-11 16:39:38 -06:00
parent 982624bb5b
commit 4298102525
10 changed files with 373 additions and 402 deletions

View File

@@ -1,76 +1,69 @@
#include <stdio.h>
#include "raylib.h"
#include "renderer.h"
#define PNG_RES(name) "resources/" #name ".png"
#define BLOCK_SIZE 32
#define RES_PNG_FILE(name) "resources/" #name ".png"
#define TEXTURE_SIZE 32
Texture2D yellowTexture;
Texture2D blueTexture;
Texture2D lightBlueTexture;
Texture2D redTexture;
Texture2D purpleTexture;
Texture2D greenTexture;
Texture2D orangeTexture;
Texture2D emptyTexture;
Texture2D gameOverTexture;
Texture2D _yellow_texture;
Texture2D _blue_texture;
Texture2D _light_blue_texture;
Texture2D _red_texture;
Texture2D _purple_texture;
Texture2D _green_texture;
Texture2D _orange_texture;
Texture2D _empty_texture;
void InitRenderer(void) {
yellowTexture = LoadTexture(PNG_RES(yellow));
blueTexture = LoadTexture(PNG_RES(blue));
lightBlueTexture = LoadTexture(PNG_RES(light-blue));
redTexture = LoadTexture(PNG_RES(red));
purpleTexture = LoadTexture(PNG_RES(purple));
greenTexture = LoadTexture(PNG_RES(green));
orangeTexture = LoadTexture(PNG_RES(orange));
emptyTexture = LoadTexture(PNG_RES(black));
gameOverTexture = LoadTexture(PNG_RES(gameOver));
void r_initialize(void) {
_yellow_texture = LoadTexture(RES_PNG_FILE(yellow));
_blue_texture = LoadTexture(RES_PNG_FILE(blue));
_light_blue_texture = LoadTexture(RES_PNG_FILE(light-blue));
_red_texture = LoadTexture(RES_PNG_FILE(red));
_purple_texture = LoadTexture(RES_PNG_FILE(purple));
_green_texture = LoadTexture(RES_PNG_FILE(green));
_orange_texture = LoadTexture(RES_PNG_FILE(orange));
_empty_texture = LoadTexture(RES_PNG_FILE(black));
}
Texture2D* GetTextureFromTetrominoType(enum TetrominoType type) {
switch (type) {
case O_TYPE:
return &yellowTexture;
case I_TYPE:
return &lightBlueTexture;
case T_TYPE:
return &purpleTexture;
case J_TYPE:
return &blueTexture;
case L_TYPE:
return &orangeTexture;
case S_TYPE:
return &greenTexture;
case Z_TYPE:
return &redTexture;
default:
return &emptyTexture;
}
}
void RenderTetrominoBlock(struct TetrominoBlock blockToRender) {
Texture2D* textureToRender = GetTextureFromTetrominoType(blockToRender.type);
DrawTexture(*textureToRender, blockToRender.x * BLOCK_SIZE, blockToRender.y * BLOCK_SIZE, WHITE);
}
void RenderBlocks(struct TetrominoBlock** updatedBlocks, int length) {
void r_render_blocks(struct TetrominoBlock* *blocks, int length) {
BeginDrawing();
while(length--) {
RenderTetrominoBlock(*(*updatedBlocks));
updatedBlocks++;
_r_render_block(*(*blocks));
blocks++;
}
EndDrawing();
}
void RenderGameOver(void) {
void r_render_game_over(int score) {
BeginDrawing();
ClearBackground(BLACK);
DrawText("Game Over", SCREEN_WIDTH / 2 - MeasureText("Game Over", 24) / 2, 200, 24, RED);
DrawText("Score: N/A", SCREEN_WIDTH / 2 - MeasureText("Score: N/A", 18) / 2, 232, 18, RED);
char* score_message = TextFormat("Score: %d", score);
DrawText(score_message, SCREEN_WIDTH / 2 - MeasureText(score_message, 18) / 2, 232, 18, RED);
// Draw a play again button
EndDrawing();
}
void _r_render_block(struct TetrominoBlock blockToRender) {
Texture2D* textureToRender = _r_get_texture_by_tetromino_type(blockToRender.type);
DrawTexture(*textureToRender, blockToRender.x * TEXTURE_SIZE, blockToRender.y * TEXTURE_SIZE, WHITE);
}
Texture2D* _r_get_texture_by_tetromino_type(enum TetrominoType type) {
switch (type) {
case TT_O:
return &_yellow_texture;
case TT_I:
return &_light_blue_texture;
case TT_T:
return &_purple_texture;
case TT_J:
return &_blue_texture;
case TT_L:
return &_orange_texture;
case TT_S:
return &_green_texture;
case TT_Z:
return &_red_texture;
default:
return &_empty_texture;
}
}