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

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

Lisätty aloitusmenu ja järkevöitetty rakennetta.

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, +500);
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                alus.Position = lahtopiste;
60            }
61        }
62
63        /// <summary>
64        /// Lähettää muodostelman liikkeelle
65        /// </summary>
66        public void Start()
67        {
68            kellottaja.Start(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.