Basic GUI library!
This commit is contained in:
+176
-151
@@ -1,161 +1,186 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
using Microsoft.Xna.Framework.Content;
|
||||
using Microsoft.Xna.Framework.GamerServices;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using Microsoft.Xna.Framework.Media;
|
||||
|
||||
namespace DepthsBelow
|
||||
{
|
||||
/// <summary>
|
||||
/// This is the main type for your game
|
||||
/// </summary>
|
||||
public class Core : Microsoft.Xna.Framework.Game
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using DepthsBelow.GUI;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
using Microsoft.Xna.Framework.Content;
|
||||
using Microsoft.Xna.Framework.GamerServices;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using Microsoft.Xna.Framework.Media;
|
||||
|
||||
namespace DepthsBelow
|
||||
{
|
||||
/// <summary>
|
||||
/// This is the main type for your game
|
||||
/// </summary>
|
||||
public class Core : Microsoft.Xna.Framework.Game
|
||||
{
|
||||
public static GraphicsDeviceManager GraphicsDeviceManager;
|
||||
SpriteBatch spriteBatch;
|
||||
|
||||
public Camera Camera;
|
||||
|
||||
SpriteBatch spriteBatch;
|
||||
|
||||
public Camera Camera;
|
||||
|
||||
public static MouseInput MouseInput;
|
||||
public static KeyboardInput KeyboardInput;
|
||||
public List<Soldier> Squad;
|
||||
public List<SmallEnemy> Swarm;
|
||||
public static KeyboardInput KeyboardInput;
|
||||
public List<Soldier> Squad;
|
||||
public List<SmallEnemy> Swarm;
|
||||
public static Map Map;
|
||||
|
||||
public SmallEnemy TestMonster;
|
||||
|
||||
public Core()
|
||||
{
|
||||
GraphicsDeviceManager = new GraphicsDeviceManager(this);
|
||||
Content.RootDirectory = "Content";
|
||||
|
||||
GraphicsDeviceManager.PreferredBackBufferWidth = 1280;
|
||||
GraphicsDeviceManager.PreferredBackBufferHeight = 720;
|
||||
GraphicsDeviceManager.IsFullScreen = false;
|
||||
|
||||
//graphics.SynchronizeWithVerticalRetrace = false;
|
||||
this.IsFixedTimeStep = false;
|
||||
GraphicsDeviceManager.ApplyChanges();
|
||||
|
||||
this.IsMouseVisible = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allows the game to perform any initialization it needs to before starting to run.
|
||||
/// This is where it can query for any required services and load any non-graphic
|
||||
/// related content. Calling base.Initialize will enumerate through any components
|
||||
/// and initialize them as well.
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
// TODO: Add your initialization logic here
|
||||
Camera = new Camera(this);
|
||||
Squad = new List<Soldier>();
|
||||
public SmallEnemy TestMonster;
|
||||
|
||||
public Core()
|
||||
{
|
||||
GraphicsDeviceManager = new GraphicsDeviceManager(this);
|
||||
Content.RootDirectory = "Content";
|
||||
|
||||
GraphicsDeviceManager.PreferredBackBufferWidth = 1280;
|
||||
GraphicsDeviceManager.PreferredBackBufferHeight = 720;
|
||||
GraphicsDeviceManager.IsFullScreen = false;
|
||||
|
||||
//graphics.SynchronizeWithVerticalRetrace = false;
|
||||
this.IsFixedTimeStep = false;
|
||||
GraphicsDeviceManager.ApplyChanges();
|
||||
|
||||
this.IsMouseVisible = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allows the game to perform any initialization it needs to before starting to run.
|
||||
/// This is where it can query for any required services and load any non-graphic
|
||||
/// related content. Calling base.Initialize will enumerate through any components
|
||||
/// and initialize them as well.
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
// TODO: Add your initialization logic here
|
||||
Camera = new Camera(this);
|
||||
Squad = new List<Soldier>();
|
||||
Swarm = new List<SmallEnemy>();
|
||||
|
||||
TestMonster = new SmallEnemy(this, ref Swarm);
|
||||
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LoadContent will be called once per game and is the place to load
|
||||
/// all of your content.
|
||||
/// </summary>
|
||||
protected override void LoadContent()
|
||||
{
|
||||
// Create a new SpriteBatch, which can be used to draw textures.
|
||||
spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
|
||||
Map = Content.Load<Map>("maps/Cave.Level1");
|
||||
// Load map objects
|
||||
Map.ParseObjects(this);
|
||||
|
||||
// TODO: use this.Content to load your game content here
|
||||
Soldier.LoadContent(this);
|
||||
SmallEnemy.LoadContent(this);
|
||||
|
||||
MouseInput = new MouseInput(this);
|
||||
TestMonster = new SmallEnemy(this, ref Swarm);
|
||||
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LoadContent will be called once per game and is the place to load
|
||||
/// all of your content.
|
||||
/// </summary>
|
||||
protected override void LoadContent()
|
||||
{
|
||||
// Create a new SpriteBatch, which can be used to draw textures.
|
||||
spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
|
||||
Map = Content.Load<Map>("maps/Cave.Level1");
|
||||
// Load map objects
|
||||
Map.ParseObjects(this);
|
||||
|
||||
// TODO: use this.Content to load your game content here
|
||||
Soldier.LoadContent(this);
|
||||
SmallEnemy.LoadContent(this);
|
||||
|
||||
MouseInput = new MouseInput(this);
|
||||
MouseInput.LoadContent();
|
||||
KeyboardInput = new KeyboardInput(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UnloadContent will be called once per game and is the place to unload
|
||||
/// all content.
|
||||
/// </summary>
|
||||
protected override void UnloadContent()
|
||||
{
|
||||
// TODO: Unload any non ContentManager content here
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allows the game to run logic such as updating the world,
|
||||
/// checking for collisions, gathering input, and playing audio.
|
||||
/// </summary>
|
||||
/// <param name="gameTime">Provides a snapshot of timing values.</param>
|
||||
protected override void Update(GameTime gameTime)
|
||||
{
|
||||
// Allows the game to exit
|
||||
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
|
||||
this.Exit();
|
||||
|
||||
Camera.Update(gameTime);
|
||||
KeyboardInput = new KeyboardInput(this);
|
||||
|
||||
// Test GUI frames
|
||||
var frame = new GUI.Button()
|
||||
{
|
||||
X = 100,
|
||||
Width = 48,
|
||||
Height = 23,
|
||||
Texture = Content.Load<Texture2D>("images/Enter"),
|
||||
OnClick = delegate(Point clickPos)
|
||||
{
|
||||
Debug.WriteLine("That ugly button was clicked at (" + clickPos.X + "," + clickPos.Y + ")");
|
||||
}
|
||||
};
|
||||
var text = new GUI.Text(Content.Load<SpriteFont>("Arial"));
|
||||
text.Value = "Hello world!";
|
||||
frame.Add(text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UnloadContent will be called once per game and is the place to unload
|
||||
/// all content.
|
||||
/// </summary>
|
||||
protected override void UnloadContent()
|
||||
{
|
||||
// TODO: Unload any non ContentManager content here
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allows the game to run logic such as updating the world,
|
||||
/// checking for collisions, gathering input, and playing audio.
|
||||
/// </summary>
|
||||
/// <param name="gameTime">Provides a snapshot of timing values.</param>
|
||||
protected override void Update(GameTime gameTime)
|
||||
{
|
||||
// Allows the game to exit
|
||||
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
|
||||
this.Exit();
|
||||
|
||||
Camera.Update(gameTime);
|
||||
MouseInput.Update(gameTime);
|
||||
KeyboardInput.Update(gameTime);
|
||||
|
||||
// Update soldiers in squad
|
||||
foreach (var soldier in Squad)
|
||||
soldier.Update(gameTime);
|
||||
|
||||
foreach (var body in Swarm)
|
||||
body.Update(gameTime);
|
||||
|
||||
base.Update(gameTime);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This is called when the game should draw itself.
|
||||
/// </summary>
|
||||
/// <param name="gameTime">Provides a snapshot of timing values.</param>
|
||||
protected override void Draw(GameTime gameTime)
|
||||
{
|
||||
GraphicsDevice.Clear(Color.Black);
|
||||
|
||||
// Start drawing using the Camera transform
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null,
|
||||
Camera.Transform);
|
||||
|
||||
// Draw the level
|
||||
Map.Draw(spriteBatch);
|
||||
|
||||
// Draw units
|
||||
foreach (var soldier in Squad)
|
||||
{
|
||||
var sr = soldier.GetComponent<Component.SpriteRenderer>();
|
||||
if (sr != null)
|
||||
sr.Draw(spriteBatch);
|
||||
}
|
||||
foreach (var body in Swarm)
|
||||
{
|
||||
var sr = body.GetComponent<Component.SpriteRenderer>();
|
||||
if (sr != null)
|
||||
sr.Draw(spriteBatch);
|
||||
}
|
||||
|
||||
// Draw mouse input visuals
|
||||
KeyboardInput.Update(gameTime);
|
||||
|
||||
// Update soldiers in squad
|
||||
foreach (var soldier in Squad)
|
||||
soldier.Update(gameTime);
|
||||
|
||||
foreach (var body in Swarm)
|
||||
body.Update(gameTime);
|
||||
|
||||
GUIManager.Update(gameTime);
|
||||
|
||||
base.Update(gameTime);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This is called when the game should draw itself.
|
||||
/// </summary>
|
||||
/// <param name="gameTime">Provides a snapshot of timing values.</param>
|
||||
protected override void Draw(GameTime gameTime)
|
||||
{
|
||||
GraphicsDevice.Clear(Color.Black);
|
||||
|
||||
// Start drawing using the Camera transform
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null,
|
||||
Camera.Transform);
|
||||
|
||||
// Draw the level
|
||||
Map.Draw(spriteBatch);
|
||||
|
||||
// Draw units
|
||||
foreach (var soldier in Squad)
|
||||
{
|
||||
var sr = soldier.GetComponent<Component.SpriteRenderer>();
|
||||
if (sr != null)
|
||||
sr.Draw(spriteBatch);
|
||||
}
|
||||
foreach (var body in Swarm)
|
||||
{
|
||||
var sr = body.GetComponent<Component.SpriteRenderer>();
|
||||
if (sr != null)
|
||||
sr.Draw(spriteBatch);
|
||||
}
|
||||
|
||||
// Draw mouse input visuals
|
||||
MouseInput.Draw(spriteBatch);
|
||||
|
||||
TestMonster.GetComponent<Component.SpriteRenderer>().Draw(spriteBatch);
|
||||
|
||||
spriteBatch.End();
|
||||
|
||||
base.Draw(gameTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
TestMonster.GetComponent<Component.SpriteRenderer>().Draw(spriteBatch);
|
||||
|
||||
spriteBatch.End();
|
||||
|
||||
// Start drawing GUI components
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.AnisotropicClamp, null, null, null, Matrix.Identity);
|
||||
GUIManager.Draw(spriteBatch);
|
||||
spriteBatch.End();
|
||||
|
||||
base.Draw(gameTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,6 +122,10 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Camera.cs" />
|
||||
<Compile Include="GUIManager.cs" />
|
||||
<Compile Include="GUI\Button.cs" />
|
||||
<Compile Include="GUI\Frame.cs" />
|
||||
<Compile Include="GUI\Text.cs" />
|
||||
<Compile Include="KeyboardInput.cs" />
|
||||
<Compile Include="Component\PathFinder.cs" />
|
||||
<Compile Include="Component\Transform.cs" />
|
||||
@@ -186,6 +190,7 @@
|
||||
<ItemGroup>
|
||||
<None Include="DepthsBelow_TemporaryKey.pfx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
|
||||
<!--
|
||||
|
||||
Executable
+63
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
|
||||
namespace DepthsBelow.GUI
|
||||
{
|
||||
public class Button : Frame
|
||||
{
|
||||
public delegate void OnClickHandler(Point pos);
|
||||
|
||||
public OnClickHandler OnClick;
|
||||
|
||||
private MouseState lastMouseState;
|
||||
|
||||
public Button()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*public void OnClick(Point pos)
|
||||
{
|
||||
Debug.WriteLine(this + " was clicked at (" + pos.X + "," + pos.Y + ")");
|
||||
}*/
|
||||
|
||||
public override void Update(GameTime gameTime)
|
||||
{
|
||||
base.Update(gameTime);
|
||||
|
||||
MouseState ms = Mouse.GetState();
|
||||
|
||||
if (ms.LeftButton == ButtonState.Released && lastMouseState.LeftButton == ButtonState.Pressed)
|
||||
{
|
||||
// HACK: This should be handled globally somewhere else to prevent event bubbling
|
||||
if (
|
||||
ms.X >= Rectangle.Left
|
||||
&& ms.X < Rectangle.Right
|
||||
&& ms.Y >= Rectangle.Top
|
||||
&& ms.Y < Rectangle.Bottom)
|
||||
{
|
||||
if (OnClick != null)
|
||||
{
|
||||
var clickPos = new Point(ms.X - Rectangle.X, ms.Y - Rectangle.Y);
|
||||
OnClick(clickPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lastMouseState = ms;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteBatch spriteBatch)
|
||||
{
|
||||
//spriteBatch.DrawString(Font, Value, new Vector2(Rectangle.X + Parent.Rectangle.X, Rectangle.Y + Parent.Rectangle.Y), Color);
|
||||
|
||||
base.Draw(spriteBatch);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+91
@@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
namespace DepthsBelow.GUI
|
||||
{
|
||||
public class Frame
|
||||
{
|
||||
public int Width
|
||||
{
|
||||
get { return this.Rectangle.Width; }
|
||||
set { this.Rectangle.Width = value; }
|
||||
}
|
||||
public int Height
|
||||
{
|
||||
get { return this.Rectangle.Height; }
|
||||
set { this.Rectangle.Height = value; }
|
||||
}
|
||||
public int X
|
||||
{
|
||||
get { return this.Rectangle.X; }
|
||||
set { this.Rectangle.X = value; }
|
||||
}
|
||||
public int Y
|
||||
{
|
||||
get { return this.Rectangle.Y; }
|
||||
set { this.Rectangle.Y = value; }
|
||||
}
|
||||
|
||||
public Rectangle Rectangle;
|
||||
public Texture2D Texture;
|
||||
public Color Color;
|
||||
public bool Visible = true;
|
||||
|
||||
public Frame Parent;
|
||||
public List<Frame> Children;
|
||||
|
||||
public Frame()
|
||||
{
|
||||
this.Rectangle = Rectangle.Empty;
|
||||
this.Texture = null;
|
||||
this.Color = Color.White;
|
||||
|
||||
this.Children = new List<Frame>();
|
||||
|
||||
GUIManager.Add(this);
|
||||
}
|
||||
|
||||
public void Add(Frame childFrame)
|
||||
{
|
||||
childFrame.Parent = this;
|
||||
if (!Children.Contains(childFrame))
|
||||
Children.Add(childFrame);
|
||||
}
|
||||
|
||||
public void Remove(Frame childFrame)
|
||||
{
|
||||
if (Children.Contains(childFrame))
|
||||
Children.Remove(childFrame);
|
||||
}
|
||||
|
||||
public void Destroy()
|
||||
{
|
||||
if (Parent != null)
|
||||
Parent.Remove(this);
|
||||
|
||||
GUIManager.Remove(this);
|
||||
}
|
||||
|
||||
public virtual void Update(GameTime gameTime)
|
||||
{
|
||||
foreach (var child in Children)
|
||||
child.Update(gameTime);
|
||||
}
|
||||
|
||||
public virtual void Draw(SpriteBatch spriteBatch)
|
||||
{
|
||||
if (Visible)
|
||||
{
|
||||
if (Texture != null)
|
||||
spriteBatch.Draw(Texture, Rectangle, Color);
|
||||
|
||||
foreach (var child in Children)
|
||||
child.Draw(spriteBatch);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
namespace DepthsBelow.GUI
|
||||
{
|
||||
class Text : Frame
|
||||
{
|
||||
public String Value;
|
||||
public SpriteFont Font;
|
||||
public Color Color;
|
||||
|
||||
public Text(SpriteFont font)
|
||||
: base()
|
||||
{
|
||||
this.Font = font;
|
||||
this.Color = Color.Black;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteBatch spriteBatch)
|
||||
{
|
||||
base.Draw(spriteBatch);
|
||||
|
||||
spriteBatch.DrawString(Font, Value, new Vector2(Rectangle.X + Parent.Rectangle.X, Rectangle.Y + Parent.Rectangle.Y), Color);
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using DepthsBelow.GUI;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
namespace DepthsBelow
|
||||
{
|
||||
static class GUIManager
|
||||
{
|
||||
public static List<Frame> Frames = new List<Frame>();
|
||||
|
||||
public static void Add(Frame frame)
|
||||
{
|
||||
Frames.Add(frame);
|
||||
}
|
||||
|
||||
public static void Remove(Frame frame)
|
||||
{
|
||||
Frames.Remove(frame);
|
||||
}
|
||||
|
||||
public static void Update(GameTime gameTime)
|
||||
{
|
||||
foreach (var frame in Frames)
|
||||
frame.Update(gameTime);
|
||||
}
|
||||
|
||||
public static void Draw(SpriteBatch spriteBatch)
|
||||
{
|
||||
foreach (var frame in Frames)
|
||||
frame.Draw(spriteBatch);
|
||||
}
|
||||
}
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file contains an xml description of a font, and will be read by the XNA
|
||||
Framework Content Pipeline. Follow the comments to customize the appearance
|
||||
of the font in your game, and to change the characters which are available to draw
|
||||
with.
|
||||
-->
|
||||
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
|
||||
<Asset Type="Graphics:FontDescription">
|
||||
|
||||
<!--
|
||||
Modify this string to change the font that will be imported.
|
||||
-->
|
||||
<FontName>Berlin Sans FB</FontName>
|
||||
|
||||
<!--
|
||||
Size is a float value, measured in points. Modify this value to change
|
||||
the size of the font.
|
||||
-->
|
||||
<Size>11</Size>
|
||||
|
||||
<!--
|
||||
Spacing is a float value, measured in pixels. Modify this value to change
|
||||
the amount of spacing in between characters.
|
||||
-->
|
||||
<Spacing>0</Spacing>
|
||||
|
||||
<!--
|
||||
UseKerning controls the layout of the font. If this value is true, kerning information
|
||||
will be used when placing characters.
|
||||
-->
|
||||
<UseKerning>true</UseKerning>
|
||||
|
||||
<!--
|
||||
Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
|
||||
and "Bold, Italic", and are case sensitive.
|
||||
-->
|
||||
<Style>Regular</Style>
|
||||
|
||||
<!--
|
||||
If you uncomment this line, the default character will be substituted if you draw
|
||||
or measure text that contains characters which were not included in the font.
|
||||
-->
|
||||
<!-- <DefaultCharacter>*</DefaultCharacter> -->
|
||||
|
||||
<!--
|
||||
CharacterRegions control what letters are available in the font. Every
|
||||
character from Start to End will be built and made available for drawing. The
|
||||
default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
|
||||
character set. The characters are ordered according to the Unicode standard.
|
||||
See the documentation for more information.
|
||||
-->
|
||||
<CharacterRegions>
|
||||
<CharacterRegion>
|
||||
<Start> </Start>
|
||||
<End>~</End>
|
||||
</CharacterRegion>
|
||||
</CharacterRegions>
|
||||
</Asset>
|
||||
</XnaContent>
|
||||
@@ -113,6 +113,13 @@
|
||||
<Processor>TextureProcessor</Processor>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Arial.spritefont">
|
||||
<Name>Arial</Name>
|
||||
<Importer>FontDescriptionImporter</Importer>
|
||||
<Processor>FontDescriptionProcessor</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.
|
||||
|
||||
Reference in New Issue
Block a user