source: 2013/27/ArttuY/trunk/RampageRebellion/RampageRebellion/RampageRebellion/RRShip.cs @ 10337

Revision 4451, 2.0 KB checked in by eearyla, 7 years ago (diff)

Backup

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Assets;
7using Jypeli.Controls;
8using Jypeli.Effects;
9using Jypeli.Widgets;
10
11public class RRShip : RRObject
12{
13    Action<RRShip, PhysicsObject> collisionFunc;
14    Action<RRShip> updateMeters;
15
16    private Object thisLock = new Object();
17
18    public RRShip(PhysicsGame me, double width, double height, int startHP, double scoreValue, Vector spawnPosition, Action<RRShip, PhysicsObject> onCollision, Action<RRShip> updateHPMeter)
19        : base(width, height)
20    {
21        this.Shape = Shape.Diamond;
22        this.Tag = "P"; //It is a player..
23        this.Health = startHP;
24        this.ScoreValue = scoreValue;
25        this.Position = spawnPosition;
26
27        this.CanRotate = false;
28        this.Color = Color.Red;
29        this.CollisionIgnoreGroup = 2;
30        this.IgnoresGravity = true;
31        this.IgnoresExplosions = true;
32
33        // We know what to do
34        this.Add(new GameObject(PhysicsGame.LoadImage("PlayerSprite")));
35        this.collisionFunc = onCollision;
36        this.updateMeters = updateHPMeter;
37
38        me.AddCollisionHandler<RRShip, PhysicsObject>(this, collisionHandler);
39
40        // Call the meter handler just to reinit
41        updateMeters(this);
42    }
43
44    public void collisionHandler(RRShip collidee, PhysicsObject collider)
45    {
46        lock (thisLock)
47        {
48            bool modifiedHP = false;
49
50                if ((collider.Tag.ToString() == "B") && ((Math.Abs(this.Velocity.X) + Math.Abs(this.Velocity.Y)) > 600))
51                {
52                    Health -= 1;
53                    modifiedHP = true;
54                }
55                else if (collider.Tag.ToString().EndsWith("E"))
56                {
57                    Health -= ((Health > 1) ? 2 : 1);
58                    modifiedHP = true;
59                }
60
61            collisionFunc(collidee, collider);
62
63            if (modifiedHP) updateMeters(this);
64        }
65    }
66}
67
Note: See TracBrowser for help on using the repository browser.