diff --git a/README b/README
index 54a627e..1da6e79 100644
--- a/README
+++ b/README
@@ -31,16 +31,17 @@ Where can I download pre-built DLLs?
Official versions can be downloaded here:
- http://code.google.com/p/axiosengine/downloads/list
+ https://srchub.org/p/axiosengine/downloads/
Of course you can always build from source from:
- http://code.google.com/p/axiosengine/source/checkout
+ https://srchub.org/hg/axiosengine
Authors
-------
General questions/comments/concerns can be directed at:
+
Nathan Adams - adamsna[at]datanethost.net
Contributors:
@@ -65,4 +66,7 @@ XNACC - See XNACC.License.txt
http://xnacc.codeplex.com/
-Portions of this product are (C) 2009-2011 JRTwine Software, LLC
\ No newline at end of file
+Portions of this product are (C) 2009-2011 JRTwine Software, LLC
+
+Prompt Factory - By Blaze Phoenix
+http://stackoverflow.com/a/17260476/195722
diff --git a/axios.sln b/axios.sln
index e80e6f5..f07c805 100644
--- a/axios.sln
+++ b/axios.sln
@@ -1,12 +1,14 @@
Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010 Express for Windows Phone
+# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Axios_Windows", "axios\Axios_Windows.csproj", "{742C938F-997D-4EFD-95D2-BB09CDADCD2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Axios_Xbox_360", "axios\Axios_Xbox_360.csproj", "{B5664516-72B7-4BA3-9F72-25CAA90867D8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Axios_WP7", "axios\Axios_WP7.csproj", "{C09D9005-76AC-4F1A-9479-2787BB3DB158}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Axios_Windows_mono", "axios\Axios_Windows_mono.csproj", "{A622337F-9AE6-492A-85D6-01CCE0D7F9B4}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -75,6 +77,20 @@ Global
{C09D9005-76AC-4F1A-9479-2787BB3DB158}.Release|x86.Build.0 = Release|Windows Phone
{C09D9005-76AC-4F1A-9479-2787BB3DB158}.Release|Xbox 360.ActiveCfg = Release|Windows Phone
{C09D9005-76AC-4F1A-9479-2787BB3DB158}.Release|Xbox 360.Build.0 = Release|Windows Phone
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Windows Phone.ActiveCfg = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|x86.ActiveCfg = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|x86.Build.0 = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Xbox 360.ActiveCfg = Debug|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|Any CPU.ActiveCfg = Release|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|Mixed Platforms.Build.0 = Release|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|Windows Phone.ActiveCfg = Release|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|x86.ActiveCfg = Release|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|x86.Build.0 = Release|x86
+ {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Release|Xbox 360.ActiveCfg = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/axios/Axios_WP7.csproj b/axios/Axios_WP7.csproj
index 52c449f..c192166 100644
--- a/axios/Axios_WP7.csproj
+++ b/axios/Axios_WP7.csproj
@@ -156,6 +156,7 @@
+
@@ -202,6 +203,7 @@
+
diff --git a/axios/Axios_Windows.csproj b/axios/Axios_Windows.csproj
index 538e531..0108daf 100644
--- a/axios/Axios_Windows.csproj
+++ b/axios/Axios_Windows.csproj
@@ -10,7 +10,8 @@
Axios
Axios.Windows
v4.0
- Client
+
+
v4.0
Windows
HiDef
@@ -44,6 +45,13 @@
true
+
+ ..\..\..\git\axiosmapeditor\Gleed2D-master\src\Gleed2D.Core\bin\x86\Debug\Gleed2D.Core.dll
+
+
+ False
+ ..\..\..\git\axiosmapeditor\Gleed2D-master\src\Gleed2D.Core\bin\x86\Debug\Gleed2D.InGame.dll
+
False
@@ -99,6 +107,7 @@
+
@@ -221,14 +230,8 @@
-
-
-
-
-
-
@@ -246,6 +249,7 @@
+
@@ -286,7 +290,6 @@
-
diff --git a/axios/Axios_Windows.csproj.user b/axios/Axios_Windows.csproj.user
index 76fe5a5..566c009 100644
--- a/axios/Axios_Windows.csproj.user
+++ b/axios/Axios_Windows.csproj.user
@@ -1,6 +1,6 @@
- ProjectFiles
+ ShowAllFiles
\ No newline at end of file
diff --git a/axios/Axios_Xbox_360.csproj b/axios/Axios_Xbox_360.csproj
index 1af380f..7b86e17 100644
--- a/axios/Axios_Xbox_360.csproj
+++ b/axios/Axios_Xbox_360.csproj
@@ -150,6 +150,7 @@
+
@@ -195,6 +196,7 @@
+
diff --git a/axios/Axios_settings.cs b/axios/Axios_settings.cs
index 96aaec6..70dc7a2 100644
--- a/axios/Axios_settings.cs
+++ b/axios/Axios_settings.cs
@@ -122,6 +122,13 @@
* 1.0.1.8 - 1/12/2012
* - Adding UseSecondStep flag in PhysicsGameScreen (default false)
*
+ * 1.0.1.9 - 5/20/2013
+ * - Adding mono support
+ *
+ * 1.0.1.10 - 11/29/2014
+ * - Adding prompt factory class to generate a Final Fantasy type text prompt
+ * - Updating Gleed2D support to work with latest version of Gleed2D
+ *
*/
#endregion
diff --git a/axios/Engine/AxiosGameScreen.cs b/axios/Engine/AxiosGameScreen.cs
index f289845..ef25755 100644
--- a/axios/Engine/AxiosGameScreen.cs
+++ b/axios/Engine/AxiosGameScreen.cs
@@ -12,8 +12,15 @@ using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using GameStateManagement;
using Microsoft.Xna.Framework.Input;
-using Axios.Engine.Gleed2D;
using Axios.Engine.Extensions;
+using System.IO;
+using System.IO.Compression;
+using Gleed2D.InGame;
+using Axios.Engine.File;
+using System.Xml.Linq;
+using Gleed2D.Core;
+using System.Diagnostics;
+using Axios.Engine.Gleed2D;
namespace Axios.Engine
{
@@ -36,6 +43,12 @@ namespace Axios.Engine
private List _timers;
private List _uiobjects;
+ protected Dictionary PathItems = new Dictionary();
+ protected Dictionary TextureItems = new Dictionary();
+ //protected List TextureItems = new List();
+
+ protected Dictionary cache = new Dictionary();
+
private AxiosUIObject prevuiobj;
private AxiosUIObject prevuifocusobj;
@@ -68,6 +81,56 @@ namespace Axios.Engine
}
+ public void LoadLevelFromStream(Stream s)
+ {
+ XElement xml = XElement.Load(s);
+ Level level = LevelLoader.Load(xml);
+ this.Level = level;
+
+ foreach (Layer layer in level.Layers)
+ {
+ foreach (LayerItem item in layer.Items)
+ {
+ //Debug.WriteLine(item.PropertyType);
+ switch (item.PropertyType)
+ {
+ case "Gleed2D.InGame.PathItemProperties":
+ this.LoadPathItem((PathItemProperties)item.Properties, layer);
+ break;
+ case "Gleed2D.InGame.TextureItemProperties":
+ this.LoadTextureItem((TextureItemProperties)item.Properties, layer);
+ break;
+ case "Gleed2D.InGame.RectangleItemProperties":
+ this.LoadRectangleItem((RectangleItemProperties)item.Properties, layer);
+ break;
+ case "Gleed2D.InGame.CircleItemProperties":
+ this.LoadCircleItem((CircleItemProperties)item.Properties, layer);
+ break;
+ default:
+ this.LoadOtherItem(item.Properties, item.PropertyType, layer);
+ break;
+ }
+ /*Debug.WriteLine(item.Properties.Id);
+ Debug.WriteLine(item.Properties.Name);
+ Debug.WriteLine(item.PropertyType);*/
+
+ }
+ }
+ }
+
+ public void LoadLevelFromFile(string s)
+ {
+ AxiosTitleFile file = new AxiosTitleFile(s);
+ this.LoadLevelFromStream(file.GetStream(FileMode.Open));
+ }
+
+ public void LoadLevelFromGZFile(string s)
+ {
+ AxiosTitleFile file = new AxiosTitleFile(s);
+ GZipStream zipstream = new GZipStream(file.GetStream(FileMode.Open), CompressionMode.Decompress);
+ this.LoadLevelFromStream(zipstream);
+ }
+
public Vector2 MouseAimVector(MouseState ms, Vector2 relativeposition)
{
Vector2 ret;
@@ -234,10 +297,16 @@ namespace Axios.Engine
foreach (Layer layer in Level.Layers)
{
Vector2 oldcameraposition = camera.Position;
- camera.Position *= layer.ScrollSpeed;
+ //camera.Position *= layer.ScrollSpeed;
ScreenManager.SpriteBatch.Begin(0, null, null, null, null, null, Camera.View);
- layer.draw(ScreenManager.SpriteBatch);
+ foreach (TextureItem i in TextureItems.Values)
+ {
+ if (i.LayerItem.Visible == true)
+ {
+ i.draw(ScreenManager.SpriteBatch);
+ }
+ }
ScreenManager.SpriteBatch.End();
camera.Position = oldcameraposition;
@@ -250,6 +319,8 @@ namespace Axios.Engine
foreach(AxiosUIObject g in (from x in _uiobjects orderby x.DrawOrder select x))
((IDrawableAxiosGameObject)g).Draw(this, gameTime);
+
+
base.Draw(gameTime); //This is placed at the end so that Farseer debug information is visible
}
@@ -459,25 +530,31 @@ namespace Axios.Engine
///
///
///
- public virtual bool LoadCircleItem(CircleItem circleitem)
+ public virtual void LoadCircleItem(CircleItemProperties circleitem, Layer l)
{
- return true;
+
}
- public virtual bool LoadPathItem(PathItem pathitem)
+ public virtual void LoadPathItem(PathItemProperties pathitem, Layer l)
{
- return true;
+ PathItem p = new PathItem((PathItemProperties)pathitem);
+ p.load(this, ref cache);
+ PathItems[pathitem.Name] = p;
}
- public virtual bool LoadRectangleItem(RectangleItem rectangleitem)
+ public virtual void LoadRectangleItem(RectangleItemProperties rectangleitem, Layer l)
{
- return true;
+
}
- public virtual bool LoadTextureItem(TextureItem textureitem)
+ public virtual void LoadTextureItem(TextureItemProperties textureitem, Layer l)
{
- return true;
+ TextureItem i = new TextureItem((TextureItemProperties)textureitem);
+ i.load(this, ref cache);
+ TextureItems[textureitem.Name] = i;
}
+ public virtual void LoadOtherItem(ItemProperties prop, string type, Layer l) { }
+
}
}
diff --git a/axios/Engine/Gleed2D/Item.cs b/axios/Engine/Gleed2D/Item.cs
index 92c69a4..46d81ac 100644
--- a/axios/Engine/Gleed2D/Item.cs
+++ b/axios/Engine/Gleed2D/Item.cs
@@ -8,48 +8,19 @@ using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using FarseerPhysics.Dynamics;
+using Gleed2D.InGame;
namespace Axios.Engine.Gleed2D
{
- [XmlInclude(typeof(TextureItem))]
- [XmlInclude(typeof(RectangleItem))]
- [XmlInclude(typeof(CircleItem))]
- [XmlInclude(typeof(PathItem))]
- public partial class Item
+ public class Item
{
- ///
- /// The name of this item.
- ///
- [XmlAttribute()]
- public String Name;
-
- ///
- /// Should this item be visible?
- ///
- [XmlAttribute()]
- public bool Visible;
-
- ///
- /// The item's position in world space.
- ///
- public Vector2 Position;
-
- ///
- /// A Dictionary containing any user-defined Properties.
- ///
- public SerializableDictionary CustomProperties;
- public Item()
- {
- CustomProperties = new SerializableDictionary();
- }
-
///
/// Called by Level.FromFile(filename) on each Item after the deserialization process.
/// Should be overriden and can be used to load anything needed by the Item (e.g. a texture).
///
- public virtual void load(AxiosGameScreen gameScreen, ref Dictionary cache, Layer layer)
+ public virtual void load(AxiosGameScreen gameScreen, ref Dictionary cache)
{
}
diff --git a/axios/Engine/Gleed2D/PathItem.cs b/axios/Engine/Gleed2D/PathItem.cs
index 08494a1..8f22ac3 100644
--- a/axios/Engine/Gleed2D/PathItem.cs
+++ b/axios/Engine/Gleed2D/PathItem.cs
@@ -9,36 +9,39 @@ using FarseerPhysics.Factories;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
+using Gleed2D.InGame;
namespace Axios.Engine.Gleed2D
{
- public partial class PathItem : Item
+ public class PathItem : Item
{
- public Vector2[] LocalPoints;
- public Vector2[] WorldPoints;
- public bool IsPolygon;
- public int LineWidth;
- public Color LineColor;
+ private PathItemProperties _item;
+
+ public PathItemProperties LayerItem
+ {
+ get { return _item; }
+ set { }
+ }
Body _body;
- public PathItem()
+ public PathItem(PathItemProperties i)
{
+ this._item = i;
}
- public override void load(AxiosGameScreen gameScreen, ref Dictionary cache, Layer layer)
+ public override void load(AxiosGameScreen gameScreen, ref Dictionary cache)
{
- base.load(gameScreen, ref cache, layer);
- if (gameScreen.LoadPathItem(this))
- {
- Vertices v = new Vertices(LocalPoints.Length);
- foreach (Vector2 vec in LocalPoints)
- v.Add(new Vector2(ConvertUnits.ToSimUnits(vec.X), ConvertUnits.ToSimUnits(vec.Y)));
+ base.load(gameScreen, ref cache);
+
+ Vertices v = new Vertices(LayerItem.LocalPoints.Count);
+ foreach (Vector2 vec in LayerItem.LocalPoints)
+ v.Add(new Vector2(ConvertUnits.ToSimUnits(vec.X), ConvertUnits.ToSimUnits(vec.Y)));
- _body = BodyFactory.CreateLoopShape(gameScreen.World, v);
- _body.Position = ConvertUnits.ToSimUnits(this.Position);
- _body.UserData = this;
- }
+ _body = BodyFactory.CreateLoopShape(gameScreen.World, v);
+ _body.Position = ConvertUnits.ToSimUnits(this.LayerItem.Position);
+ _body.UserData = this;
+
}
}
diff --git a/axios/Engine/Gleed2D/TextureItem.cs b/axios/Engine/Gleed2D/TextureItem.cs
index 7fdfd28..e5f4da3 100644
--- a/axios/Engine/Gleed2D/TextureItem.cs
+++ b/axios/Engine/Gleed2D/TextureItem.cs
@@ -12,65 +12,25 @@ using FarseerPhysics.Dynamics;
using FarseerPhysics.Common;
using FarseerPhysics.SamplesFramework;
using FarseerPhysics.Factories;
+using Gleed2D.InGame;
namespace Axios.Engine.Gleed2D
{
public partial class TextureItem : Item
{
- ///
- /// The item's rotation in radians.
- ///
- public float Rotation;
-
- ///
- /// The item's scale factor.
- ///
- public Vector2 Scale;
-
- ///
- /// The color to tint the item's texture with (use white for no tint).
- ///
- public Color TintColor;
-
- ///
- /// If true, the texture is flipped horizontally when drawn.
- ///
- public bool FlipHorizontally;
-
- ///
- /// If true, the texture is flipped vertically when drawn.
- ///
- public bool FlipVertically;
-
- ///
- /// The path to the texture's filename (including the extension) relative to ContentRootFolder.
- ///
- public String texture_filename;
-
- ///
- /// The texture_filename without extension. For using in Content.Load().
- ///
- public String asset_name;
-
- ///
- /// The XNA texture to be drawn. Can be loaded either from file (using "texture_filename")
- /// or via the Content Pipeline (using "asset_name") - then you must ensure that the texture
- /// exists as an asset in your project.
- /// Loading is done in the Item's load() method.
- ///
public Texture2D texture;
- ///
- /// The item's origin relative to the upper left corner of the texture. Usually the middle of the texture.
- /// Used for placing and rotating the texture when drawn.
- ///
- public Vector2 Origin;
-
- public Layer Layer;
+ private TextureItemProperties _item;
+ public TextureItemProperties LayerItem
+ {
+ get { return _item; }
+ set { }
+ }
- public TextureItem()
+ public TextureItem(TextureItemProperties i)
{
+ this._item = i;
}
///
@@ -79,22 +39,21 @@ namespace Axios.Engine.Gleed2D
/// You must provide your own implementation. However, you can rely on all public fields being
/// filled by the level deserialization process.
///
- public override void load(AxiosGameScreen gameScreen, ref Dictionary cache, Layer layer)
+ public override void load(AxiosGameScreen gameScreen, ref Dictionary cache)
{
- this.Layer = layer;
- base.load(gameScreen, ref cache, layer);
+ base.load(gameScreen, ref cache);
//throw new NotImplementedException();
//TODO: provide your own implementation of how a TextureItem loads its assets
//for example:
//this.texture = Texture2D.FromFile(, texture_filename);
//or by using the Content Pipeline:
- if (!cache.ContainsKey(asset_name))
+ if (!cache.ContainsKey(LayerItem.AssetName))
{
- cache[asset_name] = gameScreen.ScreenManager.Game.Content.Load(asset_name);
+ cache[LayerItem.AssetName] = gameScreen.ScreenManager.Game.Content.Load(LayerItem.AssetName);
}
- this.texture = cache[asset_name];
- Visible = gameScreen.LoadTextureItem(this);
+ this.texture = cache[LayerItem.AssetName];
+ //Visible = gameScreen.LoadTextureItem(this);
//this.texture = cm.Load(asset_name);
@@ -102,11 +61,11 @@ namespace Axios.Engine.Gleed2D
public override void draw(SpriteBatch sb)
{
- if (!Visible) return;
+ if (!LayerItem.Visible) return;
SpriteEffects effects = SpriteEffects.None;
- if (FlipHorizontally) effects |= SpriteEffects.FlipHorizontally;
- if (FlipVertically) effects |= SpriteEffects.FlipVertically;
- sb.Draw(texture, Position, null, TintColor, Rotation, Origin, Scale, effects, 0);
+ if (LayerItem.FlipHorizontally) effects |= SpriteEffects.FlipHorizontally;
+ if (LayerItem.FlipVertically) effects |= SpriteEffects.FlipVertically;
+ sb.Draw(texture, LayerItem.Position, null, LayerItem.TintColor, LayerItem.Rotation, LayerItem.Origin, LayerItem.Scale, effects, 0);
}
}
}
diff --git a/axios/Factories/Prompt.cs b/axios/Factories/Prompt.cs
new file mode 100644
index 0000000..2b85228
--- /dev/null
+++ b/axios/Factories/Prompt.cs
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace Axios.Factories
+{
+ public static class Prompt
+ {
+ // Copied from http://stackoverflow.com/a/17260476/195722
+ // Written by Blaze Phoenix
+ ///
+ /// Creates a rounded rectangle
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Texture2D CreateRoundedRectangleTexture(this GraphicsDevice graphics, int width, int height, int borderThickness, int borderRadius, int borderShadow, List backgroundColors, List borderColors, float initialShadowIntensity, float finalShadowIntensity)
+ {
+ if (backgroundColors == null || backgroundColors.Count == 0) throw new ArgumentException("Must define at least one background color (up to four).");
+ if (borderColors == null || borderColors.Count == 0) throw new ArgumentException("Must define at least one border color (up to three).");
+ if (borderRadius < 1) throw new ArgumentException("Must define a border radius (rounds off edges).");
+ if (borderThickness < 1) throw new ArgumentException("Must define border thikness.");
+ if (borderThickness + borderRadius > height / 2 || borderThickness + borderRadius > width / 2) throw new ArgumentException("Border will be too thick and/or rounded to fit on the texture.");
+ if (borderShadow > borderRadius) throw new ArgumentException("Border shadow must be lesser in magnitude than the border radius (suggeted: shadow <= 0.25 * radius).");
+
+ Texture2D texture = new Texture2D(graphics, width, height, false, SurfaceFormat.Color);
+ Color[] color = new Color[width * height];
+
+ for (int x = 0; x < texture.Width; x++)
+ {
+ for (int y = 0; y < texture.Height; y++)
+ {
+ switch (backgroundColors.Count)
+ {
+ case 4:
+ Color leftColor0 = Color.Lerp(backgroundColors[0], backgroundColors[1], ((float)y / (width - 1)));
+ Color rightColor0 = Color.Lerp(backgroundColors[2], backgroundColors[3], ((float)y / (height - 1)));
+ color[x + width * y] = Color.Lerp(leftColor0, rightColor0, ((float)x / (width - 1)));
+ break;
+ case 3:
+ Color leftColor1 = Color.Lerp(backgroundColors[0], backgroundColors[1], ((float)y / (width - 1)));
+ Color rightColor1 = Color.Lerp(backgroundColors[1], backgroundColors[2], ((float)y / (height - 1)));
+ color[x + width * y] = Color.Lerp(leftColor1, rightColor1, ((float)x / (width - 1)));
+ break;
+ case 2:
+ color[x + width * y] = Color.Lerp(backgroundColors[0], backgroundColors[1], ((float)x / (width - 1)));
+ break;
+ default:
+ color[x + width * y] = backgroundColors[0];
+ break;
+ }
+
+ color[x + width * y] = ColorBorder(x, y, width, height, borderThickness, borderRadius, borderShadow, color[x + width * y], borderColors, initialShadowIntensity, finalShadowIntensity);
+ }
+ }
+
+ texture.SetData(color);
+ return texture;
+ }
+
+ private static Color ColorBorder(int x, int y, int width, int height, int borderThickness, int borderRadius, int borderShadow, Color initialColor, List borderColors, float initialShadowIntensity, float finalShadowIntensity)
+ {
+ Rectangle internalRectangle = new Rectangle((borderThickness + borderRadius), (borderThickness + borderRadius), width - 2 * (borderThickness + borderRadius), height - 2 * (borderThickness + borderRadius));
+
+ if (internalRectangle.Contains(x, y)) return initialColor;
+
+ Vector2 origin = Vector2.Zero;
+ Vector2 point = new Vector2(x, y);
+
+ if (x < borderThickness + borderRadius)
+ {
+ if (y < borderRadius + borderThickness)
+ origin = new Vector2(borderRadius + borderThickness, borderRadius + borderThickness);
+ else if (y > height - (borderRadius + borderThickness))
+ origin = new Vector2(borderRadius + borderThickness, height - (borderRadius + borderThickness));
+ else
+ origin = new Vector2(borderRadius + borderThickness, y);
+ }
+ else if (x > width - (borderRadius + borderThickness))
+ {
+ if (y < borderRadius + borderThickness)
+ origin = new Vector2(width - (borderRadius + borderThickness), borderRadius + borderThickness);
+ else if (y > height - (borderRadius + borderThickness))
+ origin = new Vector2(width - (borderRadius + borderThickness), height - (borderRadius + borderThickness));
+ else
+ origin = new Vector2(width - (borderRadius + borderThickness), y);
+ }
+ else
+ {
+ if (y < borderRadius + borderThickness)
+ origin = new Vector2(x, borderRadius + borderThickness);
+ else if (y > height - (borderRadius + borderThickness))
+ origin = new Vector2(x, height - (borderRadius + borderThickness));
+ }
+
+ if (!origin.Equals(Vector2.Zero))
+ {
+ float distance = Vector2.Distance(point, origin);
+
+ if (distance > borderRadius + borderThickness + 1)
+ {
+ return Color.Transparent;
+ }
+ else if (distance > borderRadius + 1)
+ {
+ if (borderColors.Count > 2)
+ {
+ float modNum = distance - borderRadius;
+
+ if (modNum < borderThickness / 2)
+ {
+ return Color.Lerp(borderColors[2], borderColors[1], (float)((modNum) / (borderThickness / 2.0)));
+ }
+ else
+ {
+ return Color.Lerp(borderColors[1], borderColors[0], (float)((modNum - (borderThickness / 2.0)) / (borderThickness / 2.0)));
+ }
+ }
+
+
+ if (borderColors.Count > 0)
+ return borderColors[0];
+ }
+ else if (distance > borderRadius - borderShadow + 1)
+ {
+ float mod = (distance - (borderRadius - borderShadow)) / borderShadow;
+ float shadowDiff = initialShadowIntensity - finalShadowIntensity;
+ return DarkenColor(initialColor, ((shadowDiff * mod) + finalShadowIntensity));
+ }
+ }
+
+ return initialColor;
+ }
+
+ private static Color DarkenColor(Color color, float shadowIntensity)
+ {
+ return Color.Lerp(color, Color.Black, shadowIntensity);
+ }
+ }
+}
diff --git a/axios/Properties/AssemblyInfo.cs b/axios/Properties/AssemblyInfo.cs
index bc3d36d..8580126 100644
--- a/axios/Properties/AssemblyInfo.cs
+++ b/axios/Properties/AssemblyInfo.cs
@@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyProduct("Axios")]
[assembly: AssemblyDescription("XNA 2D Game Engine")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyCopyright("Copyright © 2012 - Nathan Adams")]
+[assembly: AssemblyCopyright("Copyright © 2014 - Nathan Adams")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("1.0.1.7")]
+[assembly: AssemblyVersion("1.0.1.10")]
#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
diff --git a/axios/ScreenSystem/PhysicsGameScreen.cs b/axios/ScreenSystem/PhysicsGameScreen.cs
index 53cbed2..a88c5cc 100644
--- a/axios/ScreenSystem/PhysicsGameScreen.cs
+++ b/axios/ScreenSystem/PhysicsGameScreen.cs
@@ -57,7 +57,7 @@ namespace GameStateManagement
base.Activate(instancePreserved);
//We enable diagnostics to show get values for our performance counters.
- Settings.EnableDiagnostics = true;
+ FarseerPhysics.Settings.EnableDiagnostics = true;
if (World == null)
{