diff --git a/.clang_complete b/.clang_complete index 17b71c1..e1282ec 100644 --- a/.clang_complete +++ b/.clang_complete @@ -1,4 +1,6 @@ -DDEBUG +-I./steamworks_c_api/src/ +-I./src/steam/ -I./build/config.h -I/usr/include/SDL2/ -I/usr/include/lua5.2/ diff --git a/src/main.c b/src/main.c index b5448a8..0f682e8 100644 --- a/src/main.c +++ b/src/main.c @@ -254,7 +254,7 @@ static void initViewports(Uint32 offset) { mainViewport = (SDL_Rect) { offset, 0, - SCREEN_HEIGHT, SCREEN_WIDTH + SCREEN_WIDTH, SCREEN_HEIGHT }; gameViewport = (SDL_Rect) { offset, 0, @@ -547,6 +547,31 @@ init(void) return true; } +static void +toggle_fullscreen(void) +{ + bool isFullscreen = SDL_GetWindowFlags(gWindow) & SDL_WINDOW_FULLSCREEN_DESKTOP; + Settings *settings = settings_get(); + if (isFullscreen) { + initViewports(0); + SDL_SetWindowFullscreen(gWindow, 0); + settings->fullscreen_enabled = false; + } + else { + int w, h; + SDL_GetWindowSize(gWindow, &w, &h); + + SDL_SetWindowFullscreen(gWindow, SDL_WINDOW_FULLSCREEN_DESKTOP); + + SDL_DisplayMode dMode; + SDL_GetWindowDisplayMode(gWindow, &dMode); + double ratio = (double) (dMode.w) / w; + double offset = ((dMode.w - w) / 2); + initViewports((Uint32)((offset)/(ratio*2))); + settings->fullscreen_enabled = true; + } +} + static void handle_main_input(void) { @@ -592,23 +617,7 @@ handle_main_input(void) } if (input_modkey_is_pressed(&input, KEY_CTRL_F)) { - bool isFullscreen = SDL_GetWindowFlags(gWindow) & SDL_WINDOW_FULLSCREEN_DESKTOP; - if (isFullscreen) { - initViewports(0); - SDL_SetWindowFullscreen(gWindow, 0); - } - else { - int w, h; - SDL_RenderGetLogicalSize(gRenderer, &w, &h); - - SDL_SetWindowFullscreen(gWindow, SDL_WINDOW_FULLSCREEN_DESKTOP); - - SDL_DisplayMode dMode; - SDL_GetWindowDisplayMode(gWindow, &dMode); - double ratio = (double) w / (double) dMode.w; - double offset = (double) (dMode.w - w) / 2; - initViewports((Uint32) (offset * ratio)); - } + toggle_fullscreen(); } } @@ -643,9 +652,6 @@ handle_events(void) static bool is_player_dead(void) { -#ifdef DEBUG - gPlayer->stats.hp = gPlayer->stats.hp > 0 ? gPlayer->stats.hp : 1; -#endif // DEBUG if (gPlayer->stats.hp <= 0) { return true; } @@ -731,9 +737,10 @@ run_game_update(void) if (skillActivated && settings->tooltips_enabled && playerLevel < 5) { gGui->activeTooltip = new_skill_tooltip; } - if (!artifactTooltipShown && gPlayer->equipment.hasArtifacts && settings->tooltips_enabled) { + if (!artifactTooltipShown && gPlayer->equipment.hasArtifacts) { artifactTooltipShown = true; - gGui->activeTooltip = new_artifact_tooltip; + if (settings->tooltips_enabled) + gGui->activeTooltip = new_artifact_tooltip; } if (gGameState == PLAYING && currentTurn == PLAYER) @@ -839,6 +846,7 @@ run_game_render(void) render_game(); render_gui(); + SDL_RenderSetViewport(gRenderer, &mainViewport); particle_engine_render_global(gCamera); gui_render_tooltip(gGui, gCamera); @@ -1090,6 +1098,11 @@ int main(int argc, char *argv[]) if (!init()) return 1; + if (settings_get()->fullscreen_enabled) { + // Game starts in windowed mode so this will + // change to fullscreen + toggle_fullscreen(); + } run(); close(); PHYSFS_deinit(); diff --git a/src/settings.c b/src/settings.c index 489e1b1..1c4f13f 100644 --- a/src/settings.c +++ b/src/settings.c @@ -31,6 +31,7 @@ static const char *KEY_MUSIC_ENABLED = "music_enabled"; static const char *KEY_SOUND_ENABLED = "sound_enabled"; static const char *KEY_TOOLTIPS_ENABLED = "tooltips_enabled"; static const char *KEY_HOW_TO_PLAY_SHOWN = "how_to_play_shown"; +static const char *KEY_FULLSCREEN_ENABLED = "fullscreen_enabled"; static DbQuery MIGRATE_COMMANDS[] = { @@ -53,6 +54,7 @@ set_default_settings(void) settings.sound_enabled = true; settings.tooltips_enabled = true; settings.howto_tooltip_shown = false; + settings.fullscreen_enabled = false; } static void @@ -90,6 +92,10 @@ load_settings_cb(void *unused, int count, char **values, char **colNames) settings.howto_tooltip_shown = (bool)atoi(values[i + 1]); i += 2; } + else if (!strcmp(KEY_FULLSCREEN_ENABLED, values[i])) { + settings.fullscreen_enabled = (bool)atoi(values[i + 1]); + i += 2; + } else if (!strcmp(KEY_TOOLTIPS_ENABLED, values[i])) { settings.tooltips_enabled = (bool)atoi(values[i + 1]); i += 2; @@ -141,6 +147,7 @@ settings_save(void) save_setting_int(KEY_MUSIC_ENABLED, settings.music_enabled); save_setting_int(KEY_TOOLTIPS_ENABLED, settings.tooltips_enabled); save_setting_int(KEY_HOW_TO_PLAY_SHOWN, settings.howto_tooltip_shown); + save_setting_int(KEY_FULLSCREEN_ENABLED, settings.fullscreen_enabled); } Settings * diff --git a/src/settings.h b/src/settings.h index 91d5a25..14f197e 100644 --- a/src/settings.h +++ b/src/settings.h @@ -26,6 +26,7 @@ typedef struct Settings { bool sound_enabled; bool tooltips_enabled; bool howto_tooltip_shown; + bool fullscreen_enabled; } Settings; void diff --git a/src/steam/steamworks_api_wrapper.c b/src/steam/steamworks_api_wrapper.c index 2f1e89f..0b1209f 100644 --- a/src/steam/steamworks_api_wrapper.c +++ b/src/steam/steamworks_api_wrapper.c @@ -19,7 +19,7 @@ static Sint64 m_AppID = 0; static Sint64 m_hLeaderboard = 0; static bool -steam_request_stats() +steam_request_stats(void) { if (m_Initiated) return c_SteamUserStats_RequestCurrentStats(); diff --git a/steamworks_c_wrapper/CMakeLists.txt b/steamworks_c_wrapper/CMakeLists.txt index 127c2ee..acf2d8a 100644 --- a/steamworks_c_wrapper/CMakeLists.txt +++ b/steamworks_c_wrapper/CMakeLists.txt @@ -26,6 +26,7 @@ endif () include_directories(${STEAMWORKS_INCLUDE_DIR}) add_library(steamworks_c_wrapper + SHARED src/steamworks_c_wrapper ) diff --git a/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp b/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp index 957f078..45b13b2 100644 --- a/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp +++ b/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp @@ -11,10 +11,10 @@ static bool m_RecvCB = false; static void(*statsReceivedCb)(void) = NULL; static void(*statsStoredCb)(void) = NULL; -static void(*leaderBoardReceived)(int64) = NULL; +static void(*leaderBoardReceived)(int64_t) = NULL; -extern "C" int64 +extern "C" int64_t c_SteamAPI_Init() { if (SteamAPI_Init()) { @@ -26,7 +26,7 @@ c_SteamAPI_Init() return 0; } -extern "C" int64 +extern "C" int64_t c_SteamAPI_GetAppID() { if (!m_Initiated) diff --git a/steamworks_c_wrapper/src/steamworks_c_wrapper.h b/steamworks_c_wrapper/src/steamworks_c_wrapper.h index 29a0b72..a0035d5 100644 --- a/steamworks_c_wrapper/src/steamworks_c_wrapper.h +++ b/steamworks_c_wrapper/src/steamworks_c_wrapper.h @@ -15,7 +15,7 @@ void c_SteamAPI_SetCallbacks(void(*)(void), void(*)(void), void(*)(int64_t)); bool -c_SteamUserStats_RequestCurrentStats(); +c_SteamUserStats_RequestCurrentStats(void); bool c_SteamUserStats_SetAchievement(const char *id); @@ -33,7 +33,7 @@ void c_SteamUserStats_UploadLeaderboardScore(int64_t hLeaderboard, int32_t nScore); void -c_SteamAPI_Shutdown(); +c_SteamAPI_Shutdown(void); #ifdef __cplusplus class CallbackHandler @@ -46,4 +46,4 @@ public: void OnFindLeaderboard(LeaderboardFindResult_t *pCallback, bool bIOFailiure); }; -#endif // __cplusplus \ No newline at end of file +#endif // __cplusplus