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

Revision 1030, 4.7 KB checked in by anlakane, 11 years ago (diff)

Uusia kuvia. Kuvat (nyt elaimet-kansio) pitää olla saman kansion alla kuin mistä peliä ajetaan.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Jypeli;
5//using Microsoft.Xna.Framework;
6//using 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 leveys, double korkeus, bool kuvapuoliEsilla, Image kuvapuoliTekstuuri, Image takapuoliTekstuuri, int tunnus)
45            : base(leveys, korkeus, Shapes.Rectangle)
46        {
47            this.kuvapuoliTekstuuri = kuvapuoliTekstuuri;
48            this.takapuoliTekstuuri = takapuoliTekstuuri;
49            //this.Image = kuvapuoliTekstuuri; //Tarvitaanko tätä?
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(leveys, korkeus);
60            this.tunniste = tunnus;
61        }
62
63        public Kortti(double leveys, double korkeus, bool kuvapuoliEsilla, Image takapuoliTekstuuri, int tunnus)
64            : base(leveys, korkeus, Shapes.Rectangle)
65        {
66            this.kuvapuoliTekstuuri = Image.FromColor((int)Math.Floor(leveys), (int)Math.Floor(korkeus), Color.White);
67            this.takapuoliTekstuuri = takapuoliTekstuuri;
68            //this.Image = kuvapuoliTekstuuri;
69            this.liikkeenTila = Liikkeentila.Pysahtynyt;
70            this.poistettuPelista = false;
71
72            if (kuvapuoliEsilla)
73                AsetaPuoli(PuoliEsilla.Kuva);
74            else
75                AsetaPuoli(PuoliEsilla.Taka);
76
77            IsUpdated = true;
78            this.alkuperainenKoko = new Vector(leveys, korkeus);
79            this.tunniste = tunnus;
80        }
81
82        public void Kaanna()
83        {
84            liikkeenTila = Liikkeentila.Pienentyy;
85        }
86
87
88        public PuoliEsilla KumpiPuoliEsilla()
89        {
90            return this.puoliEsilla;
91        }
92
93        private void AsetaPuoli(PuoliEsilla puoli)
94        {
95            this.puoliEsilla = puoli;
96            switch (puoli)
97            {
98                case PuoliEsilla.Kuva:
99                    this.Image = kuvapuoliTekstuuri;
100                    break;
101                case PuoliEsilla.Taka:
102                    this.Image = takapuoliTekstuuri;
103                    break;
104            }
105        }
106
107        /// <summary>
108        /// Allows the game component to update itself.
109        /// </summary>
110        /// <param name="gameTime">Provides a snapshot of timing values.</param>
111        public override void Update(Time time)
112        {
113            if (liikkeenTila == Liikkeentila.Pienentyy)
114            {
115                if (this.Width > 3)
116                {
117                    this.Size = new Vector(this.Width - 3, this.Height);
118                }
119                if (this.Width <= 3)
120                {
121
122                    if (puoliEsilla == PuoliEsilla.Kuva)
123                    {
124                        AsetaPuoli(PuoliEsilla.Taka);
125                    }
126                    else
127                    {
128                        AsetaPuoli(PuoliEsilla.Kuva);
129                    }
130                    liikkeenTila = Liikkeentila.Suurentuu;
131                }
132            }
133
134            if (liikkeenTila == Liikkeentila.Suurentuu)
135            {
136                if (this.Width < this.alkuperainenKoko.X)
137                {
138                    this.Size = new Vector(this.Width + 3, this.Height);
139                }
140                if (this.Width >= this.alkuperainenKoko.X)
141                {
142                    liikkeenTila = Liikkeentila.Pysahtynyt;
143                }
144
145            }
146
147            base.Update(time);
148        }
149    }
150}
Note: See TracBrowser for help on using the repository browser.