]> git.r.bdr.sh - rbdr/super-polarity/commitdiff
Removes spaces.
authorBen Beltran <redacted>
Mon, 3 Feb 2014 16:06:44 +0000 (10:06 -0600)
committerBen Beltran <redacted>
Mon, 3 Feb 2014 16:06:44 +0000 (10:06 -0600)
138 files changed:
Super Polarity.suo [deleted file]
Super Polarity/Super Polarity.csproj.user [deleted file]
Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe [deleted file]
Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe.manifest [deleted file]
Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll [deleted file]
Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll [deleted file]
Super Polarity/bin/WindowsGL/Debug/OpenTK.dll [deleted file]
Super Polarity/bin/WindowsGL/Debug/SDL.dll [deleted file]
Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe [deleted file]
Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb [deleted file]
Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe [deleted file]
Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll [deleted file]
Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache [deleted file]
Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache [deleted file]
Super Polarity/obj/x86/Debug/Super Polarity.csproj.FileListAbsolute.txt [deleted file]
Super Polarity/obj/x86/Debug/Super Polarity.exe [deleted file]
Super Polarity/obj/x86/Debug/Super Polarity.pdb [deleted file]
SuperPolarity.sln [moved from Super Polarity.sln with 94% similarity]
SuperPolarity.userprefs [new file with mode: 0644]
SuperPolarity/ActorFactory.cs [moved from Super Polarity/ActorFactory.cs with 100% similarity]
SuperPolarity/ActorManager.cs [moved from Super Polarity/ActorManager.cs with 100% similarity]
SuperPolarity/Actors/Actor.cs [moved from Super Polarity/Actors/Actor.cs with 100% similarity]
SuperPolarity/Actors/Bullet.cs [moved from Super Polarity/Actors/Bullet.cs with 100% similarity]
SuperPolarity/Actors/MainShip.cs [moved from Super Polarity/Actors/MainShip.cs with 100% similarity]
SuperPolarity/Actors/Ship.cs [moved from Super Polarity/Actors/Ship.cs with 100% similarity]
SuperPolarity/Actors/StandardShip.cs [moved from Super Polarity/Actors/StandardShip.cs with 100% similarity]
SuperPolarity/BasicGenerator.cs [moved from Super Polarity/BasicGenerator.cs with 100% similarity]
SuperPolarity/Content/Fonts/SegoeUIMono14.xnb [moved from Super Polarity/Content/Fonts/SegoeUIMono14.xnb with 100% similarity]
SuperPolarity/Content/Fonts/bigfont.xnb [moved from Super Polarity/Content/Fonts/bigfont.xnb with 100% similarity]
SuperPolarity/Content/Fonts/smallfont.xnb [moved from Super Polarity/Content/Fonts/smallfont.xnb with 100% similarity]
SuperPolarity/Content/Graphics/circle.xnb [moved from Super Polarity/Content/Graphics/circle.xnb with 100% similarity]
SuperPolarity/Content/Graphics/diamond.xnb [moved from Super Polarity/Content/Graphics/diamond.xnb with 100% similarity]
SuperPolarity/Content/Graphics/main-ship.xnb [moved from Super Polarity/Content/Graphics/main-ship.xnb with 100% similarity]
SuperPolarity/Content/Graphics/negative-cruiser.xnb [moved from Super Polarity/Content/Graphics/negative-cruiser.xnb with 100% similarity]
SuperPolarity/Content/Graphics/negative-destroyer.xnb [moved from Super Polarity/Content/Graphics/negative-destroyer.xnb with 100% similarity]
SuperPolarity/Content/Graphics/negative-scout.xnb [moved from Super Polarity/Content/Graphics/negative-scout.xnb with 100% similarity]
SuperPolarity/Content/Graphics/negative-ship.xnb [moved from Super Polarity/Content/Graphics/negative-ship.xnb with 100% similarity]
SuperPolarity/Content/Graphics/negative-supercruiser.xnb [moved from Super Polarity/Content/Graphics/negative-supercruiser.xnb with 100% similarity]
SuperPolarity/Content/Graphics/neutral-cruiser.xnb [moved from Super Polarity/Content/Graphics/neutral-cruiser.xnb with 100% similarity]
SuperPolarity/Content/Graphics/neutral-destroyer.xnb [moved from Super Polarity/Content/Graphics/neutral-destroyer.xnb with 100% similarity]
SuperPolarity/Content/Graphics/neutral-scout.xnb [moved from Super Polarity/Content/Graphics/neutral-scout.xnb with 100% similarity]
SuperPolarity/Content/Graphics/neutral-ship.xnb [moved from Super Polarity/Content/Graphics/neutral-ship.xnb with 100% similarity]
SuperPolarity/Content/Graphics/neutral-supercruiser.xnb [moved from Super Polarity/Content/Graphics/neutral-supercruiser.xnb with 100% similarity]
SuperPolarity/Content/Graphics/pause-screen.xnb [moved from Super Polarity/Content/Graphics/pause-screen.xnb with 100% similarity]
SuperPolarity/Content/Graphics/polaritydemotitle.xnb [moved from Super Polarity/Content/Graphics/polaritydemotitle.xnb with 100% similarity]
SuperPolarity/Content/Graphics/positive-cruiser.xnb [moved from Super Polarity/Content/Graphics/positive-cruiser.xnb with 100% similarity]
SuperPolarity/Content/Graphics/positive-destroyer.xnb [moved from Super Polarity/Content/Graphics/positive-destroyer.xnb with 100% similarity]
SuperPolarity/Content/Graphics/positive-scout.xnb [moved from Super Polarity/Content/Graphics/positive-scout.xnb with 100% similarity]
SuperPolarity/Content/Graphics/positive-ship.xnb [moved from Super Polarity/Content/Graphics/positive-ship.xnb with 100% similarity]
SuperPolarity/Content/Graphics/positive-supercruiser.xnb [moved from Super Polarity/Content/Graphics/positive-supercruiser.xnb with 100% similarity]
SuperPolarity/Content/Graphics/square.xnb [moved from Super Polarity/Content/Graphics/square.xnb with 100% similarity]
SuperPolarity/Content/Graphics/star.xnb [moved from Super Polarity/Content/Graphics/star.xnb with 100% similarity]
SuperPolarity/Content/Sound/bomb.wav [moved from Super Polarity/Content/Sound/bomb.wav with 100% similarity]
SuperPolarity/Content/Sound/bullet.wav [moved from Super Polarity/Content/Sound/bullet.wav with 100% similarity]
SuperPolarity/Content/Sound/gameover.wav [moved from Super Polarity/Content/Sound/gameover.wav with 100% similarity]
SuperPolarity/Content/Sound/hit.wav [moved from Super Polarity/Content/Sound/hit.wav with 100% similarity]
SuperPolarity/Content/Sound/life.wav [moved from Super Polarity/Content/Sound/life.wav with 100% similarity]
SuperPolarity/Content/Sound/polaritychange.wav [moved from Super Polarity/Content/Sound/polaritychange.wav with 100% similarity]
SuperPolarity/Content/Sound/polaritytheme.wav [moved from Super Polarity Content/Super Polarity ContentContent/Sound/polaritytheme.wav with 100% similarity]
SuperPolarity/GameScreen.cs [moved from Super Polarity/GameScreen.cs with 100% similarity]
SuperPolarity/Icon.ico [moved from Super Polarity/Icon.ico with 100% similarity]
SuperPolarity/InputController.cs [moved from Super Polarity/InputController.cs with 100% similarity]
SuperPolarity/LetterChooseWidget.cs [moved from Super Polarity/LetterChooseWidget.cs with 100% similarity]
SuperPolarity/MenuItem.cs [moved from Super Polarity/MenuItem.cs with 100% similarity]
SuperPolarity/MenuWidget.cs [moved from Super Polarity/MenuWidget.cs with 100% similarity]
SuperPolarity/NameChooserWidget.cs [moved from Super Polarity/NameChooserWidget.cs with 100% similarity]
SuperPolarity/Particle.cs [moved from Super Polarity/Particle.cs with 100% similarity]
SuperPolarity/ParticleEffectFactory.cs [moved from Super Polarity/ParticleEffectFactory.cs with 100% similarity]
SuperPolarity/ParticleEngine.cs [moved from Super Polarity/ParticleEngine.cs with 100% similarity]
SuperPolarity/Player.cs [moved from Super Polarity/Player.cs with 100% similarity]
SuperPolarity/Program.cs [moved from Super Polarity/Program.cs with 100% similarity]
SuperPolarity/Properties/AssemblyInfo.cs [moved from Super Polarity/Properties/AssemblyInfo.cs with 93% similarity]
SuperPolarity/Renderer.cs [moved from Super Polarity/Renderer.cs with 100% similarity]
SuperPolarity/ScoreScreen.cs [moved from Super Polarity/ScoreScreen.cs with 100% similarity]
SuperPolarity/Screen.cs [moved from Super Polarity/Screen.cs with 100% similarity]
SuperPolarity/ScreenManager.cs [moved from Super Polarity/ScreenManager.cs with 100% similarity]
SuperPolarity/SuperPolarity.cs [moved from Super Polarity/SuperPolarity.cs with 100% similarity]
SuperPolarity/SuperPolarity.csproj [moved from Super Polarity/Super Polarity.csproj with 99% similarity]
SuperPolarity/TitleScreen.cs [moved from Super Polarity/TitleScreen.cs with 100% similarity]
SuperPolarity/Widget.cs [moved from Super Polarity/Widget.cs with 100% similarity]
SuperPolarity/neutral-supercruiser.xnb [moved from Super Polarity/neutral-supercruiser.xnb with 100% similarity]
SuperPolarity/scores.txt [moved from Super Polarity/scores.txt with 100% similarity]
SuperPolarityContent/SuperPolarityContent/SuperPolarityContent.csproj [moved from Super Polarity Content/Super Polarity Content/Super Polarity Content.csproj with 94% similarity]
SuperPolarityContent/SuperPolarityContentContent/Fonts/SegoeUIMono14.spritefont [moved from Super Polarity Content/Super Polarity ContentContent/Fonts/SegoeUIMono14.spritefont with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Fonts/bigfont.png [moved from Super Polarity Content/Super Polarity ContentContent/Fonts/bigfont.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Fonts/smallfont.png [moved from Super Polarity Content/Super Polarity ContentContent/Fonts/smallfont.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/circle.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/circle.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/diamond.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/diamond.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/main-ship.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/main-ship.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/negative-cruiser.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/negative-cruiser.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/negative-destroyer.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/negative-destroyer.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/negative-scout.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/negative-scout.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/negative-ship.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/negative-ship.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/negative-supercruiser.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/negative-supercruiser.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/neutral-cruiser.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-cruiser.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/neutral-destroyer.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-destroyer.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/neutral-scout.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-scout.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/neutral-ship.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-ship.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/neutral-supercruiser.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-supercruiser.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/pause-screen.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/pause-screen.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/polaritydemotitle.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/polaritydemotitle.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/positive-cruiser.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/positive-cruiser.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/positive-destroyer.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/positive-destroyer.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/positive-scout.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/positive-scout.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/positive-ship.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/positive-ship.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/positive-supercruiser.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/positive-supercruiser.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/square.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/square.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Graphics/star.png [moved from Super Polarity Content/Super Polarity ContentContent/Graphics/star.png with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/Sound/polaritytheme.wav [moved from Super Polarity/Content/Sound/polaritytheme.wav with 100% similarity]
SuperPolarityContent/SuperPolarityContentContent/SuperPolarityContentContent.contentproj [moved from Super Polarity Content/Super Polarity ContentContent/Super Polarity ContentContent.contentproj with 100% similarity]
SuperPolarityMac/ActorFactory.cs [new file with mode: 0644]
SuperPolarityMac/ActorManager.cs [new file with mode: 0644]
SuperPolarityMac/BasicGenerator.cs [new file with mode: 0644]
SuperPolarityMac/Content/logo.png [deleted file]
SuperPolarityMac/Game1.cs [deleted file]
SuperPolarityMac/GameScreen.cs [new file with mode: 0644]
SuperPolarityMac/Icon.ico [new file with mode: 0644]
SuperPolarityMac/Info.plist [deleted file]
SuperPolarityMac/InputController.cs [new file with mode: 0644]
SuperPolarityMac/LetterChooseWidget.cs [new file with mode: 0644]
SuperPolarityMac/Main.cs [deleted file]
SuperPolarityMac/MenuItem.cs [new file with mode: 0644]
SuperPolarityMac/MenuWidget.cs [new file with mode: 0644]
SuperPolarityMac/NameChooserWidget.cs [new file with mode: 0644]
SuperPolarityMac/Particle.cs [new file with mode: 0644]
SuperPolarityMac/ParticleEffectFactory.cs [new file with mode: 0644]
SuperPolarityMac/ParticleEngine.cs [new file with mode: 0644]
SuperPolarityMac/Player.cs [new file with mode: 0644]
SuperPolarityMac/Program.cs [new file with mode: 0644]
SuperPolarityMac/Properties/AssemblyInfo.cs [deleted file]
SuperPolarityMac/Renderer.cs [new file with mode: 0644]
SuperPolarityMac/ScoreScreen.cs [new file with mode: 0644]
SuperPolarityMac/Screen.cs [new file with mode: 0644]
SuperPolarityMac/ScreenManager.cs [new file with mode: 0644]
SuperPolarityMac/SuperPolarity.cs [new file with mode: 0644]
SuperPolarityMac/TitleScreen.cs [new file with mode: 0644]
SuperPolarityMac/Widget.cs [new file with mode: 0644]
SuperPolarityMac/neutral-supercruiser.xnb [new file with mode: 0644]

diff --git a/Super Polarity.suo b/Super Polarity.suo
deleted file mode 100644 (file)
index 360a22a..0000000
Binary files a/Super Polarity.suo and /dev/null differ
diff --git a/Super Polarity/Super Polarity.csproj.user b/Super Polarity/Super Polarity.csproj.user
deleted file mode 100644 (file)
index ace9a86..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe b/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe
deleted file mode 100644 (file)
index bb84a51..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe.manifest b/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe.manifest
deleted file mode 100644 (file)
index 061c9ca..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
-  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
-    <security>
-      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
-        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
-      </requestedPrivileges>
-    </security>
-  </trustInfo>
-</assembly>
diff --git a/Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll b/Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll
deleted file mode 100644 (file)
index fd45367..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll b/Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll
deleted file mode 100644 (file)
index c087ac2..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/OpenTK.dll b/Super Polarity/bin/WindowsGL/Debug/OpenTK.dll
deleted file mode 100644 (file)
index b1cd2e9..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/OpenTK.dll and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/SDL.dll b/Super Polarity/bin/WindowsGL/Debug/SDL.dll
deleted file mode 100644 (file)
index 628cdfc..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/SDL.dll and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe
deleted file mode 100644 (file)
index 746c670..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb
deleted file mode 100644 (file)
index fea49a1..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe
deleted file mode 100644 (file)
index bb84a51..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe and /dev/null differ
diff --git a/Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll b/Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll
deleted file mode 100644 (file)
index d2e2d47..0000000
Binary files a/Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll and /dev/null differ
diff --git a/Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
deleted file mode 100644 (file)
index ef9920b..0000000
Binary files a/Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ
diff --git a/Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache b/Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache
deleted file mode 100644 (file)
index d619ccb..0000000
Binary files a/Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache and /dev/null differ
diff --git a/Super Polarity/obj/x86/Debug/Super Polarity.csproj.FileListAbsolute.txt b/Super Polarity/obj/x86/Debug/Super Polarity.csproj.FileListAbsolute.txt
deleted file mode 100644 (file)
index cabc9d2..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\SDL.dll
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Super Polarity.exe
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Super Polarity.pdb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Lidgren.Network.dll
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\MonoGame.Framework.dll
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\OpenTK.dll
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Tao.Sdl.dll
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\obj\x86\Debug\ResolveAssemblyReference.cache
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\obj\x86\Debug\Super Polarity.exe
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\obj\x86\Debug\Super Polarity.pdb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\main-ship.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\negative-cruiser.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\negative-destroyer.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\negative-scout.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\negative-supercruiser.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\neutral-cruiser.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\neutral-destroyer.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\neutral-scout.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\neutral-ship.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\positive-cruiser.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\positive-destroyer.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\positive-scout.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\positive-ship.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\positive-supercruiser.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\circle.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\diamond.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\star.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\negative-ship.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\square.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Fonts\SegoeUIMono14.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\neutral-supercruiser.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\polaritytheme.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\bullet.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\polaritychange.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\pause-screen.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Graphics\polaritydemotitle.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\gameover.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\bomb.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\hit.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Sound\life.wav
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Fonts\bigfont.xnb
-C:\Users\Miau\documents\visual studio 2010\Projects\Super Polarity\Super Polarity\bin\WindowsGL\Debug\Content\Fonts\smallfont.xnb
diff --git a/Super Polarity/obj/x86/Debug/Super Polarity.exe b/Super Polarity/obj/x86/Debug/Super Polarity.exe
deleted file mode 100644 (file)
index 746c670..0000000
Binary files a/Super Polarity/obj/x86/Debug/Super Polarity.exe and /dev/null differ
diff --git a/Super Polarity/obj/x86/Debug/Super Polarity.pdb b/Super Polarity/obj/x86/Debug/Super Polarity.pdb
deleted file mode 100644 (file)
index fea49a1..0000000
Binary files a/Super Polarity/obj/x86/Debug/Super Polarity.pdb and /dev/null differ
similarity index 94%
rename from Super Polarity.sln
rename to SuperPolarity.sln
index 6742318043e43136246ee805edde5b61c60af2c5..403705030992457f09f9ba641943c571717584d3 100644 (file)
@@ -1,11 +1,11 @@
 
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual C# Express 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Super Polarity", "Super Polarity\Super Polarity.csproj", "{2585188B-339D-44CD-9599-1A80AA30DE13}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperPolarity", "SuperPolarity\SuperPolarity.csproj", "{2585188B-339D-44CD-9599-1A80AA30DE13}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Super Polarity Content", "Super Polarity Content\Super Polarity Content\Super Polarity Content.csproj", "{8528C189-5B94-48F8-8C64-D4D6658E52F6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperPolarity Content", "SuperPolarity Content\SuperPolarity Content\SuperPolarity Content.csproj", "{8528C189-5B94-48F8-8C64-D4D6658E52F6}"
 EndProject
-Project("{96E2B04D-8817-42C6-938A-82C39BA4D311}") = "Super Polarity ContentContent", "Super Polarity Content\Super Polarity ContentContent\Super Polarity ContentContent.contentproj", "{468F8415-7D38-4718-B0B4-E18F1A427136}"
+Project("{96E2B04D-8817-42C6-938A-82C39BA4D311}") = "SuperPolarity ContentContent", "SuperPolarity Content\SuperPolarity ContentContent\SuperPolarity ContentContent.contentproj", "{468F8415-7D38-4718-B0B4-E18F1A427136}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/SuperPolarity.userprefs b/SuperPolarity.userprefs
new file mode 100644 (file)
index 0000000..0d7562c
--- /dev/null
@@ -0,0 +1,12 @@
+<Properties>
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
+  <MonoDevelop.Ide.Workbench ActiveDocument="SuperPolarity/Properties/AssemblyInfo.cs">
+    <Files>
+      <File FileName="SuperPolarity/Properties/AssemblyInfo.cs" Line="9" Column="34" />
+    </Files>
+  </MonoDevelop.Ide.Workbench>
+  <MonoDevelop.Ide.DebuggingService.Breakpoints>
+    <BreakpointStore />
+  </MonoDevelop.Ide.DebuggingService.Breakpoints>
+  <MonoDevelop.Ide.DebuggingService.PinnedWatches />
+</Properties>
similarity index 93%
rename from Super Polarity/Properties/AssemblyInfo.cs
rename to SuperPolarity/Properties/AssemblyInfo.cs
index 91a7e87968decdd8d1009b4f5ed716349f5f6cbe..bd24ce8a093cbad4391d30b0dd2c0d72c0a76423 100644 (file)
@@ -5,8 +5,8 @@ using System.Runtime.InteropServices;
 // General Information about an assembly is controlled through the following 
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("Super Polarity")]
-[assembly: AssemblyProduct("Super Polarity")]
+[assembly: AssemblyTitle("SuperPolarity")]
+[assembly: AssemblyProduct("SuperPolarity")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyCompany("")]
similarity index 99%
rename from Super Polarity/Super Polarity.csproj
rename to SuperPolarity/SuperPolarity.csproj
index 24cea5c3daf86706475d742fd779b5a9b71b0be9..76124b756e3292f2ac750a2430ecfac3056a7ff9 100644 (file)
@@ -9,7 +9,7 @@
     <OutputType>WinExe</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>SuperPolarity</RootNamespace>
-    <AssemblyName>Super Polarity</AssemblyName>
+    <AssemblyName>SuperPolarity</AssemblyName>
     <FileAlignment>512</FileAlignment>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
similarity index 94%
rename from Super Polarity Content/Super Polarity Content/Super Polarity Content.csproj
rename to SuperPolarityContent/SuperPolarityContent/SuperPolarityContent.csproj
index 4cc2f56951e12aa217edac96be18d9218a15f2fc..9075af48821520bc6fb45c97bd36c7c21f6f0491 100644 (file)
@@ -46,9 +46,9 @@
     <Reference Include="mscorlib" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\Super Polarity ContentContent\Super Polarity ContentContent.contentproj">
+    <ProjectReference Include="..\SuperPolarity ContentContent\SuperPolarity ContentContent.contentproj">
       <Project>{468F8415-7D38-4718-B0B4-E18F1A427136}</Project>
-      <Name>Super Polarity ContentContent %28Content%29</Name>
+      <Name>SuperPolarity ContentContent %28Content%29</Name>
       <XnaReferenceType>Content</XnaReferenceType>
     </ProjectReference>
   </ItemGroup>
@@ -62,4 +62,4 @@
       <Target Name="AfterBuild">
       </Target>
     -->
-</Project>
\ No newline at end of file
+</Project>
diff --git a/SuperPolarityMac/ActorFactory.cs b/SuperPolarityMac/ActorFactory.cs
new file mode 100644 (file)
index 0000000..f9c7697
--- /dev/null
@@ -0,0 +1,144 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Content;
+
+namespace SuperPolarity
+{
+    static class ActorFactory
+    {
+        static internal SuperPolarity Game;
+
+        static public MainShip CreateMainShip(Vector2 position)
+        {
+            MainShip mainShip = new MainShip(Game);
+            mainShip.Initialize(Game.Content.Load<Texture2D>("Graphics\\main-ship"), position);
+
+            ActorManager.CheckIn(mainShip);
+
+            return mainShip;
+        }
+
+        static public StandardShip CreateShip(Ship.Polarity polarity, Vector2 position)
+        {
+            StandardShip ship = new StandardShip(Game);
+            Texture2D texture;
+            
+            if (polarity == Ship.Polarity.Positive)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\positive-ship");
+            }
+            else if (polarity == Ship.Polarity.Negative)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\negative-ship");
+            }
+            else
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\neutral-ship");
+            }
+
+            ship.Initialize(texture, position);
+            ship.SetPolarity(polarity);
+
+            ActorManager.CheckIn(ship);
+
+            return ship;
+        }
+
+        internal static void SetGame(SuperPolarity game)
+        {
+            ActorFactory.Game = game;
+        }
+
+        internal static Bullet CreateBullet(Vector2 position, float angle)
+        {
+            Bullet bullet = new Bullet(Game);
+
+            bullet.Initialize(Game.Content.Load<Texture2D>("Graphics\\square"), position);
+
+            bullet.Angle = angle;
+
+            ActorManager.CheckIn(bullet);
+
+            return bullet;
+        }
+
+        static public StandardShip CreateScout(Ship.Polarity polarity, Vector2 position)
+        {
+            StandardShip ship = new StandardShip(Game);
+            Texture2D texture;
+
+            if (polarity == Ship.Polarity.Positive)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\positive-scout");
+            }
+            else if (polarity == Ship.Polarity.Negative)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\negative-scout");
+            }
+            else
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\neutral-scout");
+            }
+
+            ship.BoxDimensions.X = 10;
+            ship.BoxDimensions.Y = 10;
+            ship.BoxDimensions.W = 10;
+            ship.BoxDimensions.Z = 10;
+
+            ship.Initialize(texture, position);
+            ship.MaxVelocity = 5.2f;
+            ship.FleeVelocity = 6.5f;
+            ship.ChargeVelocity = 5.5f;
+            ship.Value = 3;
+            ship.HP = 0;
+            ship.AngleChangeProbability = 20;
+            ship.SetPolarity(polarity);
+
+            ActorManager.CheckIn(ship);
+
+            return ship;
+        }
+
+        static public StandardShip CreateCruiser(Ship.Polarity polarity, Vector2 position)
+        {
+            StandardShip ship = new StandardShip(Game);
+            Texture2D texture;
+
+            if (polarity == Ship.Polarity.Positive)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\positive-cruiser");
+            }
+            else if (polarity == Ship.Polarity.Negative)
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\negative-cruiser");
+            }
+            else
+            {
+                texture = Game.Content.Load<Texture2D>("Graphics\\neutral-cruiser");
+            }
+
+            ship.BoxDimensions.X = 40;
+            ship.BoxDimensions.Y = 40;
+            ship.BoxDimensions.W = 40;
+            ship.BoxDimensions.Z = 40;
+
+            ship.Initialize(texture, position);
+            ship.MagneticRadius = 1000;
+            ship.RepelRadius = 200;
+            ship.MaxVelocity = 0.5f;
+            ship.FleeVelocity = 5;
+            ship.ChargeVelocity = 1;
+            ship.Value = 10;
+            ship.HP = 29;
+            ship.SetPolarity(polarity);
+
+            ActorManager.CheckIn(ship);
+
+            return ship;
+        }
+    }
+}
diff --git a/SuperPolarityMac/ActorManager.cs b/SuperPolarityMac/ActorManager.cs
new file mode 100644 (file)
index 0000000..f5587b9
--- /dev/null
@@ -0,0 +1,160 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    static class ActorManager
+    {
+
+        static SuperPolarity Game;
+        static int OutlierBounds;
+        static IList<Actor> Actors;
+
+        static ActorManager()
+        {
+            OutlierBounds = 100;
+            Actors = new List<Actor>();
+        }
+
+        static public void CheckIn(Actor actor)
+        {
+            Actors.Add(actor);
+        }
+
+        static public void CheckOut(Actor actor)
+        {
+            actor.CleanUp();
+            Actors.Remove(actor);
+            actor = null;
+        }
+
+        static public void Update(GameTime gameTime) 
+        {
+            CheckActors();
+            CheckOutliers();
+            foreach (Actor actor in Actors)
+            {
+                actor.Update(gameTime);
+            }
+        }
+
+        static public void Draw(SpriteBatch spriteBatch)
+        {
+            foreach (Actor actor in Actors)
+            {
+                actor.Draw(spriteBatch);
+            }
+        }
+
+        static void CheckActors()
+        {
+            for (var i = Actors.Count - 1; i >= 0; i--)
+            {
+                if (i >= Actors.Count) {
+                    i = Actors.Count - 1;
+                }
+
+                if (Actors.Count == 0)
+                {
+                    return;
+                }
+
+                Actor actor = Actors[i];
+                for (var j = i - 1; j >= 0; j--)
+                {
+                    Actor other = Actors[j];
+
+                    CheckCollision(actor, other);
+
+                    if (actor.GetType().IsSubclassOf(typeof(Ship)) && other.GetType().IsSubclassOf(typeof(Ship)))
+                    {
+                        CheckMagnetism((Ship)actor, (Ship)other);
+                    }
+                }
+            }
+        }
+
+        static void CheckCollision(Actor actor, Actor other)
+        {
+            var collision = Rectangle.Intersect(actor.Box, other.Box);
+            var inverseCollision = Rectangle.Intersect(other.Box, actor.Box);
+            if (!collision.IsEmpty && !actor.Dying && !other.Dying)
+            {
+                actor.Collide(other, collision);
+                other.Collide(actor, inverseCollision);
+            }
+
+        }
+
+        static void CheckMagnetism(Ship actor, Ship other)
+        {
+            if (actor.CurrentPolarity != Ship.Polarity.Neutral && other.CurrentPolarity != Ship.Polarity.Neutral)
+            {
+                var dy = other.Position.Y - actor.Position.Y;
+                var dx = other.Position.X - actor.Position.X;
+                var linearDistance = Math.Sqrt(Math.Pow(dx, 2) + Math.Pow(dy, 2));
+                var angle = (float) Math.Atan2(dy, dx);
+                var otherAngle = (float)Math.Atan2(-dy, -dx);
+
+                if (linearDistance < actor.MagneticRadius || linearDistance < other.MagneticRadius)
+                {
+                    actor.Magnetize(other, (float)linearDistance, angle);
+                    other.Magnetize(actor, (float)linearDistance, otherAngle);
+                }
+            }
+        }
+
+        static void CheckOutliers()
+        {
+            for (var i = Actors.Count; i > 0; i--)
+            {
+                var actor = Actors[i-1];
+                if (actor.Position.X < -OutlierBounds || actor.Position.Y < -OutlierBounds ||
+                    actor.Position.X > Game.GraphicsDevice.Viewport.Width + OutlierBounds ||
+                    actor.Position.Y > Game.GraphicsDevice.Viewport.Height + OutlierBounds)
+                {
+                    CheckOut(actor);
+                    if (actor.Parent != null)
+                    {
+                        actor.Parent.Children.Remove(actor);
+                    }
+                }
+            }
+        }
+
+        static public void Empty()
+        {
+            foreach (Actor actor in Actors) {
+                actor.CleanUp();
+            }
+            Actors.Clear();
+        }
+
+        internal static void SetGame(SuperPolarity game)
+        {
+            Game = game;
+        }
+
+        public static void Bomb()
+        {
+            for (var i = Actors.Count - 1; i >= 0; i--)
+            {
+                var actor = Actors[i];
+                if (actor.GetType() == typeof(StandardShip))
+                {
+                    CheckOut(actor);
+                    Renderer.CheckOut(actor);
+                }
+            }
+        }
+
+        public static int CountBaddies()
+        {
+            return Actors.Where(a => a.GetType() == typeof(StandardShip)).Count();
+        }
+    }
+}
diff --git a/SuperPolarityMac/BasicGenerator.cs b/SuperPolarityMac/BasicGenerator.cs
new file mode 100644 (file)
index 0000000..ba51742
--- /dev/null
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+
+namespace SuperPolarity
+{
+    class BasicGenerator
+    {
+        public enum Ships : byte { Ship, Scout, Battlecruiser };
+
+        protected Ships ShipType;
+        protected SuperPolarity Game;
+        protected int ScoreThreshold;
+        protected int Rate;
+        protected int CurrentTime;
+        protected Random Randomizer;
+        protected Vector2 Position;
+
+        public void Initialize(SuperPolarity game, Vector2 position, Ships shipType, int rate, int scoreThreshold)
+        {
+            Game = game;
+            ShipType = shipType;
+            ScoreThreshold = scoreThreshold;
+            Rate = rate;
+            Randomizer = new Random();
+            Position = position;
+            CurrentTime = rate;
+        }
+
+        public void Update(GameTime gameTime)
+        {
+            if (ActorManager.CountBaddies() > 50)
+            {
+                return;
+            }
+
+            if (Game.Player.Score >= ScoreThreshold)
+            {
+                CurrentTime = CurrentTime + gameTime.ElapsedGameTime.Milliseconds;
+
+                if (CurrentTime >= Rate)
+                {
+                    CurrentTime = 0;
+                    Spawn();
+                }
+            }
+        }
+
+        protected void Spawn()
+        {
+            var polarity = Ship.Polarity.Positive;
+
+            if (Randomizer.Next(2) == 1)
+            {
+                polarity = Ship.Polarity.Negative;
+            }
+
+            if (ShipType == Ships.Ship)
+            {
+                Renderer.CheckIn(ActorFactory.CreateShip(polarity, Position));
+            }
+
+            if (ShipType == Ships.Scout)
+            {
+                Renderer.CheckIn(ActorFactory.CreateScout(polarity, Position));
+            }
+
+            if (ShipType == Ships.Battlecruiser)
+            {
+                Renderer.CheckIn(ActorFactory.CreateCruiser(polarity, Position));
+            }
+
+        }
+    }
+}
diff --git a/SuperPolarityMac/Content/logo.png b/SuperPolarityMac/Content/logo.png
deleted file mode 100644 (file)
index 701c1b5..0000000
Binary files a/SuperPolarityMac/Content/logo.png and /dev/null differ
diff --git a/SuperPolarityMac/Game1.cs b/SuperPolarityMac/Game1.cs
deleted file mode 100644 (file)
index c0756a1..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// SuperPolarityMacGame.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using System;
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Audio;
-using Microsoft.Xna.Framework.Graphics;
-using Microsoft.Xna.Framework.Input;
-using Microsoft.Xna.Framework.Input.Touch;
-using Microsoft.Xna.Framework.Storage;
-using Microsoft.Xna.Framework.Content;
-using Microsoft.Xna.Framework.Media;
-
-#endregion
-
-namespace SuperPolarityMac
-{
-       /// <summary>
-       /// Default Project Template
-       /// </summary>
-       public class Game1 : Game
-       {
-
-       #region Fields
-               GraphicsDeviceManager graphics;
-               SpriteBatch spriteBatch;
-               Texture2D logoTexture;
-       #endregion
-
-       #region Initialization
-
-        public Game1()  
-        {
-
-                       graphics = new GraphicsDeviceManager(this);
-                       
-                       Content.RootDirectory = "Content";
-
-                       graphics.IsFullScreen = false;
-               }
-
-               /// <summary>
-               /// Overridden from the base Game.Initialize. Once the GraphicsDevice is setup,
-               /// we'll use the viewport to initialize some values.
-               /// </summary>
-               protected override void Initialize()
-               {
-                       base.Initialize();
-               }
-
-
-               /// <summary>
-               /// Load your graphics content.
-               /// </summary>
-               protected override void LoadContent()
-               {
-                       // Create a new SpriteBatch, which can be use to draw textures.
-                       spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
-                       
-                       // TODO: use this.Content to load your game content here eg.
-                       logoTexture = Content.Load<Texture2D>("logo");
-               }
-
-       #endregion
-
-       #region Update and Draw
-
-               /// <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)
-               {
-                       // TODO: Add your update logic here                     
-                       
-                       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)
-               {
-                       // Clear the backbuffer
-                       graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
-
-                       spriteBatch.Begin();
-
-                       // draw the logo
-                       spriteBatch.Draw(logoTexture, new Vector2 (130, 200), Color.White);
-
-                       spriteBatch.End();
-
-                       //TODO: Add your drawing code here
-                       base.Draw(gameTime);
-               }
-
-       #endregion
-       }
-}
diff --git a/SuperPolarityMac/GameScreen.cs b/SuperPolarityMac/GameScreen.cs
new file mode 100644 (file)
index 0000000..783e3c1
--- /dev/null
@@ -0,0 +1,209 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Media;
+using Microsoft.Xna.Framework.Input;
+
+namespace SuperPolarity
+{
+    class GameScreen : Screen
+    {
+        public GameScreen(SuperPolarity newGame) : base(newGame) {}
+
+        protected List<BasicGenerator> Generators;
+
+        protected int LivesRate;
+        protected int CurrentLivesRate;
+        protected int BombRate;
+        protected int CurrentBombRate;
+        protected SoundEffect BombSound;
+        protected SoundEffect LifeSound;
+        
+        protected bool Flashing;
+
+        protected bool IsPaused;
+        protected Texture2D PauseScreen;
+
+        public override void Initialize()
+        {
+            Generators = new List<BasicGenerator>();
+
+            CurrentBombRate = 1;
+            BombRate = 6000;
+
+            LivesRate = 10000;
+            CurrentLivesRate = 1;
+
+            InputController.RegisterEventForButton("changePolarity", Buttons.A);
+            InputController.RegisterEventForKey("changePolarity", Keys.Z);
+
+            InputController.RegisterEventForButton("shoot", Buttons.X);
+            InputController.RegisterEventForKey("shoot", Keys.X);
+
+            InputController.Bind("pause", HandlePause);
+
+            PauseScreen = Game.Content.Load<Texture2D>("Graphics\\pause-screen");
+        }
+
+        protected void HandlePause(float value)
+        {
+            Console.WriteLine("Paused");
+            IsPaused = !IsPaused;
+
+            if (IsPaused)
+            {
+                MediaPlayer.Volume = 0.05f;
+            }
+            else
+            {
+                MediaPlayer.Volume = 1;
+            }
+        }
+
+        public override void LoadContent()
+        {
+            CreateGenerators();
+
+            Vector2 playerPosition = new Vector2(Game.GraphicsDevice.Viewport.TitleSafeArea.X + Game.GraphicsDevice.Viewport.Width / 2, Game.GraphicsDevice.Viewport.TitleSafeArea.Y + Game.GraphicsDevice.Viewport.TitleSafeArea.Height / 2);
+
+            BombSound = Game.Content.Load<SoundEffect>("Sound\\bomb");
+            LifeSound = Game.Content.Load<SoundEffect>("Sound\\life");
+
+            Renderer.CheckIn(ActorFactory.CreateMainShip(playerPosition));
+
+            Game.PlaySong("game");
+        }
+        
+        protected void CalculateBomb()
+        {
+            if (Game.Player.Score >= BombRate * CurrentBombRate)
+            {
+                ActorManager.Bomb();
+                Flashing = true;
+                BombSound.Play();
+                CurrentBombRate = CurrentBombRate + 1;
+            }
+        }
+
+        protected void CalculateLife()
+        {
+            if (Game.Player.Score >= LivesRate * CurrentLivesRate)
+            {
+                Game.Player.Lives = Game.Player.Lives + 1;
+                LifeSound.Play();
+                CurrentLivesRate = CurrentLivesRate + 1;
+            }
+        }
+
+        public override void Update(GameTime gameTime)
+        {
+            CalculateBomb();
+            CalculateLife();
+            InputController.UpdateInput(IsPaused);
+            if (IsPaused)
+            {
+                return;
+            }
+            ActorManager.Update(gameTime);
+
+            foreach (BasicGenerator generator in Generators)
+            {
+                generator.Update(gameTime);
+            }
+        }
+
+        public override void Draw(SpriteBatch spriteBatch)
+        {
+            Renderer.Draw(spriteBatch);
+            Game.Player.Draw(spriteBatch);
+
+            if (IsPaused)
+            {
+                spriteBatch.Draw(PauseScreen, new Vector2(0, 0), Color.White);
+            }
+
+            if (Flashing)
+            {
+                Game.GraphicsDevice.Clear(Color.Black);
+                Flashing = false;
+            }
+        }
+
+        protected void CreateGenerators()
+        {
+            // The basic ship generators.
+            var gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(-50, -50), BasicGenerator.Ships.Ship, 3000, 0);
+            Generators.Add(gen); 
+            
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(-50, Game.GraphicsDevice.Viewport.Height + 50), BasicGenerator.Ships.Ship, 3000, 0);
+            Generators.Add(gen); 
+            
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width + 50, -50), BasicGenerator.Ships.Ship, 3000, 0);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width + 50, Game.GraphicsDevice.Viewport.Height + 50), BasicGenerator.Ships.Ship, 3000, 0);
+            Generators.Add(gen);
+
+            // After 1.5k liberate some sporadic Scouts, and add two more ship generators.
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width / 2, -50), BasicGenerator.Ships.Ship, 3000, 1500);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width / 2, Game.GraphicsDevice.Viewport.Height + 50), BasicGenerator.Ships.Ship, 3000, 1500);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(-50, Game.GraphicsDevice.Viewport.Height / 2), BasicGenerator.Ships.Scout, 6000, 1500);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width + 50, Game.GraphicsDevice.Viewport.Height / 2), BasicGenerator.Ships.Scout, 6000, 1500);
+            Generators.Add(gen);
+
+
+            // After 3k add more scouts.
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width / 2, -50), BasicGenerator.Ships.Scout, 3000, 3000);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width / 2, Game.GraphicsDevice.Viewport.Height + 50), BasicGenerator.Ships.Scout, 3000, 5000);
+            Generators.Add(gen);
+
+            // After 5k release more ships and a cruiser.
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width / 2, -50), BasicGenerator.Ships.Ship, 1500, 5000);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width / 2, Game.GraphicsDevice.Viewport.Height + 50), BasicGenerator.Ships.Ship, 1500, 5000);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(-50, Game.GraphicsDevice.Viewport.Height / 2), BasicGenerator.Ships.Battlecruiser, 10000, 5000);
+            Generators.Add(gen);
+
+            gen = new BasicGenerator();
+            gen.Initialize(Game, new Vector2(Game.GraphicsDevice.Viewport.Width + 50, Game.GraphicsDevice.Viewport.Height / 2), BasicGenerator.Ships.Battlecruiser, 10000, 5000);
+            Generators.Add(gen);
+        }
+
+        public override void CleanUp()
+        {
+            base.CleanUp();
+            Generators.Clear();
+            InputController.Unbind("pause", HandlePause);
+            Renderer.Empty();
+            ActorManager.Empty();
+        }
+    }
+}
diff --git a/SuperPolarityMac/Icon.ico b/SuperPolarityMac/Icon.ico
new file mode 100644 (file)
index 0000000..13be62a
Binary files /dev/null and b/SuperPolarityMac/Icon.ico differ
diff --git a/SuperPolarityMac/Info.plist b/SuperPolarityMac/Info.plist
deleted file mode 100644 (file)
index 07a58c3..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>CFBundleIdentifier</key>
-       <string>com.yourcompany.MonoGame.Samples.Draw2D.MacOS</string>
-       <key>CFBundleName</key>
-       <string>MonoGame.Samples.Draw2D.MacOS</string>
-       <key>CFBundleVersion</key>
-       <string>1</string>
-       <key>LSMinimumSystemVersion</key>
-       <string>10.6</string>
-       <key>NSPrincipalClass</key>
-       <string>NSApplication</string>
-</dict>
-</plist>
-
diff --git a/SuperPolarityMac/InputController.cs b/SuperPolarityMac/InputController.cs
new file mode 100644 (file)
index 0000000..c92bb9c
--- /dev/null
@@ -0,0 +1,248 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework.Input;
+
+namespace SuperPolarity
+{
+    static class InputController
+    {
+        static Dictionary<string, List<Action<float>>> Listeners;
+        static Dictionary<string, List<Keys>> RegisteredKeys;
+        static Dictionary<string, List<Buttons>> RegisteredButtons;
+        static List<string> BlockedKeys;
+        static List<string> BlockedButtons;
+
+        static GamePadState InputGamePadState;
+        static KeyboardState InputKeyboardState;
+
+        /*
+         * Registered Events.
+         * 
+         * You register: name of the event (ie. attack) and a key associated with it.
+         * or button... Left Stick /always/ dispatches move event.
+         */
+
+        static InputController()
+        {
+            Listeners = new Dictionary<string,List<Action<float>>>();
+            RegisteredButtons = new Dictionary<string, List<Buttons>>();
+            RegisteredKeys = new Dictionary<string, List<Keys>>();
+            BlockedKeys = new List<string>();
+            BlockedButtons = new List<string>();
+            InputKeyboardState = new KeyboardState();
+            InputGamePadState = new GamePadState();
+        }
+
+        public static void UpdateInput()
+        {
+            DispatchMoveEvents();
+            DispatchRegisteredEvents();
+        }
+
+        public static void UpdateInput(bool highPriorityOnly) 
+        {
+            Poll();
+            DispatchPauseEvent();
+            if (!highPriorityOnly)
+            {
+                UpdateInput();
+            }
+        }
+
+        public static void DispatchPauseEvent()
+        {
+            // OK THIS IS ALL KINDS OF WRONG. THIS IS A PLACEHOLDER BECAUSE DEMO!
+            var keyPressed = false;
+            if ((InputKeyboardState.IsKeyDown(Keys.Enter) || InputGamePadState.IsButtonDown(Buttons.Start))) {
+                keyPressed = true;
+                if(!BlockedButtons.Contains("pause") && !BlockedKeys.Contains("pause"))
+                {
+                    BlockedButtons.Add("pause");
+                    BlockedKeys.Add("pause");
+                    Console.WriteLine("Dispatch");
+                    Dispatch("pause", 0);
+                }
+            }
+
+            if (!keyPressed)
+            {
+                BlockedButtons.Remove("pause");
+                BlockedKeys.Remove("pause");
+            }
+        }
+
+        private static void Poll()
+        {
+            InputGamePadState = GamePad.GetState(Microsoft.Xna.Framework.PlayerIndex.One);
+            InputKeyboardState = Keyboard.GetState();
+        }
+
+        public static void RegisterEventForKey(string eventName, Keys key)
+        {
+            List<Keys> newKeyList;
+            if (!RegisteredKeys.ContainsKey(eventName))
+            {
+                newKeyList = new List<Keys>();
+                RegisteredKeys.Add(eventName, newKeyList);
+            }
+
+            RegisteredKeys.TryGetValue(eventName, out newKeyList);
+
+            newKeyList.Add(key);
+        }
+
+        public static void RegisterEventForButton(string eventName, Buttons button)
+        {
+            List<Buttons> newButtonList;
+            if (!RegisteredButtons.ContainsKey(eventName))
+            {
+                newButtonList = new List<Buttons>();
+                RegisteredButtons.Add(eventName, newButtonList);
+            }
+
+            RegisteredButtons.TryGetValue(eventName, out newButtonList);
+
+            newButtonList.Add(button);
+        }
+
+        private static void DispatchRegisteredEvents()
+        {
+            var keyFired = false;
+
+            foreach (KeyValuePair<string,List<Keys>> entry in RegisteredKeys) {
+                keyFired = false;
+                foreach (Keys key in entry.Value)
+                {
+                    if (InputKeyboardState.IsKeyDown(key))
+                    {
+                        if (!BlockedKeys.Contains(entry.Key))
+                        {
+                            BlockedKeys.Add(entry.Key);
+                            Dispatch(entry.Key, 1);
+                        }
+                        keyFired = true;
+                        break;
+                    }
+                }
+
+                if (!keyFired)
+                {
+                    BlockedKeys.Remove(entry.Key);
+                }
+            }
+
+            foreach (KeyValuePair<string, List<Buttons>> entry in RegisteredButtons)
+            {
+                keyFired = false;
+                foreach (Buttons button in entry.Value)
+                {
+                    if (InputGamePadState.IsButtonDown(button))
+                    {
+                        if (!BlockedButtons.Contains(entry.Key))
+                        {
+                            BlockedButtons.Add(entry.Key);
+                            Dispatch(entry.Key, 1);
+                        }
+                        keyFired = true;
+                        break;
+                    };
+                }
+
+                if (!keyFired)
+                {
+                    BlockedButtons.Remove(entry.Key);
+                }
+            }
+        }
+
+        private static void DispatchMoveEvents()
+        {
+            float xMovement = 0.0f;
+            float yMovement = 0.0f;
+            // Dispatch the moveX / MoveY events every frame.
+
+            xMovement = InputGamePadState.ThumbSticks.Left.X;
+            yMovement = -InputGamePadState.ThumbSticks.Left.Y;
+
+            if (InputKeyboardState.IsKeyDown(Keys.Left))
+            {
+                xMovement = -1.0f;
+            }
+
+            if (InputKeyboardState.IsKeyDown(Keys.Right))
+            {
+                xMovement = 1.0f;
+            }
+
+            if (InputKeyboardState.IsKeyDown(Keys.Up))
+            {
+                yMovement = -1.0f;
+            }
+
+            if (InputKeyboardState.IsKeyDown(Keys.Down))
+            {
+                yMovement = 1.0f;
+            }
+
+            Dispatch("moveX", xMovement);
+            Dispatch("moveY", yMovement);
+        }
+
+        public static void Bind(string eventName, Action<float> listener)
+        {
+            List<Action<float>> newListenerList;
+            List<Action<float>> listenerList;
+            bool               foundListeners;
+
+            if (!Listeners.ContainsKey(eventName)) {
+               newListenerList = new List<Action<float>>();
+               Listeners.Add(eventName, newListenerList);
+            }
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            listenerList.Add(listener);
+        }
+
+        public static void Unbind(string eventName, Action<float> listener)
+        {
+            List<Action<float>> listenerList;
+            bool foundListeners;
+
+            if (!Listeners.ContainsKey(eventName))
+            {
+                return;
+            }
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            listenerList.Remove(listener);
+        }
+
+        public static void Dispatch(string eventName, float value)
+        {
+            List<Action<float>> listenerList;
+            bool foundListeners;
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            if (!foundListeners)
+            {
+                return;
+            }
+
+            for (var i = listenerList.Count - 1; i >= 0; i--)
+            {
+                listenerList[i](value);
+            }
+        }
+
+        public static void Unlock(string eventName)
+        {
+            BlockedButtons.Remove(eventName);
+            BlockedKeys.Remove(eventName);
+        }
+    }
+}
diff --git a/SuperPolarityMac/LetterChooseWidget.cs b/SuperPolarityMac/LetterChooseWidget.cs
new file mode 100644 (file)
index 0000000..e52733f
--- /dev/null
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class LetterChooseWidget : Widget
+    {
+        int CurrentChar;
+        bool Locked;
+        int LockRate;
+        int CurrentTime;
+
+        SpriteFont Font;
+
+        public LetterChooseWidget(SuperPolarity game, Vector2 position) : base(game, position)
+        {
+            Active = false;
+            CurrentChar = 65;
+            Font = game.Content.Load<SpriteFont>("Fonts\\bigfont");
+            LockRate = 300;
+            CurrentTime = 0;
+
+            InputController.Bind("moveY", HandleMovement);
+        }
+
+        public void HandleMovement(float value)
+        {
+            if (!Active) { return; }
+
+            if (value > 0.8 && !Locked) {
+                CurrentChar = CurrentChar + 1;
+
+                if (CurrentChar > 90)
+                {
+                    CurrentChar = 32;
+                }
+
+                Locked = true;
+            }
+
+            if (value < -0.8 && !Locked) {
+                CurrentChar = CurrentChar - 1;
+
+                if (CurrentChar < 32)
+                {
+                    CurrentChar = 90;
+                }
+
+                Locked = true;
+            }
+        }
+
+        public override void Update(GameTime gameTime)
+        {
+            base.Update(gameTime);
+
+            CurrentTime = CurrentTime + gameTime.ElapsedGameTime.Milliseconds;
+            if (CurrentTime > LockRate)
+            {
+                CurrentTime = 0;
+                Locked = false;
+            }
+        }
+
+        public string Value()
+        {
+            return char.ConvertFromUtf32(CurrentChar);
+        }
+
+        public override void Draw(SpriteBatch spriteBatch)
+        {
+            var color = new Color(0, 0, 0, 128);
+            if (Active)
+            {
+                color = new Color(201, 0, 68, 255);
+            }
+            spriteBatch.DrawString(Font, Value(), Position, color);
+        }
+    }
+}
diff --git a/SuperPolarityMac/Main.cs b/SuperPolarityMac/Main.cs
deleted file mode 100644 (file)
index f21bf0b..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using MonoMac.AppKit;
-using MonoMac.Foundation;
-
-namespace SuperPolarityMac
-{
-       static class Program
-       {
-               /// <summary>
-               /// The main entry point for the application.
-               /// </summary>
-               static void Main (string[] args)
-               {
-                       NSApplication.Init ();
-                       
-                       using (var p = new NSAutoreleasePool ()) {
-                               NSApplication.SharedApplication.Delegate = new AppDelegate ();
-                               NSApplication.Main (args);
-                       }
-
-
-               }
-       }
-
-       class AppDelegate : NSApplicationDelegate
-       {
-               Game1 game;
-
-               public override void FinishedLaunching (MonoMac.Foundation.NSObject notification)
-               {
-                       game = new Game1 ();
-                       game.Run ();
-               }
-
-               public override bool ApplicationShouldTerminateAfterLastWindowClosed (NSApplication sender)
-               {
-                       return true;
-               }
-       }
-}
-
-
diff --git a/SuperPolarityMac/MenuItem.cs b/SuperPolarityMac/MenuItem.cs
new file mode 100644 (file)
index 0000000..8e24c97
--- /dev/null
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace SuperPolarity
+{
+    class MenuItem
+    {
+    }
+}
diff --git a/SuperPolarityMac/MenuWidget.cs b/SuperPolarityMac/MenuWidget.cs
new file mode 100644 (file)
index 0000000..992ef43
--- /dev/null
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace SuperPolarity
+{
+    class MenuWidget
+    {
+    }
+}
diff --git a/SuperPolarityMac/NameChooserWidget.cs b/SuperPolarityMac/NameChooserWidget.cs
new file mode 100644 (file)
index 0000000..ce7c149
--- /dev/null
@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class NameChooserWidget : Widget
+    {
+        int CurrentIndex;
+        bool Lock;
+        int LockRate;
+        int CurrentTime;
+
+        public NameChooserWidget(SuperPolarity game, Vector2 position)
+            : base(game, position)
+        {
+            AppendChild(new LetterChooseWidget(game, new Vector2(position.X, position.Y)));
+            AppendChild(new LetterChooseWidget(game, new Vector2(position.X + 32, position.Y)));
+            AppendChild(new LetterChooseWidget(game, new Vector2(position.X + 64, position.Y)));
+            CurrentIndex = 0;
+            Children[CurrentIndex].Activate();
+            LockRate = 300;
+            CurrentTime = 0;
+
+            InputController.Bind("moveX", HandleMovement);
+        }
+
+        public override void Update(GameTime gameTime)
+        {
+            base.Update(gameTime);
+
+            CurrentTime = CurrentTime + gameTime.ElapsedGameTime.Milliseconds;
+            if (CurrentTime > LockRate)
+            {
+                CurrentTime = 0;
+                Lock = false;
+            }
+
+            foreach (LetterChooseWidget widget in Children)
+            {
+                widget.Update(gameTime);
+            }
+        }
+
+        public void HandleMovement(float value)
+        {
+            if (value > 0.8 && !Lock)
+            {
+                Children[CurrentIndex].Deactivate();
+                CurrentIndex = CurrentIndex + 1;
+
+                if (CurrentIndex > Children.Count - 1)
+                {
+                    CurrentIndex = 0;
+                }
+
+                Lock = true;
+            }
+
+            if (value < -0.8 && !Lock)
+            {
+                Children[CurrentIndex].Deactivate();
+                CurrentIndex = CurrentIndex - 1;
+
+                if (CurrentIndex < 0)
+                {
+                    CurrentIndex = Children.Count - 1;
+                }
+
+                Lock = true;
+            }
+
+            Children[CurrentIndex].Activate();
+        }
+
+        public string Value()
+        {
+            var name = "";
+
+            foreach (LetterChooseWidget letter in Children)
+            {
+                name = name + letter.Value();
+            }
+
+            return name;
+        }
+
+        public override void Draw(SpriteBatch spriteBatch)
+        {
+            foreach (LetterChooseWidget widget in Children)
+            {
+                widget.Draw(spriteBatch);
+            }
+        }
+    }
+}
diff --git a/SuperPolarityMac/Particle.cs b/SuperPolarityMac/Particle.cs
new file mode 100644 (file)
index 0000000..d65bac6
--- /dev/null
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class Particle
+    {
+        public Texture2D Texture  { get; set; }
+        public Vector2 Position { get; set; }
+        public Vector2 Velocity { get; set; }
+        public float Angle { get; set; }
+        public float AngularVelocity { get; set; }
+        public Color Color { get; set; }
+        public float Size { get; set; }
+        public int TTL { get; set; }
+
+        public Particle(Texture2D texture, Vector2 position, Vector2 velocity,
+            float angle, float angularVelocity, Color color, float size, int ttl)
+        {
+            Texture = texture;
+            Position = position;
+            Velocity = velocity;
+            Angle = angle;
+            AngularVelocity = angularVelocity;
+            Color = color;
+            Size = size;
+            TTL = ttl;
+        }
+
+        public void Update()
+        {
+            TTL--;
+            Position += Velocity;
+            Angle += AngularVelocity;
+        }
+
+        public void Draw(SpriteBatch spriteBatch)
+        {
+            Rectangle sourceRectangle = new Rectangle(0, 0, Texture.Width, Texture.Height);
+            Vector2 origin = new Vector2(Texture.Width / 2, Texture.Height / 2);
+
+            spriteBatch.Draw(Texture, Position, sourceRectangle, Color,
+                Angle, origin, Size, SpriteEffects.None, 0f);
+        }
+
+    }
+}
diff --git a/SuperPolarityMac/ParticleEffectFactory.cs b/SuperPolarityMac/ParticleEffectFactory.cs
new file mode 100644 (file)
index 0000000..0cd9ed3
--- /dev/null
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    static class ParticleEffectFactory
+    {
+        static Game Game;
+        static Random random;
+
+        static ParticleEffectFactory()
+        {
+            random = new Random();
+        }
+
+        public static ParticleEngine CreatePolarCircle(Vector2 location)
+        {
+            List<Texture2D> texturesList = new List<Texture2D>();
+
+            //texturesList.Add(Game.Content.Load<Texture2D>("Graphics\\circle"));
+            texturesList.Add(Game.Content.Load<Texture2D>("Graphics\\diamond"));
+            texturesList.Add(Game.Content.Load<Texture2D>("Graphics\\square"));
+
+            ParticleEngine particleEngine = new ParticleEngine(texturesList, location);
+
+            particleEngine.Color = new Color(239, 203, 204);
+            particleEngine.TTL = 10;
+            particleEngine.TTLRandomFactor = 5;
+            particleEngine.ScatterFactor = 40;
+            particleEngine.ParticleCount = 50;
+            particleEngine.StretchFactor = 2.8f;
+
+
+            return particleEngine;
+        }
+
+        public static ParticleEngine CreateBullet(Vector2 location)
+        {
+            List<Texture2D> texturesList = new List<Texture2D>();
+
+            texturesList.Add(Game.Content.Load<Texture2D>("Graphics\\circle"));
+            //texturesList.Add(Game.Content.Load<Texture2D>("Graphics\\diamond"));
+            texturesList.Add(Game.Content.Load<Texture2D>("Graphics\\square"));
+
+            ParticleEngine particleEngine = new ParticleEngine(texturesList, location);
+
+            particleEngine.Color = Color.Gray;
+            particleEngine.TTL = 5;
+            particleEngine.TTLRandomFactor = 5;
+            particleEngine.ScatterFactor = 5;
+            particleEngine.ParticleCount = 10;
+            particleEngine.StretchFactor = 1;
+
+            return particleEngine;
+        }
+
+        internal static void SetGame(Game game)
+        {
+            ParticleEffectFactory.Game = game;
+        }
+    }
+}
diff --git a/SuperPolarityMac/ParticleEngine.cs b/SuperPolarityMac/ParticleEngine.cs
new file mode 100644 (file)
index 0000000..51188ae
--- /dev/null
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class ParticleEngine
+    {
+        private Random random;
+        public Vector2 EmitterLocation { get; set; }
+        public Color Color; //TODO: Color list for random colors.
+        public int TTL;
+        public int TTLRandomFactor;
+        public int ScatterFactor;
+        public int ParticleCount;
+        public float StretchFactor;
+        private List<Particle> particles;
+        private List<Texture2D> textures;
+
+        public ParticleEngine(List<Texture2D> textures, Vector2 location)
+        {
+            EmitterLocation = location;
+            this.textures = textures;
+            this.particles = new List<Particle>();
+            random = new Random();
+            Color = Color.Red;
+            TTL = 20;
+            TTLRandomFactor = 40;
+            StretchFactor = 1;
+        }
+
+        private Particle GenerateNewParticle()
+        {
+            Texture2D texture = textures[random.Next(textures.Count)];
+            Vector2 position = EmitterLocation;
+            Vector2 velocity = new Vector2(
+                1f * (float)(random.NextDouble() * 2 - 1),
+                1f * (float)(random.NextDouble() * 2 - 1));
+
+            float angle = 0;
+            float angularVelocity = 0.1f * (float)(random.NextDouble() * 2 - 1);
+            Color color = Color;
+            float size = (float)random.NextDouble() * StretchFactor;
+
+            position.X += random.Next(-ScatterFactor, ScatterFactor);
+            position.Y += random.Next(-ScatterFactor, ScatterFactor);
+
+            int ttl = TTL + random.Next(TTLRandomFactor);
+
+            return new Particle(texture, position, velocity, angle, angularVelocity, color, size, ttl);
+        }
+
+        public void Update()
+        {
+            int total = 10;
+
+            for (int i = 0; i < total; i++)
+            {
+                particles.Add(GenerateNewParticle());
+            }
+
+            for (int particle = 0; particle < particles.Count; particle++)
+            {
+                particles[particle].Update();
+                if (particles[particle].TTL <= 0)
+                {
+                    particles.RemoveAt(particle);
+                    particle--;
+                }
+            }
+        }
+
+        public void Draw(SpriteBatch spriteBatch)
+        {
+            //spriteBatch.Begin();
+            for (int index = 0; index < particles.Count; index++)
+            {
+                particles[index].Draw(spriteBatch);
+            }
+            //spriteBatch.End();
+        }
+    }
+}
diff --git a/SuperPolarityMac/Player.cs b/SuperPolarityMac/Player.cs
new file mode 100644 (file)
index 0000000..184abdd
--- /dev/null
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    public class Player
+    {
+        public int Score;
+        public int Multiplier;
+        public int Lives;
+
+
+        SpriteFont DebugFont;
+        SuperPolarity Game;
+
+        Texture2D LifeSprite;
+
+        public Player(SuperPolarity game)
+        {
+            Score = 0;
+            Multiplier = 1;
+            Lives = 3;
+            Game = game;
+            DebugFont = Game.Content.Load<SpriteFont>("Fonts\\bigfont");
+            LifeSprite = Game.Content.Load<Texture2D>("Graphics\\neutral-ship");
+        }
+
+        public void AddScore(int value)
+        {
+            Score = Score + (value * Multiplier);
+        }
+
+        public void AddMultiplier(int value)
+        {
+            Multiplier = Multiplier + 1;
+        }
+
+        public void ResetMultiplier()
+        {
+            Multiplier = 1;
+        }
+
+        public void Draw(SpriteBatch spriteBatch)
+        {
+            var UiColor = new Color(0, 0, 0, 200);
+            var lightColor = new Color(0, 0, 0, 128);
+            spriteBatch.DrawString(DebugFont, Score.ToString(), new Vector2(40, 30), UiColor);
+            spriteBatch.DrawString(DebugFont, "x" + Multiplier.ToString(), new Vector2(40, 50), lightColor);
+
+            var lifePosition = new Vector2(Game.GraphicsDevice.Viewport.Width - 140, 30);
+            if (Lives > 4)
+            {
+                spriteBatch.Draw(LifeSprite, lifePosition, null, UiColor, (float)(Math.PI / 2), Vector2.Zero, 0.5f, SpriteEffects.None, 0f);
+                spriteBatch.DrawString(DebugFont, "x " + Lives.ToString(), new Vector2(lifePosition.X + 8, lifePosition.Y + 5), UiColor);
+            }
+            else
+            {
+                for (var i = 0; i < Lives; i++)
+                {
+                    spriteBatch.Draw(LifeSprite, new Vector2(lifePosition.X + (i * 28), lifePosition.Y), null, UiColor, (float)(Math.PI / 2), Vector2.Zero, 0.5f, SpriteEffects.None, 0f);
+                }
+            }
+        }
+
+        public void Update()
+        {
+
+        }
+
+        public void Reset()
+        {
+            Score = 0;
+            Multiplier = 1;
+            Lives = 3;
+        }
+    }
+}
diff --git a/SuperPolarityMac/Program.cs b/SuperPolarityMac/Program.cs
new file mode 100644 (file)
index 0000000..6c3f614
--- /dev/null
@@ -0,0 +1,26 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+#endregion
+
+namespace SuperPolarity
+{
+#if WINDOWS || LINUX
+    /// <summary>
+    /// The main class.
+    /// </summary>
+    public static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            using (var superPolarity = new SuperPolarity())
+                superPolarity.Run();
+        }
+    }
+#endif
+}
diff --git a/SuperPolarityMac/Properties/AssemblyInfo.cs b/SuperPolarityMac/Properties/AssemblyInfo.cs
deleted file mode 100644 (file)
index d61ed27..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes. 
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("SuperPolarityMac")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("benbeltran")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("1.0.0")]
-
-// The following attributes are used to specify the signing key for the assembly, 
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/SuperPolarityMac/Renderer.cs b/SuperPolarityMac/Renderer.cs
new file mode 100644 (file)
index 0000000..7ca8158
--- /dev/null
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class Renderer
+    {
+        
+        static List<Actor> Actors;
+
+        static Renderer()
+        {
+            Actors = new List<Actor>();
+        }
+
+        static public void CheckIn(Actor actor)
+        {
+            Actors.Add(actor);
+        }
+
+        static public void CheckOut(Actor actor)
+        {
+            Actors.Remove(actor);
+        }
+
+        static public void Draw(SpriteBatch spriteBatch)
+        {
+            foreach (Actor actor in Actors)
+            {
+                actor.Draw(spriteBatch);
+            }
+        }
+
+        static public void Empty()
+        {
+            Actors.Clear();
+        }
+    }
+}
diff --git a/SuperPolarityMac/ScoreScreen.cs b/SuperPolarityMac/ScoreScreen.cs
new file mode 100644 (file)
index 0000000..bf43275
--- /dev/null
@@ -0,0 +1,108 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace SuperPolarity
+{
+    class ScoreScreen : Screen
+    {
+        protected SpriteFont Font;
+        protected NameChooserWidget nameChooser;
+        protected Dictionary<string, int> Scores;
+
+        public ScoreScreen(SuperPolarity newGame) : base(newGame) { }
+
+        public override void Initialize()
+        {
+            base.Initialize();
+            nameChooser = new NameChooserWidget(Game, new Vector2(40, Game.GraphicsDevice.Viewport.Height / 4));
+            InputController.RegisterEventForButton("OK", Buttons.A);
+            InputController.RegisterEventForKey("OK", Keys.Z);
+            Scores = new Dictionary<string, int>();
+            ReadScore();
+        }
+
+        public override void LoadContent()
+        {
+            base.LoadContent();
+            Font = Game.Content.Load<SpriteFont>("Fonts\\bigfont");
+            InputController.Bind("OK", HandleNext);
+        }
+
+        public void HandleNext(float value)
+        {
+            if (!Active) { return; }
+            WriteScore();
+            ScreenManager.Pop();
+        }
+
+        public void WriteScore()
+        {
+            using (StreamWriter swriter = new StreamWriter("scores.txt", true))
+            {
+                swriter.WriteLine(nameChooser.Value() + "," + Game.Player.Score.ToString());
+            }
+        }
+
+        public void ReadScore()
+        {
+            try
+            {
+                using (StreamReader sreader = new StreamReader("scores.txt"))
+                {
+                    string line = null;
+                    while ((line = sreader.ReadLine()) != null)
+                    {
+                        string[] parts = line.Split(',');
+                        Scores.Add(parts[0], int.Parse(parts[1]));
+                    }
+                }
+            }
+            catch (FileNotFoundException)
+            {
+            }
+        }
+
+        public override void CleanUp()
+        {
+            base.CleanUp();
+            Font = null;
+        }
+
+        public override void Draw(SpriteBatch spriteBatch)
+        {
+            base.Draw(spriteBatch);
+            spriteBatch.DrawString(Font, "YOUR SCORE WAS: " + Game.Player.Score.ToString(), new Vector2(40, Game.GraphicsDevice.Viewport.Height / 2), Color.Black);
+            spriteBatch.DrawString(Font, "Use Left Stick or Arrows to Choose Name Press A when done", new Vector2(40, Game.GraphicsDevice.Viewport.Height / 2 + 40), new Color(0, 0, 0, 128));
+            nameChooser.Draw(spriteBatch);
+            DrawScores(spriteBatch);
+        }
+
+        public override void Update(GameTime gameTime)
+        {
+            base.Update(gameTime);
+            InputController.UpdateInput(false);
+            nameChooser.Update(gameTime);
+        }
+
+        protected void DrawScores(SpriteBatch spriteBatch)
+        {
+            var sortedDict = (from entry in Scores orderby entry.Value descending select entry)
+                .Take(5)
+                .ToDictionary(pair => pair.Key, pair => pair.Value);
+
+            var i = 0;
+
+            foreach (KeyValuePair<string, int> entry in sortedDict) {
+                i++;
+                spriteBatch.DrawString(Font, entry.Key + " " + entry.Value, new Vector2(40, Game.GraphicsDevice.Viewport.Height / 2 + 100 + (32 * i)), new Color(0, 0, 0, 64));
+            }
+
+        }
+    }
+}
diff --git a/SuperPolarityMac/Screen.cs b/SuperPolarityMac/Screen.cs
new file mode 100644 (file)
index 0000000..006b047
--- /dev/null
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class Screen
+    {
+        protected SuperPolarity Game;
+        public bool Active;
+        public Screen(SuperPolarity game)
+        {
+            Active = false;
+            Game = game;
+        }
+
+        public virtual void Update(GameTime gameTime)
+        {
+        }
+
+        public virtual void Draw(SpriteBatch spriteBatch)
+        {
+        }
+
+        public virtual void LoadContent()
+        {
+        }
+
+        public virtual void Initialize()
+        {
+        }
+
+        public virtual void CleanUp()
+        {
+        }
+    }
+}
diff --git a/SuperPolarityMac/ScreenManager.cs b/SuperPolarityMac/ScreenManager.cs
new file mode 100644 (file)
index 0000000..b88741b
--- /dev/null
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    static class ScreenManager
+    {
+        static Stack<Screen> Screens;
+        static SuperPolarity Game;
+
+        static ScreenManager()
+        {
+            Screens = new Stack<Screen>();
+        }
+
+        static public void Push(Screen screen)
+        {
+            if (Screens.Count > 0)
+            {
+                Screens.Peek().Active = false;
+            }
+
+            screen.LoadContent();
+            screen.Active = true;
+            Screens.Push(screen);
+        }
+
+        static public void Pop()
+        {
+            var screen = Screens.Pop();
+            screen.Active = false;
+            screen.CleanUp();
+            Screens.Peek().Active = true;
+        }
+
+        static public void Update(GameTime gameTime)
+        {
+            Screens.Peek().Update(gameTime);
+        }
+
+        static public void Draw(SpriteBatch spriteBatch)
+        {
+            Screens.Peek().Draw(spriteBatch);
+        }
+
+        internal static void SetGame(SuperPolarity game)
+        {
+            Game = game;
+        }
+    }
+}
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);
+        }
+    }
+}
diff --git a/SuperPolarityMac/TitleScreen.cs b/SuperPolarityMac/TitleScreen.cs
new file mode 100644 (file)
index 0000000..a953f27
--- /dev/null
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class TitleScreen : Screen
+    {
+        protected Texture2D TitleImage;
+
+        public TitleScreen(SuperPolarity newGame) : base(newGame) {}
+
+        public override void LoadContent()
+        {
+            base.LoadContent();
+            TitleImage = Game.Content.Load<Texture2D>("Graphics\\polaritydemotitle");
+            InputController.Bind("pause", HandleStart);
+        }
+
+        public void HandleStart(float value)
+        {
+            if (!Active) { return; }
+            Game.Player.Reset();
+            var gameScreen = new GameScreen(Game);
+            gameScreen.Initialize();
+            ScreenManager.Push(gameScreen);
+        }
+
+        public override void CleanUp()
+        {
+            base.CleanUp();
+            TitleImage = null;
+        }
+
+        public override void Draw(SpriteBatch spriteBatch)
+        {
+            base.Draw(spriteBatch);
+            spriteBatch.Draw(TitleImage, new Vector2(0, 0), Color.White);
+        }
+
+        public override void Update(GameTime gameTime)
+        {
+            base.Update(gameTime);
+            InputController.UpdateInput(false);
+        }
+    }
+}
diff --git a/SuperPolarityMac/Widget.cs b/SuperPolarityMac/Widget.cs
new file mode 100644 (file)
index 0000000..ea92cfd
--- /dev/null
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+    class Widget
+    {
+        public List<Widget> Children;
+        public Dictionary<string, List<Action<float>>> Listeners;
+
+        public Vector2 Position;
+        public SuperPolarity Game;
+
+        protected bool Active;
+
+        public Widget(SuperPolarity game, Vector2 position)
+        {
+            Game = game;
+            Position = position;
+            Active = false;
+            Children = new List<Widget>();
+            Listeners = new Dictionary<string, List<Action<float>>>();
+        }
+
+        public void Activate()
+        {
+            Active = true;
+        }
+
+        public void Deactivate()
+        {
+            Active = false;
+        }
+
+        public virtual void AppendChild(Widget widget)
+        {
+            Children.Add(widget);
+        }
+
+        public virtual void Bind(string eventName, Action<float> eventListener)
+        {
+            List<Action<float>> newListenerList;
+            List<Action<float>> listenerList;
+            bool foundListeners;
+
+            if (!Listeners.ContainsKey(eventName))
+            {
+                newListenerList = new List<Action<float>>();
+                Listeners.Add(eventName, newListenerList);
+            }
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            listenerList.Add(eventListener);
+        }
+
+        public virtual void Unbind(string eventName, Action<float> eventListener)
+        {
+            // NOT YET IMPLEMENTED;
+        }
+
+        public virtual void Dispatch(string eventName, float value)
+        {
+            List<Action<float>> listenerList;
+            bool foundListeners;
+
+            foundListeners = Listeners.TryGetValue(eventName, out listenerList);
+
+            if (!foundListeners)
+            {
+                return;
+            }
+
+            foreach (Action<float> method in listenerList)
+            {
+                method(value);
+            }
+        }
+
+        public virtual void Update(GameTime gameTime)
+        {
+        }
+
+        public virtual void Draw(SpriteBatch spriteBatch)
+        {
+        }
+    }
+}
diff --git a/SuperPolarityMac/neutral-supercruiser.xnb b/SuperPolarityMac/neutral-supercruiser.xnb
new file mode 100644 (file)
index 0000000..1389842
Binary files /dev/null and b/SuperPolarityMac/neutral-supercruiser.xnb differ