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

Revision 923, 3.4 KB checked in by anlakane, 11 years ago (diff)

Kortteja voi kääntää, enintään kaksi kerrallaan.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Jypeli;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Graphics;
7
8namespace Muistipeli
9{
10    public class Kortti : GameObject
11    {
12        bool onkoKaantynyt;
13        protected Vector alkuperainenKoko;
14        protected enum Liikkeentila { Pysahtynyt, Pienentyy, Suurentuu }
15        Liikkeentila liikkeenTila;
16        PuoliEsilla puoliEsilla;
17        private Image kuvapuoliTekstuuri;
18        private Image takapuoliTekstuuri;
19
20        private bool kaantyminenAlkanut = false;
21        public enum PuoliEsilla { Kuva, Taka }
22        public Jypeli.Color kuvapuoliVari;
23        public Jypeli.Color takaVari;
24        public bool onkoPoistettuPelista;
25
26        public Kortti(double width, double height, bool kuvapuoliEsilla, Image kuvapuoliTekstuuri, Image takapuoliTekstuuri)
27            : base(width, height, Shapes.Rectangle)
28        {
29            this.kuvapuoliTekstuuri = kuvapuoliTekstuuri;
30            this.takapuoliTekstuuri = takapuoliTekstuuri;
31            this.Image = kuvapuoliTekstuuri;
32            this.onkoPoistettuPelista = false;
33
34            if (kuvapuoliEsilla)
35                AsetaPuoli(PuoliEsilla.Kuva);
36            else
37                AsetaPuoli(PuoliEsilla.Taka);
38
39            IsUpdated = true;
40            this.alkuperainenKoko = new Vector(width, height);
41        }
42
43        public void Kaanna()
44        {
45            kaantyminenAlkanut = true;
46            liikkeenTila = Liikkeentila.Pienentyy;
47        }
48
49        public PuoliEsilla KumpiPuoliEsilla()
50        {
51            return this.puoliEsilla;
52        }
53
54        private void AsetaPuoli(PuoliEsilla puoli)
55        {
56            this.puoliEsilla = puoli;
57            switch (puoli)
58            {
59                case PuoliEsilla.Kuva:
60                    this.Image = kuvapuoliTekstuuri;
61                    break;
62                case PuoliEsilla.Taka:
63                    this.Image = takapuoliTekstuuri;
64                    break;
65            }
66        }
67
68        /// <summary>
69        /// Allows the game component to update itself.
70        /// </summary>
71        /// <param name="gameTime">Provides a snapshot of timing values.</param>
72        public override void Update(Time time)
73        {
74            if (liikkeenTila == Liikkeentila.Pienentyy)
75            {
76                if (this.Width > 3)
77                {
78                    this.Size = new Vector(this.Width - 3, this.Height);
79                }
80                if (this.Width <= 3)
81                {
82
83                    if (puoliEsilla == PuoliEsilla.Kuva)
84                    {
85                        AsetaPuoli(PuoliEsilla.Taka);
86                    }
87                    else
88                    {
89                        AsetaPuoli(PuoliEsilla.Kuva);
90                    }
91                    liikkeenTila = Liikkeentila.Suurentuu;
92                }
93            }
94
95            if (liikkeenTila == Liikkeentila.Suurentuu)
96            {
97                if (this.Width < this.alkuperainenKoko.X)
98                {
99                    this.Size = new Vector(this.Width + 3, this.Height);
100                }
101                if (this.Width >= this.alkuperainenKoko.X)
102                {
103                    liikkeenTila = Liikkeentila.Pysahtynyt;
104                }
105
106            }
107
108
109            // TODO: Add your update code here
110            base.Update(time);
111        }
112    }
113}
Note: See TracBrowser for help on using the repository browser.