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

Revision 3947, 3.4 KB checked in by anlakane, 9 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(35, 90)
20    {
21        CollisionIgnoreGroup = 1;
22
23        Image = Game.LoadImage("norsu");
24        Mass = 1;
25
26        hp = new IntMeter(40);
27        hp.MaxValue = 40;
28
29        Ase = null;
30        Ase = new AssaultRifle(40, 14);
31        Ase.Power.Value = 75;
32        Ase.Power.DefaultValue = 75;
33        Ase.Ammo.Value = MaxAmmo;
34        Ase.AmmoIgnoresExplosions = Ase.AmmoIgnoresGravity = false;
35        Ase.CanHitOwner = false;
36        Ase.ProjectileCollision = Osuma;
37        Ase.FireRate = 0.99;
38        Ase.Position = Position;
39        Ase.Animation = new Animation((this.Game as Enter_name).TykkiKuvat);
40        Ase.Animation.FPS = 0.1;
41        Ase.Animation.Start();
42
43    }
44    public void Liiku(int dir)
45    {
46        if(!IsAboutToFall())
47        Walk(500 * dir);
48        else
49        Walk(350 * dir);
50    }
51    public void Hyppy()
52    {
53        Jump(450);
54    }
55    public void Toimi()
56    {
57          PhysicsObject ammus = Ase.Shoot();
58          if (ammus != null)
59          {
60              ammus.Image = (this.Game as Enter_name).Ammus;
61              ammus.CanRotate = false;
62              ammus.CollisionIgnoreGroup = 1;
63          }
64    }
65
66    public void Tahtaa(AnalogState hiiri)
67    {
68        Ase.Angle = (Game.Mouse.PositionOnWorld - Ase.AbsolutePosition).Normalize().Angle*4;
69    }
70
71    void Osuma(PhysicsObject ammus, PhysicsObject kohde)
72    {
73        if (!(kohde is Loota))
74        {           
75            ammus.Destroy();
76            Explosion xplosion = new Explosion(250);
77            xplosion.Position = ammus.Position;
78            xplosion.Force = 150;
79            xplosion.ShockwaveReachesObject += Tuhoa;
80            xplosion.ShockwaveColor = new Color(0, 255, 0, 100);
81            xplosion.Image = null;
82            Game.Add(xplosion);
83        }
84    }
85    void Tuhoa(IPhysicsObject kohde, Vector shokki)
86    {
87        if (kohde == this)
88        {
89            hp.Value -= 1;
90            if (hp <= 0) 
91                (this.Game as Enter_name).Kuolema();
92        }
93        else if (kohde.Tag.ToString() == "TuhoaMinut")
94        {
95            kohde.Destroy();
96        }
97    }
98    public void kolari(PhysicsObject tormaaja, PhysicsObject kohde)
99    {
100        if (kohde.Tag.ToString() == "Consequence for failure")
101        {
102            (this.Game as Enter_name).Kuolema();
103        }
104        if (kohde.Tag.ToString() == "Today is ours")
105        {
106            (this.Game as Enter_name).Edistys();
107        }
108        else if (kohde.Tag.ToString() == "laatikko")
109        {
110            if (kohde is Loota)
111            {
112                Loota laatikko = (Loota)kohde;
113                while (laatikko.Health > 0 && hp.Value < hp.MaxValue)
114                {
115                    hp.Value++;
116                    laatikko.Health--;
117                }
118                while (laatikko.Ammo > 0 && Ase.Ammo < MaxAmmo)
119                {
120                    Ase.Ammo.Value++;
121                    laatikko.Ammo--;
122                }
123                if (laatikko.Health == 0 && laatikko.Ammo == 0) laatikko.Destroy();
124            }
125        }
126    }
127}
Note: See TracBrowser for help on using the repository browser.