source: 2010/23/hniemi/ShootEmUp/ShootEmUp/Muodostelma.cs @ 993

Revision 993, 2.6 KB checked in by hniemi, 12 years ago (diff)

Luotu uus abstraktiluokka helpottamaan aseiden tekemistä
Aseiden vaihtoa myös muokattu hieman ja lisätty pyhä purkkakorjaus.

Aiemmasta poisjääneet seinät myös lisätty mukaan.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6using System.Linq;
7using System.Text;
8
9namespace ShootEmUp
10{
11    class Muodostelma
12    {
13        private List<Alus> alukset;
14        private Vector lahtopiste;
15        private Timer kellottaja;
16        private int shipInTurn;
17        private double movingSpeed = 200;
18
19        public double MovingSpeed
20        {
21            get { return movingSpeed; }
22            set
23            {
24                movingSpeed = value;
25                foreach (PhysicsObject alus in this.alukset)
26                {
27                    ((PathFollowerBrain)alus.Brain).Speed = movingSpeed;
28                }
29            }
30        }
31
32        /// <summary>
33        /// Tekee muodostelman.
34        ///
35        /// Reitin ensimmäinen vektori on aloituspaikka.
36        /// Viimeisen vektorin pitää päätyä ulos pelialueelta.
37        /// Ajastimen on oltava lisättynä peliin.
38        /// </summary>
39        /// <param name="alukset">Lista aluksista</param>
40        /// <param name="reitti">Lista vektoreista, jotka muodostaa reitin.</param>
41        /// <param name="ajastin">Ajastin, jotka käytetään</param>
42        public Muodostelma(List<Alus> alukset, IList<Vector> reitti, Timer ajastin)
43        {
44            //Asettaa aluslistan
45            if (alukset != null){this.alukset = alukset;}
46            else { this.alukset = new List<Alus>(); }
47            if (reitti != null && reitti.Count > 0) lahtopiste = new Vector(0, +900);//reitti[0];
48
49            this.kellottaja = ajastin;
50
51            //Lisää jokaiselle alukselle omat aivot
52            foreach (PhysicsObject alus in this.alukset)
53            {
54                PathFollowerBrain aivot = new PathFollowerBrain();
55                alus.Brain = aivot;
56                alus.Brain.Active = false;
57                aivot.Path = reitti;
58                aivot.Speed = movingSpeed;
59                //((PathFollowerBrain)alus.Brain).Add(reitti.ToArray());
60                //((PathFollowerBrain)alus.Brain).MovingSpeed = movingSpeed;
61                alus.Position = lahtopiste;
62            }
63        }
64
65        /// <summary>
66        /// Lähettää muodostelman liikkeelle
67        /// </summary>
68        public void Start()
69        {
70            kellottaja.Start(alukset.Count);
71
72            kellottaja.Trigger += SendShip;
73            kellottaja.Start();
74        }
75
76        private void SendShip(Timer sender)
77        {
78            alukset[shipInTurn].Brain.Active = true;
79            shipInTurn++;
80        }
81
82    }
83}
Note: See TracBrowser for help on using the repository browser.