#pragma once #include #include "command_queue.h" #include "game_lifecycle.h" /* The application task is the sole owner of lifecycle and game mutations. */ typedef struct { command_queue_t command_queue; game_lifecycle_t lifecycle; } application_t; void application_init(application_t *application, random_source_t random); bool application_enqueue(application_t *application, const app_command_t *command); bool application_take_next_command(application_t *application, app_command_t *command); lifecycle_result_t application_join(application_t *application, role_t requested_role, const char *name, uint8_t *session_index); lifecycle_result_t application_resume(application_t *application, const uint8_t token[kSessionTokenBytes], uint8_t *session_index); bool application_session_for_token(const application_t *application, const uint8_t token[kSessionTokenBytes], uint8_t *session_index); lifecycle_result_t application_submit(application_t *application, const app_command_t *command);