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);
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
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);
|
||||
update_entity_manager(&scene->scene.ent_manager);
|
||||
|
|
|
@ -1649,8 +1649,8 @@ void camera_update_system(Scene_t* scene)
|
|||
}
|
||||
Vector2 max = GetWorldToScreen2D(
|
||||
(Vector2){
|
||||
lvl_scene->data.tilemap.width * TILE_SIZE,
|
||||
lvl_scene->data.tilemap.height * TILE_SIZE
|
||||
fmax(lvl_scene->data.tilemap.width * TILE_SIZE, lvl_scene->data.game_rec.width),
|
||||
fmax(lvl_scene->data.tilemap.height * TILE_SIZE, lvl_scene->data.game_rec.height)
|
||||
},
|
||||
lvl_scene->data.cam
|
||||
);
|
||||
|
|
|
@ -38,8 +38,8 @@ void init_game_scene(LevelScene_t* scene);
|
|||
void free_game_scene(LevelScene_t* scene);
|
||||
void init_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);
|
||||
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 term_level_scene_data(LevelSceneData_t* data);
|
||||
void reload_level_tilemap(LevelScene_t* scene);
|
||||
void load_next_level_tilemap(LevelScene_t* scene);
|
||||
|
|
|
@ -2,10 +2,13 @@
|
|||
#include "ent_impl.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_rec = (Rectangle){25, 25, 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_viewport = LoadRenderTexture(view_zone.width, view_zone.height);
|
||||
data->game_rec = view_zone;
|
||||
data->cam = (Camera2D){0};
|
||||
data->cam.rotation = 0.0f;
|
||||
data->cam.zoom = 1.0f;
|
||||
|
|
|
@ -419,7 +419,10 @@ int main(void)
|
|||
LevelScene_t scene;
|
||||
scene.scene.engine = &engine;
|
||||
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);
|
||||
|
||||
for (size_t i = 0; i < scene.data.tilemap.width; ++i)
|
||||
|
|
Loading…
Reference in New Issue