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

Revision 1028, 3.8 KB checked in by anlakane, 9 years ago (diff)

Melkein valmis peli, pistelaskuri vielä kesken. Kuvat pitää vielä vaihtaa ja kehittää joku järkevämpi automatiikka korttien luomiseen.

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