source: 2016/27/PaavoH/Diskette/Diskette/Diskette/Diskette.cs @ 9512

Revision 9512, 4.3 KB checked in by rikavila, 21 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Diskette : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19
20    public override void Begin()
21    {
22        Gravity = new Vector(0, 0);
23
24        LuoKentta();
25        LisaaNappaimet();
26
27        Camera.Follow(pelaaja1);
28        Camera.ZoomFactor = 1.2;
29        Camera.StayInLevel = true;
30        IsFullScreen = true;
31    }
32
33    void LuoKentta()
34    {
35        TileMap kentta = TileMap.FromLevelAsset("kentta1");
36        kentta.SetTileMethod('#', LisaaTaso);
37        kentta.SetTileMethod('u', AddDiskette);
38        kentta.SetTileMethod('N', LisaaPelaaja);
39        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
40        Level.CreateBorders();
41        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
42    }
43
44    void LisaaTaso(Vector paikka, double leveys, double korkeus)
45    {
46        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
47        taso.Position = paikka;
48        taso.Color = Color.Green;
49        Add(taso);
50    }
51
52    void AddDiskette(Vector paikka, double leveys, double korkeus)
53    {
54        PhysicsObject diskette = PhysicsObject.CreateStaticObject(leveys, korkeus);
55        diskette.IgnoresCollisionResponse = true;
56        diskette.Position = paikka;
57        //diskette.Image = ;
58        diskette.Tag = "D";
59        Add(diskette);
60    }
61
62    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
63    {
64        pelaaja1 = new PlatformCharacter(leveys, korkeus);
65        pelaaja1.Position = paikka;
66        pelaaja1.Mass = 4.0;
67        pelaaja1.Image = pelaajanKuva;
68        AddCollisionHandler(pelaaja1, "D", GetDiskette);
69        Add(pelaaja1);
70    }
71
72    void LisaaNappaimet()
73    {
74        //Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
75        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
76
77        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, ".", pelaaja1, -nopeus);
78        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, ".", pelaaja1, nopeus);
79        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, ".", pelaaja1, hyppyNopeus);
80
81        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, ".");
82
83        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaT, ".", pelaaja1);
84        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, ".", pelaaja1, hyppyNopeus);
85    }
86
87    void Liikuta(PlatformCharacter hahmo, double nopeus)
88    {
89        hahmo.Walk(nopeus);
90    }
91
92    void LiikutaT(AnalogState tatinTila, PlatformCharacter hahmo)
93    {
94        Vector tatinAsento = tatinTila.StateVector;
95        hahmo.Walk(tatinAsento.X * nopeus);
96    }
97
98    void Hyppaa(PlatformCharacter hahmo, double nopeus)
99    {
100        hahmo.Jump(nopeus);
101    }
102
103    void GetDiskette(PhysicsObject hahmo, PhysicsObject tahti)
104    {
105        CommandPrompt();
106        tahti.Destroy();
107    }
108    void CommandPrompt()
109    {
110        ClearControls();
111        List<string> Welcome = new List<string>(new string[] { "Welcome", "to", "common", "               computer." });
112        //Pause();
113        GameObject prompt = new GameObject(550, 440);
114        prompt.X = 100;
115        prompt.Y = -70;
116        prompt.Color = Color.DarkGreen;
117        Add(prompt);
118
119        Label start = new Label("C:\\");
120        start.X = Screen.Left + 650;
121        start.Y = Screen.Top - 70;
122        start.TextColor = Color.LightGreen;
123        Add(start);
124
125        int i = 0;
126        Timer Welcometimer = new Timer();
127        Welcometimer.Interval = 1;
128        Welcometimer.Timeout += () =>
129        {
130            Label welcome = new Label(Welcome[i]);
131            welcome.X = Screen.Left + 750 + i++ * 70;
132            welcome.Y = Screen.Top - 70;
133            welcome.TextColor = Color.LightGreen;
134            Add(welcome);
135            if (i == Welcome.Count) Welcometimer.Stop();
136            if (i == Welcome.Count) LisaaNappaimet();
137        };
138        Welcometimer.Start();
139    }
140}
Note: See TracBrowser for help on using the repository browser.