source: 2012/kerho/ljov/Enter_name/Enter_name/Enter_name/Hemmo.cs @ 3908

Revision 3908, 3.2 KB checked in by anlakane, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Assets;
7using Jypeli.Widgets;
8
9class Hemmo : PlatformCharacter
10{
11    public IntMeter hp;
12
13    public AssaultRifle Ase;
14
15    const int MaxAmmo = 40;
16    //hp mittarilla on jo maksiarvo
17
18    public Hemmo()
19        : base(50, 50)
20    {
21        CollisionIgnoreGroup = 1;
22
23        Image = Game.LoadImage("norsu");
24        Mass = 10;
25
26        hp = new IntMeter(40);
27        hp.MaxValue = 40;
28
29        Ase = null;
30        Ase = new AssaultRifle(60, 30);
31        Ase.Power.DefaultValue = 50;
32        Ase.Ammo.Value = MaxAmmo;
33        Ase.AmmoIgnoresExplosions = Ase.AmmoIgnoresGravity = false;
34        Ase.CanHitOwner = false;
35        Ase.ProjectileCollision = Osuma;
36        Ase.FireRate = 0.99;
37        Ase.Position = Position;
38    }
39    public void Liiku(int dir)
40    {
41        Walk(500 * dir);
42    }
43    public void Hyppy()
44    {
45        Jump(500);
46    }
47    public void Toimi()
48    {
49    //    PhysicsObject purkka = Weapon.Shoot();
50    //    if (purkka != null) {purkka.Destroy();}
51          PhysicsObject ammus = Ase.Shoot();
52          if (ammus != null)
53          {
54              ammus.CollisionIgnoreGroup = 1;
55          }
56    }
57
58    public void Tahtaa(AnalogState hiiri)
59    {
60        Ase.Angle = (Game.Mouse.PositionOnWorld - Ase.AbsolutePosition).Normalize().Angle*6;
61    }
62
63    void Osuma(PhysicsObject ammus, PhysicsObject kohde)
64    {
65        if (!(kohde is Loota))
66        {
67            Explosion xplosion = new Explosion(250);
68            xplosion.Position = ammus.Position;
69            xplosion.Force = 100;
70            xplosion.ShockwaveReachesObject += Tuhoa;
71            xplosion.ShockwaveColor = new Color(0, 255, 0, 100);
72            Game.Add(xplosion);
73            ammus.Destroy();
74        }
75    }
76    void Tuhoa(IPhysicsObject kohde, Vector shokki)
77    {
78        if (kohde == this)
79        {
80            hp.Value -= 1;
81            if (hp <= 0) 
82                (this.Game as Enter_name).Kuolema();
83        }
84        else if (kohde.Tag.ToString() == "TuhoaMinut")
85        {
86            kohde.Destroy();
87        }
88    }
89    public void kolari(PhysicsObject tormaaja, PhysicsObject kohde)
90    {
91        if (kohde.Tag.ToString() == "Consequence for failure")
92        {
93            (this.Game as Enter_name).Kuolema();
94        }
95        if (kohde.Tag.ToString() == "Today is ours")
96        {
97            (this.Game as Enter_name).Edistys();
98        }
99        else if (kohde.Tag.ToString() == "laatikko")
100        {
101            if (kohde is Loota)
102            {
103                Loota laatikko = (Loota)kohde;
104                while (laatikko.Health > 0 && hp.Value < hp.MaxValue)
105                {
106                    hp.Value++;
107                    laatikko.Health--;
108                }
109                while (laatikko.Ammo > 0 && Ase.Ammo < MaxAmmo)
110                {
111                    Ase.Ammo.Value++;
112                    laatikko.Ammo--;
113                }
114                if (laatikko.Health == 0 && laatikko.Ammo == 0) laatikko.Destroy();
115                Game.MessageDisplay.Add("lOOTAAN OSUUTTU");
116            }
117        }
118    }
119}
Note: See TracBrowser for help on using the repository browser.