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

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