Show
Ignore:
Timestamp:
01/26/2012 09:05:43 AM (2 years ago)
Author:
acarter
Message:

Refactoring Game Objects so the can do more stuff themselves

Files:
1 modified

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    }