root/Code/oMaE/oMaE/MiniGames/Match.cs @ 58

Revision 58, 3.9 KB (checked in by acarter, 2 years ago)

Match game always clears

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Audio;
7using Microsoft.Xna.Framework.Content;
8using Microsoft.Xna.Framework.GamerServices;
9using Microsoft.Xna.Framework.Graphics;
10using Microsoft.Xna.Framework.Input;
11using Microsoft.Xna.Framework.Media;
12using oMaE.Widgets;
13
14namespace oMaE.MiniGames
15{
16    using Overworld;
17    /// <summary>
18    /// The energy matching minigame.
19    /// </summary>
20    public class Match : MiniGame
21    {
22        private enum line_t { NONE, NEW, WRONG, CORRECT };
23        RadioGroup radioGroup, matchGroup;
24        int[] offset = new int[]{22, 17, 0, 25, 38};
25        String[] energies = new String[] { "Kinetic Energy", "Electric Energy", "Chemical Energy", "Sound Energy", "Light Energy", "Thermal Energy", "Wind Energy" };
26        Dictionary<Vector4, bool> lines = new Dictionary<Vector4, bool>();
27        /// <summary>
28        /// Initializes the match minigame.
29        /// </summary>
30        public override void Initialize()
31        {
32            radioGroup = new RadioGroup();
33            children.Add(radioGroup);
34            for (int i = 0; i < 2; ++i)
35                for (int j = 0; j < energies.Length; ++j)
36                    radioGroup.addRadioButton(new Vector2(i == 0 ? 170 : 470, 40 * j + 120), energies[j], i == 0 ? TextLocation.LEFT : TextLocation.RIGHT);
37            matchGroup = new RadioGroup();
38            children.Add(matchGroup);
39            children.Add(new MatchImage(matchGroup, new Image2D("Sprites/drum", new Rectangle(270, 70, 100, 100))));
40            children.Add(new MatchImage(matchGroup, new Image2D("Sprites/microphone", new Rectangle(295, 190, 50, 100))));
41            children.Add(new MatchImage(matchGroup, new Image2D("Sprites/speaker", new Rectangle(270, 310, 100, 100))));
42            base.Initialize();
43        }
44        public override void Update()
45        {
46            if (radioGroup.ActiveButton != null && matchGroup.ActiveButton != null)
47            {
48                Vector4 line = new Vector4(radioGroup.ActiveButton.Center.X,
49                                           radioGroup.ActiveButton.Center.Y,
50                                           matchGroup.ActiveButton.Center.X,
51                                           matchGroup.ActiveButton.Center.Y);
52                if (!lines.ContainsKey(line))
53                    lines.Add(line, true);
54                else
55                    lines[line] = !lines[line];
56                radioGroup.ClearActive();
57                matchGroup.ClearActive();
58            }
59            base.Update();
60        }
61        /// <summary>
62        /// Draws the match minigame.
63        /// </summary>
64        /// <param name="screen">The screen to be drawn to.</param>
65        /// <param name="gameState">The current game state.</param>
66        public override void Draw(Screen2D screen, GameState gameState)
67        {
68            if (radioGroup.ActiveButton != null)
69                screen.DrawLine(radioGroup.ActiveButton.Center, gameState.MousePos, Color.Black);
70            if (matchGroup.ActiveButton != null)
71                screen.DrawLine(matchGroup.ActiveButton.Center, gameState.MousePos, Color.Black);
72            foreach (KeyValuePair<Vector4, bool> pair in lines)
73                if (pair.Value)
74                    screen.DrawLine(new Vector2(pair.Key.X, pair.Key.Y), new Vector2(pair.Key.Z, pair.Key.W), Color.White);
75            screen.DrawText("Match the images to the forms of energy that they convert", new Vector2(320, 10), TextHorizontal.CENTERED, TextVertical.TOP, Color.White);
76            screen.DrawText("Starts as", new Vector2(220, 60), TextHorizontal.CENTERED, TextVertical.TOP, Color.White);
77            screen.DrawText("and becomes", new Vector2(420, 60), TextHorizontal.CENTERED, TextVertical.TOP, Color.White);
78            base.Draw(screen, gameState);
79        }
80    }
81}
Note: See TracBrowser for help on using the browser.