1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 | with GESTE;
with GESTE.Sprite.Animated; use GESTE.Sprite.Animated;
with GESTE.Tile_Bank;
with GESTE.Maths_Types; use GESTE.Maths_Types;
with Ada.Text_IO;
with Console_Char_Screen;
procedure Sprite_Animation is
use type GESTE.Pix_Point;
package Console_Screen is new Console_Char_Screen
(Width => 5,
Height => 5,
Buffer_Size => 256,
Init_Char => ' ');
Palette : aliased constant GESTE.Palette_Type :=
('#', '0', 'T', ' ');
Background : Character := '_';
Tiles : aliased constant GESTE.Tile_Array :=
(1 => ((3, 3, 3, 3, 1),
(3, 3, 3, 1, 3),
(3, 3, 1, 3, 3),
(3, 1, 3, 3, 3),
(1, 3, 3, 3, 3)),
2 => ((1, 3, 3, 3, 3),
(3, 1, 3, 3, 3),
(3, 3, 1, 3, 3),
(3, 3, 3, 1, 3),
(3, 3, 3, 3, 1))
);
Collisions : aliased constant GESTE.Tile_Collisions_Array :=
(1 => ((False, False, False, False, True),
(False, False, False, True, False),
(False, False, True, False, False),
(False, True, False, False, False),
(True, False, False, False, False)),
2 => ((True, False, False, False, False),
(False, True, False, False, False),
(False, False, True, False, False),
(False, False, False, True, False),
(False, False, False, False, True))
);
Anim : aliased constant Animation_Array :=
((1, 1),
(2, 1),
(1, 1));
Bank : aliased GESTE.Tile_Bank.Instance (Tiles'Unrestricted_Access,
Collisions'Unrestricted_Access,
Palette'Unrestricted_Access);
Sprite_A : aliased GESTE.Sprite.Animated.Instance
(Bank => Bank'Unrestricted_Access,
Init_Frame => 1);
begin
Sprite_A.Move ((0, 0));
Sprite_A.Enable_Collisions;
Sprite_A.Set_Animation (Anim'Unchecked_Access, Looping => False);
GESTE.Add (Sprite_A'Unrestricted_Access, 0);
GESTE.Render_Window
(Window => Console_Screen.Screen_Rect,
Background => Background,
Buffer => Console_Screen.Buffer,
Push_Pixels => Console_Screen.Push_Pixels'Unrestricted_Access,
Set_Drawing_Area => Console_Screen.Set_Drawing_Area'Unrestricted_Access);
Console_Screen.Print;
Ada.Text_IO.New_Line;
Sprite_A.Signal_Frame;
GESTE.Render_Dirty
(Screen_Rect => Console_Screen.Screen_Rect,
Background => Background,
Buffer => Console_Screen.Buffer,
Push_Pixels => Console_Screen.Push_Pixels'Unrestricted_Access,
Set_Drawing_Area => Console_Screen.Set_Drawing_Area'Unrestricted_Access);
Console_Screen.Print;
Ada.Text_IO.New_Line;
Sprite_A.Signal_Frame;
GESTE.Render_Dirty
(Screen_Rect => Console_Screen.Screen_Rect,
Background => Background,
Buffer => Console_Screen.Buffer,
Push_Pixels => Console_Screen.Push_Pixels'Unrestricted_Access,
Set_Drawing_Area => Console_Screen.Set_Drawing_Area'Unrestricted_Access);
Console_Screen.Print;
Ada.Text_IO.New_Line;
Sprite_A.Signal_Frame;
if Sprite_A.Anim_Done then
Ada.Text_IO.Put_Line ("Animation done");
else
Ada.Text_IO.Put_Line ("Animation not done");
end if;
end Sprite_Animation;
|