axiosengine/axios/Axios_settings.cs

197 lines
6.4 KiB
C#
Raw Normal View History

2012-05-17 03:11:34 +00:00
#region CHANGELOG
2012-03-19 23:57:59 +00:00
/*
* Axios Engine
*
* By: Nathan Adams
*
* CHANGELOG
*
* 1.0.0.0
* - Initial Version
*
* 1.0.0.1
* - Adding staic function SetResolution
*
* 1.0.0.2
* - Adding flag when removing object from Farseer to prevent it from getting removed twice
*
* 1.0.0.3
* - Axios.Engine.File namespace
* - Adding title file reading support
* - Adding iosloated file storage support
*
* 1.0.0.4 - 3/9/2012
* - Condensing AddGameObject into a single method
*
* 1.0.0.5 - 3/9/2012
* - Adding checks in MenuScreen to make sure screen doesn't get struck in transition
*
* 1.0.0.6 - 3/10/2012
* - Added Singleton class
* - Added Logging class
* - Added LoggingFlag flags
* - Added static loglevel setting
* - Moving some enums out of classes
* - Adding AxiosRegularFile class
*
* 1.0.0.7 - 3/11/2012
* - Adding IAxiosFile interface
*
* 1.0.0.8 - 3/15/2012
* - Adding code for breakable bodies
*
* 1.0.0.9 - 3/16/2012
* - Changeing the complex objects alot - now they are more like "chained" objects
* - Adding checks for if objects are getting deleted too fast
*
* 1.0.1.0 - 3/20/2012
* - Taking out hard coded debug statements for the screen system
* - Adding field to allow/disallow automated mouse joints per object
* - Fixing bug with last screen not exiting if it is a background screen
*
* 1.0.1.1 - 3/22/2012
* - Fixing UI collision with mouse pointer
* - Adding AxiosRectangle and AxiosPoint classes
* - Adding properties in DrawableAxiosGameObject to turn on/off the following:
* - AdjustUnits
* - RelativeToCamera
* - Cleaning and sorting using statements
*
* 1.0.1.2 - 4/1/2012
* - Making AxiosTimer inheirt from AxiosGameObject for it to be casted properly
2012-03-19 23:57:59 +00:00
*
* 1.0.1.3 - 4/7/2012
* - Adding a check in the AxiosTimer update to only tick if the game is active
*
* 1.0.1.4 - 4/27/2012
* - Merging the new GSM
*
* 1.0.1.5 - 5/5/2012
* - Adding SplitFlat extension for Texture2D
2012-05-06 04:19:21 +00:00
* - Removing uneeded Game Screen checking code
* - Adding SplitFlat extension with offsets for Texture2D
* - Adding support for Gleed2D
* - Splitting the code for Gleed2D into seperate files
* - Adding a cache for loading in textures for Gleed2D
* - Adding GetStream(FileMode) to get the stream of a file
* - Adding support to load a Gleed2D level from a stream
* - Adjusting units for Gleed2D position for Farseer bodies
* - Modfying draw method in AxiosGameScreen to draw Gleed2D textures
* - Fixing path placement in Farseer
* - Moving base.draw to last in AxiosGameScreen to make sure Farseer debug information is visible
* - Removing old debugging code
* - Adding an extension to determine what side the objects collided on
* - Correcting misspelling of Extensions in String and Texture2D
*
2012-05-19 02:29:00 +00:00
* 1.0.1.6 - 5/18/2012
* - Adding cut extension - [Author: BJD]
* - Adding support for custom handling of Gleed2D items
* - Changing location of GetTexture to extensions
* - Enabling commented log messages
* - Fixing bug where loadrecentangleitem wouldn't be called by Gleed2D library
* - Changing AxiosTitleFile.GetStream() to return Stream instead of FileStream
* - Changing IAxiosFile.GetStream() to return Stream instead of FileStream
* - Adding support for XNACC
2012-05-19 02:29:00 +00:00
*
2012-03-19 23:57:59 +00:00
*/
2012-05-17 03:11:34 +00:00
#endregion
2012-03-19 23:57:59 +00:00
using System.Reflection;
using Axios.Engine.Log;
using Microsoft.Xna.Framework;
2012-03-19 23:57:59 +00:00
namespace Axios
{
public enum ResolutionSetting
{
Windows,
Xbox360,
WP7_Portrait,
WP7_Landscape
}
public static class Settings
{
public static LoggingFlag Loglevel = LoggingFlag.ALL;
#if WINDOWS
public static string Version = "Axios Engine " + Assembly.GetExecutingAssembly().GetName().Version.ToString();
#elif XBOX360 || WINDOWS_PHONE
private static AssemblyName assemblyref = new AssemblyName(Assembly.GetExecutingAssembly().FullName);
public static string Version = "Axios Engine " + Settings.assemblyref.Version;
#endif
public static bool ScreenSaver = false;
private static ResolutionSetting _ressetting;
/// <summary>
/// We should have two seperate resolutions for seperate devices.
/// This way you can have one source to preform calculations on world size depending on the device.
/// </summary>
public static void SetResolution(GraphicsDeviceManager graphics, ResolutionSetting setting)
{
//height is first
graphics.PreferredBackBufferHeight = GetResolution(setting)[0];
graphics.PreferredBackBufferWidth = GetResolution(setting)[1];
_ressetting = setting;
}
private static int[] GetResolution(ResolutionSetting setting)
{
int[] screendim = new int[2];
screendim[0] = 0;
screendim[1] = 0;
if (setting == ResolutionSetting.Windows || setting == ResolutionSetting.Xbox360)
{
screendim[0] = 720;
screendim[1] = 1280;
}
if (setting == ResolutionSetting.WP7_Landscape)
{
screendim[0] = 480;
screendim[1] = 800;
} else if (setting == ResolutionSetting.WP7_Portrait)
{
screendim[0] = 800;
screendim[1] = 480;
}
return screendim;
}
public static float GetHeightScale()
{
if (_ressetting == ResolutionSetting.WP7_Landscape || _ressetting == ResolutionSetting.WP7_Portrait)
{
return (float)GetResolution(_ressetting)[0] / (float)GetResolution(ResolutionSetting.Windows)[0];
}
else
{
return 1f;
}
}
public static float GetWidthScale()
{
if (_ressetting == ResolutionSetting.WP7_Landscape || _ressetting == ResolutionSetting.WP7_Portrait)
{
return (float)GetResolution(_ressetting)[1] / (float)GetResolution(ResolutionSetting.Windows)[1];
}
else
{
return 1f;
}
}
public static float GetScale()
{
return GetHeightScale() / GetWidthScale();
}
public static float DisplayUnitToSimUnitRatio = 24f;
}
}