From: Ben Beltran Date: Mon, 3 Feb 2014 15:51:07 +0000 (-0600) Subject: Merge branch 'master' of github.com:benbeltran/super-polarity X-Git-Url: https://git.r.bdr.sh/rbdr/super-polarity/commitdiff_plain/3de51c6f55d304f038df1b77c8ab346e2a187fe1?hp=8534e46e400268c5ceffb3b14f02cef39eedae8f Merge branch 'master' of github.com:benbeltran/super-polarity Conflicts: .gitignore --- diff --git a/.gitignore b/.gitignore index 0331bbb..3d43fd7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +<<<<<<< HEAD # Object files *.o @@ -15,3 +16,156 @@ *.exe *.out *.app +======= +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets +!packages/*/build/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +# ========================= +# Windows detritus +# ========================= + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store +>>>>>>> bca44639c27169b0643de1b56361e6c2958d1d4a diff --git a/Super Polarity Content/Super Polarity Content/Super Polarity Content.csproj b/Super Polarity Content/Super Polarity Content/Super Polarity Content.csproj new file mode 100644 index 0000000..4cc2f56 --- /dev/null +++ b/Super Polarity Content/Super Polarity Content/Super Polarity Content.csproj @@ -0,0 +1,65 @@ + + + + + {8528C189-5B94-48F8-8C64-D4D6658E52F6} + {6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Windows + x86 + Library + Properties + ContentBuilder + IgnoreMe + v4.0 + Client + v4.0 + bin\$(Configuration) + Windows + HiDef + 70f11b5f-d758-4efc-943f-95989437d224 + Library + x86 + false + + + Windows + + + Windows8 + + + Android + + + iOS + + + OSX + + + Linux + + + PSM + + + + + + + {468F8415-7D38-4718-B0B4-E18F1A427136} + Super Polarity ContentContent %28Content%29 + Content + + + + + + \ No newline at end of file diff --git a/Super Polarity Content/Super Polarity ContentContent/Fonts/SegoeUIMono14.spritefont b/Super Polarity Content/Super Polarity ContentContent/Fonts/SegoeUIMono14.spritefont new file mode 100644 index 0000000..6c68f5d --- /dev/null +++ b/Super Polarity Content/Super Polarity ContentContent/Fonts/SegoeUIMono14.spritefont @@ -0,0 +1,60 @@ + + + + + + + Segoe UI Mono + + + 14 + + + 0 + + + true + + + + + + + + + + + + ~ + + + + diff --git a/Super Polarity Content/Super Polarity ContentContent/Fonts/bigfont.png b/Super Polarity Content/Super Polarity ContentContent/Fonts/bigfont.png new file mode 100644 index 0000000..67307dd Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Fonts/bigfont.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Fonts/smallfont.png b/Super Polarity Content/Super Polarity ContentContent/Fonts/smallfont.png new file mode 100644 index 0000000..51a2c14 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Fonts/smallfont.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/circle.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/circle.png new file mode 100644 index 0000000..ede9996 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/circle.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/diamond.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/diamond.png new file mode 100644 index 0000000..f06a523 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/diamond.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/main-ship.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/main-ship.png new file mode 100644 index 0000000..168ce43 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/main-ship.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-cruiser.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-cruiser.png new file mode 100644 index 0000000..0461e90 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-cruiser.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-destroyer.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-destroyer.png new file mode 100644 index 0000000..25244f2 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-destroyer.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-scout.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-scout.png new file mode 100644 index 0000000..fdc372b Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-scout.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-ship.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-ship.png new file mode 100644 index 0000000..1407d5d Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-ship.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-supercruiser.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-supercruiser.png new file mode 100644 index 0000000..344ef93 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/negative-supercruiser.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-cruiser.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-cruiser.png new file mode 100644 index 0000000..3f5be69 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-cruiser.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-destroyer.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-destroyer.png new file mode 100644 index 0000000..458ec8e Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-destroyer.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-scout.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-scout.png new file mode 100644 index 0000000..e7a1364 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-scout.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-ship.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-ship.png new file mode 100644 index 0000000..6b0a767 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-ship.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-supercruiser.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-supercruiser.png new file mode 100644 index 0000000..183b71c Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/neutral-supercruiser.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/pause-screen.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/pause-screen.png new file mode 100644 index 0000000..0d6db73 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/pause-screen.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/polaritydemotitle.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/polaritydemotitle.png new file mode 100644 index 0000000..10a9b92 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/polaritydemotitle.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-cruiser.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-cruiser.png new file mode 100644 index 0000000..62da8bc Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-cruiser.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-destroyer.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-destroyer.png new file mode 100644 index 0000000..735d473 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-destroyer.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-scout.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-scout.png new file mode 100644 index 0000000..1970625 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-scout.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-ship.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-ship.png new file mode 100644 index 0000000..9d07a8c Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-ship.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-supercruiser.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-supercruiser.png new file mode 100644 index 0000000..6b2a77b Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/positive-supercruiser.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/square.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/square.png new file mode 100644 index 0000000..960c50a Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/square.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Graphics/star.png b/Super Polarity Content/Super Polarity ContentContent/Graphics/star.png new file mode 100644 index 0000000..4f207f4 Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Graphics/star.png differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Sound/polaritytheme.wav b/Super Polarity Content/Super Polarity ContentContent/Sound/polaritytheme.wav new file mode 100644 index 0000000..28a6bce Binary files /dev/null and b/Super Polarity Content/Super Polarity ContentContent/Sound/polaritytheme.wav differ diff --git a/Super Polarity Content/Super Polarity ContentContent/Super Polarity ContentContent.contentproj b/Super Polarity Content/Super Polarity ContentContent/Super Polarity ContentContent.contentproj new file mode 100644 index 0000000..12417a2 --- /dev/null +++ b/Super Polarity Content/Super Polarity ContentContent/Super Polarity ContentContent.contentproj @@ -0,0 +1,192 @@ + + + + {468F8415-7D38-4718-B0B4-E18F1A427136} + {96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Windows + x86 + Library + Properties + Super_Polarity_ContentContentContent + v4.0 + v4.0 + Windows + bin\$(MonoGamePlatform)\$(Configuration) + Content + x86 + + + Windows + + + Windows8 + + + Android + + + iOS + + + OSX + + + Linux + + + PSM + + + + + + + + + + $(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGameContentProcessors.dll + + + + + main-ship + TextureProcessor + + + negative-cruiser + TextureProcessor + + + negative-destroyer + TextureProcessor + + + negative-scout + TextureProcessor + + + negative-supercruiser + TextureProcessor + + + neutral-cruiser + TextureProcessor + + + neutral-destroyer + TextureProcessor + + + neutral-scout + TextureProcessor + + + neutral-ship + TextureProcessor + + + neutral-supercruiser + TextureProcessor + + + positive-cruiser + TextureProcessor + + + positive-destroyer + TextureProcessor + + + positive-scout + TextureProcessor + + + positive-ship + TextureProcessor + + + positive-supercruiser + TextureProcessor + + + + + pause-screen + TextureImporter + TextureProcessor + + + + + circle + TextureImporter + TextureProcessor + + + diamond + TextureImporter + TextureProcessor + + + star + TextureImporter + TextureProcessor + + + + + negative-ship + TextureImporter + TextureProcessor + + + + + square + TextureImporter + TextureProcessor + + + + + SegoeUIMono14 + FontDescriptionImporter + FontDescriptionProcessor + + + + + polaritytheme + WavImporter + SongProcessor + + + + + polaritydemotitle + TextureImporter + TextureProcessor + + + + + bigfont + TextureImporter + FontTextureProcessor + + + smallfont + TextureImporter + FontTextureProcessor + + + + + \ No newline at end of file diff --git a/Super Polarity.sln b/Super Polarity.sln new file mode 100644 index 0000000..6742318 --- /dev/null +++ b/Super Polarity.sln @@ -0,0 +1,162 @@ + +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}" +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}" +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}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Android|Any CPU = Android|Any CPU + Android|Mixed Platforms = Android|Mixed Platforms + Android|x86 = Android|x86 + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + iOS|Any CPU = iOS|Any CPU + iOS|Mixed Platforms = iOS|Mixed Platforms + iOS|x86 = iOS|x86 + Linux|Any CPU = Linux|Any CPU + Linux|Mixed Platforms = Linux|Mixed Platforms + Linux|x86 = Linux|x86 + OSX|Any CPU = OSX|Any CPU + OSX|Mixed Platforms = OSX|Mixed Platforms + OSX|x86 = OSX|x86 + PSM|Any CPU = PSM|Any CPU + PSM|Mixed Platforms = PSM|Mixed Platforms + PSM|x86 = PSM|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + Windows|Any CPU = Windows|Any CPU + Windows|Mixed Platforms = Windows|Mixed Platforms + Windows|x86 = Windows|x86 + Windows8|Any CPU = Windows8|Any CPU + Windows8|Mixed Platforms = Windows8|Mixed Platforms + Windows8|x86 = Windows8|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2585188B-339D-44CD-9599-1A80AA30DE13}.Android|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Android|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Android|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Android|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Android|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Debug|Any CPU.ActiveCfg = Debug|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Debug|x86.ActiveCfg = Debug|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Debug|x86.Build.0 = Debug|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.iOS|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.iOS|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.iOS|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.iOS|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.iOS|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Linux|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Linux|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Linux|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Linux|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Linux|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.OSX|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.OSX|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.OSX|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.OSX|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.OSX|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.PSM|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.PSM|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.PSM|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.PSM|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.PSM|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Release|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Release|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Release|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Release|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows|x86.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows8|Any CPU.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows8|Mixed Platforms.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows8|Mixed Platforms.Build.0 = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows8|x86.ActiveCfg = Release|x86 + {2585188B-339D-44CD-9599-1A80AA30DE13}.Windows8|x86.Build.0 = Release|x86 + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Android|Any CPU.ActiveCfg = Android|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Android|Any CPU.Build.0 = Android|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Android|Mixed Platforms.ActiveCfg = Android|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Android|Mixed Platforms.Build.0 = Android|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Android|x86.ActiveCfg = Android|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Debug|Any CPU.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Debug|Any CPU.Build.0 = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Debug|Mixed Platforms.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Debug|Mixed Platforms.Build.0 = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Debug|x86.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.iOS|Any CPU.ActiveCfg = iOS|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.iOS|Any CPU.Build.0 = iOS|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.iOS|Mixed Platforms.ActiveCfg = iOS|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.iOS|Mixed Platforms.Build.0 = iOS|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.iOS|x86.ActiveCfg = iOS|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Linux|Any CPU.ActiveCfg = Linux|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Linux|Any CPU.Build.0 = Linux|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Linux|Mixed Platforms.ActiveCfg = Linux|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Linux|Mixed Platforms.Build.0 = Linux|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Linux|x86.ActiveCfg = Linux|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.OSX|Any CPU.ActiveCfg = OSX|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.OSX|Any CPU.Build.0 = OSX|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.OSX|Mixed Platforms.ActiveCfg = OSX|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.OSX|Mixed Platforms.Build.0 = OSX|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.OSX|x86.ActiveCfg = OSX|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.PSM|Any CPU.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.PSM|Any CPU.Build.0 = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.PSM|Mixed Platforms.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.PSM|Mixed Platforms.Build.0 = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.PSM|x86.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Release|Any CPU.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Release|Any CPU.Build.0 = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Release|Mixed Platforms.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Release|Mixed Platforms.Build.0 = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Release|x86.ActiveCfg = PSM|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows|Any CPU.ActiveCfg = Windows|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows|Any CPU.Build.0 = Windows|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows|Mixed Platforms.ActiveCfg = Windows|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows|Mixed Platforms.Build.0 = Windows|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows|x86.ActiveCfg = Windows|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows8|Any CPU.ActiveCfg = Windows8|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows8|Any CPU.Build.0 = Windows8|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows8|Mixed Platforms.ActiveCfg = Windows8|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows8|Mixed Platforms.Build.0 = Windows8|Any CPU + {8528C189-5B94-48F8-8C64-D4D6658E52F6}.Windows8|x86.ActiveCfg = Windows8|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Android|Any CPU.ActiveCfg = Android|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Android|Mixed Platforms.ActiveCfg = Android|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Android|x86.ActiveCfg = Android|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Debug|Any CPU.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Debug|Mixed Platforms.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Debug|x86.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.iOS|Any CPU.ActiveCfg = iOS|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.iOS|Mixed Platforms.ActiveCfg = iOS|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.iOS|x86.ActiveCfg = iOS|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Linux|Any CPU.ActiveCfg = Linux|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Linux|Mixed Platforms.ActiveCfg = Linux|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Linux|x86.ActiveCfg = Linux|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.OSX|Any CPU.ActiveCfg = OSX|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.OSX|Mixed Platforms.ActiveCfg = OSX|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.OSX|x86.ActiveCfg = OSX|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.PSM|Any CPU.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.PSM|Mixed Platforms.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.PSM|x86.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Release|Any CPU.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Release|Mixed Platforms.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Release|x86.ActiveCfg = PSM|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Windows|Any CPU.ActiveCfg = Windows|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Windows|Mixed Platforms.ActiveCfg = Windows|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Windows|x86.ActiveCfg = Windows|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Windows8|Any CPU.ActiveCfg = Windows8|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Windows8|Mixed Platforms.ActiveCfg = Windows8|Any CPU + {468F8415-7D38-4718-B0B4-E18F1A427136}.Windows8|x86.ActiveCfg = Windows8|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Super Polarity.suo b/Super Polarity.suo new file mode 100644 index 0000000..360a22a Binary files /dev/null and b/Super Polarity.suo differ diff --git a/Super Polarity/ActorFactory.cs b/Super Polarity/ActorFactory.cs new file mode 100644 index 0000000..f9c7697 --- /dev/null +++ b/Super Polarity/ActorFactory.cs @@ -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("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("Graphics\\positive-ship"); + } + else if (polarity == Ship.Polarity.Negative) + { + texture = Game.Content.Load("Graphics\\negative-ship"); + } + else + { + texture = Game.Content.Load("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("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("Graphics\\positive-scout"); + } + else if (polarity == Ship.Polarity.Negative) + { + texture = Game.Content.Load("Graphics\\negative-scout"); + } + else + { + texture = Game.Content.Load("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("Graphics\\positive-cruiser"); + } + else if (polarity == Ship.Polarity.Negative) + { + texture = Game.Content.Load("Graphics\\negative-cruiser"); + } + else + { + texture = Game.Content.Load("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/Super Polarity/ActorManager.cs b/Super Polarity/ActorManager.cs new file mode 100644 index 0000000..f5587b9 --- /dev/null +++ b/Super Polarity/ActorManager.cs @@ -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 Actors; + + static ActorManager() + { + OutlierBounds = 100; + Actors = new List(); + } + + 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/Super Polarity/Actors/Actor.cs b/Super Polarity/Actors/Actor.cs new file mode 100644 index 0000000..3bb06be --- /dev/null +++ b/Super Polarity/Actors/Actor.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; + +namespace SuperPolarity +{ + class Actor + { + protected SuperPolarity game; + + public List Children; + + // Graphics / In-Game + protected Texture2D Texture; + protected Vector2 Origin; + public bool Active; + public Rectangle Box; + public Vector4 BoxDimensions; + protected Texture2D BoxTexture; + + // Physical Properties + public Vector2 Position; + protected Vector2 Velocity; + protected Vector2 Acceleration; + public float Angle; + + // Constraints / Behavior + public float MaxVelocity; + protected float AccelerationRate; + public int HP; + protected bool Immortal; + public bool Dying; + public int Value; + protected Color Color; + + public Actor Parent; + + public int Width + { + get { return Texture.Width; } + } + + public int Height + { + get { return Texture.Height; } + } + + public Actor(SuperPolarity newGame) + { + game = newGame; + BoxDimensions.X = 20; + BoxDimensions.Y = 20; + BoxDimensions.W = 15; + BoxDimensions.Z = 15; + } + + public virtual void Initialize(Texture2D texture, Vector2 position) + { + Texture = texture; + Position = position; + Active = true; + + Children = new List(); + + Origin = new Vector2(Texture.Width / 2, Texture.Height / 2); + Velocity = new Vector2(0, 0); + Acceleration = new Vector2(0, 0); + + MaxVelocity = 5; + AccelerationRate = 10; + + HP = 1; + Immortal = false; + + Dying = false; + Value = 1; + + InitBox(); + BoxTexture = new Texture2D(game.GraphicsDevice, 1, 1); + BoxTexture.SetData(new Color[] { Color.White }); + + Color = Color.White; + } + + protected void InitBox() + { + Box = new Rectangle((int)(Position.X - BoxDimensions.X), (int)(Position.Y - BoxDimensions.X), (int)(BoxDimensions.X + BoxDimensions.X + BoxDimensions.W), (int)(BoxDimensions.Y + BoxDimensions.Y + BoxDimensions.Z)); + } + + public void AutoDeccelerate(GameTime gameTime) + { + if (Acceleration.X == 0 && Velocity.X > 0) + { + if (AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds > Velocity.X) + { + Velocity.X = 0; + Acceleration.X = 0; + } + else + { + Acceleration.X = -AccelerationRate; + } + } + + if (Acceleration.X == 0 && Velocity.X < 0) + { + if (-AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds < Velocity.X) + { + Velocity.X = 0; + Acceleration.X = 0; + } + else + { + Acceleration.X = AccelerationRate; + } + } + + if (Acceleration.Y == 0 && Velocity.Y > 0) + { + if (AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds > Velocity.Y) + { + Velocity.Y = 0; + Acceleration.Y = 0; + } + else + { + Acceleration.Y = -AccelerationRate; + } + } + + if (Acceleration.Y == 0 && Velocity.Y < 0) + { + if (-AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds < Velocity.Y) + { + Velocity.Y = 0; + Acceleration.Y = 0; + } + else + { + Acceleration.Y = AccelerationRate; + } + } + } + + public virtual void Update(GameTime gameTime) + { + Move(gameTime); + ChangeAngle(); + CheckOutliers(); + UpdateBox(); + } + + protected virtual void UpdateBox() + { + Box.X = (int)(Position.X - BoxDimensions.X); + Box.Y = (int)(Position.Y - BoxDimensions.Y); + } + + public virtual void Move(GameTime gameTime) + { + AutoDeccelerate(gameTime); + + var maxVelocity = MaxVelocity; + + Velocity.X = Velocity.X + Acceleration.X * (float)gameTime.ElapsedGameTime.TotalSeconds; + Velocity.Y = Velocity.Y + Acceleration.Y * (float)gameTime.ElapsedGameTime.TotalSeconds; + + if (Velocity.X > MaxVelocity) + { + Velocity.X = MaxVelocity; + } + + if (Velocity.X < -MaxVelocity) + { + Velocity.X = -MaxVelocity; + } + + if (Velocity.Y > MaxVelocity) + { + Velocity.Y = MaxVelocity; + } + + if (Velocity.Y < -MaxVelocity) + { + Velocity.Y = -MaxVelocity; + } + + Position.X = Position.X + Velocity.X; + Position.Y = Position.Y + Velocity.Y; + } + + public void ChangeAngle() + { + if (Math.Abs(Velocity.Y) <= 0.1 && Math.Abs(Velocity.X) <= 0.1) + { + return; + } + Angle = (float)Math.Atan2(Velocity.Y, Velocity.X); + } + + public virtual void Draw(SpriteBatch spriteBatch) + { + Actor child = null; + + // TODO: Check what's up with the null children. + if (Children == null) + { + return; + } + for (var i = Children.Count - 1; i >= 0; i--) + { + child = Children[i]; + child.Draw(spriteBatch); + } + + spriteBatch.Draw(Texture, Position, null, Color, Angle, Origin, 1f, SpriteEffects.None, 0f); + //spriteBatch.Draw(BoxTexture, Box, new Color(255, 0, 255, 25)); + } + + void CheckOutliers() + { + for (var i = Children.Count; i > 0; i--) + { + var actor = Children[i - 1]; + if (actor.Position.X < -SuperPolarity.OutlierBounds || actor.Position.Y < -SuperPolarity.OutlierBounds || + actor.Position.X > game.GraphicsDevice.Viewport.Width + SuperPolarity.OutlierBounds || + actor.Position.Y > game.GraphicsDevice.Viewport.Height + SuperPolarity.OutlierBounds) + { + Children.Remove(actor); + } + } + } + + public virtual void Collide(Actor other, Rectangle collision) + { + } + + public void TakeDamage(int amount) + { + if (!Immortal) + { + HP = HP - amount; + if (HP < 0) + { + Die(); + } + } + } + + protected virtual void Die() + { + Dying = true; + } + + public virtual void CleanUp() + { + Texture = null; + BoxTexture = null; + Children = null; + Texture = null; + } + } +} diff --git a/Super Polarity/Actors/Bullet.cs b/Super Polarity/Actors/Bullet.cs new file mode 100644 index 0000000..d20289c --- /dev/null +++ b/Super Polarity/Actors/Bullet.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace SuperPolarity +{ + class Bullet : Actor + { + protected ParticleEngine particleEngine; + public int Power; + + public Bullet(SuperPolarity newGame) + : base(newGame) + { + } + + ~Bullet() + { + particleEngine = null; + } + + public override void Initialize(Texture2D texture, Vector2 position) + { + base.Initialize(texture, position); + BoxDimensions.X = 10; + BoxDimensions.Y = 10; + BoxDimensions.W = 10; + BoxDimensions.Z = 10; + MaxVelocity = 8; + InitBox(); + particleEngine = ParticleEffectFactory.CreateBullet(position); + } + + public override void Update(GameTime gameTime) + { + Velocity.X = (float)(MaxVelocity * Math.Cos(Angle)); + Velocity.Y = (float)(MaxVelocity * Math.Sin(Angle)); + + Power = 1; + + Position += Velocity; + UpdateBox(); + + particleEngine.Update(); + particleEngine.EmitterLocation = Position; + } + + public override void Draw(SpriteBatch spriteBatch) + { + base.Draw(spriteBatch); + particleEngine.Draw(spriteBatch); + } + + public override void Collide(Actor other, Rectangle collision) + { + if (Dying) { return; } + if (other.GetType().IsAssignableFrom(typeof(StandardShip))) + { + Die(); + return; + } + } + + protected override void Die() + { + ActorManager.CheckOut(this); + Renderer.CheckOut(this); + Parent.Children.Remove(this); + } + + public override void CleanUp() + { + base.CleanUp(); + this.particleEngine = null; + } + } +} diff --git a/Super Polarity/Actors/MainShip.cs b/Super Polarity/Actors/MainShip.cs new file mode 100644 index 0000000..bf4f3bb --- /dev/null +++ b/Super Polarity/Actors/MainShip.cs @@ -0,0 +1,314 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Audio; + +namespace SuperPolarity +{ + class MainShip : Ship + { + + public static Color BlueColor; + public static Color RedColor; + + ParticleEngine particleEngine; + + protected bool Shooting; + protected int ShotCooldown; + + protected float CurrentImmortalTime; + protected float MaxImmortalTime; + protected bool Flashing; + + protected SoundEffect PolarityChange; + protected SoundEffect ShootSound; + protected SoundEffect Hit; + + public MainShip(SuperPolarity newGame) : base(newGame) {} + + ~MainShip() + { + particleEngine = null; + } + + public override void Initialize(Texture2D texture, Vector2 position) + { + base.Initialize(texture, position); + + MainShip.BlueColor = new Color(211, 230, 234); + MainShip.RedColor = new Color(235, 160, 185); + + PolarityChange = game.Content.Load("Sound\\polaritychange"); + ShootSound = game.Content.Load("Sound\\bullet"); + Hit = game.Content.Load("Sound\\hit"); + + InitParticleEngine(); + SetPolarity(Polarity.Positive); + + ActVelocity = 2.5f; + + ShotCooldown = 50; + MaxImmortalTime = 1500; + + BoxDimensions.X = 2; + BoxDimensions.Y = 2; + BoxDimensions.W = 2; + BoxDimensions.Z = 2; + InitBox(); + + BindInput(); + } + + void InitParticleEngine() + { + particleEngine = ParticleEffectFactory.CreatePolarCircle(Position); + } + + void BindInput() + { + InputController.Bind("moveX", HandleHorizontalMovement); + InputController.Bind("moveY", HandleVerticalMovement); + InputController.Bind("changePolarity", HandleChangePolarity); + InputController.Bind("shoot", HandleShot); + } + + protected void HandleShot(float value) + { + + Shooting = true; + Timer t = new Timer(new TimerCallback(UnlockShot)); + t.Change(ShotCooldown, Timeout.Infinite); + + if (Children.Count > 10) + { + return; + } + + var bullet = ActorFactory.CreateBullet(Position, Angle); + + Children.Add(bullet); + bullet.Parent = this; + + ShootSound.Play(); + } + + protected void UnlockShot(object state) + { + InputController.Unlock("shoot"); + Shooting = false; + } + + protected void HandleChangePolarity(float value) + { + SwitchPolarity(); + } + + public void HandleHorizontalMovement(float value) + { + if (value >= -0.5 && value <= 0.5) + { + value = 0; + } + + Velocity.X = value * MaxVelocity; + } + + public void HandleVerticalMovement(float value) + { + if (value >= -0.5 && value <= 0.5) + { + value = 0; + } + + Velocity.Y = value * MaxVelocity; + } + + public override void SwitchPolarity() + { + base.SwitchPolarity(); + SwitchParticleEngine(CurrentPolarity); + PolarityChange.Play(); + game.Player.ResetMultiplier(); + } + + public override void SetPolarity(Polarity newPolarity) + { + base.SetPolarity(newPolarity); + SwitchParticleEngine(newPolarity); + } + + protected void SwitchParticleEngine(Polarity polarity) + { + if (polarity == Polarity.Positive) + { + particleEngine.Color = MainShip.RedColor; + } + else if (polarity == Polarity.Negative) + { + particleEngine.Color = MainShip.BlueColor; + } + else + { + particleEngine.Color = Color.Gray; + } + } + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + particleEngine.EmitterLocation = Position; + particleEngine.Update(); + ConstrainToEdges(); + UpdateImmortality(gameTime); + } + + public void UpdateImmortality(GameTime gameTime) + { + if (Immortal) + { + CurrentImmortalTime += gameTime.ElapsedGameTime.Milliseconds; + + if (Flashing) + { + Color = new Color(255, 255, 255, 128); + } + else + { + Color = Color.White; + } + + Flashing = !Flashing; + + if (CurrentImmortalTime > MaxImmortalTime) + { + Immortal = false; + Color = Color.White; + } + } + } + + public override void Move(GameTime gameTime) + { + var VelocityLimit = MaxVelocity; + var SavedVelocity = new Vector2(Velocity.X, Velocity.Y); + + if (Shooting) + { + VelocityLimit = ActVelocity; + } + + if (SavedVelocity.X > VelocityLimit) + { + SavedVelocity.X = VelocityLimit; + } + + if (SavedVelocity.X < -VelocityLimit) + { + SavedVelocity.X = -VelocityLimit; + } + + if (SavedVelocity.Y > VelocityLimit) + { + SavedVelocity.Y = VelocityLimit; + } + + if (SavedVelocity.Y < -VelocityLimit) + { + SavedVelocity.Y = -VelocityLimit; + } + + Position.X = Position.X + SavedVelocity.X; + Position.Y = Position.Y + SavedVelocity.Y; + } + + public override void Magnetize(Ship ship, float distance, float angle) + { + } + + protected void ConstrainToEdges() + { + if (Position.X < 0) + { + Position.X = 0; + + if (Velocity.X < 0) + { + Velocity.X = 0; + } + } + if (Position.X > game.GraphicsDevice.Viewport.Width) + { + Position.X = game.GraphicsDevice.Viewport.Width; + + if (Velocity.X > 0) + { + Velocity.X = 0; + } + } + if (Position.Y < 0) + { + Position.Y = 0; + + if (Velocity.Y < 0) + { + Velocity.Y = 0; + } + } + if (Position.Y > game.GraphicsDevice.Viewport.Height) + { + Position.Y = game.GraphicsDevice.Viewport.Height; + + if (Velocity.Y < 0) + { + Velocity.Y = 0; + } + } + } + + public override void Draw(SpriteBatch spriteBatch) + { + particleEngine.Draw(spriteBatch); + base.Draw(spriteBatch); + } + + public override void Collide(Actor other, Rectangle collision) + { + if (other.GetType().IsAssignableFrom(typeof(StandardShip)) && + !Immortal) + { + Die(); + } + } + + protected override void Die() + { + game.Player.Lives = game.Player.Lives - 1; + game.Player.ResetMultiplier(); + if (game.Player.Lives < 0) + { + Dying = true; + game.GameOver(); + } + else { + Hit.Play(); + Immortal = true; + CurrentImmortalTime = 0; + } + } + + public override void CleanUp() + { + base.CleanUp(); + particleEngine = null; + InputController.Unbind("moveX", HandleHorizontalMovement); + InputController.Unbind("moveY", HandleVerticalMovement); + InputController.Unbind("changePolarity", HandleChangePolarity); + InputController.Unbind("shoot", HandleShot); + } + } +} diff --git a/Super Polarity/Actors/Ship.cs b/Super Polarity/Actors/Ship.cs new file mode 100644 index 0000000..229f639 --- /dev/null +++ b/Super Polarity/Actors/Ship.cs @@ -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 Ship : Actor + { + public enum Polarity : byte { Negative, Positive, Neutral }; + + public Polarity CurrentPolarity; + public uint MagneticRadius; + + public float FleeVelocity; + public float ActVelocity; + public float ChargeVelocity; + public int RepelRadius; + + protected bool Magnetizing; + + public Ship(SuperPolarity newGame) : base(newGame) { + MagneticRadius = 250; + RepelRadius = 100; + + HP = 2; + + FleeVelocity = 5; + ActVelocity = 1; + ChargeVelocity = 2.5f; + CurrentPolarity = Polarity.Neutral; + Magnetizing = false; + } + + public virtual void SwitchPolarity() + { + if (CurrentPolarity == Polarity.Positive) + { + CurrentPolarity = Polarity.Negative; + } + else + { + CurrentPolarity = Polarity.Positive; + } + } + + public virtual void SetPolarity(Polarity newPolarity) + { + CurrentPolarity = newPolarity; + } + + public virtual void Shoot() + { + } + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + Magnetizing = false; + } + + public virtual void Magnetize(Ship ship, float distance, float angle) + { + Magnetizing = true; + Polarity polarity = ship.CurrentPolarity; + + if (polarity != CurrentPolarity) + { + Attract(angle); + } + else + { + Repel(distance, angle); + } + } + + protected void Attract(float angle) + { + Velocity.X = (float) (ChargeVelocity * Math.Cos(angle)); + Velocity.Y = (float) (ChargeVelocity * Math.Sin(angle)); + } + + protected void Repel(float distance, float angle) + { + if (distance > RepelRadius) { Magnetizing = false; return; } + Velocity.X = -(float)(FleeVelocity * Math.Cos(angle)); + Velocity.Y = -(float)(FleeVelocity * Math.Sin(angle)); + } + } +} diff --git a/Super Polarity/Actors/StandardShip.cs b/Super Polarity/Actors/StandardShip.cs new file mode 100644 index 0000000..ef2fe7f --- /dev/null +++ b/Super Polarity/Actors/StandardShip.cs @@ -0,0 +1,155 @@ +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; +using System.Security.Cryptography; + +namespace SuperPolarity +{ + class StandardShip : Ship + { + + protected bool Flashing; + protected int ChangeRate; + protected int CurrentTime; + public int AngleChangeProbability; + protected int BouncePadding; + protected float RotationFactor; + protected Random Random; + protected bool AddingAngle; + + public StandardShip(SuperPolarity newGame) : base(newGame) {} + + public override void Initialize(Texture2D texture, Vector2 position) + { + base.Initialize(texture, position); + + var cryptoResult = new byte[4]; + new RNGCryptoServiceProvider().GetBytes(cryptoResult); + + ChangeRate = 50; + AngleChangeProbability = 50; + BouncePadding = 0; + MaxVelocity = 2; + CurrentTime = 0; + RotationFactor = (float) (3 * Math.PI / 180); + Random = new Random(BitConverter.ToInt32(cryptoResult, 0)); + AddingAngle = true; + } + + public override void Magnetize(Ship ship, float distance, float angle) + { + if (ship.GetType() == typeof(MainShip)) { + base.Magnetize(ship, distance, angle); + } + } + + public override void Update(GameTime gameTime) + { + CurrentTime += gameTime.ElapsedGameTime.Milliseconds; + if (!Magnetizing) + { + AutoMove(); + BounceBack(); + } + ChangeAngle(); + Position += Velocity; + UpdateBox(); + Magnetizing = false; + + if (Flashing) + { + Color = new Color(255, 255, 255, 128); + Flashing = false; + } + else + { + Color = Color.White; + } + } + + protected void AutoMove() + { + float newAngle = Angle; + + if (CurrentTime < ChangeRate) + { + return; + } + + if (Random.Next(AngleChangeProbability) == 2) + { + AddingAngle = !AddingAngle; + } + + CurrentTime = 0; + + if (AddingAngle) + { + newAngle += (float) ( Random.NextDouble() * RotationFactor); + } + else + { + newAngle -= (float) (Random.NextDouble() * RotationFactor); + } + + Velocity.X = (float) (MaxVelocity * Math.Cos(newAngle)); + Velocity.Y = (float) (MaxVelocity * Math.Sin(newAngle)); + } + + protected void BounceBack() + { + if (Position.X + Width < -BouncePadding && Velocity.X < 0) + { + Velocity.X = -Velocity.X; + } + + if (Position.Y + Height < -BouncePadding && Velocity.Y < 0) + { + Velocity.Y = -Velocity.Y; + } + + if (Position.X > game.GraphicsDevice.Viewport.Width + BouncePadding && Velocity.X > 0) + { + Velocity.X = -Velocity.X; + } + + if (Position.Y > game.GraphicsDevice.Viewport.Height + BouncePadding && Velocity.Y > 0) + { + Velocity.Y = -Velocity.Y; + } + } + + public override void Collide(Actor other, Rectangle collision) + { + if (Dying) + { + return; + } + + if (other.GetType() == typeof(MainShip)) + { + Die(); + return; + } + + if (other.GetType() == typeof(Bullet)) + { + var theBullet = (Bullet)other; + TakeDamage(theBullet.Power); + Flashing = true; + } + } + + protected override void Die() + { + ActorManager.CheckOut(this); + Renderer.CheckOut(this); + game.Player.AddScore(Value); + game.Player.AddMultiplier(1); + } + } +} diff --git a/Super Polarity/BasicGenerator.cs b/Super Polarity/BasicGenerator.cs new file mode 100644 index 0000000..ba51742 --- /dev/null +++ b/Super Polarity/BasicGenerator.cs @@ -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/Super Polarity/Content/Fonts/SegoeUIMono14.xnb b/Super Polarity/Content/Fonts/SegoeUIMono14.xnb new file mode 100644 index 0000000..51c4abd Binary files /dev/null and b/Super Polarity/Content/Fonts/SegoeUIMono14.xnb differ diff --git a/Super Polarity/Content/Fonts/bigfont.xnb b/Super Polarity/Content/Fonts/bigfont.xnb new file mode 100644 index 0000000..c1d876c Binary files /dev/null and b/Super Polarity/Content/Fonts/bigfont.xnb differ diff --git a/Super Polarity/Content/Fonts/smallfont.xnb b/Super Polarity/Content/Fonts/smallfont.xnb new file mode 100644 index 0000000..a87e66a Binary files /dev/null and b/Super Polarity/Content/Fonts/smallfont.xnb differ diff --git a/Super Polarity/Content/Graphics/circle.xnb b/Super Polarity/Content/Graphics/circle.xnb new file mode 100644 index 0000000..3471449 Binary files /dev/null and b/Super Polarity/Content/Graphics/circle.xnb differ diff --git a/Super Polarity/Content/Graphics/diamond.xnb b/Super Polarity/Content/Graphics/diamond.xnb new file mode 100644 index 0000000..8bda70c Binary files /dev/null and b/Super Polarity/Content/Graphics/diamond.xnb differ diff --git a/Super Polarity/Content/Graphics/main-ship.xnb b/Super Polarity/Content/Graphics/main-ship.xnb new file mode 100644 index 0000000..7108e2f Binary files /dev/null and b/Super Polarity/Content/Graphics/main-ship.xnb differ diff --git a/Super Polarity/Content/Graphics/negative-cruiser.xnb b/Super Polarity/Content/Graphics/negative-cruiser.xnb new file mode 100644 index 0000000..5c9f41d Binary files /dev/null and b/Super Polarity/Content/Graphics/negative-cruiser.xnb differ diff --git a/Super Polarity/Content/Graphics/negative-destroyer.xnb b/Super Polarity/Content/Graphics/negative-destroyer.xnb new file mode 100644 index 0000000..fe13745 Binary files /dev/null and b/Super Polarity/Content/Graphics/negative-destroyer.xnb differ diff --git a/Super Polarity/Content/Graphics/negative-scout.xnb b/Super Polarity/Content/Graphics/negative-scout.xnb new file mode 100644 index 0000000..a5a2e7a Binary files /dev/null and b/Super Polarity/Content/Graphics/negative-scout.xnb differ diff --git a/Super Polarity/Content/Graphics/negative-ship.xnb b/Super Polarity/Content/Graphics/negative-ship.xnb new file mode 100644 index 0000000..ed41216 Binary files /dev/null and b/Super Polarity/Content/Graphics/negative-ship.xnb differ diff --git a/Super Polarity/Content/Graphics/negative-supercruiser.xnb b/Super Polarity/Content/Graphics/negative-supercruiser.xnb new file mode 100644 index 0000000..b77f364 Binary files /dev/null and b/Super Polarity/Content/Graphics/negative-supercruiser.xnb differ diff --git a/Super Polarity/Content/Graphics/neutral-cruiser.xnb b/Super Polarity/Content/Graphics/neutral-cruiser.xnb new file mode 100644 index 0000000..ac99113 Binary files /dev/null and b/Super Polarity/Content/Graphics/neutral-cruiser.xnb differ diff --git a/Super Polarity/Content/Graphics/neutral-destroyer.xnb b/Super Polarity/Content/Graphics/neutral-destroyer.xnb new file mode 100644 index 0000000..69b5924 Binary files /dev/null and b/Super Polarity/Content/Graphics/neutral-destroyer.xnb differ diff --git a/Super Polarity/Content/Graphics/neutral-scout.xnb b/Super Polarity/Content/Graphics/neutral-scout.xnb new file mode 100644 index 0000000..5e9ff59 Binary files /dev/null and b/Super Polarity/Content/Graphics/neutral-scout.xnb differ diff --git a/Super Polarity/Content/Graphics/neutral-ship.xnb b/Super Polarity/Content/Graphics/neutral-ship.xnb new file mode 100644 index 0000000..04259be Binary files /dev/null and b/Super Polarity/Content/Graphics/neutral-ship.xnb differ diff --git a/Super Polarity/Content/Graphics/neutral-supercruiser.xnb b/Super Polarity/Content/Graphics/neutral-supercruiser.xnb new file mode 100644 index 0000000..1389842 Binary files /dev/null and b/Super Polarity/Content/Graphics/neutral-supercruiser.xnb differ diff --git a/Super Polarity/Content/Graphics/pause-screen.xnb b/Super Polarity/Content/Graphics/pause-screen.xnb new file mode 100644 index 0000000..2307009 Binary files /dev/null and b/Super Polarity/Content/Graphics/pause-screen.xnb differ diff --git a/Super Polarity/Content/Graphics/polaritydemotitle.xnb b/Super Polarity/Content/Graphics/polaritydemotitle.xnb new file mode 100644 index 0000000..2fa9cf3 Binary files /dev/null and b/Super Polarity/Content/Graphics/polaritydemotitle.xnb differ diff --git a/Super Polarity/Content/Graphics/positive-cruiser.xnb b/Super Polarity/Content/Graphics/positive-cruiser.xnb new file mode 100644 index 0000000..b65d2bd Binary files /dev/null and b/Super Polarity/Content/Graphics/positive-cruiser.xnb differ diff --git a/Super Polarity/Content/Graphics/positive-destroyer.xnb b/Super Polarity/Content/Graphics/positive-destroyer.xnb new file mode 100644 index 0000000..d773175 Binary files /dev/null and b/Super Polarity/Content/Graphics/positive-destroyer.xnb differ diff --git a/Super Polarity/Content/Graphics/positive-scout.xnb b/Super Polarity/Content/Graphics/positive-scout.xnb new file mode 100644 index 0000000..2b8f9fe Binary files /dev/null and b/Super Polarity/Content/Graphics/positive-scout.xnb differ diff --git a/Super Polarity/Content/Graphics/positive-ship.xnb b/Super Polarity/Content/Graphics/positive-ship.xnb new file mode 100644 index 0000000..e4e21f1 Binary files /dev/null and b/Super Polarity/Content/Graphics/positive-ship.xnb differ diff --git a/Super Polarity/Content/Graphics/positive-supercruiser.xnb b/Super Polarity/Content/Graphics/positive-supercruiser.xnb new file mode 100644 index 0000000..2ecca79 Binary files /dev/null and b/Super Polarity/Content/Graphics/positive-supercruiser.xnb differ diff --git a/Super Polarity/Content/Graphics/square.xnb b/Super Polarity/Content/Graphics/square.xnb new file mode 100644 index 0000000..5a88d89 Binary files /dev/null and b/Super Polarity/Content/Graphics/square.xnb differ diff --git a/Super Polarity/Content/Graphics/star.xnb b/Super Polarity/Content/Graphics/star.xnb new file mode 100644 index 0000000..763addf Binary files /dev/null and b/Super Polarity/Content/Graphics/star.xnb differ diff --git a/Super Polarity/Content/Sound/bomb.wav b/Super Polarity/Content/Sound/bomb.wav new file mode 100644 index 0000000..5af439b Binary files /dev/null and b/Super Polarity/Content/Sound/bomb.wav differ diff --git a/Super Polarity/Content/Sound/bullet.wav b/Super Polarity/Content/Sound/bullet.wav new file mode 100644 index 0000000..6586489 Binary files /dev/null and b/Super Polarity/Content/Sound/bullet.wav differ diff --git a/Super Polarity/Content/Sound/gameover.wav b/Super Polarity/Content/Sound/gameover.wav new file mode 100644 index 0000000..cac9d23 Binary files /dev/null and b/Super Polarity/Content/Sound/gameover.wav differ diff --git a/Super Polarity/Content/Sound/hit.wav b/Super Polarity/Content/Sound/hit.wav new file mode 100644 index 0000000..43433cd Binary files /dev/null and b/Super Polarity/Content/Sound/hit.wav differ diff --git a/Super Polarity/Content/Sound/life.wav b/Super Polarity/Content/Sound/life.wav new file mode 100644 index 0000000..a1d0436 Binary files /dev/null and b/Super Polarity/Content/Sound/life.wav differ diff --git a/Super Polarity/Content/Sound/polaritychange.wav b/Super Polarity/Content/Sound/polaritychange.wav new file mode 100644 index 0000000..25b59a4 Binary files /dev/null and b/Super Polarity/Content/Sound/polaritychange.wav differ diff --git a/Super Polarity/Content/Sound/polaritytheme.wav b/Super Polarity/Content/Sound/polaritytheme.wav new file mode 100644 index 0000000..28a6bce Binary files /dev/null and b/Super Polarity/Content/Sound/polaritytheme.wav differ diff --git a/Super Polarity/GameScreen.cs b/Super Polarity/GameScreen.cs new file mode 100644 index 0000000..783e3c1 --- /dev/null +++ b/Super Polarity/GameScreen.cs @@ -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 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(); + + 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("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("Sound\\bomb"); + LifeSound = Game.Content.Load("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/Super Polarity/Icon.ico b/Super Polarity/Icon.ico new file mode 100644 index 0000000..13be62a Binary files /dev/null and b/Super Polarity/Icon.ico differ diff --git a/Super Polarity/InputController.cs b/Super Polarity/InputController.cs new file mode 100644 index 0000000..c92bb9c --- /dev/null +++ b/Super Polarity/InputController.cs @@ -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>> Listeners; + static Dictionary> RegisteredKeys; + static Dictionary> RegisteredButtons; + static List BlockedKeys; + static List 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>>(); + RegisteredButtons = new Dictionary>(); + RegisteredKeys = new Dictionary>(); + BlockedKeys = new List(); + BlockedButtons = new List(); + 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 newKeyList; + if (!RegisteredKeys.ContainsKey(eventName)) + { + newKeyList = new List(); + RegisteredKeys.Add(eventName, newKeyList); + } + + RegisteredKeys.TryGetValue(eventName, out newKeyList); + + newKeyList.Add(key); + } + + public static void RegisterEventForButton(string eventName, Buttons button) + { + List newButtonList; + if (!RegisteredButtons.ContainsKey(eventName)) + { + newButtonList = new List(); + RegisteredButtons.Add(eventName, newButtonList); + } + + RegisteredButtons.TryGetValue(eventName, out newButtonList); + + newButtonList.Add(button); + } + + private static void DispatchRegisteredEvents() + { + var keyFired = false; + + foreach (KeyValuePair> 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> 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 listener) + { + List> newListenerList; + List> listenerList; + bool foundListeners; + + if (!Listeners.ContainsKey(eventName)) { + newListenerList = new List>(); + Listeners.Add(eventName, newListenerList); + } + + foundListeners = Listeners.TryGetValue(eventName, out listenerList); + + listenerList.Add(listener); + } + + public static void Unbind(string eventName, Action listener) + { + List> 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> 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/Super Polarity/LetterChooseWidget.cs b/Super Polarity/LetterChooseWidget.cs new file mode 100644 index 0000000..e52733f --- /dev/null +++ b/Super Polarity/LetterChooseWidget.cs @@ -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("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/Super Polarity/MenuItem.cs b/Super Polarity/MenuItem.cs new file mode 100644 index 0000000..8e24c97 --- /dev/null +++ b/Super Polarity/MenuItem.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SuperPolarity +{ + class MenuItem + { + } +} diff --git a/Super Polarity/MenuWidget.cs b/Super Polarity/MenuWidget.cs new file mode 100644 index 0000000..992ef43 --- /dev/null +++ b/Super Polarity/MenuWidget.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SuperPolarity +{ + class MenuWidget + { + } +} diff --git a/Super Polarity/NameChooserWidget.cs b/Super Polarity/NameChooserWidget.cs new file mode 100644 index 0000000..ce7c149 --- /dev/null +++ b/Super Polarity/NameChooserWidget.cs @@ -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/Super Polarity/Particle.cs b/Super Polarity/Particle.cs new file mode 100644 index 0000000..d65bac6 --- /dev/null +++ b/Super Polarity/Particle.cs @@ -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/Super Polarity/ParticleEffectFactory.cs b/Super Polarity/ParticleEffectFactory.cs new file mode 100644 index 0000000..0cd9ed3 --- /dev/null +++ b/Super Polarity/ParticleEffectFactory.cs @@ -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 texturesList = new List(); + + //texturesList.Add(Game.Content.Load("Graphics\\circle")); + texturesList.Add(Game.Content.Load("Graphics\\diamond")); + texturesList.Add(Game.Content.Load("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 texturesList = new List(); + + texturesList.Add(Game.Content.Load("Graphics\\circle")); + //texturesList.Add(Game.Content.Load("Graphics\\diamond")); + texturesList.Add(Game.Content.Load("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/Super Polarity/ParticleEngine.cs b/Super Polarity/ParticleEngine.cs new file mode 100644 index 0000000..51188ae --- /dev/null +++ b/Super Polarity/ParticleEngine.cs @@ -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 particles; + private List textures; + + public ParticleEngine(List textures, Vector2 location) + { + EmitterLocation = location; + this.textures = textures; + this.particles = new List(); + 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/Super Polarity/Player.cs b/Super Polarity/Player.cs new file mode 100644 index 0000000..184abdd --- /dev/null +++ b/Super Polarity/Player.cs @@ -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("Fonts\\bigfont"); + LifeSprite = Game.Content.Load("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/Super Polarity/Program.cs b/Super Polarity/Program.cs new file mode 100644 index 0000000..6c3f614 --- /dev/null +++ b/Super Polarity/Program.cs @@ -0,0 +1,26 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +#endregion + +namespace SuperPolarity +{ +#if WINDOWS || LINUX + /// + /// The main class. + /// + public static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + using (var superPolarity = new SuperPolarity()) + superPolarity.Run(); + } + } +#endif +} diff --git a/Super Polarity/Properties/AssemblyInfo.cs b/Super Polarity/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..91a7e87 --- /dev/null +++ b/Super Polarity/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +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: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7f0aa81c-c9ab-4b87-97eb-3b788199ed3e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Super Polarity/Renderer.cs b/Super Polarity/Renderer.cs new file mode 100644 index 0000000..7ca8158 --- /dev/null +++ b/Super Polarity/Renderer.cs @@ -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 Actors; + + static Renderer() + { + Actors = new List(); + } + + 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/Super Polarity/ScoreScreen.cs b/Super Polarity/ScoreScreen.cs new file mode 100644 index 0000000..bf43275 --- /dev/null +++ b/Super Polarity/ScoreScreen.cs @@ -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 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(); + ReadScore(); + } + + public override void LoadContent() + { + base.LoadContent(); + Font = Game.Content.Load("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 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/Super Polarity/Screen.cs b/Super Polarity/Screen.cs new file mode 100644 index 0000000..006b047 --- /dev/null +++ b/Super Polarity/Screen.cs @@ -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/Super Polarity/ScreenManager.cs b/Super Polarity/ScreenManager.cs new file mode 100644 index 0000000..b88741b --- /dev/null +++ b/Super Polarity/ScreenManager.cs @@ -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 Screens; + static SuperPolarity Game; + + static ScreenManager() + { + Screens = new Stack(); + } + + 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/Super Polarity/Super Polarity.csproj b/Super Polarity/Super Polarity.csproj new file mode 100644 index 0000000..24cea5c --- /dev/null +++ b/Super Polarity/Super Polarity.csproj @@ -0,0 +1,196 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {2585188B-339D-44CD-9599-1A80AA30DE13} + WinExe + Properties + SuperPolarity + Super Polarity + 512 + + + x86 + true + full + false + bin\WindowsGL\Debug\ + DEBUG;TRACE;WINDOWS + prompt + 4 + + + x86 + pdbonly + true + bin\WindowsGL\Release\ + TRACE;WINDOWS + prompt + 4 + + + Icon.ico + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\..\..\..\..\..\Program Files (x86)\MSBuild\..\MonoGame\v3.0\Assemblies\WindowsGL\OpenTK.dll + + + ..\..\..\..\..\..\..\Program Files (x86)\MSBuild\..\MonoGame\v3.0\Assemblies\WindowsGL\MonoGame.Framework.dll + + + ..\..\..\..\..\..\..\Program Files (x86)\MSBuild\..\MonoGame\v3.0\Assemblies\WindowsGL\Lidgren.Network.dll + + + ..\..\..\..\..\..\..\Program Files (x86)\MSBuild\..\MonoGame\v3.0\Assemblies\WindowsGL\Tao.Sdl.dll + + + + + + + SDL.dll + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + \ No newline at end of file diff --git a/Super Polarity/Super Polarity.csproj.user b/Super Polarity/Super Polarity.csproj.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/Super Polarity/Super Polarity.csproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Super Polarity/SuperPolarity.cs b/Super Polarity/SuperPolarity.cs new file mode 100644 index 0000000..9311d53 --- /dev/null +++ b/Super Polarity/SuperPolarity.cs @@ -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 +{ + /// + /// This is the main type for your game + /// + 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); + } + + /// + /// 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. + /// + 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(); + } + + /// + /// LoadContent will be called once per game and is the place to load + /// all of your content. + /// + protected override void LoadContent() + { + + MediaPlayer.IsRepeating = true; + GameSong = Content.Load("Sound\\polaritytheme.wav"); + GameOverSound = Content.Load("Sound\\gameover"); + + // Create a new SpriteBatch, which can be used to draw textures. + spriteBatch = new SpriteBatch(GraphicsDevice); + + ScreenManager.Push(EntryScreen); + + Player = new Player(this); + } + + /// + /// UnloadContent will be called once per game and is the place to unload + /// all content. + /// + protected override void UnloadContent() + { + // TODO: Unload any non ContentManager content here + } + + /// + /// Allows the game to run logic such as updating the world, + /// checking for collisions, gathering input, and playing audio. + /// + /// Provides a snapshot of timing values. + 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); + } + + /// + /// This is called when the game should draw itself. + /// + /// Provides a snapshot of timing values. + 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/Super Polarity/TitleScreen.cs b/Super Polarity/TitleScreen.cs new file mode 100644 index 0000000..a953f27 --- /dev/null +++ b/Super Polarity/TitleScreen.cs @@ -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("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/Super Polarity/Widget.cs b/Super Polarity/Widget.cs new file mode 100644 index 0000000..ea92cfd --- /dev/null +++ b/Super Polarity/Widget.cs @@ -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 Children; + public Dictionary>> 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(); + Listeners = new Dictionary>>(); + } + + 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 eventListener) + { + List> newListenerList; + List> listenerList; + bool foundListeners; + + if (!Listeners.ContainsKey(eventName)) + { + newListenerList = new List>(); + Listeners.Add(eventName, newListenerList); + } + + foundListeners = Listeners.TryGetValue(eventName, out listenerList); + + listenerList.Add(eventListener); + } + + public virtual void Unbind(string eventName, Action eventListener) + { + // NOT YET IMPLEMENTED; + } + + public virtual void Dispatch(string eventName, float value) + { + List> listenerList; + bool foundListeners; + + foundListeners = Listeners.TryGetValue(eventName, out listenerList); + + if (!foundListeners) + { + return; + } + + foreach (Action method in listenerList) + { + method(value); + } + } + + public virtual void Update(GameTime gameTime) + { + } + + public virtual void Draw(SpriteBatch spriteBatch) + { + } + } +} diff --git a/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe b/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe new file mode 100644 index 0000000..bb84a51 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe differ diff --git a/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe.manifest b/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/Super Polarity/bin/WindowsGL/Debug/GameName1.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll b/Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll new file mode 100644 index 0000000..fd45367 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/Lidgren.Network.dll differ diff --git a/Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll b/Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll new file mode 100644 index 0000000..c087ac2 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/MonoGame.Framework.dll differ diff --git a/Super Polarity/bin/WindowsGL/Debug/OpenTK.dll b/Super Polarity/bin/WindowsGL/Debug/OpenTK.dll new file mode 100644 index 0000000..b1cd2e9 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/OpenTK.dll differ diff --git a/Super Polarity/bin/WindowsGL/Debug/SDL.dll b/Super Polarity/bin/WindowsGL/Debug/SDL.dll new file mode 100644 index 0000000..628cdfc Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/SDL.dll differ diff --git a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe new file mode 100644 index 0000000..746c670 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.exe differ diff --git a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb new file mode 100644 index 0000000..fea49a1 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.pdb differ diff --git a/Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe new file mode 100644 index 0000000..bb84a51 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/Super Polarity.vshost.exe differ diff --git a/Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll b/Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll new file mode 100644 index 0000000..d2e2d47 Binary files /dev/null and b/Super Polarity/bin/WindowsGL/Debug/Tao.Sdl.dll differ diff --git a/Super Polarity/neutral-supercruiser.xnb b/Super Polarity/neutral-supercruiser.xnb new file mode 100644 index 0000000..1389842 Binary files /dev/null and b/Super Polarity/neutral-supercruiser.xnb differ diff --git a/Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..ef9920b Binary files /dev/null and b/Super Polarity/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache b/Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache new file mode 100644 index 0000000..d619ccb Binary files /dev/null and b/Super Polarity/obj/x86/Debug/ResolveAssemblyReference.cache 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 new file mode 100644 index 0000000..cabc9d2 --- /dev/null +++ b/Super Polarity/obj/x86/Debug/Super Polarity.csproj.FileListAbsolute.txt @@ -0,0 +1,42 @@ +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 new file mode 100644 index 0000000..746c670 Binary files /dev/null and b/Super Polarity/obj/x86/Debug/Super Polarity.exe differ diff --git a/Super Polarity/obj/x86/Debug/Super Polarity.pdb b/Super Polarity/obj/x86/Debug/Super Polarity.pdb new file mode 100644 index 0000000..fea49a1 Binary files /dev/null and b/Super Polarity/obj/x86/Debug/Super Polarity.pdb differ diff --git a/Super Polarity/scores.txt b/Super Polarity/scores.txt new file mode 100644 index 0000000..e69de29