From d9641f9b44c6982e76995d2326b93a6c20c00dc4 Mon Sep 17 00:00:00 2001 From: Srdan Lukovic Date: Sun, 31 Mar 2024 13:21:44 +0200 Subject: Fix zoom issue on smaller screens --- eepers.adb | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/eepers.adb b/eepers.adb index 5baf170..7b526db 100644 --- a/eepers.adb +++ b/eepers.adb @@ -410,7 +410,11 @@ procedure Eepers is Items: Item_Array; Bombs: Bomb_State_Array; - Camera_Position: Vector2 := (x => 0.0, y => 0.0); + Camera: Camera2D := ( + offset => (x => 0.0, y => 0.0), + target => (x => 0.0, y => 0.0), + rotation => 0.0, + zoom => 1.0); Tutorial: Tutorial_State; Checkpoint: Checkpoint_State; @@ -755,7 +759,8 @@ procedure Eepers is Game.Map(Row, Column) := Cell_Floor; when Level_Father => if Update_Camera then - Game.Camera_Position := Screen_Size*0.5 - (To_Vector2((Column, Row))*Cell_Size + To_Vector2((7, 7))*Cell_Size*0.5); + Game.Camera.target := (To_Vector2((Column, Row)) + To_Vector2((7, 7))*0.5) * Cell_Size; + Game.Camera.offset := Screen_Size*0.5 - Cell_Size*0.5; end if; Spawn_Father(Game, (Column, Row)); Game.Map(Row, Column) := Cell_Floor; @@ -1006,20 +1011,13 @@ procedure Eepers is ); procedure Game_Update_Camera(Game: in out Game_State) is - Camera_Target: constant Vector2 := - Screen_Size*0.5 - To_Vector2(Game.Player.Position)*Cell_Size - Cell_Size*0.5; - Camera_Velocity: constant Vector2 := (Camera_Target - Game.Camera_Position)*2.0; + Camera_Target: constant Vector2 := To_Vector2(Game.Player.Position)*Cell_Size; + Camera_Offset: constant Vector2 := Screen_Size*0.5 - Cell_Size*0.5; + Camera_Velocity: constant Vector2 := (Camera_Target - Game.Camera.target)*2.0; begin - Game.Camera_Position := Game.Camera_Position + Camera_Velocity*Get_Frame_Time; - end; - - function Game_Camera(Game: in Game_State) return Camera2D is - begin - return ( - offset => Game.Camera_Position, - target => (x => 0.0, y => 0.0), - rotation => 0.0, - zoom => 1.0); + Game.Camera.offset := Camera_Offset; + Game.Camera.target := Game.Camera.target + Camera_Velocity*Get_Frame_Time; + Game.Camera.zoom := C_Float'Max(Screen_Size.x/1920.0, Screen_Size.y/1080.0); end; function Interpolate_Positions(IPrev_Position, IPosition: IVector2; T: Float) return Vector2 is @@ -1752,7 +1750,7 @@ begin end if; Game_Update_Camera(Game); - Begin_Mode2D(Game_Camera(Game)); + Begin_Mode2D(Game.Camera); Game_Cells(Game); Game_Items(Game); Game_Player(Game); -- cgit v1.2.3 From 986d6199376aa0f034480c60e8f1347ea3e46f04 Mon Sep 17 00:00:00 2001 From: rexim Date: Mon, 1 Apr 2024 02:35:52 +0700 Subject: Add additional work for the camera --- eepers.adb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eepers.adb b/eepers.adb index 7b526db..351d8bd 100644 --- a/eepers.adb +++ b/eepers.adb @@ -1017,6 +1017,10 @@ procedure Eepers is begin Game.Camera.offset := Camera_Offset; Game.Camera.target := Game.Camera.target + Camera_Velocity*Get_Frame_Time; + -- TODO: animate zoom similarly to Game.Camera.target + -- So it looks cool when you resize the game in the window mode. + -- TODO: The tutorial signs look gross on bigger screens. + -- We need to do something with the fonts Game.Camera.zoom := C_Float'Max(Screen_Size.x/1920.0, Screen_Size.y/1080.0); end; -- cgit v1.2.3 From 7fd68859df0a2fbe1453abc3291a16bcb7faf1da Mon Sep 17 00:00:00 2001 From: rexim Date: Mon, 1 Apr 2024 02:37:39 +0700 Subject: Update CHANGELOG.txt --- CHANGELOG.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index f4143ef..39acd8c 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,7 +2,8 @@ - @rexim - Added items that extend the amount of bombs you can carry - @rexim - Do not restart on Any Key Press. Restart automatically after 2 seconds. -- @ProgKea - Fix the Boss killing the Player on the same turn as it does - https://github.com/tsoding/eepers/pull/24 +- @ProgKea - Fix the Boss killing the Player on the same turn as it dies - https://github.com/tsoding/eepers/pull/24 +- @slukovic - Camera adjusts its zoom on bigger screen - https://github.com/tsoding/eepers/pull/27 - ... # Eepers v1.3 -- cgit v1.2.3