From 6820d7a29d9cc9013c6706c2c965f49e18aa3ca2 Mon Sep 17 00:00:00 2001 From: ProgKea Date: Sat, 30 Mar 2024 23:12:48 +0100 Subject: fix #17 by resetting path on respawn --- eepers.adb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eepers.adb b/eepers.adb index 5baf170..51ae67e 100644 --- a/eepers.adb +++ b/eepers.adb @@ -1383,6 +1383,13 @@ procedure Eepers is if (Get_Time - Game.Player.Death_Time) > RESTART_TIMEOUT_SECS then Game_Restore_Checkpoint(Game); + for Me in Eeper_Index loop + for Y in Game.Eepers(Me).Path'Range(1) loop + for X in Game.Eepers(Me).Path'Range(2) loop + Game.Eepers(Me).Path(Y, X) := -1; + end loop; + end loop; + end loop; Game.Player.Dead := False; end if; -- cgit v1.2.3 From f26acd5c1f178125a64f7e56f4edaf5cb5f3a9d6 Mon Sep 17 00:00:00 2001 From: rexim Date: Wed, 3 Apr 2024 04:45:06 +0700 Subject: Factor out Reset_Path_Map --- eepers.adb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/eepers.adb b/eepers.adb index 51ae67e..2a3fa87 100644 --- a/eepers.adb +++ b/eepers.adb @@ -201,6 +201,15 @@ procedure Eepers is type Map_Access is access Map; procedure Delete_Map is new Ada.Unchecked_Deallocation(Map, Map_Access); + procedure Reset_Path_Map(Path: Path_Map_Access) is + begin + for Y in Path'Range(1) loop + for X in Path'Range(2) loop + Path(Y, X) := -1; + end loop; + end loop; + end; + function "<="(A, B: IVector2) return Boolean is begin return A.X <= B.X and then A.Y <= B.Y; @@ -478,11 +487,7 @@ procedure Eepers is Q: Queue.Vector; Eeper: Eeper_State renames Game.Eepers(Me); begin - for Y in Eeper.Path'Range(1) loop - for X in Eeper.Path'Range(2) loop - Eeper.Path(Y, X) := -1; - end loop; - end loop; + Reset_Path_Map(Eeper.Path); for Dy in 0..Eeper.Size.Y-1 loop for Dx in 0..Eeper.Size.X-1 loop @@ -1384,11 +1389,7 @@ procedure Eepers is if (Get_Time - Game.Player.Death_Time) > RESTART_TIMEOUT_SECS then Game_Restore_Checkpoint(Game); for Me in Eeper_Index loop - for Y in Game.Eepers(Me).Path'Range(1) loop - for X in Game.Eepers(Me).Path'Range(2) loop - Game.Eepers(Me).Path(Y, X) := -1; - end loop; - end loop; + Reset_Path_Map(Game.Eepers(Me).Path); end loop; Game.Player.Dead := False; end if; -- cgit v1.2.3