From 99be9763ef9e544dfc64cabe7b3daf8ef56cc1a3 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Tue, 13 Apr 2021 17:26:54 +0200 Subject: [PATCH] much commit yes --- .gitignore | 16 +++ CMakeLists.txt | 36 ++++++ README | 16 +++ assets/dcge.png | Bin 0 -> 4763 bytes assets/font.png | Bin 0 -> 1817 bytes assets/fxconv-metadata.txt | 7 ++ assets/icon-sel.png | Bin 0 -> 5507 bytes assets/icon-uns.png | Bin 0 -> 5347 bytes src/main.c | 217 +++++++++++++++++++++++++++++++++++++ 9 files changed, 292 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 README create mode 100644 assets/dcge.png create mode 100644 assets/font.png create mode 100644 assets/fxconv-metadata.txt create mode 100644 assets/icon-sel.png create mode 100644 assets/icon-uns.png create mode 100644 src/main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3eb12e --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Build files +/build-fx +/build-cg +/*.g1a +/*.g3a + +# Python bytecode + __pycache__/ + +# Common IDE files +*.sublime-project +*.sublime-workspace +.vscode + +# Krita backups +*.png~ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..c61db4f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,36 @@ +# Copyright (C) 2021 KikooDX +# SPDX-License-Identifier: MIT + +############################# +# Dumb Clicker Goto Edition # +############################# +# Configure with [fxsdk build-cg], which provide the +# toolchain file and module path of the fxSDK + +cmake_minimum_required(VERSION 3.18) +project(DCGE) + +include(GenerateG1A) +include(GenerateG3A) +include(Fxconv) +find_package(Gint 2.1 REQUIRED) + +set(SOURCES + src/main.c) + +set(ASSETS + assets/font.png) + +set(FLAGS + -std=c89 -pedantic -Wall -Wextra -Werror -Os) + +fxconv_declare_assets(${ASSETS} WITH_METADATA) + +add_executable(${PROJECT_NAME} ${SOURCES} ${ASSETS}) +target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS}) +target_link_libraries(${PROJECT_NAME} Gint::Gint) + +generate_g3a(TARGET ${PROJECT_NAME} + OUTPUT "${PROJECT_NAME}.g3a" + NAME "${PROJECT_NAME}" + ICONS assets/icon-uns.png assets/icon-sel.png) diff --git a/README b/README new file mode 100644 index 0000000..d684463 --- /dev/null +++ b/README @@ -0,0 +1,16 @@ +dumb clicker goto edition +========================= +yes + +build +----- +require sh-elf toolchain, fxsdk, gint and mkg3a +$ fxsdk build-cg + +play +==== +press shift +yes + +press optn in menu +yes diff --git a/assets/dcge.png b/assets/dcge.png new file mode 100644 index 0000000000000000000000000000000000000000..d86ad3efa577d3bd6ad16b38573a9dcd48b8758c GIT binary patch literal 4763 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 literal 0 HcmV?d00001 diff --git a/assets/font.png b/assets/font.png new file mode 100644 index 0000000000000000000000000000000000000000..5ce9ab1bc3d67c7e68e7259bc802cf0241b0974a GIT binary patch literal 1817 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 BG9>^2 literal 0 HcmV?d00001 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..40cec75 --- /dev/null +++ b/src/main.c @@ -0,0 +1,217 @@ +/* Dumb Clicker Goto Edition + * Copyright (C) 2021 KikooDX + * SPDX-License-Identifier: MIT */ +/* This program is using label/goto for everything. There is one exception: + * `if (cond) goto label;` and ternary operators are allowed. */ + +#include +#include + +#define MAX_MENU_SELECTION 3 +#define MAX_SETTINGS_SELECTION 3 +#define KEYS_COUNT 2 + +void main(void) +{ + /* variables */ + /* try to overflow this one Lephe (: */ + long int counter = 0; + extern const font_t font_tm; + key_event_t key_event; + const font_t *fonts[] = { &font_tm, NULL }; + int current_font = 0; + /* settings */ + color_t background_color = C_BLACK; + color_t foreground_color = C_WHITE; + int keys[KEYS_COUNT] = { KEY_SHIFT, KEY_OPTN }; + int menu_selection = 0; + int settings_selection = 0; + const char *menu_entries[MAX_MENU_SELECTION] = + { "%s Play :) %s", "%s Settings :o %s", "%s Exit :( %s" }; + const char *settings_entries[MAX_SETTINGS_SELECTION] = + { "%s Return to Main Menu ;) %s", "%s Change Theme 8) %s", "%s Remap Keys :>%s" }; + int i; + + /* init */ + dfont(fonts[current_font]); + + /* menu loop */ + menu_loop: + /* draw */ + dclear(background_color); + dtext_opt(DWIDTH / 2, DHEIGHT / 3, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + "DUMB CLICKER GOTO EDITION"); + i = 0; + draw_menu_entries: + dprint_opt(DWIDTH / 2, DHEIGHT / 2 + i * 16, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + menu_entries[i], + (menu_selection == i) ? ">" : "", + (menu_selection == i) ? "<" : ""); + if (++i < MAX_MENU_SELECTION) goto draw_menu_entries; + dupdate(); + + /* update */ + menu_process_key: + key_event = pollevent(); + if (key_event.type != KEYEV_DOWN) + goto menu_process_key; + if (key_event.key == KEY_EXIT) + goto end; + if (key_event.key == keys[0]) + goto menu_confirm; + /* key secondary (change selection) */ + if (key_event.key != keys[1]) + goto menu_process_key; + menu_selection += 1; + if (menu_selection < MAX_MENU_SELECTION) + /* redraw */ + goto menu_loop; + menu_selection = 0; + goto menu_loop; + + menu_confirm: + if (menu_selection == 0) + goto game_loop; + if (menu_selection == 1) + goto settings_loop; + if (menu_selection == 2) + goto end; + + /* settings loop */ + settings_loop: + /* draw */ + dclear(background_color); + dtext_opt(DWIDTH / 2, DHEIGHT / 3, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + "SETTINGS"); + i = 0; + draw_settings_entries: + dprint_opt(DWIDTH / 2, DHEIGHT / 2 + i * 16, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + settings_entries[i], + (settings_selection == i) ? ">" : "", + (settings_selection == i) ? "<" : ""); + if (++i < MAX_MENU_SELECTION) goto draw_settings_entries; + dupdate(); + + /* update */ + settings_process_key: + key_event = pollevent(); + if (key_event.type != KEYEV_DOWN) + goto settings_process_key; + if (key_event.key == KEY_EXIT) + goto menu_loop; + if (key_event.key == keys[0]) + goto settings_confirm; + /* key secondary (change selection) */ + if (key_event.key != keys[1]) + goto settings_process_key; + settings_selection += 1; + if (settings_selection < MAX_SETTINGS_SELECTION) + /* redraw */ + goto settings_loop; + settings_selection = 0; + goto settings_loop; + + settings_confirm: + if (settings_selection == 0) + goto menu_loop; + if (settings_selection == 1) + goto settings_change_theme; + if (settings_selection == 2) + goto remap_keys; + + settings_change_theme: + background_color = foreground_color; + foreground_color = + (foreground_color == C_BLACK) ? C_WHITE : C_BLACK; + goto settings_loop; + + remap_keys: + i = 0; + remap_keys_loop: + /* draw */ + dclear(background_color); + dtext_opt(DWIDTH / 2, DHEIGHT / 3, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + "REMAP KEYS"); + dprint_opt(DWIDTH / 2, DHEIGHT / 2, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + "%s (was %d)", + (i == 0) ? "Main" : "Secondary", + keys[i]); + dupdate(); + + /* update */ + remap_keys_process_key: + key_event = pollevent(); + if (key_event.type != KEYEV_DOWN) + goto remap_keys_process_key; + if (key_event.key == KEY_EXIT) + goto settings_loop; + keys[i] = key_event.key; + + if (++i < KEYS_COUNT) + goto remap_keys_loop; + settings_selection = 0; + goto settings_loop; + + /* game loop */ + game_loop: + /* draw */ + dclear(background_color); + dprint_opt(DWIDTH / 2, DHEIGHT / 2, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + "%ld", counter); + if (counter != 696969) + goto lame; + dtext_opt(DWIDTH / 2, DHEIGHT / 2 + 16, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, "many nice"); + lame: + if (counter != 6969) + goto superlame; + dtext_opt(DWIDTH / 2, DHEIGHT / 2 + 16, + foreground_color, background_color, + DTEXT_CENTER, DTEXT_MIDDLE, "very nice"); + superlame: + if (counter != 69) + goto megalame; + dtext_opt(DWIDTH / 2, DHEIGHT / 2 + 16, + foreground_color, + background_color, + DTEXT_CENTER, DTEXT_MIDDLE, + "nice"); + megalame: + dupdate(); + + /* update */ + game_process_key: + key_event = pollevent(); + if (key_event.key == KEY_EXIT) goto menu_loop; + if (key_event.type != KEYEV_DOWN) + goto game_process_key; + if (key_event.key == keys[1]) + goto trigger_thonk; + if (key_event.key != keys[0]) + goto game_process_key; + counter += 1; + goto game_loop; + + trigger_thonk: + counter -= 1; + goto game_loop; + + /* exit */ + end: + return; +}