source: 2013/27/TeemuM/Game/Game/Game/Player.cs @ 4383

Revision 4383, 2.6 KB checked in by jumakall, 7 years 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 Player : PhysicsObject
10{
11    const double defaultMoveSpeed = 1000;
12    private static Image playerImage = Game.LoadImage("Player");
13
14    Weapon weapon;
15    double speed = defaultMoveSpeed;
16
17    public Player(double width, double height, bool addDefaultControls) : base(width, height)
18    {
19        this.Tag = "player";
20        this.Shape = Shape.Rectangle;
21        this.Image = playerImage;
22        this.LinearDamping = 0.9;
23       
24        if (addDefaultControls)
25            SetControls(Key.W, Key.S, Key.D, Key.A, MouseButton.Left);
26
27        this.IsUpdated = true;
28    }
29
30    public bool PowerUp(String type, int value)
31    {
32        if (type == "speed")
33        {
34            speed = defaultMoveSpeed + value;
35            return true;
36        }
37
38        return false;
39    }
40
41    public bool GiveWeapon(String itemName)
42    {
43        RemoveWeapon();
44        if (itemName.ToLower() == "cannon")
45            weapon = new Cannon(75, 25);
46        else if (itemName.ToLower() == "plasmacannon")
47            weapon = new PlasmaCannon(75, 25);
48
49        if (weapon != null)
50        {
51            weapon.Angle = Angle.FromDegrees(90);
52            this.Add(weapon);
53            return true;
54        }
55        return false;
56    }
57
58    public bool RemoveWeapon()
59    {
60        if (weapon != null)
61        {
62            weapon.Destroy();
63            return true;
64        }
65        return false;
66    }
67
68    public void SetControls(Key forward, Key back, Key right, Key left, MouseButton shoot)
69    {
70        Game.Keyboard.Listen(forward, ButtonState.Down, delegate { MovePlayer(new Vector(0, speed)); }, null);
71        Game.Keyboard.Listen(back, ButtonState.Down, delegate { MovePlayer(new Vector(0, -speed)); }, null);
72        Game.Keyboard.Listen(right, ButtonState.Down, delegate { MovePlayer(new Vector(speed, 0)); }, null);
73        Game.Keyboard.Listen(left, ButtonState.Down, delegate { MovePlayer(new Vector(-speed, 0)); }, null);
74        Game.Mouse.Listen(shoot, ButtonState.Pressed, Shoot, null);
75    }
76
77    private void MovePlayer(Vector force)
78    {
79        this.Push(force);
80    }
81
82    public void Shoot()
83    {
84        if (weapon != null)
85            weapon.Shoot();
86        else
87            Game.MessageDisplay.Add("Weapon missing");
88    }
89
90    public override void Update(Time time)
91    {
92        this.Angle = (Game.Mouse.PositionOnWorld - this.AbsolutePosition).Normalize().Angle - Angle.FromDegrees(90);
93        base.Update(time);
94    }
95}
Note: See TracBrowser for help on using the repository browser.