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

Revision 719, 2.4 KB checked in by hniemi, 10 years ago (diff)

Shootemupin runko lisätty.

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        List<Alus> alukset;
14        Vector lahtopiste;
15        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                    ((WandererBrain)alus.Brain).MovingSpeed = movingSpeed;
28                }
29
30            }
31        }
32
33        /// <summary>
34        /// Tekee muodostelman.
35        ///
36        /// Reitin ensimmäinen vektori on aloituspaikka.
37        /// Viimeisen vektorin pitää päätyä ulos pelialueelta.
38        /// Ajastimen on oltava lisättynä peliin.
39        /// </summary>
40        /// <param name="alukset">Lista aluksista</param>
41        /// <param name="reitti">Lista vektoreista, jotka muodostaa reitin.</param>
42        /// <param name="ajastin">Ajastin, jotka käytetään</param>
43        public Muodostelma(List<Alus> alukset, List<Vector> reitti, Timer ajastin)
44        {
45            //Asettaa aluslistan
46            if (alukset != null){this.alukset = alukset;}
47            else { this.alukset = new List<Alus>(); }
48            if (reitti != null && reitti.Count > 0) lahtopiste = reitti[0];
49
50            this.kellottaja = ajastin;
51
52            //Lisää jokaiselle alukselle omat aivot
53            foreach (PhysicsObject alus in this.alukset)
54            {
55                alus.Brain = new WandererBrain();
56                alus.Brain.Active = false;
57                ((WandererBrain)alus.Brain).Add(reitti.ToArray());
58                ((WandererBrain)alus.Brain).MovingSpeed = movingSpeed;
59                alus.Position = lahtopiste;
60            }
61        }
62
63        /// <summary>
64        /// Lähettää muodostelman liikkeelle
65        /// </summary>
66        public void Start()
67        {
68            kellottaja.LimitTimes(alukset.Count);
69
70            kellottaja.Trigger += SendShip;
71            kellottaja.Start();
72        }
73
74        private void SendShip(Timer sender)
75        {
76            alukset[shipInTurn].Brain.Active = true;
77            shipInTurn++;
78        }
79
80    }
81}
Note: See TracBrowser for help on using the repository browser.