source: 2010/24/anlakane/Muistipeli/Kortti.cs @ 1033

Revision 1033, 4.5 KB checked in by anlakane, 11 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Jypeli;
5
6namespace Muistipeli
7{
8    public class Kortti : GameObject
9    {
10        protected Vector alkuperainenKoko;
11        private enum Liikkeentila { Pysahtynyt, Pienentyy, Suurentuu }
12        Liikkeentila liikkeenTila;
13        PuoliEsilla puoliEsilla;
14        private Image kuvapuoliTekstuuri;
15        public Image KuvaPuoliTekstuuri
16        {
17            set { kuvapuoliTekstuuri = value; }
18            get { return kuvapuoliTekstuuri; }
19        }
20        private Image takapuoliTekstuuri;
21       
22        public enum PuoliEsilla { Kuva, Taka }
23
24        private bool poistettuPelista;
25        public bool PoistettuPelista
26        {
27            get { return poistettuPelista; }
28            set { poistettuPelista = value; }
29        }
30
31        private int tunniste;
32
33        /// <summary>
34        /// Kortin tunnus, jolla parit tunnistetaan pariksi.
35        /// </summary>
36        public int Tunniste
37        {
38            get { return tunniste; }
39        }
40
41
42        public Kortti(double leveys, double korkeus, bool kuvapuoliEsilla, Image kuvapuoliTekstuuri, Image takapuoliTekstuuri, int tunnus)
43            : base(leveys, korkeus, Shapes.Rectangle)
44        {
45            this.kuvapuoliTekstuuri = kuvapuoliTekstuuri;
46            this.takapuoliTekstuuri = takapuoliTekstuuri;
47            this.liikkeenTila = Liikkeentila.Pysahtynyt;
48            this.poistettuPelista = false;
49
50            if (kuvapuoliEsilla)
51                AsetaPuoli(PuoliEsilla.Kuva);
52            else
53                AsetaPuoli(PuoliEsilla.Taka);
54
55            IsUpdated = true;
56            this.alkuperainenKoko = new Vector(leveys, korkeus);
57            this.tunniste = tunnus;
58        }
59
60        public Kortti(double leveys, double korkeus, bool kuvapuoliEsilla, Image takapuoliTekstuuri, int tunnus)
61            : base(leveys, korkeus, Shapes.Rectangle)
62        {
63            this.kuvapuoliTekstuuri = Image.FromColor((int)Math.Floor(leveys), (int)Math.Floor(korkeus), Color.White);
64            this.takapuoliTekstuuri = takapuoliTekstuuri;
65            this.liikkeenTila = Liikkeentila.Pysahtynyt;
66            this.poistettuPelista = false;
67
68            if (kuvapuoliEsilla)
69                AsetaPuoli(PuoliEsilla.Kuva);
70            else
71                AsetaPuoli(PuoliEsilla.Taka);
72
73            IsUpdated = true;
74            this.alkuperainenKoko = new Vector(leveys, korkeus);
75            this.tunniste = tunnus;
76        }
77
78        public void Kaanna()
79        {
80            liikkeenTila = Liikkeentila.Pienentyy;
81        }
82
83
84        public PuoliEsilla KumpiPuoliEsilla()
85        {
86            return this.puoliEsilla;
87        }
88
89        private void AsetaPuoli(PuoliEsilla puoli)
90        {
91            this.puoliEsilla = puoli;
92            switch (puoli)
93            {
94                case PuoliEsilla.Kuva:
95                    this.Image = kuvapuoliTekstuuri;
96                    break;
97                case PuoliEsilla.Taka:
98                    this.Image = takapuoliTekstuuri;
99                    break;
100            }
101        }
102
103        /// <summary>
104        /// Allows the game component to update itself.
105        /// </summary>
106        /// <param name="gameTime">Provides a snapshot of timing values.</param>
107        public override void Update(Time time)
108        {
109            if (liikkeenTila == Liikkeentila.Pienentyy)
110            {
111                if (this.Width > 3)
112                {
113                    this.Size = new Vector(this.Width - 3, this.Height);
114                }
115                if (this.Width <= 3)
116                {
117
118                    if (puoliEsilla == PuoliEsilla.Kuva)
119                    {
120                        AsetaPuoli(PuoliEsilla.Taka);
121                    }
122                    else
123                    {
124                        AsetaPuoli(PuoliEsilla.Kuva);
125                    }
126                    liikkeenTila = Liikkeentila.Suurentuu;
127                }
128            }
129
130            if (liikkeenTila == Liikkeentila.Suurentuu)
131            {
132                if (this.Width < this.alkuperainenKoko.X)
133                {
134                    this.Size = new Vector(this.Width + 3, this.Height);
135                }
136                if (this.Width >= this.alkuperainenKoko.X)
137                {
138                    liikkeenTila = Liikkeentila.Pysahtynyt;
139                }
140
141            }
142
143            base.Update(time);
144        }
145    }
146}
Note: See TracBrowser for help on using the repository browser.