int game_setup(jnx_hashmap *configuration) { assert(configuration); config = configuration; assert(config); videomode = sfVideoMode_getDesktopMode(); JNX_LOG(NULL,"Video mode is %d %d\n",videomode.width,videomode.height); main_window = sfRenderWindow_create(videomode,"Gridfire",sfDefaultStyle,NULL); int max_fps = atoi(jnx_hash_get(config,"MAXFPS")); assert(max_fps); sfRenderWindow_setFramerateLimit(main_window,max_fps); main_view = sfView_create(); sfVector2f view_size; view_size.x = videomode.width; view_size.y = videomode.height; sfView_setSize(main_view,view_size); clear_color = sfColor_fromRGB(0,0,0); JNX_LOG(NULL,"Creating game _clock\n"); _clock = sfClock_create(); JNX_LOG(NULL,"Creating bounding map\n"); int game_bound = atoi(jnx_hash_get(configuration,"GAMEBOUNDS")); cartographer_setbounds(0,game_bound,0,game_bound); int star_density = atoi(jnx_hash_get(configuration,"STARCOUNT")); starfield_create(cartographer_getbounds(),star_density); JNX_LOG(NULL,"Initial setup complete\n"); /*----------------------------------------------------------------------------- * Game text *-----------------------------------------------------------------------------*/ game_start_text = game_ui_text_builder("GRIDFIRE",sfView_getCenter(main_view),sfColor_fromRGB(255,0,0),sfTextRegular,40); game_over_text = game_ui_text_builder("GAME OVER",sfView_getCenter(main_view),sfColor_fromRGB(255,255,255),sfTextRegular,30); game_start_button_text = game_ui_text_builder("Start",sfView_getCenter(main_view),sfColor_fromRGB(255,0,0),sfTextRegular,15); game_author_text = game_ui_text_builder("By Alex Jones",sfView_getCenter(main_view),sfColor_fromRGB(255,0,0),sfTextRegular,15); next_level_text = game_ui_text_builder("Congratulations",sfView_getCenter(main_view),sfColor_fromRGB(255,255,255),sfTextRegular,45); next_level_button_text = game_ui_text_builder("Press enter for the next level",sfView_getCenter(main_view),sfColor_fromRGB(255,0,0),sfTextRegular,20); game_loading_text = game_ui_text_builder("LOADING",sfView_getCenter(main_view),sfColor_fromRGB(255,0,0),sfTextRegular,40); game_finish_text = game_ui_text_builder("GAME COMPLETE",sfView_getCenter(main_view),sfColor_fromRGB(255,0,0),sfTextRegular,40); assert(game_finish_text); assert(game_loading_text); assert(next_level_button_text); assert(game_start_text); assert(game_over_text); assert(game_start_button_text); assert(game_author_text); assert(next_level_text); /*----------------------------------------------------------------------------- * Game level setup *-----------------------------------------------------------------------------*/ max_levels = atoi(jnx_hash_get(configuration,"MAXLEVELS")); assert(max_levels); //start on level one current_level = 1; /*----------------------------------------------------------------------------- * Scoreboard setup *-----------------------------------------------------------------------------*/ score_setup(atoi(jnx_hash_get(configuration,"MAXSCORE"))); /*----------------------------------------------------------------------------- * Load weapon textures *-----------------------------------------------------------------------------*/ weapon_setup(); /*----------------------------------------------------------------------------- * Load ingame music *-----------------------------------------------------------------------------*/ audio_control_setup(configuration); play_music(TITLEMUSIC); if(game_ui_setup(main_window,main_view) != 0) { return 1; } /*----------------------------------------------------------------------------- * Set game state to running *-----------------------------------------------------------------------------*/ current_game_state = GAMESTART; return 0; }
void render_main(void) { // Create the main window and the main view window = sfRenderWindow_create( (sfVideoMode){DEFAULT_WIN_WIDTH, DEFAULT_WIN_HEIGHT, 32}, "Territory", sfResize | sfClose, NULL ); if (!window) return; mainView = sfView_createFromRect( (sfFloatRect){0, 0, DEFAULT_WIN_WIDTH, DEFAULT_WIN_HEIGHT}); sfView_zoom(mainView, 0.75); /*** ***/ // Create images sfImage* oceanImage = sfImage_createFromFile("res/ocean.png"); if (!oceanImage) return; sfImage* grassImage = sfImage_createFromFile("res/grass.png"); if (!grassImage) return; const int mapWidth = 40; const int mapHeight = 20; sfImage* mapImage = sfImage_create(mapWidth * 16, mapHeight * 16); worldmap* map = newMap(mapWidth, mapHeight); for (int y = 0; y < mapHeight; y++) { for (int x = 0; x < mapWidth; x++) { sfImage_copyImage( mapImage, map->tiles[x][y] ? grassImage : oceanImage, x * 16, y * 16, (sfIntRect){0, 0, 16, 16}, sfTrue); } } sfSprite* mapSprite = sfSprite_create(); sfSprite_setTexture( mapSprite, sfTexture_createFromImage(mapImage, NULL), sfTrue); /*** ***/ sfVector2u winDimensions; render_closeFlag = false; eventAvailable = sfFalse; while (sfRenderWindow_isOpen(window)) { eventAvailable = sfRenderWindow_pollEvent(window, &render_event); if (render_closeFlag) { render_closeFlag = false; sfRenderWindow_close(window); sfRenderWindow_destroy(window); return; } if (render_rescaleFlag) { render_rescaleFlag = false; winDimensions = sfRenderWindow_getSize(window); if (winDimensions.x < DEFAULT_WIN_WIDTH) { winDimensions.x = DEFAULT_WIN_WIDTH; sfRenderWindow_setSize(window, winDimensions); } if (winDimensions.y < DEFAULT_WIN_HEIGHT) { winDimensions.y = DEFAULT_WIN_HEIGHT; sfRenderWindow_setSize(window, winDimensions); } sfView_setSize( mainView, (sfVector2f){render_event.size.width, render_event.size.height} ); sfView_zoom(mainView, 0.75); } sfRenderWindow_clear(window, sfBlue); sfRenderWindow_setView(window, mainView); sfRenderWindow_drawSprite(window, mapSprite, NULL); sfRenderWindow_display(window); Sleep(10); } }
void sfView_setSize_wrapper(sfView* view, const sfVector2f* size) { sfView_setSize(view, *size); }