mirror of
https://github.com/thepigeongenerator/tetris_clone.git
synced 2025-12-17 14:05:45 +01:00
convert colour to a 2 bit format
This commit is contained in:
@@ -3,11 +3,10 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "../main.h"
|
||||
#include "../window/renderer.h"
|
||||
#include "shapes.h"
|
||||
|
||||
|
||||
static void _add_shape(Row* row, const Shape shape, const uint8_t colour, const uint8_t pos_x) {
|
||||
static void _add_shape(Row* row, const Shape shape, const Colour colour, const uint8_t pos_x) {
|
||||
for (uint8_t y = 0; y < SHAPE_HEIGHT; y++) {
|
||||
ShapeRow shape_row = shape_get_row(shape, y);
|
||||
|
||||
@@ -16,11 +15,11 @@ static void _add_shape(Row* row, const Shape shape, const uint8_t colour, const
|
||||
|
||||
for (uint8_t x = 0; x < SHAPE_WIDTH; x++)
|
||||
if (is_set(shape_row, x))
|
||||
row[y].columns[x + pos_x].block = colour;
|
||||
row[y].columns[x + pos_x] = colour;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void add_shape(Row* row, const Shape shape, const uint8_t colour, const uint8_t pos_x, const uint8_t pos_y) {
|
||||
static inline void add_shape(Row* row, const Shape shape, const Colour colour, const uint8_t pos_x, const uint8_t pos_y) {
|
||||
_add_shape(&row[pos_y], shape, colour, pos_x);
|
||||
}
|
||||
|
||||
@@ -30,14 +29,14 @@ void game_update(GameData* game_data, const Uint8* keys) {
|
||||
stop();
|
||||
}
|
||||
|
||||
add_shape(game_data->row, TETROMINO_I, CYAN, 1, 0);
|
||||
add_shape(game_data->row, TETROMINO_O, YELLOW, 5, 4);
|
||||
add_shape(game_data->row, TETROMINO_I, COLOUR_CYAN, 1, 0);
|
||||
add_shape(game_data->row, TETROMINO_O, COLOUR_YELLOW, 5, 4);
|
||||
|
||||
add_shape(game_data->row, TETROMINO_Z, GREEN, 1, 8);
|
||||
add_shape(game_data->row, TETROMINO_S, RED, 5, 8);
|
||||
add_shape(game_data->row, TETROMINO_Z, COLOUR_GREEN, 1, 8);
|
||||
add_shape(game_data->row, TETROMINO_S, COLOUR_RED, 5, 8);
|
||||
|
||||
add_shape(game_data->row, TETROMINO_J, BLUE, 1, 12);
|
||||
add_shape(game_data->row, TETROMINO_L, YELLOW | RED, 5, 12);
|
||||
add_shape(game_data->row, TETROMINO_J, COLOUR_BLUE, 1, 12);
|
||||
add_shape(game_data->row, TETROMINO_L, COLOUR_ORANGE, 5, 12);
|
||||
|
||||
add_shape(game_data->row, TETROMINO_T, MAGENTA, 5, 16);
|
||||
add_shape(game_data->row, TETROMINO_T, COLOUR_MAGENTA, 5, 16);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
#pragma once
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
#include "../window/colour.h"
|
||||
|
||||
typedef uint32_t PackedRow;
|
||||
|
||||
// stores the data used in the game
|
||||
#define COLUMNS ((uint8_t)(sizeof(PackedRow) * 8 / 3))
|
||||
#define ROWS ((uint8_t)(COLUMNS * 2))
|
||||
|
||||
typedef union {
|
||||
// NOTE: this has packing issues
|
||||
struct {
|
||||
uint8_t block : 3;
|
||||
} columns[COLUMNS];
|
||||
PackedRow val;
|
||||
typedef struct {
|
||||
Colour columns[COLUMNS];
|
||||
} Row;
|
||||
|
||||
typedef struct {
|
||||
|
||||
Reference in New Issue
Block a user