Expose initial window size to scene
This is so that each scene does not need to hardcode render layer sizescene_man
parent
75d019aa34
commit
bef2ee2813
|
@ -1,7 +1,7 @@
|
|||
#include "engine.h"
|
||||
#include "mempool.h"
|
||||
|
||||
void init_engine(GameEngine_t* engine)
|
||||
void init_engine(GameEngine_t* engine, Vector2 starting_win_size)
|
||||
{
|
||||
InitAudioDevice();
|
||||
sc_queue_init(&engine->key_buffer);
|
||||
|
@ -9,6 +9,8 @@ void init_engine(GameEngine_t* engine)
|
|||
memset(engine->sfx_list.sfx, 0, engine->sfx_list.n_sfx * sizeof(SFX_t));
|
||||
init_memory_pools();
|
||||
init_assets(&engine->assets);
|
||||
engine->intended_window_size = starting_win_size;
|
||||
InitWindow(starting_win_size.x, starting_win_size.y, "raylib");
|
||||
}
|
||||
|
||||
void deinit_engine(GameEngine_t* engine)
|
||||
|
@ -17,6 +19,7 @@ void deinit_engine(GameEngine_t* engine)
|
|||
free_memory_pools();
|
||||
sc_queue_term(&engine->key_buffer);
|
||||
CloseAudioDevice();
|
||||
CloseWindow();
|
||||
}
|
||||
|
||||
void process_inputs(GameEngine_t* engine, Scene_t* scene)
|
||||
|
|
|
@ -24,6 +24,10 @@ typedef struct GameEngine {
|
|||
SFXList_t sfx_list;
|
||||
// Maintain own queue to handle key presses
|
||||
struct sc_queue_32 key_buffer;
|
||||
// This is the original size of the window.
|
||||
// This is in case of window scaling, where there needs to be
|
||||
// an absolute reference
|
||||
Vector2 intended_window_size;
|
||||
} GameEngine_t;
|
||||
|
||||
//typedef enum SceneType {
|
||||
|
@ -71,7 +75,7 @@ struct Scene {
|
|||
};
|
||||
|
||||
|
||||
void init_engine(GameEngine_t* engine);
|
||||
void init_engine(GameEngine_t* engine, Vector2 starting_win_size);
|
||||
void deinit_engine(GameEngine_t* engine);
|
||||
void process_inputs(GameEngine_t* engine, Scene_t* scene);
|
||||
|
||||
|
|
|
@ -19,8 +19,7 @@ static GameEngine_t engine =
|
|||
|
||||
int main(void)
|
||||
{
|
||||
init_engine(&engine);
|
||||
InitWindow(1280, 640, "raylib");
|
||||
init_engine(&engine, (Vector2){1280,640});
|
||||
SetTargetFPS(60);
|
||||
|
||||
load_from_infofile("res/test_assets.info", &engine.assets);
|
||||
|
@ -62,6 +61,5 @@ int main(void)
|
|||
}
|
||||
free_scene(&scene.scene);
|
||||
term_level_scene_data(&scene.data);
|
||||
CloseWindow();
|
||||
deinit_engine(&engine);
|
||||
}
|
||||
|
|
4
main.c
4
main.c
|
@ -25,8 +25,7 @@ int main(void)
|
|||
{
|
||||
// Initialization
|
||||
//--------------------------------------------------------------------------------------
|
||||
init_engine(&engine);
|
||||
InitWindow(screenWidth, screenHeight, "raylib");
|
||||
init_engine(&engine, (Vector2){screenWidth, screenHeight});
|
||||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||
#ifndef NDEBUG
|
||||
load_from_infofile("res/assets.info.raw", &engine.assets);
|
||||
|
@ -114,5 +113,4 @@ int main(void)
|
|||
free_game_scene(&level_scene);
|
||||
free_menu_scene(&menu_scene);
|
||||
deinit_engine(&engine);
|
||||
CloseWindow();
|
||||
}
|
||||
|
|
|
@ -39,9 +39,8 @@ void update_loop(void)
|
|||
|
||||
int main(void)
|
||||
{
|
||||
InitWindow(1280, 640, "raylib");
|
||||
init_engine(&engine, (Vector2){1280,640});
|
||||
SetTargetFPS(60);
|
||||
init_engine(&engine);
|
||||
|
||||
#ifndef NDEBUG
|
||||
load_from_infofile("res/assets.info.raw", &engine.assets);
|
||||
|
@ -100,6 +99,4 @@ int main(void)
|
|||
#endif
|
||||
free_sandbox_scene(&scene);
|
||||
deinit_engine(&engine);
|
||||
CloseWindow();
|
||||
|
||||
}
|
||||
|
|
|
@ -1009,7 +1009,15 @@ void init_sandbox_scene(LevelScene_t* scene)
|
|||
SELECTION_REGION_WIDTH, SELECTION_REGION_HEIGHT
|
||||
}
|
||||
);
|
||||
add_scene_layer(&scene->scene, 1280, 640, (Rectangle){0, 0, 1280, 640});
|
||||
add_scene_layer(
|
||||
&scene->scene, scene->scene.engine->intended_window_size.x,
|
||||
scene->scene.engine->intended_window_size.y,
|
||||
(Rectangle){
|
||||
0, 0,
|
||||
scene->scene.engine->intended_window_size.x,
|
||||
scene->scene.engine->intended_window_size.y
|
||||
}
|
||||
);
|
||||
|
||||
BeginTextureMode(scene->scene.layers.render_layers[SELECTION_LAYER].layer_tex);
|
||||
ClearBackground(LIGHTGRAY);
|
||||
|
|
|
@ -360,18 +360,24 @@ void init_game_scene(LevelScene_t* scene)
|
|||
(Rectangle){25, 25, 32*TILE_SIZE, 18*TILE_SIZE}
|
||||
);
|
||||
|
||||
// TODO: Remove the hardcoded window size
|
||||
scene->scene.bg_colour = LIGHTGRAY;
|
||||
add_scene_layer(
|
||||
&scene->scene, scene->data.game_rec.width, scene->data.game_rec.height,
|
||||
scene->data.game_rec
|
||||
);
|
||||
add_scene_layer(&scene->scene, 1280, 640, (Rectangle){0, 0, 1280, 640});
|
||||
add_scene_layer(
|
||||
&scene->scene, scene->scene.engine->intended_window_size.x,
|
||||
scene->scene.engine->intended_window_size.y,
|
||||
(Rectangle){
|
||||
0, 0,
|
||||
scene->scene.engine->intended_window_size.x,
|
||||
scene->scene.engine->intended_window_size.y
|
||||
}
|
||||
);
|
||||
|
||||
create_player(&scene->scene.ent_manager);
|
||||
update_entity_manager(&scene->scene.ent_manager);
|
||||
|
||||
// insert level scene systems
|
||||
sc_array_add(&scene->scene.systems, &update_tilemap_system);
|
||||
sc_array_add(&scene->scene.systems, &player_movement_input_system);
|
||||
sc_array_add(&scene->scene.systems, &player_bbox_update_system);
|
||||
|
|
|
@ -160,7 +160,15 @@ void init_menu_scene(MenuScene_t* scene)
|
|||
scene->data.max_comp = 4;
|
||||
scene->data.selected_comp = 0;
|
||||
scene->data.mode = MOUSE_MODE;
|
||||
add_scene_layer(&scene->scene, 1280, 640, (Rectangle){0, 0, 1280, 640});
|
||||
add_scene_layer(
|
||||
&scene->scene, scene->scene.engine->intended_window_size.x,
|
||||
scene->scene.engine->intended_window_size.y,
|
||||
(Rectangle){
|
||||
0, 0,
|
||||
scene->scene.engine->intended_window_size.x,
|
||||
scene->scene.engine->intended_window_size.y
|
||||
}
|
||||
);
|
||||
|
||||
sc_map_put_64(&scene->scene.action_map, KEY_UP, ACTION_UP);
|
||||
sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN);
|
||||
|
|
|
@ -395,9 +395,8 @@ static void player_simple_movement_system(Scene_t* scene)
|
|||
|
||||
int main(void)
|
||||
{
|
||||
InitWindow(1280, 640, "raylib");
|
||||
init_engine(&engine, (Vector2){1280,640});
|
||||
SetTargetFPS(60);
|
||||
init_engine(&engine);
|
||||
|
||||
LevelScene_t scene;
|
||||
scene.scene.engine = &engine;
|
||||
|
@ -470,5 +469,4 @@ int main(void)
|
|||
free_scene(&scene.scene);
|
||||
term_level_scene_data(&scene.data);
|
||||
deinit_engine(&engine);
|
||||
CloseWindow();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue