source: 2011/26/JaakkoL/Rogue Agent 2372/Rogue Agent 2372/Rogue Agent 2372/Peli.cs @ 2354

Revision 2354, 3.4 KB checked in by teeevasa, 8 years ago (diff)

added keyboard controls for menu

Line 
1 using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    List<Label> titleMenu;
12    const int SCREEN_WIDTH = 50;
13    const int SCREEN_HEIGTH = 50;
14    Player player;
15    Image background1 = LoadImage("Images/reactorBG");
16
17
18    public override void Begin()
19    {
20        menuCreate();
21    }
22
23    void menuCreate()
24    {
25        ClearAll();
26        titleMenu = new List<Label>();
27
28        Label startGameButton = new Label("Start Game");
29        startGameButton.Position = new Vector(0, 40);
30        titleMenu.Add(startGameButton);
31
32        Label exitGameButton = new Label("Exit Game");
33        exitGameButton.Position = new Vector(0, -40);
34        titleMenu.Add(exitGameButton);
35
36        foreach (Label titleMenuScreen in titleMenu)
37        {
38            Add(titleMenuScreen);
39        }
40
41        Mouse.ListenOn(startGameButton, MouseButton.Left, ButtonState.Pressed, startGame, null);
42        Keyboard.Listen(Key.Enter, ButtonState.Pressed, startGame, null);
43
44        Mouse.ListenOn(exitGameButton, MouseButton.Left, ButtonState.Pressed, Exit, null);
45        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, null);
46
47        Mouse.IsCursorVisible = true;
48        Mouse.ListenMovement(1.0, MenuMovement, null);
49        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
50    }
51
52    void MenuMovement(AnalogState mouseState)
53    {
54        foreach (Label button in titleMenu)
55        {
56            if (Mouse.IsCursorOn(button))
57            {
58                button.TextColor = Color.DarkRed;
59            }
60            else
61            {
62                button.TextColor = Color.DarkBlue;
63            }
64        }
65    }
66
67    void startGame()
68    {
69        ClearAll();
70        createLevel();
71        Gravity = new Vector(0, -1000);
72
73        // Starts playing the background music, which is set to repeat
74        MediaPlayer.Play("Sounds/Stage1Music");
75        MediaPlayer.Volume = 0.5;
76        MediaPlayer.IsRepeating = true;
77
78        Camera.Follow(player);
79        Camera.ZoomFactor = 1.0;
80        Camera.StayInLevel = true;
81    }
82
83    void createLevel()
84    {
85        TileMap levelSpec = TileMap.FromFile("ReactorEntrance.txt");
86        levelSpec['='] = createVerticalBlock;
87        levelSpec['|'] = createHorizontalBlock;
88        levelSpec['P'] = addPlayer;
89        levelSpec['a'] = addMeleeAlien;
90        levelSpec.Insert(SCREEN_WIDTH, SCREEN_HEIGTH);
91        Level.CreateBorders();
92        Level.Background.Image = background1;
93    }
94
95    Player addPlayer()
96    {
97        player = new Player(33, 74, Shape.Rectangle);
98        return player;
99    }
100
101    MeleeAlien addMeleeAlien()
102    {
103        MeleeAlien meleeAlien = new MeleeAlien(45, 80, Shape.Rectangle, 50, "Patrol");
104        return meleeAlien;
105    }
106
107    PhysicsObject createHorizontalBlock()
108    {
109        PhysicsObject hBlock = PhysicsObject.CreateStaticObject(SCREEN_WIDTH, SCREEN_HEIGTH,
110        Shape.Rectangle, CollisionShapeQuality.Best);
111        hBlock.Color = Color.Gray;
112        return hBlock;
113    }
114
115    PhysicsObject createVerticalBlock()
116    {
117        PhysicsObject vBlock = PhysicsObject.CreateStaticObject(SCREEN_WIDTH, SCREEN_HEIGTH,
118        Shape.Rectangle, CollisionShapeQuality.Best);
119        vBlock.Color = Color.DarkGray;
120        return vBlock;
121    }
122}
Note: See TracBrowser for help on using the repository browser.