source: 2012/27/DenisZ/TheDungeonGame/TheDungeonGame/TheDungeonGame/RoomTemplates.cs @ 3624

Revision 3624, 7.2 KB checked in by dezhidki, 9 years ago (diff)

Animations added!
Every mob has a texture!
The first (and the last because the lack of time) boss!
Main menu!
Death menu!
Boss room has own door!
Possibility to do damage to health!
Almost last release for now!
Some sound is added!

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Assets;
7using MathHelper;
8using Entity;
9
10namespace Rooms
11{
12    class EmptyRoom : Room
13    {
14        public EmptyRoom(TheDungeonGame game, Vector pos, Vector size, double thickness)
15            : base(game, pos, size, thickness)
16        {
17        }
18
19        public override void initRoom()
20        {
21            createLevelDecorations();
22
23           
24        }
25    }
26
27    class RoomType1 : Room
28    {
29        public RoomType1(TheDungeonGame game, Vector pos, Vector size, double thickness)
30            : base(game, pos, size, thickness)
31        {
32        }
33
34        public override void initRoom()
35        {
36            createLevelDecorations();
37
38            addBlock(new ObjectRock(blockWidth, blockHeight), 0, 0);
39            addBlock(new ObjectRock(blockWidth, blockHeight), bWidth - 1, 0);
40            addBlock(new ObjectRock(blockWidth, blockHeight), 0, bHeight - 1, new Vector(0, -50));
41            addBlock(new ObjectRock(blockWidth, blockHeight), bWidth - 1, bHeight - 1, new Vector(0, -50));
42
43            spawnRandomEntities(RandomGen.NextInt(6)+1);
44        }
45    }
46
47    class RoomType2 : Room
48    {
49        public RoomType2(TheDungeonGame game, Vector pos, Vector size, double thickness)
50            : base(game, pos, size, thickness)
51        {
52        }
53
54        public override void initRoom()
55        {
56            createLevelDecorations();
57
58            for (int i = 0; i < 4; i++)
59            {
60                addBlock(new ObjectRock(blockWidth, blockHeight), 1, 1 + i, new Vector(0, -50));
61            }
62
63            for (int i = 0; i < 4; i++)
64            {
65                addBlock(new ObjectRock(blockWidth, blockHeight), 8, 1 + i, new Vector(0, -50));
66            }
67
68            spawnRandomEntities(RandomGen.NextInt(6) + 1);
69        }
70    }
71
72    class RoomType3 : Room
73    {
74        public RoomType3(TheDungeonGame game, Vector pos, Vector size, double thickness)
75            : base(game, pos, size, thickness)
76        {
77        }
78
79        public override void initRoom()
80        {
81            createLevelDecorations();
82
83            for (int i = 0; i < 4; i++)
84            {
85                addBlock(new ObjectRock(blockWidth, blockHeight), i, 1);
86            }
87
88            for (int i = 0; i < 4; i++)
89            {
90                addBlock(new ObjectRock(blockWidth, blockHeight), i, 4);
91            }
92
93            for (int i = 0; i < 4; i++)
94            {
95                addBlock(new ObjectRock(blockWidth, blockHeight), i + 6, 1);
96            }
97
98            for (int i = 0; i < 4; i++)
99            {
100                addBlock(new ObjectRock(blockWidth, blockHeight), i + 6, 4);
101            }
102
103            spawnRandomEntities(RandomGen.NextInt(6) + 1);
104        }
105    }
106
107    class RoomType4 : Room
108    {
109        public RoomType4(TheDungeonGame game, Vector pos, Vector size, double thickness)
110            : base(game, pos, size, thickness)
111        {
112        }
113
114        public override void initRoom()
115        {
116            createLevelDecorations();
117
118            for (int y = 1; y < bHeight; y++)
119            {
120                for (int x = 1; x < bWidth - 1; x++)
121                {
122                    if (x % 2 != 0 && y % 2 != 0)
123                        addBlock(new ObjectRock(blockWidth, blockHeight), x, y, new Vector(40, 0));
124                }
125            }
126
127            spawnRandomEntities(RandomGen.NextInt(6) + 1);
128        }
129    }
130
131    class RoomType5 : Room
132    {
133        public RoomType5(TheDungeonGame game, Vector pos, Vector size, double thickness)
134            : base(game, pos, size, thickness)
135        {
136        }
137
138        public override void initRoom()
139        {
140            createLevelDecorations();
141
142            for (int y = 0; y < 3; y++)
143            {
144                for (int x = 0; x < 3; x++)
145                {
146                    addBlock(new ObjectRock(blockWidth, blockHeight), x + 3, y + 1, new Vector(30, -20));
147                }
148            }
149
150            deleteBlock(bWidth / 2 - 1, bHeight / 2);
151            spawnRandomEntities(RandomGen.NextInt(6) + 1);
152        }
153    }
154
155    class RoomType6 : Room
156    {
157        public RoomType6(TheDungeonGame game, Vector pos, Vector size, double thickness)
158            : base(game, pos, size, thickness)
159        {
160        }
161
162        public override void initRoom()
163        {
164            createLevelDecorations();
165
166            for (int i = 0; i < 5; i++)
167            {
168                int bx = RandomGen.NextInt(bWidth);
169                int by = RandomGen.NextInt(bHeight);
170                addBlock(new ObjectRock(blockWidth, blockHeight), bx, by);
171            }
172
173            spawnRandomEntities(RandomGen.NextInt(6) + 1);
174        }
175    }
176
177    class BossRoom : Room
178    {
179        public BossRoom(TheDungeonGame game, Vector pos, Vector size, double thickness)
180            : base(game, pos, size, thickness)
181        {
182            roomName = "Boss Room";
183        }
184
185        public override void initRoom()
186        {
187            createLevelDecorations();
188
189            addEntityAt(new EntityBossMario(Game, Vector.Zero, new Vector(30, 60), Shape.Rectangle), 3, 3);
190        }
191    }
192
193    class RoomCreator
194    {
195        public static Room createRoom(TheDungeonGame game, Vector pos, Vector size, double thickness, int room)
196        {
197            Room result = null;
198            if (room == 0)
199                result = new EmptyRoom(game, pos, size, thickness);
200            else if (room == 1)
201                result = new RoomType1(game, pos, size, thickness);
202            else if (room == 2)
203                result = new RoomType2(game, pos, size, thickness);
204            else if (room == 3)
205                result = new RoomType3(game, pos, size, thickness);
206            else if (room == 4)
207                result = new RoomType4(game, pos, size, thickness);
208            else if (room == 5)
209                result = new RoomType5(game, pos, size, thickness);
210            else if (room == 6)
211                result = new RoomType6(game, pos, size, thickness);
212            else if (room == 7)
213                result = new BossRoom(game, pos, size, thickness);
214
215            return result;
216        }
217
218        public static EntityBase getEntity(int id)
219        {
220            EntityBase ent = null;
221            if (id == 0)
222                ent = new EntityFly((TheDungeonGame)TheDungeonGame.Instance, Vector.Zero, new Vector(50, 50), Shape.Circle);
223            else if(id == 1)
224                ent = new EntityZombie((TheDungeonGame)TheDungeonGame.Instance, Vector.Zero, new Vector(60, 60), Shape.Rectangle);
225            else if(id == 2)
226                ent = new EntityDerpFace((TheDungeonGame)TheDungeonGame.Instance, Vector.Zero, new Vector(60, 60), Shape.Circle);
227            else if(id == 3)
228                ent = new EntityDerpFly((TheDungeonGame)TheDungeonGame.Instance, Vector.Zero, new Vector(50, 50), Shape.Circle);
229            //else if(id == 4)
230            //    ent = new EntityDerpPistolZombie((TheDungeonGame)TheDungeonGame.Instance, Vector.Zero, new Vector(50, 50), Shape.Circle);
231            return ent;
232        }
233    }
234}
Note: See TracBrowser for help on using the repository browser.