#include #include #include #ifndef ACTION_LIST_H #define ACTION_LIST_H enum A_TYPE { A_PLACE, A_MOVE }; typedef struct action_node_s { struct action_node_s *next; enum A_TYPE type; int8_t loc; uint8_t data0; uint8_t data1; } action_node_t; typedef struct action_list_s { struct action_node_s *head, *tail; uint32_t length; } action_list_t; void action_list_init(void); void action_list_free(action_list_t *list); action_list_t *action_list_generate(void); action_node_t *action_copy(const action_node_t* action); void action_take(action_node_t *action); void action_undo(action_node_t *action); void action_to_ptn(action_node_t* action, char* out_ptn); #endif