summaryrefslogtreecommitdiff
path: root/c/drawercalc/drawercalc.c
diff options
context:
space:
mode:
authorcheapie <no-email-for-you@example.com>2026-05-23 20:14:34 -0500
committercheapie <no-email-for-you@example.com>2026-05-23 20:14:34 -0500
commit85b5fde272be6ab543aa866baebabddc24566bdb (patch)
treeb4f2e3bb634effe51c2bdc5585ca4ea8b98d6dfa /c/drawercalc/drawercalc.c
downloadrvcontroller-85b5fde272be6ab543aa866baebabddc24566bdb.tar
rvcontroller-85b5fde272be6ab543aa866baebabddc24566bdb.tar.gz
rvcontroller-85b5fde272be6ab543aa866baebabddc24566bdb.tar.bz2
rvcontroller-85b5fde272be6ab543aa866baebabddc24566bdb.tar.xz
rvcontroller-85b5fde272be6ab543aa866baebabddc24566bdb.zip
Add initial content
Diffstat (limited to 'c/drawercalc/drawercalc.c')
-rw-r--r--c/drawercalc/drawercalc.c129
1 files changed, 129 insertions, 0 deletions
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 <stdint.h>
+#include <stdbool.h>
+#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();
+ }
+}