Changeset 9


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

Refactored some of the Match minigame

Location:
Code/oMaE/oMaE
Files:
5 edited

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);
Note: See TracChangeset for help on using the changeset viewer.