]> git.r.bdr.sh - rbdr/super-polarity/blobdiff - SuperPolarityMac/SuperPolarity.cs
Removes spaces.
[rbdr/super-polarity] / SuperPolarityMac / SuperPolarity.cs
diff --git a/SuperPolarityMac/SuperPolarity.cs b/SuperPolarityMac/SuperPolarity.cs
new file mode 100644 (file)
index 0000000..9311d53
--- /dev/null
@@ -0,0 +1,161 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using Microsoft.Xna.Framework.Storage;
+using Microsoft.Xna.Framework.GamerServices;
+using Microsoft.Xna.Framework.Media;
+using Microsoft.Xna.Framework.Audio;
+using SuperPolarity;
+#endregion
+
+namespace SuperPolarity
+{
+    /// <summary>
+    /// This is the main type for your game
+    /// </summary>
+    public class SuperPolarity : Game
+    {
+        public GraphicsDeviceManager graphics;
+        SpriteBatch spriteBatch;
+
+        public static int OutlierBounds;
+
+        public Player Player;
+
+        Screen EntryScreen;
+
+        protected Song TitleSong;
+        protected Song GameSong;
+        protected SoundEffect GameOverSound;
+
+        public SuperPolarity()
+            : base()
+        {
+            graphics = new GraphicsDeviceManager(this);
+            Components.Add(new GamerServicesComponent(this));
+
+            graphics.PreferMultiSampling = true;
+            graphics.PreferredBackBufferWidth = 1280;
+            graphics.PreferredBackBufferHeight = 720;
+            graphics.ToggleFullScreen();
+
+            Content.RootDirectory = "Content";
+            ActorFactory.SetGame(this);
+            ParticleEffectFactory.SetGame(this);
+            ActorManager.SetGame(this);
+            ScreenManager.SetGame(this);
+
+            EntryScreen = (Screen)new TitleScreen(this);
+        }
+
+        /// <summary>
+        /// Allows the game to perform any initialization it needs to before starting to run.
+        /// This is where it can query for any required services and load any non-graphic
+        /// related content.  Calling base.Initialize will enumerate through any components
+        /// and initialize them as well.
+        /// </summary>
+        protected override void Initialize()
+        {
+            base.Initialize();
+
+            InputController.RegisterEventForKey("fullScreenToggle", Keys.F11);
+            InputController.Bind("fullScreenToggle", HandleFullScreenToggle);
+
+            EntryScreen.Initialize();
+
+            OutlierBounds = 100;
+        }
+
+        protected void HandleFullScreenToggle(float value)
+        {
+            graphics.ToggleFullScreen();
+            graphics.ApplyChanges();
+        }
+
+        /// <summary>
+        /// LoadContent will be called once per game and is the place to load
+        /// all of your content.
+        /// </summary>
+        protected override void LoadContent()
+        {
+
+            MediaPlayer.IsRepeating = true;
+            GameSong = Content.Load<Song>("Sound\\polaritytheme.wav");
+            GameOverSound = Content.Load<SoundEffect>("Sound\\gameover");
+
+            // Create a new SpriteBatch, which can be used to draw textures.
+            spriteBatch = new SpriteBatch(GraphicsDevice);
+
+            ScreenManager.Push(EntryScreen);
+
+            Player = new Player(this);
+        }
+
+        /// <summary>
+        /// UnloadContent will be called once per game and is the place to unload
+        /// all content.
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // TODO: Unload any non ContentManager content here
+        }
+
+        /// <summary>
+        /// Allows the game to run logic such as updating the world,
+        /// checking for collisions, gathering input, and playing audio.
+        /// </summary>
+        /// <param name="gameTime">Provides a snapshot of timing values.</param>
+        protected override void Update(GameTime gameTime)
+        {
+            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
+                Exit();
+
+            ScreenManager.Update(gameTime);
+
+            Player.Update();
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// This is called when the game should draw itself.
+        /// </summary>
+        /// <param name="gameTime">Provides a snapshot of timing values.</param>
+        protected override void Draw(GameTime gameTime)
+        {
+            GraphicsDevice.Clear(Color.White);
+
+            spriteBatch.Begin();
+
+            ScreenManager.Draw(spriteBatch);
+
+            spriteBatch.End();
+
+            base.Draw(gameTime);
+        }
+
+        public void PlaySong(string songName)
+        {
+            // temp stuff before media manager is in
+            if (songName == "game")
+            {
+                MediaPlayer.Play(GameSong);
+            }
+        }
+
+        public void GameOver()
+        {
+            var scoreScreen = new ScoreScreen(this);
+            scoreScreen.Initialize();
+
+            MediaPlayer.Stop();
+            GameOverSound.Play();
+            ScreenManager.Pop();
+            ScreenManager.Push(scoreScreen);
+        }
+    }
+}