source: 2014/30/MiskaK/The Reclaim/The Reclaim/The Reclaim/The Reclaim/Efektit.cs @ 5602

Revision 5602, 4.0 KB checked in by anlakane, 6 years ago (diff)

Lisätty mm. ampuminen ja vihollisten tekoälyä.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Effects;
7
8public static class Efektit
9{
10    public static List<GameObject> effectObjects = new List<GameObject>();
11
12    /// <summary>
13    /// Lisätään verta kentälle.
14    /// </summary>
15    /// <param name="position">Paikka.</param>
16    /// <param name="amount">Määrä.</param>
17    /// <param name="scale">Koko. 1.0 on normaali, suurempi kasvattaa ja pienempi pienentää.</param>
18    public static GameObject[] AddNormalBlood(Vector position, int amount, double scale)
19    {
20        GameObject[] bloodSplatters = new GameObject[amount];
21        for (int i = 0; i < amount; i++)
22        {
23            GameObject blood = new GameObject(RandomGen.SelectOne<Image>(Images.NormalBloodImages));
24            blood.Position = position += RandomGen.NextVector(0.0, 30.0);
25            blood.Angle = RandomGen.NextAngle();
26            blood.Size *= scale;
27            LisaaTehosteObjekti(blood);
28            The_Reclaim.Peli.Add(blood, -2);
29            bloodSplatters[i] = blood;
30        }
31        return bloodSplatters;
32    }
33
34    /// <summary>
35    /// Lisätään kuolemaefekti kentälle.
36    /// </summary>
37    /// <param name="position">Paikka.</param>
38    /// <param name="amount">Määrä.</param>
39    /// <param name="scale">Koko. 1.0 on normaali, suurempi kasvattaa ja pienempi pienentää.</param>
40    public static GameObject[] AddDeathSplatter(Vector position, int amount, double scale)
41    {
42        GameObject[] deathSplatters = new GameObject[amount];
43        for (int i = 0; i < amount; i++)
44        {
45            GameObject deathsplatter = new GameObject(RandomGen.SelectOne<Image>(Images.DeathSplatterBloodImages));
46            deathsplatter.Position = position += RandomGen.NextVector(0.0, 10.0);
47            deathsplatter.Size *= scale;
48            deathsplatter.Angle = RandomGen.NextAngle();
49            LisaaTehosteObjekti(deathsplatter);
50            The_Reclaim.Peli.Add(deathsplatter, -2);
51            deathSplatters[i] = deathsplatter;
52        }
53        return deathSplatters;
54    }
55
56    /// <summary>
57    /// Lisätään tietorakenteeseen uusi tehosteobjekti ja poistetaan
58    /// vanha, jos objekteja on liikaa.
59    /// </summary>
60    /// <param name="tehoste">Lisättävä objekti.</param>
61    public static void LisaaTehosteObjekti(GameObject tehoste)
62    {
63        effectObjects.Add(tehoste);
64        if (effectObjects.Count > GameConstants.MAX_NUMBER_OF_EFFECT_OBJECTS)
65        {
66            effectObjects[0].Destroy();
67            effectObjects.RemoveAt(0);
68        }
69    }
70
71    /// <summary>
72    /// Luo hylsyn ammuttaessa ja lisää sen hylsyt-taulukkoon.
73    /// </summary>
74    public static void Hylsy(Vector paikka, Angle aseenKulma, Image hylsynkuva)
75    {
76        PhysicsObject hylsy = new PhysicsObject(2, 5);
77        hylsy.Image = hylsynkuva;
78        hylsy.Position = paikka + Vector.FromLengthAndAngle(15, aseenKulma + Angle.FromDegrees(-90));
79        hylsy.LinearDamping = 0.93;
80        hylsy.Mass = 0.5;
81        hylsy.Angle = aseenKulma + Angle.FromDegrees(90);
82        hylsy.AngularVelocity = RandomGen.NextDouble(-20.0, 20.0);
83        hylsy.AngularDamping = 0.97;
84        The_Reclaim.Peli.Add(hylsy, -2);
85
86        hylsy.MaximumLifetime = TimeSpan.FromSeconds(1.5);
87        hylsy.Destroying += delegate
88        {
89            GameObject fakeHylsy = new GameObject(hylsy.Width, hylsy.Height); // samanlainen GameObject-hylsy samaan paikkaan lagin vähentämiseksi
90            fakeHylsy.Image = hylsynkuva;
91            fakeHylsy.Position = hylsy.Position;
92            fakeHylsy.Angle = hylsy.Angle;
93            The_Reclaim.Peli.Add(fakeHylsy, -2);
94            LisaaTehosteObjekti(fakeHylsy);
95        };
96
97        hylsy.Hit(Vector.FromLengthAndAngle(RandomGen.NextInt(150, 300), aseenKulma + Angle.FromDegrees(RandomGen.NextDouble(-95, -85))));
98        //AddCollisionHandler(hylsy, HylsyOsuu);
99        //Timer.SingleShot(0.5, delegate { hylsynPutoamisAani.Play(0.7, 0.0, 0.0); });
100    }
101
102}
Note: See TracBrowser for help on using the repository browser.