From 85b5fde272be6ab543aa866baebabddc24566bdb Mon Sep 17 00:00:00 2001 From: cheapie Date: Sat, 23 May 2026 20:14:34 -0500 Subject: Add initial content --- c/drawercalc/drawercalc.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 c/drawercalc/drawercalc.c (limited to 'c/drawercalc/drawercalc.c') diff --git a/c/drawercalc/drawercalc.c b/c/drawercalc/drawercalc.c new file mode 100644 index 0000000..1d2de03 --- /dev/null +++ b/c/drawercalc/drawercalc.c @@ -0,0 +1,129 @@ +/* Drawer Capacity Calculator for RVController + * A product of Advanced Mesecons Devices, a Cheapie Systems company + * This is free and unencumbered software released into the public domain. + * See http://unlicense.org/ for more information */ + +#include +#include +#include "rvcontroller-ecalls.h" + +#define BASE_SLOTS 32 +#define STACK_MAX 99 +#define STEEL_UPGRADE_MULT 1 +#define GOLD_UPGRADE_MULT 2 +#define OBSIDIAN_UPGRADE_MULT 3 +#define DIAMOND_UPGRADE_MULT 7 +#define MITHRIL_UPGRADE_MULT 12 + +bool checkUpgradeCount(int32_t count,int32_t maxcount) { + return (count >= 0 && count <= maxcount); +} + +void main(void) { + while (true) { + int32_t capacity = BASE_SLOTS * STACK_MAX; + uint8_t upgrades_used = 0; + printstr("\n\n\nSettings:\n"); + printstr("Base Stack Count: "); + printint(BASE_SLOTS); + printstr("\nMax Stack Size: "); + printint(STACK_MAX); + printchar('\n'); + + int32_t upgcount = 0; + while (true) { + printstr("\nSteel Upgrades?\n[0-5] > "); + upgcount = readint(); + printint(upgcount); + printchar('\n'); + if (checkUpgradeCount(upgcount,5)) { + break; + } else { + printstr("Invalid entry"); + } + } + upgrades_used += upgcount; + capacity += BASE_SLOTS * STACK_MAX * STEEL_UPGRADE_MULT * upgcount; + + if (upgrades_used < 5) { + while (true) { + printstr("\nGold Upgrades?\n[0-"); + printint(5-upgrades_used); + printstr("] > "); + upgcount = readint(); + printint(upgcount); + printchar('\n'); + if (checkUpgradeCount(upgcount,5-upgrades_used)) { + break; + } else { + printstr("Invalid entry"); + } + } + upgrades_used += upgcount; + capacity += BASE_SLOTS * STACK_MAX * GOLD_UPGRADE_MULT * upgcount; + } + + if (upgrades_used < 5) { + while (true) { + printstr("\nObsidian Upgrades?\n[0-"); + printint(5-upgrades_used); + printstr("] > "); + upgcount = readint(); + printint(upgcount); + printchar('\n'); + if (checkUpgradeCount(upgcount,5-upgrades_used)) { + break; + } else { + printstr("Invalid entry"); + } + } + upgrades_used += upgcount; + capacity += BASE_SLOTS * STACK_MAX * OBSIDIAN_UPGRADE_MULT * upgcount; + } + + if (upgrades_used < 5) { + while (true) { + printstr("\nDiamond Upgrades?\n[0-"); + printint(5-upgrades_used); + printstr("] > "); + upgcount = readint(); + printint(upgcount); + printchar('\n'); + if (checkUpgradeCount(upgcount,5-upgrades_used)) { + break; + } else { + printstr("Invalid entry"); + } + } + upgrades_used += upgcount; + capacity += BASE_SLOTS * STACK_MAX * DIAMOND_UPGRADE_MULT * upgcount; + } + + if (upgrades_used < 5) { + while (true) { + printstr("\nMithril Upgrades?\n[0-"); + printint(5-upgrades_used); + printstr("] > "); + upgcount = readint(); + printint(upgcount); + printchar('\n'); + if (checkUpgradeCount(upgcount,5-upgrades_used)) { + break; + } else { + printstr("Invalid entry"); + } + } + upgrades_used += upgcount; + capacity += BASE_SLOTS * STACK_MAX * MITHRIL_UPGRADE_MULT * upgcount; + } + + printstr("\n1 slot: "); + printint(capacity); + printstr("\n2 slots: "); + printint(capacity/2); + printstr("\n4 slots: "); + printint(capacity/4); + printstr("\nPress 0 to run again\n"); + upgcount = readint(); + } +} -- cgit v1.2.3