Ignore:
Timestamp:
01/26/12 09:05:43 (3 years ago)
Author:
acarter
Message:

Refactoring Game Objects so the can do more stuff themselves

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Code/oMaE/oMaE/MiniGames/Match.cs

    r5 r7  
    1010using Microsoft.Xna.Framework.Input;
    1111using Microsoft.Xna.Framework.Media;
     12using oMaE.Widgets;
    1213
    1314namespace oMaE.MiniGames
    1415{
    15     class Match
     16    class Match : GameObject
    1617    {
    17         SpriteFont font;
     18        public static SpriteFont font;
    1819        // should be refactored
    1920        Texture2D[] RadioButton = new Texture2D[2];
     
    2122        int[] offset = new int[]{22, 17, 0, 25, 38};
    2223        String[] energies = new String[] { "Kinetic Energy", "Electric Energy", "Chemical Energy", "Sound Energy", "Light Energy" };
    23         public Match(ContentManager Content)
     24        RadioButton[][] choices = new RadioButton[][]{new RadioButton[5], new RadioButton[5]};
     25        public Match()
    2426        {
    25             this.font = Content.Load<SpriteFont>("Fonts/Arial");
    26             this.RadioButton[0] = Content.Load<Texture2D>("Interface/RadioButton_Unclicked");
     27            for (int i = 0; i < 2; ++i)
     28                for (int j = 0; j < 5; ++j)
     29                    choices[i][j] = new RadioButton(new Rectangle(i == 0 ? 165 : 590, 40 * j + 106, 10, 10), choices[1 - i]);
    2730        }
    28         public void Draw(SpriteBatch sb)
     31        public override bool Initialize()
    2932        {
     33            return base.Initialize();
     34        }
     35        public override bool LoadContent(ContentManager Content)
     36        {
     37            return base.LoadContent(Content);
     38        }
     39        public override void Update(GameState gamestate)
     40        {
     41            base.Update(gamestate);
     42            bool set = false;
     43            int x = -1, y = -1;
     44            for (int i = 0; i < 2; ++i)
     45            {
     46                for (int j = 0; j < 5; ++j)
     47                {
     48                    if (choices[i][j].clicked && set)
     49                    {
     50                        if (i == x)
     51                        {
     52                            choices[i][j].clicked = false;
     53                        }
     54                        else
     55                        {
     56                            choices[x][y].isMatched[j] = !choices[x][y].isMatched[j];
     57                            choices[i][j].isMatched[y] = !choices[i][j].isMatched[y];
     58                            choices[x][y].clicked = choices[i][j].clicked = false;
     59                            set = false;
     60                        }
     61                    }
     62                    choices[i][j].Update(gamestate);
     63                    if (choices[i][j].clicked && set)
     64                    {
     65                        if (i == x)
     66                        {
     67                            choices[x][y].clicked = false;
     68                            x = i;
     69                            y = j;
     70                        }
     71                        else
     72                        {
     73                            choices[x][y].isMatched[j] = !choices[x][y].isMatched[j];
     74                            choices[i][j].isMatched[y] = !choices[i][j].isMatched[y];
     75                            choices[x][y].clicked = choices[i][j].clicked = false;
     76                            set = false;
     77                        }
     78                    }
     79                    else if (choices[i][j].clicked)
     80                    {
     81                        set = true;
     82                        x = i;
     83                        y = j;
     84                    }
     85                }
     86            }
     87        }
     88        public override void Draw(SpriteBatch sb, GameState gamestate)
     89        {
     90            base.Draw(sb, gamestate);
    3091            Color fontColor = Color.Black;
    3192            sb.Begin();
     
    3394            {
    3495                sb.DrawString(font, energies[i], new Vector2(20 + offset[i], 40 * i + 100), fontColor);
    35                 sb.Draw(RadioButton[0], new Rectangle(165, 40 * i + 106, 10, 10), Color.White);
    36                 sb.Draw(RadioButton[0], new Rectangle(590, 40 * i + 106, 10, 10), Color.White);
    3796                sb.DrawString(font, energies[i], new Vector2(600, 40 * i + 100), fontColor);
    3897            }
    3998            sb.End();
     99            for (int i = 0; i < 2; ++i)
     100                for (int j = 0; j < 5; ++j)
     101                    choices[i][j].Draw(sb, gamestate);
     102
    40103        }
    41104    }
Note: See TracChangeset for help on using the changeset viewer.