Commits

brav...@gmail.com  committed 31528fc

First commit

  • Participants

Comments (0)

Files changed (19)

+syntax: glob
+*/obj/*
+*/bin/*
+tools/*
+*.user
+*.suo
+*/_ReSharper*/
+src/packages/*
+*.docstates
+build/*
+StyleCop.Cache
+*.vs10x
+*.orig
+*.dotCover
+*.csproj.Debug.cachefile

File PIDControllers.sln

+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PIDControllers", "PIDControllers\PIDControllers\PIDControllers.csproj", "{ACB610E0-5AC2-4F1D-8ED9-19CD84EEA221}"
+EndProject
+Project("{96E2B04D-8817-42C6-938A-82C39BA4D311}") = "PIDControllersContent", "PIDControllers\PIDControllersContent\PIDControllersContent.contentproj", "{6CA26598-F111-4B20-91D4-C9AC608746DE}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x86 = Debug|x86
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{ACB610E0-5AC2-4F1D-8ED9-19CD84EEA221}.Debug|x86.ActiveCfg = Debug|x86
+		{ACB610E0-5AC2-4F1D-8ED9-19CD84EEA221}.Debug|x86.Build.0 = Debug|x86
+		{ACB610E0-5AC2-4F1D-8ED9-19CD84EEA221}.Release|x86.ActiveCfg = Release|x86
+		{ACB610E0-5AC2-4F1D-8ED9-19CD84EEA221}.Release|x86.Build.0 = Release|x86
+		{6CA26598-F111-4B20-91D4-C9AC608746DE}.Debug|x86.ActiveCfg = Debug|x86
+		{6CA26598-F111-4B20-91D4-C9AC608746DE}.Release|x86.ActiveCfg = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

File PIDControllers/PIDControllers/Game.ico

Added
New image

File PIDControllers/PIDControllers/GameThumbnail.png

Added
New image

File PIDControllers/PIDControllers/PIDController.cs

+namespace PIDControllers
+{
+	public class PIDController
+	{
+		private float _lastError;
+		private float _sumOfErrors;
+
+		public float P { get; set; }
+		public float I { get; set; }
+		public float D { get; set; }
+		public float TargetValue { get; set; }
+		
+		public float Update(float currentValue, float elapsedTime)
+		{
+			// Todo:
+			// Implement PID controller logic here. The equation is
+			//
+			//  P * current error + 
+			//  I * (accumulated error / 2) * elapsedTime + 
+			//	D * (current error - last error) / elasped time
+			//
+			// Figure out what the current error is first. Then keep a running count of the total
+			//  error. Then calculate the error derivative, and finally calculate the PID value
+			//  by multiplying all the previous terms by P, I, and D.
+		
+
+			return 0;
+		}
+	}
+}

File PIDControllers/PIDControllers/PIDControllers.csproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{ACB610E0-5AC2-4F1D-8ED9-19CD84EEA221}</ProjectGuid>
+    <ProjectTypeGuids>{6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PIDControllers</RootNamespace>
+    <AssemblyName>PIDControllers</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
+    <XnaPlatform>Windows</XnaPlatform>
+    <XnaProfile>HiDef</XnaProfile>
+    <XnaCrossPlatformGroupID>f71be57e-5cde-4fd5-b58a-5c9e83b090c4</XnaCrossPlatformGroupID>
+    <XnaOutputType>Game</XnaOutputType>
+    <ApplicationIcon>Game.ico</ApplicationIcon>
+    <Thumbnail>GameThumbnail.png</Thumbnail>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\x86\Debug</OutputPath>
+    <DefineConstants>DEBUG;TRACE;WINDOWS</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoStdLib>true</NoStdLib>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <PlatformTarget>x86</PlatformTarget>
+    <XnaCompressContent>false</XnaCompressContent>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\x86\Release</OutputPath>
+    <DefineConstants>TRACE;WINDOWS</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoStdLib>true</NoStdLib>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <PlatformTarget>x86</PlatformTarget>
+    <XnaCompressContent>true</XnaCompressContent>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.GamerServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Video, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Avatar, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Storage, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="mscorlib">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Core">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System.Net">
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="PIDController.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="PIDControllersGame.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Game.ico" />
+    <Content Include="GameThumbnail.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\PIDControllersContent\PIDControllersContent.contentproj">
+      <Name>PIDControllersContent</Name>
+      <XnaReferenceType>Content</XnaReferenceType>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Xna.Framework.4.0">
+      <Visible>False</Visible>
+      <ProductName>Microsoft XNA Framework Redistributable 4.0</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
+  <!--
+      To modify your build process, add your task inside one of the targets below and uncomment it. 
+      Other similar extension points exist, see Microsoft.Common.targets.
+      <Target Name="BeforeBuild">
+      </Target>
+      <Target Name="AfterBuild">
+      </Target>
+    -->
+</Project>

File PIDControllers/PIDControllers/PIDControllersGame.cs

+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace PIDControllers
+{
+	public class PIDControllersGame : Game
+	{
+		private const int ScaleRegionHalfHeight = 175;
+
+		private readonly List<Texture2D> _levelTextures = new List<Texture2D>();
+		private GraphicsDeviceManager _graphics;
+		private MouseState _previousMouseState;
+		private PIDController _controller;
+		private SpriteBatch _spriteBatch;
+		private int _halfViewportHeight;
+		private float _labelsVelocityY;
+		private float _dragVelocityY;
+		private float _labelsDeltaY;
+		private bool _isDragging;
+		private int _labelHeight;
+
+		public PIDControllersGame()
+		{
+			_graphics = new GraphicsDeviceManager(this);
+			Content.RootDirectory = "Content";
+			IsMouseVisible = true;
+		}
+
+		protected override void Initialize()
+		{
+			_controller = new PIDController {P = 10f, I = 0.4f, D = 2.9f};
+			_halfViewportHeight = GraphicsDevice.Viewport.Height / 2;
+
+			base.Initialize();
+		}
+		
+		protected override void LoadContent()
+		{
+			_spriteBatch = new SpriteBatch(GraphicsDevice);
+
+			for (var i = 0; i < 9; i++)
+			{
+				_levelTextures.Add(Content.Load<Texture2D>("Level" + (i + 1)));
+			}
+
+			_labelHeight = _levelTextures[0].Height;
+		}
+
+		protected override void UnloadContent()
+		{
+		}
+
+		protected override void Update(GameTime gameTime)
+		{
+			if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
+				Exit();
+
+			var mouseState = Mouse.GetState();
+
+			if(mouseState.LeftButton == ButtonState.Released && _previousMouseState.LeftButton == ButtonState.Pressed)
+			{
+				var velocity = _dragVelocityY * 300;
+				_controller.TargetValue = _labelsDeltaY + velocity;
+
+				if (_controller.TargetValue > _halfViewportHeight)
+				{
+					_controller.TargetValue = _halfViewportHeight;
+				}
+				else
+				{
+					if (_controller.TargetValue < -_levelTextures.Count * _labelHeight + _halfViewportHeight + _labelHeight / 2)
+						_controller.TargetValue = -_levelTextures.Count * _labelHeight + _halfViewportHeight + _labelHeight / 2;
+					else
+					{
+						_controller.TargetValue = (float)(Math.Round(_controller.TargetValue / _labelHeight) * _labelHeight + _labelHeight / 2);
+					}
+				}
+			}
+
+			if(_isDragging)
+			{
+				var mouseDeltaY = mouseState.Y - _previousMouseState.Y;
+
+				if(mouseState.Y != _previousMouseState.Y)
+				{
+					_dragVelocityY = (float) (mouseDeltaY / (GraphicsDevice.Viewport.Height * gameTime.ElapsedGameTime.TotalSeconds));
+				}
+
+				_labelsDeltaY += mouseDeltaY;
+			}
+			else
+			{
+				var acceleration = _controller.Update(_labelsDeltaY, (float) gameTime.ElapsedGameTime.TotalSeconds);
+
+				if (Math.Abs(acceleration) >= 0.001f)
+				{
+					_labelsDeltaY += _labelsVelocityY * (float) gameTime.ElapsedGameTime.TotalSeconds;
+					_labelsVelocityY += acceleration * (float) gameTime.ElapsedGameTime.TotalSeconds;
+				}
+			}
+
+			_isDragging = mouseState.LeftButton == ButtonState.Pressed;
+			_previousMouseState = mouseState;
+
+			base.Update(gameTime);
+		}
+
+		protected override void Draw(GameTime gameTime)
+		{
+			GraphicsDevice.Clear(Color.Black);
+
+			_spriteBatch.Begin();
+
+			for (var i = 0; i < _levelTextures.Count; i++)
+			{
+				var position = new Vector2(10, i * 100 + _labelsDeltaY);
+				
+				var scale = 1.0f;
+				var scaleRegionStartY = (_halfViewportHeight) - ScaleRegionHalfHeight;
+				if(position.Y > scaleRegionStartY && position.Y < (_halfViewportHeight) + ScaleRegionHalfHeight)
+				{
+					scale = (position.Y - scaleRegionStartY) / (2.0f * ScaleRegionHalfHeight);
+					scale = scale * 2.0f - 1.0f;
+					scale = Math.Abs(scale);
+
+					scale = scale * 1f + (1f - scale) * 1.5f;
+				}
+
+				_spriteBatch.Draw(_levelTextures[i], position, null, Color.White, 0, new Vector2(0, 32), scale, SpriteEffects.None, 0);
+			}
+			_spriteBatch.End();
+
+			base.Draw(gameTime);
+		}
+	}
+}

File PIDControllers/PIDControllers/Program.cs

+using System;
+
+namespace PIDControllers
+{
+#if WINDOWS || XBOX
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        static void Main(string[] args)
+        {
+            using (PIDControllersGame game = new PIDControllersGame())
+            {
+                game.Run();
+            }
+        }
+    }
+#endif
+}
+

File PIDControllers/PIDControllers/Properties/AssemblyInfo.cs

+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("PIDControllers")]
+[assembly: AssemblyProduct("PIDControllers")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
+[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. Only Windows
+// assemblies support COM.
+[assembly: ComVisible(false)]
+
+// On Windows, the following GUID is for the ID of the typelib if this
+// project is exposed to COM. On other platforms, it unique identifies the
+// title storage container when deploying this assembly to the device.
+[assembly: Guid("104d3dbe-e280-4e66-8958-d8bbb57ac8d1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]

File PIDControllers/PIDControllersContent/Level1.png

Added
New image

File PIDControllers/PIDControllersContent/Level2.png

Added
New image

File PIDControllers/PIDControllersContent/Level3.png

Added
New image

File PIDControllers/PIDControllersContent/Level4.png

Added
New image

File PIDControllers/PIDControllersContent/Level5.png

Added
New image

File PIDControllers/PIDControllersContent/Level6.png

Added
New image

File PIDControllers/PIDControllersContent/Level7.png

Added
New image

File PIDControllers/PIDControllersContent/Level8.png

Added
New image

File PIDControllers/PIDControllersContent/Level9.png

Added
New image

File PIDControllers/PIDControllersContent/PIDControllersContent.contentproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{6CA26598-F111-4B20-91D4-C9AC608746DE}</ProjectGuid>
+    <ProjectTypeGuids>{96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
+    <OutputPath>bin\$(Platform)\$(Configuration)</OutputPath>
+    <ContentRootDirectory>Content</ContentRootDirectory>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup>
+    <RootNamespace>PIDControllersContent</RootNamespace>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.EffectImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.FBXImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.TextureImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.XImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.AudioImporters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.VideoImporters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Level1.png">
+      <Name>Level1</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Level2.png">
+      <Name>Level2</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level3.png">
+      <Name>Level3</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level4.png">
+      <Name>Level4</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level5.png">
+      <Name>Level5</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level6.png">
+      <Name>Level6</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level7.png">
+      <Name>Level7</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level8.png">
+      <Name>Level8</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Level9.png">
+      <Name>Level9</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" />
+  <!--  To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>