-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
room5.asc
121 lines (108 loc) · 4.78 KB
/
room5.asc
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
109
110
111
112
113
114
115
116
117
118
119
120
// room script file
// Room 5 - Boxify usage
// The idea of this room is demonstrate the Boxify Module, but this module is at very early stage.
// it's supposed to be an easier way to use Box2D with traditional AGS Elements like Objects and Characters.
Body*[] setWalls(World* wrld) {
Body* _w[];
_w = new Body[18];
_w[0] = AgsBox2D.CreateBody(wrld, 541.3, 107.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[0], AgsBox2D.CreateRectangleShape(64.5, 17.5));
_w[0].Angle =0.0000 ;
_w[1] = AgsBox2D.CreateBody(wrld, 535.5, 100.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[1], AgsBox2D.CreateRectangleShape(14.0, 11.5));
_w[1].Angle =0.7888 ;
_w[2] = AgsBox2D.CreateBody(wrld, 529.0, 100.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[2], AgsBox2D.CreateRectangleShape(11.0, 19.5));
_w[2].Angle =0.0000 ;
_w[3] = AgsBox2D.CreateBody(wrld, 516.0, 101.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[3], AgsBox2D.CreateRectangleShape(23.0, 12.5));
_w[3].Angle =-0.4900 ;
_w[4] = AgsBox2D.CreateBody(wrld, 497.8, 118.0, eBodyStatic);
AgsBox2D.CreateFixture(_w[4], AgsBox2D.CreateRectangleShape(28.5, 40.0));
_w[4].Angle =0.0000 ;
_w[5] = AgsBox2D.CreateBody(wrld, 628.5, 218.5, eBodyStatic);
AgsBox2D.CreateFixture(_w[5], AgsBox2D.CreateRectangleShape(100.0, 50.0));
_w[5].Angle =0.0000 ;
_w[6] = AgsBox2D.CreateBody(wrld, 596.5, 251.5, eBodyStatic);
AgsBox2D.CreateFixture(_w[6], AgsBox2D.CreateRectangleShape(100.0, 50.0));
_w[6].Angle =0.0000 ;
_w[7] = AgsBox2D.CreateBody(wrld, 533.0, 284.5, eBodyStatic);
AgsBox2D.CreateFixture(_w[7], AgsBox2D.CreateRectangleShape(100.0, 50.0));
_w[7].Angle =0.0000 ;
_w[8] = AgsBox2D.CreateBody(wrld, 455.3, 257.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[8], AgsBox2D.CreateRectangleShape(195.5, 73.5));
_w[8].Angle =0.7801 ;
_w[9] = AgsBox2D.CreateBody(wrld, 272.8, 192.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[9], AgsBox2D.CreateRectangleShape(278.5, 59.5));
_w[9].Angle =0.0000 ;
_w[10] = AgsBox2D.CreateBody(wrld, 110.5, 214.0, eBodyStatic);
AgsBox2D.CreateFixture(_w[10], AgsBox2D.CreateRectangleShape(100.0, 50.0));
_w[10].Angle =-0.6928 ;
_w[11] = AgsBox2D.CreateBody(wrld, 110.5, 219.5, eBodyStatic);
AgsBox2D.CreateFixture(_w[11], AgsBox2D.CreateRectangleShape(100.0, 50.0));
_w[11].Angle =0.0000 ;
_w[12] = AgsBox2D.CreateBody(wrld, 46.0, 190.0, eBodyStatic);
AgsBox2D.CreateFixture(_w[12], AgsBox2D.CreateRectangleShape(32.0, 56.0));
_w[12].Angle =0.0000 ;
_w[13] = AgsBox2D.CreateBody(wrld, 323.3, 327.0, eBodyStatic);
AgsBox2D.CreateFixture(_w[13], AgsBox2D.CreateRectangleShape(618.5, 24.0));
_w[13].Angle =0.0000 ;
_w[14] = AgsBox2D.CreateBody(wrld, 641.8, 151.0, eBodyStatic);
AgsBox2D.CreateFixture(_w[14], AgsBox2D.CreateRectangleShape(63.5, 340.0));
_w[14].Angle =0.0000 ;
_w[15] = AgsBox2D.CreateBody(wrld, 329.5, -4.8, eBodyStatic);
AgsBox2D.CreateFixture(_w[15], AgsBox2D.CreateRectangleShape(613.0, 12.5));
_w[15].Angle =0.0000 ;
_w[16] = AgsBox2D.CreateBody(wrld, 7.5, 153.3, eBodyStatic);
AgsBox2D.CreateFixture(_w[16], AgsBox2D.CreateRectangleShape(44.0, 333.5));
_w[16].Angle =0.0000 ;
_w[17] = null;
return _w;
}
function room_Load()
{
World* world = Boxify.GetRoomWorld(); //This creates the world, but using Boxify module
setWalls(world); // we will create the walls here
Boxify.Character(player, AgsBox2D.CreateRectangleShape(12.0, 38.0));
Boxify.Object(obj_box1);
Boxify.Object(obj_box2);
Boxify.Object(obj_box3);
Boxify.Object(obj_box4);
Boxify.Object(obj_box5);
Boxify.Object(obj_box6);
Boxify.Object(obj_barrel1);
}
bool was_mouse_pressed;
Joint* myMouseJoint;
function room_RepExec()
{
World* world = Boxify.GetRoomWorld();
float m_x = IntToFloat(mouse.x+Game.Camera.X);
float m_y = IntToFloat(mouse.y+Game.Camera.Y);
if(!was_mouse_pressed && mouse.IsButtonDown(eMouseLeft)){
FixtureArray* farr = world.BoundingBoxQuery(m_x-0.5, m_y-0.5, m_x+0.5, m_y+0.5);
if(farr!=null && farr.Size >= 1 && farr.Items[0].TestPoint(m_x, m_y)){
myMouseJoint = AgsBox2D.CreateMouseJoint(farr.Items[0].Body, m_x, m_y);
}
} else if(was_mouse_pressed && !mouse.IsButtonDown(eMouseLeft)){
AgsBox2D.DestroyJoint(world, myMouseJoint);
} else if (mouse.IsButtonDown(eMouseLeft) && myMouseJoint != null && myMouseJoint.IsValid ) {
myMouseJoint.AsMouse.SetTarget(m_x, m_y);
}
was_mouse_pressed = mouse.IsButtonDown(eMouseLeft);
if(gDebugGUI.Visible){
gDebugGUI.Transparency = 50;
gDebugGUI.BackgroundGraphic = world.GetDebugSprite(Game.Camera.X, Game.Camera.Y);
}
}
function on_key_press(eKeyCode keycode)
{
if(keycode == eKeyB || keycode == eKeyTab){
gDebugGUI.Visible = !gDebugGUI.Visible;
}
}
function room_Leave()
{
gDebugGUI.BackgroundGraphic = 0;
gDebugGUI.Visible = false;
}