source: 2017/24/SamuelN/Endless/Endless/Endless/Endless.cs @ 9717

Revision 9717, 25.1 KB checked in by saniitty, 16 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10//Game made by Samuel N
11//Usage only with credits
12
13/* Copyright (c) 2009 University of Jyväskylä, Department of Mathematical
14Information Technology.
15
16Permission is hereby granted, free of charge, to any person obtaining a copy
17of this software and associated documentation files (the "Software"), to deal
18in the Software without restriction, including without limitation the rights
19to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20copies of the Software, and to permit persons to whom the Software is
21furnished to do so, subject to the following conditions:
22
23The above copyright notice and this permission notice shall be included in
24all copies or substantial portions of the Software.
25
26THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32THE SOFTWARE.*/
33public class Endless : PhysicsGame
34{
35    bool a = false;
36    bool b = false;
37    bool c = false;
38    bool d = false;
39    bool e = false;
40    PhysicsObject coin;
41    Light valo;
42   
43    public Font f = LoadFont("font1");
44    string ship;
45    Widget w;
46    SoundEffect blip = LoadSoundEffect("blip");
47   
48    PhysicsObject player;
49    PhysicsObject black;
50    PhysicsObject ufo;
51    PhysicsObject ufo2;
52   
53    PhysicsObject leftB;
54    PhysicsObject rightB;
55    PhysicsObject bottomB;
56    PhysicsObject topB;
57   
58    AssaultRifle playerGun;
59    AssaultRifle playerGun2;
60   
61    PhysicsObject tausta;
62    Label health;
63    Label enemyHP;
64    Label scorelabel;
65   
66    double firerate = 15;
67    int hp = 200;
68    double spawnTime = 0.4;
69    int ufohp = 100;
70   
71    int speeds;
72    int coins;
73    int round = 1;
74    int ufohp2 = 100;
75    Label roundtxt;
76   
77    MultiSelectWindow menu;
78    MultiSelectWindow startMenu;
79    DoubleMeter healthCounter;
80    IntMeter scoreCounter;
81   
82    private Animation ufoAnim;
83   
84    ScoreList topLista = new ScoreList(20, false, 0);
85   
86    public override void Begin()
87    {
88        topLista = DataStorage.TryLoad<ScoreList>(topLista, "raqyrff_fpberf.xml");
89        coins = DataStorage.TryLoad<int>(coins, "Endless_Shooter_load_data.xml");
90        ufoAnim = LoadAnimation("ufoAnim");
91        IsFullScreen = true;
92        IsMouseVisible = true;
93        Start();
94    }
95   
96    void Start()
97    {
98        ship = "bgspeedship";
99        MediaPlayer.IsRepeating = true;
100        MediaPlayer.Play("8 Bit Summer");
101   
102        Level.Background.Color = Color.Black;
103        Level.Width = Screen.Width;
104        Level.Height = Screen.Height;
105        Level.Background.Image = LoadImage("bgImg");
106        Level.CreateBottomBorder(0, false);
107        Level.CreateTopBorder(0, false);
108        Level.Background.FitToLevel();
109   
110        w = new Widget(1500, 71);
111        w.X = 0;
112        w.Y = 400;
113        w.Image = LoadImage("header");
114        Add(w);
115   
116        startMenu = new MultiSelectWindow("", "Select GameMode", "Scores", "Credits", "Clear scores", "Exit");
117        startMenu.DefaultCancel = -1;
118        startMenu.Color = Color.Transparent;
119        startMenu.SelectionColor = Color.Magenta;
120   
121        startMenu.X = 700;
122        startMenu.Y = 0;
123   
124        startMenu.AddItemHandler(0, GameSelect);
125        startMenu.AddItemHandler(1, BestScores);
126        startMenu.AddItemHandler(2, ShowCredits);
127        startMenu.AddItemHandler(3, ClearList);
128        startMenu.AddItemHandler(4, Exit);
129        startMenu.Font = f;
130        Add(startMenu);
131    }
132    void ClearList()
133    {
134        DataStorage.Delete(@"raqyrff_fpberf.xml");
135        Start();
136    }
137    void ShowCredits()
138    {
139        Label credits = new Label();
140        credits.Font = f;
141        credits.Y = -700;
142        credits.Text = "Game by Samuel Niittyla\n\nUFOs and Spaceships by MillionthVector\nhttp://millionthvector.blogspot.com/\n\nMusic\n\nJeremy L - Wolf\nhttps://youtu.be/Ahfu1E_BBSI\n\nHeatleyBros - 8 Bit Summer\nhttps://youtu.be/TiE9Vvmlxew\n\n";
143        credits.TextColor = Color.White;
144        Add(credits);
145   
146        Timer t = new Timer();
147        t.Interval = 0.03;
148        t.Timeout += delegate { credits.Y += 2; };
149        t.Start();
150        Timer t2 = new Timer();
151        t2.Interval = 1;
152        t2.Timeout += delegate { credits.FadeColorTo(RandomGen.NextColor(), 1); };
153        t2.Start();
154    }
155    void GameSelect()
156    {
157        MultiSelectWindow selectG = new MultiSelectWindow("", "Deathmatch", "More coming soon");
158        selectG.DefaultCancel = -1;
159        selectG.Color = Color.Transparent;
160        selectG.SelectionColor = Color.Magenta;
161   
162        selectG.X = 650;
163        selectG.Y = 0;
164   
165        selectG.AddItemHandler(0, Difficulty);
166        selectG.AddItemHandler(1, Difficulty);
167        selectG.Font = f;
168        Add(selectG);
169    }
170    void Difficulty()
171    {
172        MultiSelectWindow selectD = new MultiSelectWindow("", "EZ for Noobs", "Normal", "Extreme", "Hardcore", "Extreme Hardcore 1HP", "Sandbox Mode");
173        selectD.DefaultCancel = -1;
174        selectD.Color = Color.Transparent;
175        selectD.SelectionColor = Color.Magenta;
176   
177        selectD.X = 650;
178        selectD.Y = 0;
179   
180        selectD.AddItemHandler(0, delegate { speeds = 80; GameStart(300); });
181        selectD.AddItemHandler(1, delegate { speeds = 100; GameStart(200); });
182        selectD.AddItemHandler(2, delegate { speeds = 300; GameStart(100); });
183        selectD.AddItemHandler(3, delegate { speeds = 400; GameStart(50); });
184        selectD.AddItemHandler(4, delegate { speeds = 300; GameStart(1); });
185        selectD.AddItemHandler(5, SandboxMode);
186        selectD.Font = f;
187        Add(selectD);
188    }
189    void SandboxMode()
190    {
191        InputWindow speedselect = new InputWindow("Enter UFO Follow Speed");
192        speedselect.TextEntered += UfoHPSelect;
193        Add(speedselect);
194    }
195    void UfoHPSelect(InputWindow i)
196    {
197        string answ = i.InputBox.Text;
198        try
199        {
200            int value = int.Parse(answ);
201            if (value >= 0)
202            {
203                ufohp2 = value;
204                ufohp = ufohp2;
205                InputWindow hpselect = new InputWindow("Enter UFO HP: ");
206                hpselect.TextEntered += HPSelect;
207                Add(hpselect);
208            }
209            else
210            {
211                MessageDisplay.Add("NOT CORRECT VALUE");
212                Start();
213            }
214        }
215        catch (Exception ex)
216        {
217            MessageDisplay.Add(ex.Message);
218            Start();
219        }
220    }
221    void HPSelect (InputWindow i)
222    {
223        string answ = i.InputBox.Text;
224        try
225        {
226            int value = int.Parse(answ);
227            if (value >= 0)
228            {
229                speeds = value;
230                InputWindow hpselect = new InputWindow("Enter Start HP: ");
231                hpselect.TextEntered += AmmoSelect;
232                Add(hpselect);
233            }
234            else
235            {
236                MessageDisplay.Add("NOT CORRECT VALUE");
237                Start();
238            }
239        }
240        catch (Exception ex)
241        {
242            MessageDisplay.Add(ex.Message);
243            Start();
244        }
245    }
246    void AmmoSelect (InputWindow i)
247    {
248        string answ = i.InputBox.Text;
249        try
250        {
251            int value = int.Parse(answ);
252            if (value > 0)
253            {
254                hp = value;
255                InputWindow ammoselect = new InputWindow("Enter Firerate: ");
256                ammoselect.TextEntered += FireRateSelect;
257                Add(ammoselect);
258            }
259            else
260            {
261                MessageDisplay.Add("NOT CORRECT VALUE");
262                Start();
263            }
264        }
265        catch(Exception ex)
266        {
267            MessageDisplay.Add(ex.Message);
268            Start();
269        }
270    }
271    void FireRateSelect(InputWindow i)
272    {
273        string answ = i.InputBox.Text;
274        try
275        {
276            double value = double.Parse(answ);
277            if (value > 0)
278            {
279                firerate = value;
280                InputWindow hpselect = new InputWindow("Enter Spawn Time: ");
281                hpselect.TextEntered += ProcessInput;
282                Add(hpselect);
283            }
284            else
285            {
286                MessageDisplay.Add("NOT CORRECT VALUE");
287                Start();
288            }
289        }
290        catch (Exception ex)
291        {
292            MessageDisplay.Add(ex.Message);
293            Start();
294        }
295    }
296    void ProcessInput(InputWindow i)
297    {
298        string answ = i.InputBox.Text;
299        try
300        {
301            double value = double.Parse(answ);
302            if (value > 0)
303            {
304                spawnTime = value;
305                GameStart(hp);
306                w.Destroy();
307            }
308            else
309            {
310                MessageDisplay.Add("NOT CORRECT VALUE");
311                Start();
312            }
313        }
314        catch (Exception ex)
315        {
316            MessageDisplay.Add(ex.Message);
317            Start();
318        }
319    }
320    void GameStart(int value)
321    {
322        //Level.AmbientLight = 0.8;
323        hp = value;
324        Blip();
325        w.Destroy();
326        MediaPlayer.Stop();
327   
328        Level.Background.Color = Color.Black;
329   
330        //Label levelOneText = new Label("Level 1");
331        //levelOneText.Font = f;
332        //levelOneText.TextColor = Color.White;
333        //Add(levelOneText);
334        //levelOneText.Destroy();
335   
336        Level.Background.Image = LoadImage("level3bg");
337        MediaPlayer.Play("Wolf");
338        ADD();
339   
340        //tausta = new PhysicsObject(750, 1000);
341        //tausta.Image = LoadImage("pb");
342        //tausta.IgnoresCollisionResponse = true;
343        //tausta.X = -450;
344        //tausta.IgnoresExplosions = true;
345        //Add(tausta, -3);
346    }
347    void ADD()
348    {
349        ufohp = ufohp2;
350        AddPlayer();
351        AddControls();
352        AddBorders();
353        AddLabels();
354        AddHealthBar();
355        AddEnemies();
356        AddMiniUfos(new Vector(-450, 0));
357        AddTimers();
358        //DataStorage.Load(@"C:\Users\" + Environment.UserName + "", "");
359    }
360   
361    void AddEnemies()
362    {
363        ufo = new PhysicsObject(75, 75);
364        ufo.Image = LoadImage("ufo1");
365        ufo.Shape = Shape.FromImage(LoadImage("ufo1"));
366        ufo.Animation = ufoAnim;
367        ufo.X = -450;
368        ufo.Y = 400;
369        ufo.Animation.Start();
370        ufo.CanRotate = false;
371        ufo.Tag = "ufo";
372        ufo.IgnoresExplosions = true;
373        Add(ufo);
374   
375        FollowerBrain f = new FollowerBrain(player);
376        f.Active = true;
377        f.Speed = speeds;
378        ufo.Brain = f;
379    }
380    void AddMiniUfos (Vector pos)
381    {
382        if (pos.X <= leftB.X || pos.X >= rightB.X || pos.Y <= bottomB.Y || pos.Y >= topB.Y)
383        {
384            return;
385        }
386        ufo2 = new PhysicsObject(25, 25);
387        ufo2.Image = LoadImage("ufo1");
388        ufo2.Shape = Shape.FromImage(LoadImage("ufo1"));
389        ufo2.Animation = ufoAnim;
390   
391        ufo2.Position = pos;
392   
393        ufo2.Animation.Start();
394        ufo2.CanRotate = false;
395        ufo2.Tag = "MiniUfo";
396   
397        Add(ufo2);
398        //ufo2.Push(new Vector(RandomGen.NextInt(-10000, 10000), RandomGen.NextInt(-10000, 10000)));
399   
400        FollowerBrain f2 = new FollowerBrain(player);
401        f2.Active = true;
402        f2.Speed = speeds + 20;
403        ufo2.Brain = f2;
404    }
405    void AddPlayer()
406    {
407        player = new PhysicsObject(60, 60);
408        player.Image = LoadImage(ship);
409        player.Shape = Shape.FromImage(LoadImage(ship));
410        //player.CanRotate = false;
411        player.X = -450;
412        player.Y = -400;
413        //player.IgnoresCollisionWith(tausta);
414        AddCollisionHandler(player, "ufo", HitByEnemy);
415        AddCollisionHandler(player, "MiniUfo", HitByEnemy);
416        AddCollisionHandler(player, "coin", CoinHit);
417   
418        player.Tag = "player";
419   
420        Add(player);
421   
422        //Flame liekki = new Flame(LoadImage(""));
423        //liekki.Position = player.Position;
424        //Add(liekki);
425   
426        playerGun = new AssaultRifle(30, 10);
427        playerGun.ProjectileCollision = AmmoShot;
428        playerGun.FireRate = firerate;
429        playerGun.InfiniteAmmo = true;
430        playerGun.Angle = Angle.RightAngle;
431        playerGun.Y -= 10;
432        playerGun.X -= 7;
433        playerGun.AttackSound = null;
434        playerGun.Image = LoadImage("p");
435        playerGun.AmmoIgnoresExplosions = true;
436        player.Add(playerGun);
437   
438        playerGun2 = new AssaultRifle(30, 10);
439        playerGun2.ProjectileCollision = AmmoShot;
440        playerGun2.FireRate = firerate;
441        playerGun2.InfiniteAmmo = true;
442        playerGun2.Angle = Angle.RightAngle;
443        playerGun2.Y -= 10;
444        playerGun2.X += 7;
445        playerGun2.AttackSound = null;
446        playerGun2.Image = LoadImage("p");
447        playerGun2.AmmoIgnoresExplosions = true;
448        player.Add(playerGun2);
449   
450        PhysicsObject nothing = new PhysicsObject(20, 20);
451        nothing.Tag = "n";
452        nothing.X = 1000;
453        nothing.Y = -520;
454        nothing.Image = LoadImage("coin");
455        Add(nothing);
456   
457   
458        //valo = new Light();
459        //valo.Intensity = 2;
460        //valo.Distance = 200;
461        //Add(valo);
462    }
463    void HitByEnemy(PhysicsObject player, PhysicsObject enemy)
464    {
465        if (enemy.Tag.ToString() == "ufo")
466        {
467            healthCounter.Value -= 20;
468            health.Text = "HP: " + healthCounter.Value;
469        }
470        else if (enemy.Tag.ToString() == "MiniUfo")
471        {
472            healthCounter.Value -= 5;
473            health.Text = "HP: " + healthCounter.Value;
474        }
475    }
476    void AddControls()
477    {
478        Keyboard.Listen(Key.A, ButtonState.Down, MovePlayer, null, new Vector(-500, 0));
479        Keyboard.Listen(Key.D, ButtonState.Down, MovePlayer, null, new Vector(500, 0));
480        Keyboard.Listen(Key.W, ButtonState.Down, MovePlayer, null, new Vector(0, 500));
481        Keyboard.Listen(Key.S, ButtonState.Down, MovePlayer, null, new Vector(0, -500));
482        Mouse.Listen(MouseButton.Left, ButtonState.Down, Shoot, null, playerGun);
483        Mouse.Listen(MouseButton.Left, ButtonState.Down, Shoot, null, playerGun2);
484        Keyboard.Listen(Key.PageDown, ButtonState.Down, move, null, new Vector(2, 0));
485        Keyboard.Listen(Key.Delete, ButtonState.Down, move, null, new Vector(-2, 0));
486        Keyboard.Listen(Key.Home, ButtonState.Down, move, null, new Vector(0, 2));
487        Keyboard.Listen(Key.End, ButtonState.Down, move, null, new Vector(0, -2));
488   
489        Keyboard.Listen(Key.F1, ButtonState.Pressed, delegate { a = true; }, null);
490        Keyboard.Listen(Key.Insert, ButtonState.Pressed, delegate { b = true; }, null);
491        Keyboard.Listen(Key.Home, ButtonState.Pressed, delegate { c = true; }, null);
492        Keyboard.Listen(Key.F4, ButtonState.Pressed, delegate { d = true; }, null);
493        Keyboard.Listen(Key.End, ButtonState.Pressed, delegate { e = true; }, null);
494   
495   
496        Keyboard.Listen(Key.Escape, ButtonState.Pressed, OpenMenu, null);
497        //Mouse.ListenMovement(0.01, Tahtaa, null);
498    }
499    void move (Vector pos)
500    {
501        if (a && b && c && d && e)
502        {
503            player.Position += pos;
504        }
505    }
506    void RotatePlayer()
507    {
508   
509    }
510    void Tahtaa()
511    {
512        Vector suunta = (Mouse.PositionOnWorld - player.AbsolutePosition).Normalize();
513        player.Angle = suunta.Angle + Angle.FromDegrees(-90);
514    }
515    void AddHealthBar()
516    {
517        healthCounter = new DoubleMeter(hp);
518        healthCounter.MaxValue = hp;
519        healthCounter.LowerLimit += HealthLow;
520   
521        ProgressBar healthBar = new ProgressBar(300, 40);
522        healthBar.X = -70;
523        healthBar.Y = 300;
524        healthBar.Image = LoadImage("left_hbar");
525        healthBar.BarImage = LoadImage("left_hbar_full");
526        healthBar.BindTo(healthCounter);
527        healthBar.FlipImage();
528        healthBar.Angle = Angle.RightAngle;
529        Add(healthBar, -1);
530   
531    }
532   
533    void HealthLow()
534    {
535        player.Destroy();
536        playerGun.Destroy();
537        playerGun2.Destroy();
538   
539        HighScoreWindow topIkkuna = new HighScoreWindow(Screen.Width, Screen.Height,"Scores", "Your Score: %p! Enter name:",topLista, scoreCounter.Value);
540        topIkkuna.Closed += TallennaPisteet;
541        Add(topIkkuna);
542    }
543    void OpenMenu()
544    {
545        Pause();
546        black = new PhysicsObject(4096, 2160);
547        black.Color = Color.Black;
548        Add(black, 2);
549        menu = new MultiSelectWindow("","Close", "Main Menu", "Quit Game");
550        menu.ItemSelected += MenuBtnPressed;
551        menu.Color = Color.Transparent;
552        menu.Font = f;
553        menu.SelectionColor = Color.Magenta;
554        Add(menu);
555    }
556   
557    void MenuBtnPressed(int selection)
558    {
559        switch (selection)
560        {
561            case 0:
562                Pause();
563                black.Destroy();
564                break;
565            case 1:
566                MainMenuS();
567                break;
568            case 2:
569                MainMenuS2();
570                break;
571        }
572    }
573    void MainMenuS()
574    {
575        HighScoreWindow topIkkuna = new HighScoreWindow(Screen.Width, Screen.Height, "Scores", "Your Score: %p! Enter name:", topLista, scoreCounter.Value);
576        topIkkuna.Closed += TallennaPisteet;
577        Add(topIkkuna);
578        ClearAll();
579        Start();
580    }
581    void MainMenuS2()
582    {
583        HighScoreWindow topIkkuna = new HighScoreWindow(Screen.Width, Screen.Height, "Scores", "Your Score: %p! Enter name:", topLista, scoreCounter.Value);
584        topIkkuna.Closed += TallennaPisteet;
585        Add(topIkkuna);
586        ConfirmExit();
587    }
588    void AddBorders()
589    {
590        leftB = PhysicsObject.CreateStaticObject(20, 1200);
591        leftB.X = -800;
592        leftB.Color = Color.White;
593        leftB.CanRotate = false;
594        leftB.Restitution = 0;
595        Add(leftB);
596   
597        rightB = PhysicsObject.CreateStaticObject(20, 1200);
598        rightB.X = -100;
599        rightB.Color = Color.White;
600        rightB.CanRotate = false;
601        rightB.Restitution = 0;
602        Add(rightB);
603   
604        bottomB = PhysicsObject.CreateStaticObject(700, 20);
605        bottomB.Y = -530;
606        bottomB.X = -450;
607        bottomB.Color = Color.White;
608        bottomB.CanRotate = false;
609        bottomB.Restitution = 0;
610        Add(bottomB);
611   
612        topB = PhysicsObject.CreateStaticObject(700, 20);
613        topB.Y = 530;
614        topB.X = -450;
615        topB.Color = Color.White;
616        topB.CanRotate = false;
617        topB.Restitution = 0;
618        Add(topB);
619    }
620   
621    void Shoot(AssaultRifle gun)
622    {
623        PhysicsObject ammus = gun.Shoot();
624        //ammo.Text = "Ammo: " + playerGun.Ammo.Value.ToString();
625   
626    }
627    void AddLabels()
628    {
629        health = new Label("HP: " + hp);
630        health.X = 200;
631        health.TextColor = Color.White;
632        health.Y = 350;
633        health.Font = f;
634        Add(health, -1);
635   
636        enemyHP = new Label("UFO HP: " + ufohp);
637        enemyHP.X = 200;
638        enemyHP.TextColor = Color.White;
639        enemyHP.Y = 300;
640        enemyHP.Font = f;
641        Add(enemyHP, -1);
642   
643        roundtxt = new Label("Round " + round);
644        roundtxt.X = 200;
645        roundtxt.TextColor = Color.White;
646        roundtxt.Y = 200;
647        roundtxt.Font = f;
648        Add(roundtxt, -1);
649   
650        scoreCounter = new IntMeter(0);
651   
652        scorelabel = new Label();
653        scorelabel.X = 200;
654        scorelabel.Y = 450;
655        scorelabel.Font = f;
656        scorelabel.TextColor = Color.White;
657   
658   
659        scorelabel.BindTo(scoreCounter);
660        Add(scorelabel, -1);
661    }
662    int i = 0;
663   
664    void AmmoShot(PhysicsObject ammus, PhysicsObject target)
665    {
666        if (target.Tag.ToString() == "ufo")
667        {
668            ammus.Destroy();
669            ufohp -= 1;
670            enemyHP.Text = "UFO HP: " + ufohp;
671            //scoreCounter.Value += 1;
672            if (ufohp <= 0)
673            {
674                for (int i = 0; i < 5; i++)
675                {
676                    AddCoin(player.Position);
677                }
678                target.Destroy();
679                AddEnemies();
680                round += 1;
681                roundtxt.Text = "Round " + round;
682                ufohp = 100 + i;
683                i += 10;
684                scoreCounter.Value += 20;
685   
686                if (round >= 20 && round < 40)
687                {
688                    Level.Background.Image = LoadImage("level1bg");
689                }
690                else if (round >= 40 && round < 60)
691                {
692                    Level.Background.Image = LoadImage("round4");
693                }
694                else if (round >= 60 && round < 80)
695                {
696                    Level.Background.Image = LoadImage("level2bg");
697                }
698                else if (round >= 80 && round < 100)
699                {
700                    Level.Background.Image = LoadImage("round4");
701                }
702            }
703           
704        }
705        else if (target.Tag.ToString() == "MiniUfo")
706        {
707            Explosion rajahdys = new Explosion(50);
708            rajahdys.Position = target.Position;
709            scoreCounter.Value += 10;
710            rajahdys.Sound = LoadSoundEffect("expl");
711            Add(rajahdys);
712            target.Destroy();
713        }
714        else if (target.Tag.ToString() == "n")
715        {
716            target.Destroy();
717            PlaySound("coin2");
718            scoreCounter.Value += 1000000;
719        }
720        else if (target != tausta)
721        {
722            ammus.Destroy();
723        }
724        if (scoreCounter.Value >= 2000000)
725        {
726            ClearAll();
727            ShowCredits();
728        }
729        if (!MediaPlayer.IsPlaying)
730        {
731            MediaPlayer.Play("Dark Alley");
732        }
733    }
734    void AddCoin(Vector pos)
735    {
736        if (pos.X <= leftB.X || pos.X >= rightB.X || pos.Y <= bottomB.Y || pos.Y >= topB.Y)
737        {
738            return;
739        }
740        coin = new PhysicsObject(15, 15);
741        coin.Image = LoadImage("coin");
742        coin.Position = pos + new Vector(RandomGen.NextInt(-100, 100), RandomGen.NextInt(-100, 100));
743        coin.IgnoresExplosions = true;
744        coin.Tag = "coin";
745        Add(coin);
746        FollowerBrain f = new FollowerBrain(player);
747        f.Active = true;
748        f.Speed = 300;
749        coin.Brain = f;
750    }
751    void CoinHit(PhysicsObject pelaaja, PhysicsObject target)
752    {
753        blip.Play();
754        scoreCounter.Value += 5;
755        target.Destroy();
756        coins += 5;
757    }
758    void AmmoShot2(PhysicsObject ammus, PhysicsObject target)
759    {
760        if (target.Tag.ToString() == "player")
761        {
762   
763            hp -= 2;
764   
765            health.Text = "HP: " + hp.ToString();
766            if (hp <= 0)
767            {
768                player.Destroy();
769                HighScoreWindow topIkkuna = new HighScoreWindow(Screen.Width, Screen.Height, "Scores", "Your Score: %p! Enter name:", topLista, scoreCounter.Value);
770                topIkkuna.Closed += TallennaPisteet;
771                Add(topIkkuna);
772            }
773        }
774    }
775   
776    void MovePlayer(Vector direc)
777    {
778        player.Push(direc);
779    }
780   
781    void BestScores()
782    {
783        HighScoreWindow topIkkuna = new HighScoreWindow("Scores", topLista);
784        topIkkuna.Closed += TallennaPisteet;
785        Add(topIkkuna);
786    }
787    void TallennaPisteet(Window sender)
788    {
789        DataStorage.Save<ScoreList>(topLista, "raqyrff_fpberf.xml");
790        DataStorage.Save<int>(coins, "Endless_Shooter_load_data.xml");
791        ClearAll();
792        Start();
793    }
794    void Blip()
795    {
796        //blip.Play();
797    }
798   
799    void AddTimers()
800    {
801   
802        Timer t = new Timer();
803        t.Interval = 0.01;
804        t.Timeout += Tahtaa;
805        t.Start();
806   
807        Timer a = new Timer();
808        a.Interval = spawnTime;
809        a.Timeout += delegate { AddMiniUfos(ufo.Position + new Vector (RandomGen.SelectOne(-100, 100, 0), RandomGen.SelectOne(-100, 100, 0))); };
810        a.Start();
811   
812        Timer checkPos = new Timer();
813        checkPos.Interval = 0.2;
814        checkPos.Timeout += CheckPosition;
815        checkPos.Start();
816   
817        Timer valonliikuttaja = new Timer();
818        valonliikuttaja.Interval = 0.05;
819        valonliikuttaja.Timeout += delegate { valo.Position = player.Position - player.Angle.GetVector() * 100; };
820        //valonliikuttaja.Start();
821    }
822    void CheckPosition()
823    {
824   
825    }
826}
Note: See TracBrowser for help on using the repository browser.