diff options
author | Jedidiah Barber <contact@jedbarber.id.au> | 2025-04-16 15:51:58 +1200 |
---|---|---|
committer | Jedidiah Barber <contact@jedbarber.id.au> | 2025-04-16 15:51:58 +1200 |
commit | baa3a346cde2c2c965243e554a15ed3bd6f5c7fe (patch) | |
tree | f8ec8376a6a42053e15cb9607b0fef17bb4f321d | |
parent | b3455e502f4491af22e190a14aba9565f534bb59 (diff) |
Code style improvements, constants marked as constant
-rw-r--r-- | src/displays.adb | 46 | ||||
-rw-r--r-- | src/displays.ads | 5 | ||||
-rw-r--r-- | src/grids.adb | 11 | ||||
-rw-r--r-- | src/grids.ads | 3 | ||||
-rw-r--r-- | src/main.adb | 3 | ||||
-rw-r--r-- | src/misc.adb | 1 | ||||
-rw-r--r-- | src/moves.adb | 1 | ||||
-rw-r--r-- | src/moves.ads | 3 | ||||
-rw-r--r-- | src/pathfinding.adb | 9 | ||||
-rw-r--r-- | src/pathfinding.ads | 3 | ||||
-rw-r--r-- | src/sokoban.adb | 91 | ||||
-rw-r--r-- | src/sokoban.ads | 4 | ||||
-rw-r--r-- | src/squares.adb | 1 | ||||
-rw-r--r-- | src/squares.ads | 5 | ||||
-rw-r--r-- | src/things.adb | 1 | ||||
-rw-r--r-- | src/things.ads | 5 |
16 files changed, 101 insertions, 91 deletions
diff --git a/src/displays.adb b/src/displays.adb index 468ca70..6c33171 100644 --- a/src/displays.adb +++ b/src/displays.adb @@ -3,15 +3,14 @@ with FLTK.Screen, - FLTK.Events, - Misc; + FLTK.Events; package body Displays is package WD renames FLTK.Widgets.Groups.Windows.Double; - package B renames FLTK.Widgets.Boxes; + package B renames FLTK.Widgets.Boxes; @@ -21,25 +20,26 @@ package body Displays is Text : in String) return Display is - My_Width : Integer := Misc.Max (Message_Box_Width, W); - My_Height : Integer := Misc.Max (Message_Box_Height + Stat_Box_Height, H); + My_Width : constant Integer := Misc.Max (Message_Box_Width, W); + My_Height : constant Integer := Misc.Max (Message_Box_Height + Stat_Box_Height, H); begin return This : Display := - (WD.Double_Window'(WD.Forge.Create (X, Y, My_Width, My_Height, Text)) with - - Message_Box => B.Box'(B.Forge.Create - (0, 0, Message_Box_Width, Message_Box_Height, "")), - Level_Box => B.Box'(B.Forge.Create - (0, Message_Box_Height, Stat_Box_Width, Stat_Box_Height, "")), - Move_Box => B.Box'(B.Forge.Create - (Stat_Box_Width, Message_Box_Height, Stat_Box_Width, Stat_Box_Height, "")), - Current_Grid => null, - Key_Func => null, - Mouse_Func => null) do - + (WD.Forge.Create (X, Y, My_Width, My_Height, Text) + with + Message_Box => B.Forge.Create + (0, 0, Message_Box_Width, Message_Box_Height, ""), + Level_Box => B.Forge.Create + (0, Message_Box_Height, Stat_Box_Width, Stat_Box_Height, ""), + Move_Box => B.Forge.Create + (Stat_Box_Width, Message_Box_Height, Stat_Box_Width, Stat_Box_Height, ""), + Current_Grid => null, + Key_Func => null, + Mouse_Func => null) + do This.Add (This.Message_Box); This.Add (This.Level_Box); This.Add (This.Move_Box); + This.Message_Box.Set_Label_Size (Text_Size); This.Level_Box.Set_Label_Size (Text_Size); This.Move_Box.Set_Label_Size (Text_Size); @@ -92,11 +92,11 @@ package body Displays is procedure Ensure_Correct_Size (This : in out Display) is - New_Width : Integer := + New_Width : constant Integer := Misc.Max (Message_Box_Width, This.Current_Grid.Get_W); - New_Height : Integer := + New_Height : constant Integer := Message_Box_Height + This.Current_Grid.Get_H + Stat_Box_Height; - Grid_X : Integer := + Grid_X : constant Integer := Misc.Max (0, (Message_Box_Width - This.Current_Grid.Get_W) / 2); begin This.Current_Grid.Reposition (Grid_X, 0); @@ -178,12 +178,11 @@ package body Displays is This.Key_Func (FLTK.Press (FLTK.Events.Last_Key)) = FLTK.Handled then return FLTK.Handled; - - elsif This.Mouse_Func /= null and then Event = FLTK.Release and then + elsif + This.Mouse_Func /= null and then Event = FLTK.Release and then This.Mouse_Func (FLTK.Events.Mouse_X, FLTK.Events.Mouse_Y) = FLTK.Handled then return FLTK.Handled; - else return WD.Double_Window (This).Handle (Event); end if; @@ -192,3 +191,4 @@ package body Displays is end Displays; + diff --git a/src/displays.ads b/src/displays.ads index b278b6f..b7fa8fd 100644 --- a/src/displays.ads +++ b/src/displays.ads @@ -19,8 +19,6 @@ package Displays is type Display is new FLTK.Widgets.Groups.Windows.Double.Double_Window with private; - - type Keyboard_Callback is access function (Key : in FLTK.Key_Combo) return FLTK.Event_Outcome; @@ -114,13 +112,14 @@ private Text_Size : constant FLTK.Font_Size := 12; + Message_Box_Width : constant Integer := 440; Message_Box_Height : constant Integer := 80; - Stat_Box_Width : constant Integer := Message_Box_Width / 2; Stat_Box_Height : constant Integer := 20; end Displays; + diff --git a/src/grids.adb b/src/grids.adb index 12f1ae4..5bf82c3 100644 --- a/src/grids.adb +++ b/src/grids.adb @@ -8,10 +8,12 @@ package body Grids is Text : in String) return Grid is begin - return This : Grid := - (FLTK.Widgets.Widget'(FLTK.Widgets.Forge.Create (X, Y, W, H, Text)) with - Cells => Square_Vector_Vectors.Empty_Vector, - Rows => 0, Cols => 0); + return This : constant Grid := + (FLTK.Widgets.Forge.Create (X, Y, W, H, Text) + with + Cells => Square_Vector_Vectors.Empty_Vector, + Rows => 0, + Cols => 0); end Create; @@ -129,3 +131,4 @@ package body Grids is end Grids; + diff --git a/src/grids.ads b/src/grids.ads index 98230f8..856ff17 100644 --- a/src/grids.ads +++ b/src/grids.ads @@ -59,7 +59,7 @@ package Grids is (This : in out Grid; X, Y : in Integer; Item : in Squares.Square) - with Pre => This.In_Bounds (X, Y); + with Pre => This.In_Bounds (X, Y); @@ -106,3 +106,4 @@ private end Grids; + diff --git a/src/main.adb b/src/main.adb index 41b106e..cbdca0c 100644 --- a/src/main.adb +++ b/src/main.adb @@ -9,8 +9,11 @@ with function Main return Integer is begin + Sokoban.Load_Level (Sokoban.LevelID'First); Sokoban.Show; return FLTK.Run; + end Main; + diff --git a/src/misc.adb b/src/misc.adb index d1aa7ca..aa1b1e2 100644 --- a/src/misc.adb +++ b/src/misc.adb @@ -29,3 +29,4 @@ package body Misc is end Misc; + diff --git a/src/moves.adb b/src/moves.adb index 4024a4d..b86ba8c 100644 --- a/src/moves.adb +++ b/src/moves.adb @@ -69,3 +69,4 @@ package body Moves is end Moves; + diff --git a/src/moves.ads b/src/moves.ads index 3e86847..2c9a334 100644 --- a/src/moves.ads +++ b/src/moves.ads @@ -14,8 +14,6 @@ package Moves is end record; - - type Path is tagged private; Empty_Path : constant Path; @@ -72,3 +70,4 @@ private end Moves; + diff --git a/src/pathfinding.adb b/src/pathfinding.adb index 9e45ec1..5234cdb 100644 --- a/src/pathfinding.adb +++ b/src/pathfinding.adb @@ -14,11 +14,13 @@ package body Pathfinding is X, Y : Integer; end record; + function "<" (A, B : in Node) return Boolean is begin return A.X < B.X or (A.X = B.X and A.Y < B.Y); end "<"; + package Node_Sets is new Ada.Containers.Ordered_Sets (Element_Type => Node); package Node_To_Node_Maps is new Ada.Containers.Ordered_Maps @@ -30,11 +32,13 @@ package body Pathfinding is subtype G_Score is Integer; subtype F_Score is Integer; + package G_Score_Maps is new Ada.Containers.Ordered_Maps (Key_Type => Node, Element_Type => G_Score); package F_Score_Maps is new Ada.Containers.Ordered_Maps (Key_Type => Node, Element_Type => F_Score); + G_Scores : G_Score_Maps.Map := G_Score_Maps.Empty_Map; F_Scores : F_Score_Maps.Map := F_Score_Maps.Empty_Map; @@ -135,8 +139,8 @@ package body Pathfinding is is use type Node_Sets.Set; - Start : Node := (X => SX, Y => SY); - Goal : Node := (X => FX, Y => FY); + Start : constant Node := (X => SX, Y => SY); + Goal : constant Node := (X => FX, Y => FY); Current : Node; Closed_Set : Node_Sets.Set := Node_Sets.Empty_Set; @@ -191,3 +195,4 @@ package body Pathfinding is end Pathfinding; + diff --git a/src/pathfinding.ads b/src/pathfinding.ads index 624c5d6..eec079f 100644 --- a/src/pathfinding.ads +++ b/src/pathfinding.ads @@ -16,8 +16,9 @@ package Pathfinding is SX, SY : in Integer; FX, FY : in Integer) return Moves.Path - with Pre => My_Grid.In_Bounds (SX, SY); + with Pre => My_Grid.In_Bounds (SX, SY); end Pathfinding; + diff --git a/src/sokoban.adb b/src/sokoban.adb index 8b7ecdb..1f85266 100644 --- a/src/sokoban.adb +++ b/src/sokoban.adb @@ -46,22 +46,26 @@ package body Sokoban is type Game_State is (Loading, Play, Complete); - Loading_Message : String := "Loading..."; + Loading_Message : constant String := + "Loading..."; - Play_Message : String := "Move with the arrow keys. Press u for undo." & ASCII.LF & + Play_Message : constant String := + "Move with the arrow keys. Press u for undo." & ASCII.LF & "To move to a square where there is a clear path, click with the mouse." & ASCII.LF & "Press n to skip this level, q to quit, and r to restart this level."; - Complete_Message : String := "Level complete!" & ASCII.LF & + Complete_Message : constant String := + "Level complete!" & ASCII.LF & "Press enter to progress to the next level, or q to quit."; - Fully_Complete_Message : String := "Congratulations! All levels complete!" & ASCII.LF & + Fully_Complete_Message : constant String := + "Congratulations! All levels complete!" & ASCII.LF & "Press enter to start again at the first level, or q to quit."; - U_Key : FLTK.Key_Combo := FLTK.Press ('u'); - N_Key : FLTK.Key_Combo := FLTK.Press ('n'); - R_Key : FLTK.Key_Combo := FLTK.Press ('r'); - Q_Key : FLTK.Key_Combo := FLTK.Press ('q'); + U_Key : constant FLTK.Key_Combo := FLTK.Press ('u'); + N_Key : constant FLTK.Key_Combo := FLTK.Press ('n'); + R_Key : constant FLTK.Key_Combo := FLTK.Press ('r'); + Q_Key : constant FLTK.Key_Combo := FLTK.Press ('q'); @@ -88,7 +92,7 @@ package body Sokoban is use Ada.Strings, Ada.Strings.Fixed, Ada.Strings.Maps; Data_File : File_Type; - Filename : String := ADir.Compose + Filename : constant String := ADir.Compose (Misc.Level_Path, "level" & Trim (LevelID'Image (Number), Both) & ".data"); Rows, Cols : Natural; @@ -99,8 +103,8 @@ package body Sokoban is Open (Data_File, In_File, Filename); declare - Row_Line : String := Get_Line (Data_File); - Col_Line : String := Get_Line (Data_File); + Row_Line : constant String := Get_Line (Data_File); + Col_Line : constant String := Get_Line (Data_File); Start, Finish : Natural; begin Find_Token (Row_Line, To_Set ("0123456789"), 1, Inside, Start, Finish); @@ -112,7 +116,7 @@ package body Sokoban is for Y in Integer range 1 .. Rows loop declare - Working_Line : String := Get_Line (Data_File); + Working_Line : constant String := Get_Line (Data_File); begin for X in Integer range 1 .. Cols loop Add_New_Grid_Item (X, Y, Working_Line (X)); @@ -132,16 +136,12 @@ package body Sokoban is end Load_Level; - - procedure Show is begin My_Display.Show; end Show; - - procedure Hide is begin My_Display.Hide; @@ -202,8 +202,6 @@ package body Sokoban is end Keypress; - - function Mouseclick (X, Y : in Integer) return FLTK.Event_Outcome @@ -246,45 +244,43 @@ package body Sokoban is Temp : Squares.Square; begin case Char is - when '#' => - My_Grid.Set_Square (X, Y, Squares.Wall); + when '#' => + My_Grid.Set_Square (X, Y, Squares.Wall); - when ' ' => - My_Grid.Set_Square (X, Y, Squares.Empty); + when ' ' => + My_Grid.Set_Square (X, Y, Squares.Empty); - when '$' => - Temp := Squares.Empty; - Temp.Set_Contents (Things.Treasure); - My_Grid.Set_Square (X, Y, Temp); + when '$' => + Temp := Squares.Empty; + Temp.Set_Contents (Things.Treasure); + My_Grid.Set_Square (X, Y, Temp); - when '*' => - Temp := Squares.Goal; - Temp.Set_Contents (Things.Treasure); - My_Grid.Set_Square (X, Y, Temp); + when '*' => + Temp := Squares.Goal; + Temp.Set_Contents (Things.Treasure); + My_Grid.Set_Square (X, Y, Temp); - when '!' => - My_Grid.Set_Square (X, Y, Squares.Space); + when '!' => + My_Grid.Set_Square (X, Y, Squares.Space); - when '.' => - My_Grid.Set_Square (X, Y, Squares.Goal); - Goals_Remaining := Goals_Remaining + 1; + when '.' => + My_Grid.Set_Square (X, Y, Squares.Goal); + Goals_Remaining := Goals_Remaining + 1; - when '@' => - Temp := Squares.Empty; - Temp.Set_Contents (Things.Man); - My_Grid.Set_Square (X, Y, Temp); - Current_Man_X := X; - Current_Man_Y := Y; + when '@' => + Temp := Squares.Empty; + Temp.Set_Contents (Things.Man); + My_Grid.Set_Square (X, Y, Temp); + Current_Man_X := X; + Current_Man_Y := Y; - when others => - raise Program_Error; + when others => + raise Program_Error; end case; end Add_New_Grid_Item; - - procedure Move_Man (Delta_X, Delta_Y : in Integer) is @@ -341,11 +337,9 @@ package body Sokoban is end Move_Man; - - procedure Undo_Movement is - Last : Moves.Move := Move_Record.Latest; + Last : constant Moves.Move := Move_Record.Latest; Prev : Squares.Square := My_Grid.Get_Square (Current_Man_X - Last.Delta_X, Current_Man_Y - Last.Delta_Y); @@ -382,3 +376,4 @@ begin end Sokoban; + diff --git a/src/sokoban.ads b/src/sokoban.ads index 1f7fa17..64d8b6e 100644 --- a/src/sokoban.ads +++ b/src/sokoban.ads @@ -11,9 +11,6 @@ package Sokoban is procedure Load_Level (Number : in LevelID); - - - procedure Show; procedure Hide; @@ -21,3 +18,4 @@ package Sokoban is end Sokoban; + diff --git a/src/squares.adb b/src/squares.adb index 91b1bd1..fbb04c6 100644 --- a/src/squares.adb +++ b/src/squares.adb @@ -54,3 +54,4 @@ package body Squares is end Squares; + diff --git a/src/squares.ads b/src/squares.ads index 8a1f053..5ff9b81 100644 --- a/src/squares.ads +++ b/src/squares.ads @@ -40,12 +40,12 @@ package Squares is function Get_Contents (This : in Square) return Things.Thing - with Pre => Is_Walkable (This); + with Pre => Is_Walkable (This); procedure Set_Contents (This : in out Square; Item : in Things.Thing) - with Pre => Is_Walkable (This); + with Pre => Is_Walkable (This); @@ -91,3 +91,4 @@ private end Squares; + diff --git a/src/things.adb b/src/things.adb index 66cc07e..0a14fa3 100644 --- a/src/things.adb +++ b/src/things.adb @@ -25,3 +25,4 @@ package body Things is end Things; + diff --git a/src/things.ads b/src/things.ads index 97889ba..ddd4bb4 100644 --- a/src/things.ads +++ b/src/things.ads @@ -37,7 +37,7 @@ private end record; - Man_Image : aliased FLTK.Images.RGB.PNG.PNG_Image := FLTK.Images.RGB.PNG.Forge.Create + Man_Image : aliased FLTK.Images.RGB.PNG.PNG_Image := FLTK.Images.RGB.PNG.Forge.Create (Ada.Directories.Compose (Misc.Image_Path, "man.png")); Treasure_Image : aliased FLTK.Images.RGB.PNG.PNG_Image := FLTK.Images.RGB.PNG.Forge.Create (Ada.Directories.Compose (Misc.Image_Path, "treasure.png")); @@ -47,7 +47,7 @@ private (Self_Image => null); - Man : constant Thing := + Man : constant Thing := (Self_Image => Man_Image'Access); Treasure : constant Thing := (Self_Image => Treasure_Image'Access); @@ -55,3 +55,4 @@ private end Things; + |