Refactor/state machine (#470)

* initial additions

* Move current_blind to game vars

* tmp

* tmp

* tmp

* tmp

* tmp

* tmp

* tmp

* Compile but is broken

* temp fix for token location

* tmp

* Working, lets clean up

* remove todo

* Remove odd reroll blind variable

* fix skipping blind screen

* fix reroll

* remove magic for blind token locations

* clang format

* Cleanup button highlight in blind menu

* some cleanup

* Add layout file for global UI rects

* remove dead code

* Clang format

* clang format it up

* Move reset top left funct to gfx utils

* make note of soon-to-be removed vars

* Cleanup gamevars declaration

* Cleanup layout file

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Add include for stdbool.h in common_ui.h

* Cleanup rect declaration

* Start moving state machine stuff to new file

* quick tmp

* oops, add new files

* working call list

* fixed pointer stuff

* working as per norm

* working replacement

* move defines to static const

* fix compile issue

* Add some missing "void"s

* Working new substates

* add statemachine to blind select

* Fix game restart statemachine leak

* clang-format

* Clang format

* Rework shop exit logic

* Use new state machine in shop

* Remove substates entirely

* Remove debug stuff

* Clang format

* document state machine better

* update list tests

* clang-format

* Update for PR

* Claaaaang format

* another clang-format

* Remove extra state in round_end

* cleanup docs for removals in lists

* clang-format... again

* update doxygen format

* Clang format

* Update list docs

* Update lists tests

* Fix bad conflict resolution

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Rickey
2026-05-22 18:06:13 -07:00
committed by GitHub
co-authored by Copilot Autofix powered by AI
parent 2329c4c681
commit 92cb9f9883
11 changed files with 428 additions and 165 deletions
+30 -5
View File
@@ -23,6 +23,13 @@
*/
#define MAX_LIST_NODES 128
/**
* @brief Default list declaration for empty lists
*/
// clang-format off
#define LIST_DEFAULT { .head = NULL, .tail = NULL, .len = 0 }
// clang-format on
typedef struct ListNode ListNode;
/**
@@ -106,15 +113,16 @@ typedef struct
} ListItr;
/**
* Create a list.
* Initialize a list.
*
* While this function does not allocate memory for the list itself, the list does allocate memory
* for each element. So every created list must be freed with @ref list_clear to ensure the list's
* nodes are deleted properly.
* Set the values of a list to default.
*
* If using this function to reset a list, the list must be freed with @ref list_clear to ensure the
* list's nodes are deleted properly.
*
* @return A @ref List with head and tail reset.
*/
List list_create(void);
List list_init(void);
/**
* Clear a list.
@@ -122,6 +130,8 @@ List list_create(void);
* Go through the list and free each node and set the `head` and `tail` to `NULL`.
* Note, it doesn't "free" the data at the node.
*
* @note To reset an existing list to default values, first call `list_clear` then @ref list_init
*
* @param list pointer to a @ref List to clear
*/
void list_clear(List* list);
@@ -222,6 +232,18 @@ void* list_get_at_idx(List* list, unsigned int idx);
*/
bool list_remove_at_idx(List* list, unsigned int idx);
/**
* Remove a List's node with the matching pointer
*
* @param list pointer to a @ref List
* @param data pointer to data in node in list
*
* @return `true` if successfully removed, `false` otherwise
*
* @note When working with @ref ListItr, use @ref list_itr_remove_current_node()
*/
bool list_remove_data(List* list, void* data);
/**
* Get the number of elements in a @ref List
*
@@ -265,6 +287,9 @@ void* list_itr_next(ListItr* itr);
* most recently returned valu from @ref list_itr_next()
*
* @param itr pointer to the @ref ListItr
*
* @note When working with @ref ListItr, use this and not @ref list_remove_at() as it will
* "break" the iterator.
*/
void list_itr_remove_current_node(ListItr* itr);