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

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