https://stackoverflow.com/questions/65371574/implement-a-finite-state-machine-using-function-pointers-in-c
game_programming