Newer
Older
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
using Jypeli;
namespace AngryLego;
/// @author vesal
/// @version 16.10.2023
/// <summary>
///
/// </summary>
public class AngryLego : PhysicsGame
{
private static readonly string[] lines = {
" ",
" ",
" ",
" ",
"/ ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ======= ",
" Y Y Y ",
" X* X X ",
" * X X X * ",
" X X X ",
" X *X *X ",
};
private static readonly int tileWidth = 800 / lines[0].Length;
private static readonly int tileHeight = 480 / lines.Length;
public override void Begin()
{
ClearGameObjects();
ClearControls();
Gravity = new Vector(0, -500);
Level.Background.CreateGradient(Color.Blue, Color.White);
TileMap tiles = TileMap.FromStringArray(lines);
tiles.SetTileMethod('Y', LuoYlaSeina, Color.Wheat); // Aliohjelmien pitää itse lisätä, enemmän param
tiles.SetTileMethod('X', LuoSeina, Color.Wheat); // Aliohjelmien pitää itse lisätä, enemmän param
tiles.SetTileMethod('=', LuoKatto, Color.Red);
tiles.SetTileMethod('/', LuoMaila, Color.Black);
tiles.SetTileMethod('*', LuoVihollinen, Color.Pink);
tiles.Execute(tileWidth, tileHeight);
Level.CreateBorders();
Camera.ZoomToLevel();
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
/// <summary>
/// Luodaan seinäelementti
/// </summary>
private void LuoSeina(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject seina = new PhysicsObject(leveys-1, korkeus-1);
seina.Position = paikka;
seina.Color = Color.Wheat;
seina.Tag = "rakenne";
Add(seina);
}
/// <summary>
/// Luodaan isompi yläseinäelementti
/// </summary>
private void LuoYlaSeina(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject seina = new PhysicsObject(leveys*1.8, korkeus-1);
seina.Position = paikka;
seina.Color = Color.Wheat;
seina.Tag = "rakenne";
Add(seina);
}
/// <summary>
/// Luodaan kattoelementti. Luodaan hieman ylisuureksi, jolloin liimautuu
/// naapuriin kiinni.
/// </summary>
private void LuoKatto(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject katto = new PhysicsObject(leveys-1, korkeus-1);
katto.Position = paikka;
katto.Color = vari;
katto.Tag = "rakenne";
Add(katto);
}
/// <summary>
/// Luodaan maila, jolla palloja lyödään
/// </summary>
private void LuoMaila(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject maila = PhysicsObject.CreateStaticObject(leveys * 6, korkeus);
maila.Position = paikka;
maila.Color = vari;
Add(maila);
}
/// <summary>
/// Luodaan vihollinen, joka hajoaa osuessaan rekenteeseen
/// </summary>
private void LuoVihollinen(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject vihu = new PhysicsObject(leveys / 2, leveys / 2, Shape.Circle);
vihu.Position = paikka;
vihu.Color = vari;
// vihu.Collided += new NewCollisionHandler(VihuunOsui);
vihu.Tag = "vihu";