source: 2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora/Attack to Agora/Attack_to_Agora_mitja.cs @ 6429

Revision 6429, 6.4 KB checked in by anlakane, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using Microsoft.Xna.Framework.Content;
9
10/// <summary>
11/// "Mitjan" (miskan) koodit tänne
12/// </summary>
13public partial class Attack_to_Agora : PhysicsGame
14{
15    Image jouniBoss = LoadImage("jouniboss1");
16    Animation jounibossArrive;
17
18    Image anttijussiboss = LoadImage("anttijussiboss");
19
20    Elava currentBoss;
21    AssaultRifle currentBossWeapon;
22    ProgressBar bossHealthBar;
23    const double JOUNI_DMG = 25;
24
25    bool paaseekoSeuraavaanKenttaan = true;
26
27    Animation asemiesLiikkuu;
28
29    // Attribuutit
30    void LuoAmpuvaVihollinen(Vector paikka, double leveys, double korkeus)
31    {
32        Elava vihollinen = new Elava(200, 200, 100);
33        vihollinen.Animation = asemiesLiikkuu;
34        vihollinen.Animation.Start();
35        vihollinen.Position = paikka;
36        vihollinen.Tag = "vihollinen";
37        GameObject varjo = Varjo(vihollinen);
38
39            VihollinenKuoli(vihollinen);
40            varjo.Destroy();
41        };
42
43        if (taistelija == null || taistelija.IsAddedToGame == false)
44            Timer.SingleShot(1.0 / 60.0, delegate { LuoAmpumisAivot(vihollinen); });
45        else LuoAmpumisAivot(vihollinen);
46
47    }
48
49    void LuoTormaavaVihollinen(Vector paikka, double leveys, double korkeus)
50        Elava Tormaavavihollinen = new Elava(200, 200, 200);
51        Tormaavavihollinen.Image = tormaavavihollinen;
52        Tormaavavihollinen.Tag = "vihollinen";
53        Tormaavavihollinen.Position = paikka;
54        GameObject varjo = Varjo(Tormaavavihollinen);
55
56            VihollinenKuoli(Tormaavavihollinen);
57            varjo.Destroy();
58        };
59
60        if (taistelija == null || taistelija.IsAddedToGame == false)
61            Timer.SingleShot(1.0 / 60.0, delegate { LuoHyokkaysAivot(Tormaavavihollinen); });
62        else LuoHyokkaysAivot(Tormaavavihollinen);
63
64
65        Add(Tormaavavihollinen);
66    }
67
68    void LuoAmpumisAivot(Elava vihollinen)
69    {
70        FollowerBrain seuraajanAivot = new FollowerBrain(taistelija);
71        seuraajanAivot.Speed = 500;
72        seuraajanAivot.Active = true;
73        seuraajanAivot.DistanceClose = vihollinen.Width / 2 + taistelija.Width / 2 + 25;
74        seuraajanAivot.TargetClose += delegate { taistelija.Damagea(VIHOLLISEN_TORMAYSDMG); };
75
76        vihollinen.Brain = seuraajanAivot;
77    }
78
79    void LuoHyokkaysAivot(Elava vihollinen)
80    {
81        FollowerBrain seuraajanAivot = new FollowerBrain(taistelija);
82        seuraajanAivot.Speed = 500;
83        seuraajanAivot.Active = true;
84        seuraajanAivot.DistanceClose = vihollinen.Width / 2 + taistelija.Width / 2 + 25;
85        seuraajanAivot.TargetClose += delegate { taistelija.Damagea(VIHOLLISEN_TORMAYSDMG); };
86
87        vihollinen.Brain = seuraajanAivot;
88    }
89
90
91    /// <summary>
92    /// Vihollinen kuoli, 'nuff said.
93    /// </summary>
94    /// <param name="vihollinen"></param>
95    void VihollinenKuoli(Elava vihollinen)
96    {
97        vihollinen.Destroy();
98    }
99
100    void LuoJouniBoss(Vector luomisPaikka, double pysahtymisX)
101    {
102        Elava jouni = new Elava(jouniBoss, 5.0); // 10000
103        jouni.Kuoli += JouniDefeated;
104        jouni.Position = luomisPaikka;
105        jouni.Shape = Shape.FromImage(jouniBoss);
106        jouni.Tag = "jouni";
107        jouni.CollisionIgnoreGroup = 1;
108        jouni.IgnoresGravity = true;
109        jouni.IgnoresCollisionWith(taistelija);
110        Add(jouni);
111
112        GameObject varjo = Varjo(jouni);
113        jouni.Kuoli += delegate { varjo.Destroy(); };
114
115        currentBoss = jouni;
116        paaseekoSeuraavaanKenttaan = false;
117
118        jouni.NeedsUpdateCall = true;
119        jouni.IsUpdated = true;
120        jouni.Updated += delegate(PhysicsObject j)
121        {
122            Elava jP = j as Elava;
123
124            if (jP.X > pysahtymisX)
125            {
126                ActivateJouni(jP);
127                jouni.IsUpdated = false;
128                jouni.NeedsUpdateCall = false;
129            }
130            else jP.Velocity = new Vector(100.0, 0.0);
131        };
132    }
133
134    void ActivateJouni(Elava jouni)
135    {
136        jouni.Animation = jounibossArrive;
137        jouni.Animation.Start(1);
138        jouni.Animation.FPS = 0.5;
139        jouni.Animation.StopOnLastFrame = true;
140
141        jouni.MakeStatic();
142        jouni.Stop();
143
144        AssaultRifle jouninAse = new AssaultRifle(20, 10);
145        jouninAse.IsVisible = true;
146        jouninAse.InfiniteAmmo = true;
147        jouninAse.Power.Value = 200.0;
148        jouninAse.Power.DefaultValue = 200.0;
149        jouninAse.Tag = "jouninase";
150        Add(jouninAse);
151        jouninAse.Position = jouni.Position + new Vector(jouni.Width / 4, 0.0);
152        currentBossWeapon = jouninAse;
153
154        Timer ampumisAjastin = new Timer();
155        ampumisAjastin.Interval = 1.0;
156        {
157            if (jouninAse == null)
158                return;
159            jouninAse.AbsoluteAngle = (taistelija.Position - jouninAse.AbsolutePosition).Angle;
160
161            PhysicsObject ammus = jouninAse.Shoot();
162
163            if (ammus == null)
164                return;
165
166            ammus.IgnoresGravity = true;
167            ammus.IsVisible = false;
168            ammus.IsUpdated = true;
169            ammus.NeedsUpdateCall = true;
170            ammus.Updated += delegate(PhysicsObject a) { DrawTracers(a, Color.Red, 0.3, 2); };
171
172
173                if ((string)p.Tag == "jouni") return;
174
175                a.Destroy();
176
177                // p.IsVisible = true; // collisionboxit näkyviin?
178                Elava e = p as Elava;
179
180                if (e == null) return;
181                e.Damagea(JOUNI_DMG);
182            });
183        };
184
185        ampumisAjastin.Start();
186    }
187
188    void JouniDefeated()
189    {
190        currentBoss.Destroy();
191        currentBoss = null;
192        jounihaviaa.Play();
193        if (currentBossWeapon != null)
194            currentBossWeapon.Destroy();
195        currentBossWeapon = null;
196
197<<<<<<< .mine        Timer.SingleShot(jounihaviaa.Duration.Seconds, delegate {
198            voititjounin.Play();
199=======        Timer.SingleShot(2.0, delegate { LuoChromaCase(ItemType.Knife); });
200    }
201>>>>>>> .theirs    void LuoAnttiJussi(Vector paikka, Double korkeus, Double leveys)
202    {
203        Elava anttiJussi = new Elava(42, 42, 100); //hp 10000?
204        anttiJussi.Image = anttijussiboss;
205        anttiJussi.FollowPlayer = true;
206        Add(anttiJussi);
207    }
208    // Aliohjelmat
209}
Note: See TracBrowser for help on using the repository browser.