Changeset 9

Show
Ignore:
Timestamp:
01/26/2012 01:03:20 PM (2 years ago)
Author:
acarter
Message:

Refactored some of the Match minigame

Location:
Code/oMaE/oMaE
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • Code/oMaE/oMaE/Game1.cs

    r7 r9  
    3939            // TODO: Add your initialization logic here 
    4040            this.IsMouseVisible = true; 
     41            match.Initialize(); 
    4142            base.Initialize(); 
    4243        } 
     
    5051            // Create a new SpriteBatch, which can be used to draw textures. 
    5152            spriteBatch = new SpriteBatch(GraphicsDevice); 
    52             Match.font = Content.Load<SpriteFont>("Fonts/Arial"); 
    53             RadioButton.Clicked = Content.Load<Texture2D>("Interface/RadioButton_Clicked"); 
    54             RadioButton.Unclicked = Content.Load<Texture2D>("Interface/RadioButton_Unclicked"); 
    55             RadioButton.Pixel = Content.Load<Texture2D>("pixel"); 
     53            match.LoadContent(Content); 
    5654            // TODO: use this.Content to load your game content here 
    5755        } 
  • Code/oMaE/oMaE/GameObject.cs

    r8 r9  
    1818        protected bool Active = false, Updated = false; 
    1919        protected bool Initialized = false, Loaded = false; 
    20  
     20        protected List<GameObject> children = new List<GameObject>(); 
    2121        public virtual IEnumerable<GameObject> Children 
    2222        { 
    2323            get  
    2424            {  
    25                 return new List<GameObject>();  
     25                return children;  
    2626            }  
    2727        } 
     
    5858        { 
    5959            foreach (GameObject child in Children) 
    60                 child.Update(gameState); 
     60                child.Draw(spriteBatch, gameState); 
    6161        } 
    6262    } 
  • Code/oMaE/oMaE/MiniGames/Match.cs

    r7 r9  
    1919        // should be refactored 
    2020        Texture2D[] RadioButton = new Texture2D[2]; 
    21  
     21        RadioGroup radioGroup; 
    2222        int[] offset = new int[]{22, 17, 0, 25, 38}; 
    2323        String[] energies = new String[] { "Kinetic Energy", "Electric Energy", "Chemical Energy", "Sound Energy", "Light Energy" }; 
    24         RadioButton[][] choices = new RadioButton[][]{new RadioButton[5], new RadioButton[5]}; 
    2524        public Match() 
    2625        { 
    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]); 
    3026        } 
    3127        public override bool Initialize() 
    3228        { 
     29            radioGroup = new RadioGroup(); 
     30            children.Add(radioGroup); 
     31            for (int i = 0; i < 2; ++i) 
     32                for (int j = 0; j < 5; ++j) 
     33                    radioGroup.addRadioButton(new Rectangle(i == 0 ? 165 : 590, 40 * j + 106, 10, 10), energies[i], i == 0 ? TextLocation.LEFT : TextLocation.RIGHT); 
    3334            return base.Initialize(); 
    3435        } 
    3536        public override bool LoadContent(ContentManager Content) 
    3637        { 
     38            font = Content.Load<SpriteFont>("Fonts/arial"); 
    3739            return base.LoadContent(Content); 
    3840        } 
     
    4042        { 
    4143            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             } 
    8744        } 
    8845        public override void Draw(SpriteBatch sb, GameState gamestate) 
    8946        { 
    90             base.Draw(sb, gamestate); 
    9147            Color fontColor = Color.Black; 
    9248            sb.Begin(); 
     
    9753            } 
    9854            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  
     55            base.Draw(sb, gamestate); 
    10356        } 
    10457    } 
  • Code/oMaE/oMaE/Widgets/RadioButton.cs

    r8 r9  
    1515    class RadioButton : GameObject 
    1616    { 
    17         public bool clicked = false; 
    18         public static Texture2D Unclicked, Clicked, Pixel; 
    19         Rectangle location; 
    20         public Vector2 Center { get { return new Vector2(location.Center.X, location.Center.Y); } } 
    21         public RadioButton[] matches; 
    22         public bool[] isMatched; 
    23         public RadioButton(Rectangle location, RadioButton[] matches) 
     17        private RadioGroup Parent; 
     18        private Rectangle Location; 
     19        private String text; 
     20 
     21        public Vector2 Center { get { return new Vector2(Location.Center.X, Location.Center.Y); } } 
     22 
     23        public static Texture2D UnclickedImg, ClickedImg, Pixel; 
     24         
     25        public RadioButton(Rectangle Location, String text, TextLocation textLocation, RadioGroup Parent) 
    2426        { 
    25             this.location = location; 
    26             this.matches = matches; 
    27             isMatched = new bool[matches.Length]; 
    28             for (int i = 0; i < matches.Length; ++i) 
    29                 isMatched[i] = false; 
    30         } 
    31         public RadioButton(Rectangle location, String text, TextLocation textLocation) 
    32         { 
     27            this.Location = Location; 
     28            this.text = text; 
     29            this.Parent = Parent; 
    3330        } 
    3431        public override bool LoadContent(ContentManager Content) 
    3532        { 
    36             Unclicked = Content.Load<Texture2D>("Interface/RadioButton_Unlicked"); 
    37             Clicked = Content.Load<Texture2D>("Interface/RadioButton_Clicked"); 
     33            UnclickedImg = Content.Load<Texture2D>("Interface/RadioButton_Unclicked"); 
     34            ClickedImg = Content.Load<Texture2D>("Interface/RadioButton_Clicked"); 
    3835            return base.LoadContent(Content); 
    3936        } 
    40         public void Update(GameState gamestate) 
     37        public void clear() 
     38        { 
     39            Updated |= Active; 
     40            Active = false; 
     41        } 
     42        public override void Update(GameState gamestate) 
    4143        { 
    4244            if (gamestate.CurrentMouseState.LeftButton == ButtonState.Pressed 
    4345                    && gamestate.LastMouseState.LeftButton == ButtonState.Released 
    44                     && location.Contains(gamestate.CurrentMouseState.X, gamestate.CurrentMouseState.Y)) 
     46                    && Location.Contains(gamestate.CurrentMouseState.X, gamestate.CurrentMouseState.Y)) 
    4547            { 
    46                 clicked = !clicked; 
     48                Active = !Active; 
     49                Updated = true; 
     50                Parent.UpdateComponent(this); 
    4751            } 
     52            else 
     53                Updated = false; 
     54            base.Update(gamestate); 
    4855        } 
    49         public void Draw(SpriteBatch spritebatch, GameState gamestate) 
     56        public override void Draw(SpriteBatch spritebatch, GameState gamestate) 
    5057        { 
    5158            spritebatch.Begin(); 
    52             spritebatch.Draw(clicked ? Clicked : Unclicked, location, Color.White); 
    53             if (clicked) 
    54             { 
    55                 spritebatch.Draw(Pixel, Center, new Rectangle(0,0,1,1), Color.Black, 
    56                                     (float)Math.Atan2(gamestate.MousePos.Y - Center.Y, gamestate.MousePos.X - Center.X), 
    57                                     new Vector2(0, 0), new Vector2((Center - gamestate.MousePos).Length(), 3), SpriteEffects.None, 0); 
    58             } 
    59             for(int i = 0; i < matches.Length; i++) 
    60                 if (isMatched[i]) 
    61                 { 
    62                     spritebatch.Draw(Pixel, Center, new Rectangle(0, 0, 1, 1), Color.Black, 
    63                                         (float)Math.Atan2(matches[i].Center.Y - Center.Y, matches[i].Center.X - Center.X), 
    64                                         new Vector2(0, 0), new Vector2((Center - matches[i].Center).Length(), 3), SpriteEffects.None, 0); 
    65                 } 
     59            spritebatch.Draw(Active ? ClickedImg : UnclickedImg, Location, Color.White); 
    6660            spritebatch.End(); 
    6761        } 
  • Code/oMaE/oMaE/Widgets/RadioGroup.cs

    r8 r9  
    1515    class RadioGroup : GameObject 
    1616    { 
     17        private RadioButton ActiveButton = null; 
    1718        protected List<RadioButton> group = new List<RadioButton>(); 
    1819        public override IEnumerable<GameObject> Children 
     
    2627        public void addRadioButton(Rectangle location, String text = "", TextLocation textLocation = TextLocation.RIGHT) 
    2728        { 
    28             group.Add(new RadioButton(location, text, textLocation)); 
     29            group.Add(new RadioButton(location, text, textLocation, this)); 
    2930        } 
    3031 
    31         public override virtual bool Initialize() 
     32        public override bool Initialize() 
    3233        { 
    3334            return base.Initialize(); 
    3435        } 
    3536 
    36         public override virtual bool LoadContent(ContentManager Content) 
     37        public override bool LoadContent(ContentManager Content) 
    3738        { 
    3839            return base.LoadContent(Content); 
    3940        } 
    40         public virtual void Update(GameState gameState) 
     41        public override void Update(GameState gameState) 
    4142        { 
    4243            base.Update(gameState); 
    4344        } 
    44         public virtual void Draw(SpriteBatch spriteBatch, GameState gameState) 
     45        public void UpdateComponent(RadioButton radioButton) 
     46        { 
     47            if (ActiveButton == radioButton) 
     48                ActiveButton = null; 
     49            if (ActiveButton == null) 
     50                ActiveButton = radioButton; 
     51            else 
     52            { 
     53                ActiveButton.clear(); 
     54                ActiveButton = radioButton; 
     55            } 
     56        } 
     57        public override void Draw(SpriteBatch spriteBatch, GameState gameState) 
    4558        { 
    4659            base.Draw(spriteBatch, gameState);