|
- #include "IZ_app.h"
-
- /**
- * Logs the application command-line arguments.
- * @param argc The argument count.
- * @param argv The argument values.
- */
- void IZ_LogArguments(int argc, char** argv) {
- unsigned int i;
- for (i = 0; i < argc; i += 1) {
- IZ_Log("Argument(%d)=%s", i, argv[i]);
- }
- }
-
- typedef enum {
- IZ_INITIALIZE_FRAMEWORK_RESULT_OK,
- IZ_INITIALIZE_FRAMEWORK_RESULT_ERROR,
- } IZ_InitializeFrameworkResult;
-
- IZ_InitializeFrameworkResult IZ_InitializeFramework() {
- IZ_LogInfo(IZ_LOG_CATEGORY_GENERIC, "Initializing framework...");
- if (SDL_Init(
- SDL_INIT_VIDEO
- | SDL_INIT_GAMECONTROLLER
- | SDL_INIT_AUDIO
- | SDL_INIT_EVENTS
- | SDL_INIT_TIMER
- ) < 0) {
- IZ_LogError("ERROR! %s", SDL_GetError());
- return IZ_INITIALIZE_FRAMEWORK_RESULT_ERROR;
- }
-
- IZ_LogInfo(IZ_LOG_CATEGORY_GENERIC, "OK!");
- return IZ_INITIALIZE_FRAMEWORK_RESULT_OK;
- }
-
- typedef enum {
- IZ_INITIALIZE_CONFIG_RESULT_OK,
- IZ_INITIALIZE_CONFIG_RESULT_ERROR,
- } IZ_InitializeConfigResult;
-
- IZ_InitializeConfigResult IZ_InitializeConfig(IZ_App* app) {
- IZ_LogInfo(IZ_LOG_CATEGORY_GENERIC, "Initializing config...");
- if (IZ_ConfigLoad(&app->config, IZ_CONFIG_FILE_PATH)) {
- return IZ_INITIALIZE_CONFIG_RESULT_ERROR;
- }
-
- IZ_LogInfo(IZ_LOG_CATEGORY_GENERIC, "OK!");
- return IZ_INITIALIZE_CONFIG_RESULT_OK;
- }
-
- IZ_AppResult IZ_Initialize(IZ_App* app, const char* app_name) {
- if (IZ_InitializeFramework()) {
- return IZ_APP_RESULT_FRAMEWORK_ERROR;
- }
-
- if (IZ_InitializeConfig(app)) {
- return IZ_APP_RESULT_CONFIG_ERROR;
- }
-
- return IZ_APP_RESULT_OK;
- }
-
-
- IZ_AppResult IZ_AppRun(
- IZ_App* app,
- int argc,
- char** argv,
- const char* app_name,
- unsigned int major_version,
- unsigned int minor_version,
- unsigned int patch_version
- ) {
- IZ_TimerStart();
- IZ_LogInfo(
- IZ_LOG_CATEGORY_GLOBAL,
- "Application started (%s v.%d.%d.%d).",
- app_name,
- major_version,
- minor_version,
- patch_version
- );
- IZ_LogArguments(argc, argv);
- unsigned int status = IZ_Initialize(app, app_name);
-
- if (status) {
- return status;
- }
-
- return IZ_APP_RESULT_OK;
- }
|