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:
co-authored by
Copilot Autofix powered by AI
parent
2329c4c681
commit
92cb9f9883
+30
-5
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user