mirror of
https://codeberg.org/hkzlab/TK2048.git
synced 2026-01-01 22:49:20 +11:00
Draw endgame box
This commit is contained in:
parent
f18b23b08a
commit
fb6463dd40
6 changed files with 69 additions and 5 deletions
|
|
@ -13,6 +13,9 @@
|
|||
#include "graph_misc_data.h"
|
||||
#include "arrows_pic.h"
|
||||
|
||||
#define SCREEN_WIDTH 280
|
||||
#define SCREEN_HEIGHT 192
|
||||
|
||||
#define SCREEN_WIDTH_B 40
|
||||
#define GRID_CELL_SIDE 35
|
||||
|
||||
|
|
@ -102,6 +105,42 @@ void draw_tiles(void) {
|
|||
draw_field_borders_on_buffer(0x0F, back_buf);
|
||||
}
|
||||
|
||||
#define ENDGAME_BOX_X_OFFSET 2
|
||||
#define ENDGAME_BOX_Y_OFFSET 16
|
||||
void ddraw_endgame_box(int8_t done, uint16_t score, uint16_t hi_score) {
|
||||
// Clear the part of the screen where we'll draw
|
||||
clear_box(SCREEN_WIDTH_B - (ENDGAME_BOX_X_OFFSET * 2), SCREEN_HEIGHT - (ENDGAME_BOX_Y_OFFSET * 2), ENDGAME_BOX_X_OFFSET, ENDGAME_BOX_Y_OFFSET, front_buf);
|
||||
|
||||
// Horizontal lines
|
||||
for(uint8_t row = 0; row < CHAR_HEIGHT; row++) {
|
||||
uint16_t offset_top = line_offset_map[ENDGAME_BOX_Y_OFFSET + CHAR_HEIGHT + row] + ENDGAME_BOX_X_OFFSET + 1;
|
||||
uint16_t offset_bottom = line_offset_map[SCREEN_HEIGHT - ENDGAME_BOX_Y_OFFSET - CHAR_HEIGHT + row] + ENDGAME_BOX_X_OFFSET + 1;
|
||||
for(uint8_t col = 0; col < SCREEN_WIDTH_B - ((ENDGAME_BOX_X_OFFSET * 2) + 2); col++) {
|
||||
front_buf[offset_top + col] = CHARSET[GRAPH_OFFSET + (12 * CHAR_HEIGHT) + row];
|
||||
front_buf[offset_bottom + col] = CHARSET[GRAPH_OFFSET + (12 * CHAR_HEIGHT) + row];
|
||||
}
|
||||
}
|
||||
|
||||
// Corners
|
||||
for(uint8_t row = 0; row < CHAR_HEIGHT; row++) {
|
||||
uint16_t offset_top = line_offset_map[ENDGAME_BOX_Y_OFFSET + CHAR_HEIGHT + row] + ENDGAME_BOX_X_OFFSET + 1;
|
||||
uint16_t offset_bottom = line_offset_map[SCREEN_HEIGHT - ENDGAME_BOX_Y_OFFSET - CHAR_HEIGHT + row] + ENDGAME_BOX_X_OFFSET + 1;
|
||||
|
||||
front_buf[offset_top] = CHARSET[GRAPH_OFFSET + (25 * CHAR_HEIGHT) + row];
|
||||
front_buf[offset_bottom] = CHARSET[GRAPH_OFFSET + (27 * CHAR_HEIGHT) + row];
|
||||
front_buf[offset_top + (SCREEN_WIDTH_B - ((ENDGAME_BOX_X_OFFSET * 2) + 2))] = CHARSET[GRAPH_OFFSET + (26 * CHAR_HEIGHT) + row];
|
||||
front_buf[offset_bottom + (SCREEN_WIDTH_B - ((ENDGAME_BOX_X_OFFSET * 2) + 2))] = CHARSET[GRAPH_OFFSET + (28 * CHAR_HEIGHT) + row];
|
||||
}
|
||||
|
||||
// Vertical lines
|
||||
for(uint8_t row = 0; row < ((SCREEN_HEIGHT - (ENDGAME_BOX_Y_OFFSET * 3) - CHAR_HEIGHT)) + 1; row++) {
|
||||
uint16_t offset = line_offset_map[ENDGAME_BOX_Y_OFFSET + (CHAR_HEIGHT * 2) + row] + ENDGAME_BOX_X_OFFSET + 1;
|
||||
|
||||
front_buf[offset] = CHARSET[GRAPH_OFFSET + (19 * CHAR_HEIGHT) + (row % CHAR_HEIGHT)];
|
||||
front_buf[offset + (SCREEN_WIDTH_B - ((ENDGAME_BOX_X_OFFSET * 2) + 2))] = CHARSET[GRAPH_OFFSET + (19 * CHAR_HEIGHT) + (row % CHAR_HEIGHT)];
|
||||
}
|
||||
}
|
||||
|
||||
// Note that the horizontal values here are in group of 7 pixels
|
||||
void clear_box(uint8_t w, uint8_t h, uint8_t off_x, uint8_t off_y, uint8_t *disp_buf) {
|
||||
for(uint8_t y = off_y; y < off_y + h; y++) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue