Fix camera for levels smaller that viewport
parent
70d7fda22c
commit
e670af2519
|
@ -782,7 +782,10 @@ void init_sandbox_scene(LevelScene_t* scene)
|
||||||
init_scene(&scene->scene, &level_scene_render_func, &level_do_action);
|
init_scene(&scene->scene, &level_scene_render_func, &level_do_action);
|
||||||
|
|
||||||
scene->data.tilemap.tiles = all_tiles;
|
scene->data.tilemap.tiles = all_tiles;
|
||||||
init_level_scene_data(&scene->data, MAX_N_TILES, all_tiles);
|
init_level_scene_data(
|
||||||
|
&scene->data, MAX_N_TILES, all_tiles,
|
||||||
|
(Rectangle){25, 25, VIEWABLE_MAP_WIDTH*TILE_SIZE, VIEWABLE_MAP_HEIGHT*TILE_SIZE}
|
||||||
|
);
|
||||||
for (size_t i = 0; i < scene->data.tilemap.width; ++i)
|
for (size_t i = 0; i < scene->data.tilemap.width; ++i)
|
||||||
{
|
{
|
||||||
unsigned int tile_idx = (scene->data.tilemap.height - 1) * scene->data.tilemap.width + i;
|
unsigned int tile_idx = (scene->data.tilemap.height - 1) * scene->data.tilemap.width + i;
|
||||||
|
|
|
@ -368,7 +368,10 @@ void init_game_scene(LevelScene_t* scene)
|
||||||
init_scene(&scene->scene, &level_scene_render_func, &level_do_action);
|
init_scene(&scene->scene, &level_scene_render_func, &level_do_action);
|
||||||
|
|
||||||
scene->data.tilemap.tiles = all_tiles;
|
scene->data.tilemap.tiles = all_tiles;
|
||||||
init_level_scene_data(&scene->data, MAX_N_TILES, all_tiles);
|
init_level_scene_data(
|
||||||
|
&scene->data, MAX_N_TILES, all_tiles,
|
||||||
|
(Rectangle){25, 25, 32*TILE_SIZE, 18*TILE_SIZE}
|
||||||
|
);
|
||||||
|
|
||||||
create_player(&scene->scene.ent_manager, &scene->scene.engine->assets);
|
create_player(&scene->scene.ent_manager, &scene->scene.engine->assets);
|
||||||
update_entity_manager(&scene->scene.ent_manager);
|
update_entity_manager(&scene->scene.ent_manager);
|
||||||
|
|
|
@ -1649,8 +1649,8 @@ void camera_update_system(Scene_t* scene)
|
||||||
}
|
}
|
||||||
Vector2 max = GetWorldToScreen2D(
|
Vector2 max = GetWorldToScreen2D(
|
||||||
(Vector2){
|
(Vector2){
|
||||||
lvl_scene->data.tilemap.width * TILE_SIZE,
|
fmax(lvl_scene->data.tilemap.width * TILE_SIZE, lvl_scene->data.game_rec.width),
|
||||||
lvl_scene->data.tilemap.height * TILE_SIZE
|
fmax(lvl_scene->data.tilemap.height * TILE_SIZE, lvl_scene->data.game_rec.height)
|
||||||
},
|
},
|
||||||
lvl_scene->data.cam
|
lvl_scene->data.cam
|
||||||
);
|
);
|
||||||
|
|
|
@ -38,8 +38,8 @@ void init_game_scene(LevelScene_t* scene);
|
||||||
void free_game_scene(LevelScene_t* scene);
|
void free_game_scene(LevelScene_t* scene);
|
||||||
void init_sandbox_scene(LevelScene_t* scene);
|
void init_sandbox_scene(LevelScene_t* scene);
|
||||||
void free_sandbox_scene(LevelScene_t* scene);
|
void free_sandbox_scene(LevelScene_t* scene);
|
||||||
//void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles, Rectangle view_zone);
|
void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles, Rectangle view_zone);
|
||||||
void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles);
|
//void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles);
|
||||||
void term_level_scene_data(LevelSceneData_t* data);
|
void term_level_scene_data(LevelSceneData_t* data);
|
||||||
void reload_level_tilemap(LevelScene_t* scene);
|
void reload_level_tilemap(LevelScene_t* scene);
|
||||||
void load_next_level_tilemap(LevelScene_t* scene);
|
void load_next_level_tilemap(LevelScene_t* scene);
|
||||||
|
|
|
@ -2,10 +2,13 @@
|
||||||
#include "ent_impl.h"
|
#include "ent_impl.h"
|
||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
|
|
||||||
void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles)
|
void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles, Rectangle view_zone)
|
||||||
|
//void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* tiles)
|
||||||
{
|
{
|
||||||
data->game_viewport = LoadRenderTexture(VIEWABLE_MAP_WIDTH*TILE_SIZE, VIEWABLE_MAP_HEIGHT*TILE_SIZE);
|
//data->game_viewport = LoadRenderTexture(VIEWABLE_MAP_WIDTH*TILE_SIZE, VIEWABLE_MAP_HEIGHT*TILE_SIZE);
|
||||||
data->game_rec = (Rectangle){25, 25, VIEWABLE_MAP_WIDTH*TILE_SIZE, VIEWABLE_MAP_HEIGHT*TILE_SIZE};
|
//data->game_rec = (Rectangle){25, 25, VIEWABLE_MAP_WIDTH*TILE_SIZE, VIEWABLE_MAP_HEIGHT*TILE_SIZE};
|
||||||
|
data->game_viewport = LoadRenderTexture(view_zone.width, view_zone.height);
|
||||||
|
data->game_rec = view_zone;
|
||||||
data->cam = (Camera2D){0};
|
data->cam = (Camera2D){0};
|
||||||
data->cam.rotation = 0.0f;
|
data->cam.rotation = 0.0f;
|
||||||
data->cam.zoom = 1.0f;
|
data->cam.zoom = 1.0f;
|
||||||
|
|
|
@ -419,7 +419,10 @@ int main(void)
|
||||||
LevelScene_t scene;
|
LevelScene_t scene;
|
||||||
scene.scene.engine = &engine;
|
scene.scene.engine = &engine;
|
||||||
init_scene(&scene.scene, &level_scene_render_func, &level_do_action);
|
init_scene(&scene.scene, &level_scene_render_func, &level_do_action);
|
||||||
init_level_scene_data(&scene.data, MAX_N_TILES, all_tiles);
|
init_level_scene_data(
|
||||||
|
&scene.data, MAX_N_TILES, all_tiles,
|
||||||
|
(Rectangle){25, 25, VIEWABLE_MAP_WIDTH*TILE_SIZE, VIEWABLE_MAP_HEIGHT*TILE_SIZE}
|
||||||
|
);
|
||||||
assert(scene.data.tilemap.n_tiles <= MAX_N_TILES);
|
assert(scene.data.tilemap.n_tiles <= MAX_N_TILES);
|
||||||
|
|
||||||
for (size_t i = 0; i < scene.data.tilemap.width; ++i)
|
for (size_t i = 0; i < scene.data.tilemap.width; ++i)
|
||||||
|
|
Loading…
Reference in New Issue