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 "engine.h"
|
||||||
#include "mempool.h"
|
#include "mempool.h"
|
||||||
|
|
||||||
void init_engine(GameEngine_t* engine)
|
void init_engine(GameEngine_t* engine, Vector2 starting_win_size)
|
||||||
{
|
{
|
||||||
InitAudioDevice();
|
InitAudioDevice();
|
||||||
sc_queue_init(&engine->key_buffer);
|
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));
|
memset(engine->sfx_list.sfx, 0, engine->sfx_list.n_sfx * sizeof(SFX_t));
|
||||||
init_memory_pools();
|
init_memory_pools();
|
||||||
init_assets(&engine->assets);
|
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)
|
void deinit_engine(GameEngine_t* engine)
|
||||||
|
@ -17,6 +19,7 @@ void deinit_engine(GameEngine_t* engine)
|
||||||
free_memory_pools();
|
free_memory_pools();
|
||||||
sc_queue_term(&engine->key_buffer);
|
sc_queue_term(&engine->key_buffer);
|
||||||
CloseAudioDevice();
|
CloseAudioDevice();
|
||||||
|
CloseWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_inputs(GameEngine_t* engine, Scene_t* scene)
|
void process_inputs(GameEngine_t* engine, Scene_t* scene)
|
||||||
|
|
|
@ -24,6 +24,10 @@ typedef struct GameEngine {
|
||||||
SFXList_t sfx_list;
|
SFXList_t sfx_list;
|
||||||
// Maintain own queue to handle key presses
|
// Maintain own queue to handle key presses
|
||||||
struct sc_queue_32 key_buffer;
|
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;
|
} GameEngine_t;
|
||||||
|
|
||||||
//typedef enum SceneType {
|
//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 deinit_engine(GameEngine_t* engine);
|
||||||
void process_inputs(GameEngine_t* engine, Scene_t* scene);
|
void process_inputs(GameEngine_t* engine, Scene_t* scene);
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,7 @@ static GameEngine_t engine =
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
init_engine(&engine);
|
init_engine(&engine, (Vector2){1280,640});
|
||||||
InitWindow(1280, 640, "raylib");
|
|
||||||
SetTargetFPS(60);
|
SetTargetFPS(60);
|
||||||
|
|
||||||
load_from_infofile("res/test_assets.info", &engine.assets);
|
load_from_infofile("res/test_assets.info", &engine.assets);
|
||||||
|
@ -62,6 +61,5 @@ int main(void)
|
||||||
}
|
}
|
||||||
free_scene(&scene.scene);
|
free_scene(&scene.scene);
|
||||||
term_level_scene_data(&scene.data);
|
term_level_scene_data(&scene.data);
|
||||||
CloseWindow();
|
|
||||||
deinit_engine(&engine);
|
deinit_engine(&engine);
|
||||||
}
|
}
|
||||||
|
|
4
main.c
4
main.c
|
@ -25,8 +25,7 @@ int main(void)
|
||||||
{
|
{
|
||||||
// Initialization
|
// Initialization
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
init_engine(&engine);
|
init_engine(&engine, (Vector2){screenWidth, screenHeight});
|
||||||
InitWindow(screenWidth, screenHeight, "raylib");
|
|
||||||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
load_from_infofile("res/assets.info.raw", &engine.assets);
|
load_from_infofile("res/assets.info.raw", &engine.assets);
|
||||||
|
@ -114,5 +113,4 @@ int main(void)
|
||||||
free_game_scene(&level_scene);
|
free_game_scene(&level_scene);
|
||||||
free_menu_scene(&menu_scene);
|
free_menu_scene(&menu_scene);
|
||||||
deinit_engine(&engine);
|
deinit_engine(&engine);
|
||||||
CloseWindow();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,9 +39,8 @@ void update_loop(void)
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
InitWindow(1280, 640, "raylib");
|
init_engine(&engine, (Vector2){1280,640});
|
||||||
SetTargetFPS(60);
|
SetTargetFPS(60);
|
||||||
init_engine(&engine);
|
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
load_from_infofile("res/assets.info.raw", &engine.assets);
|
load_from_infofile("res/assets.info.raw", &engine.assets);
|
||||||
|
@ -100,6 +99,4 @@ int main(void)
|
||||||
#endif
|
#endif
|
||||||
free_sandbox_scene(&scene);
|
free_sandbox_scene(&scene);
|
||||||
deinit_engine(&engine);
|
deinit_engine(&engine);
|
||||||
CloseWindow();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1009,7 +1009,15 @@ void init_sandbox_scene(LevelScene_t* scene)
|
||||||
SELECTION_REGION_WIDTH, SELECTION_REGION_HEIGHT
|
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);
|
BeginTextureMode(scene->scene.layers.render_layers[SELECTION_LAYER].layer_tex);
|
||||||
ClearBackground(LIGHTGRAY);
|
ClearBackground(LIGHTGRAY);
|
||||||
|
|
|
@ -360,18 +360,24 @@ void init_game_scene(LevelScene_t* scene)
|
||||||
(Rectangle){25, 25, 32*TILE_SIZE, 18*TILE_SIZE}
|
(Rectangle){25, 25, 32*TILE_SIZE, 18*TILE_SIZE}
|
||||||
);
|
);
|
||||||
|
|
||||||
// TODO: Remove the hardcoded window size
|
|
||||||
scene->scene.bg_colour = LIGHTGRAY;
|
scene->scene.bg_colour = LIGHTGRAY;
|
||||||
add_scene_layer(
|
add_scene_layer(
|
||||||
&scene->scene, scene->data.game_rec.width, scene->data.game_rec.height,
|
&scene->scene, scene->data.game_rec.width, scene->data.game_rec.height,
|
||||||
scene->data.game_rec
|
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);
|
create_player(&scene->scene.ent_manager);
|
||||||
update_entity_manager(&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, &update_tilemap_system);
|
||||||
sc_array_add(&scene->scene.systems, &player_movement_input_system);
|
sc_array_add(&scene->scene.systems, &player_movement_input_system);
|
||||||
sc_array_add(&scene->scene.systems, &player_bbox_update_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.max_comp = 4;
|
||||||
scene->data.selected_comp = 0;
|
scene->data.selected_comp = 0;
|
||||||
scene->data.mode = MOUSE_MODE;
|
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_UP, ACTION_UP);
|
||||||
sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN);
|
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)
|
int main(void)
|
||||||
{
|
{
|
||||||
InitWindow(1280, 640, "raylib");
|
init_engine(&engine, (Vector2){1280,640});
|
||||||
SetTargetFPS(60);
|
SetTargetFPS(60);
|
||||||
init_engine(&engine);
|
|
||||||
|
|
||||||
LevelScene_t scene;
|
LevelScene_t scene;
|
||||||
scene.scene.engine = &engine;
|
scene.scene.engine = &engine;
|
||||||
|
@ -470,5 +469,4 @@ int main(void)
|
||||||
free_scene(&scene.scene);
|
free_scene(&scene.scene);
|
||||||
term_level_scene_data(&scene.data);
|
term_level_scene_data(&scene.data);
|
||||||
deinit_engine(&engine);
|
deinit_engine(&engine);
|
||||||
CloseWindow();
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue