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

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

Liikkumista parannettu, lisätty ampuminen

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                    ((WandererBrain)alus.Brain).MovingSpeed = 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, List<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 = reitti[0];
48
49            this.kellottaja = ajastin;
50
51            //Lisää jokaiselle alukselle omat aivot
52            foreach (PhysicsObject alus in this.alukset)
53            {
54                alus.Brain = new WandererBrain();
55                alus.Brain.Active = false;
56                ((WandererBrain)alus.Brain).Add(reitti.ToArray());
57                ((WandererBrain)alus.Brain).MovingSpeed = movingSpeed;
58                alus.Position = lahtopiste;
59            }
60        }
61
62        /// <summary>
63        /// Lähettää muodostelman liikkeelle
64        /// </summary>
65        public void Start()
66        {
67            kellottaja.LimitTimes(alukset.Count);
68
69            kellottaja.Trigger += SendShip;
70            kellottaja.Start();
71        }
72
73        private void SendShip(Timer sender)
74        {
75            alukset[shipInTurn].Brain.Active = true;
76            shipInTurn++;
77        }
78
79    }
80}
Note: See TracBrowser for help on using the repository browser.