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

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