Fixed the StorageDevice and StorageContainer and native implementations
This commit is contained in:
parent
0b9acc40ee
commit
4fdad340d3
@ -116,7 +116,6 @@
|
|||||||
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Design\GamerServices\" />
|
|
||||||
<Folder Include="Strukturen\Input\MotionSensing\" />
|
<Folder Include="Strukturen\Input\MotionSensing\" />
|
||||||
<Folder Include="Strukturen\Input\Touch\" />
|
<Folder Include="Strukturen\Input\Touch\" />
|
||||||
<Folder Include="Strukturen\Net\" />
|
<Folder Include="Strukturen\Net\" />
|
||||||
|
@ -116,7 +116,6 @@
|
|||||||
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Design\GamerServices\" />
|
|
||||||
<Folder Include="Strukturen\Input\MotionSensing\" />
|
<Folder Include="Strukturen\Input\MotionSensing\" />
|
||||||
<Folder Include="Strukturen\Input\Touch\" />
|
<Folder Include="Strukturen\Input\Touch\" />
|
||||||
<Folder Include="Strukturen\Net\" />
|
<Folder Include="Strukturen\Net\" />
|
||||||
|
@ -117,7 +117,6 @@
|
|||||||
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Design\GamerServices\" />
|
|
||||||
<Folder Include="Strukturen\Input\MotionSensing\" />
|
<Folder Include="Strukturen\Input\MotionSensing\" />
|
||||||
<Folder Include="Strukturen\Input\Touch\" />
|
<Folder Include="Strukturen\Input\Touch\" />
|
||||||
<Folder Include="Strukturen\Net\" />
|
<Folder Include="Strukturen\Net\" />
|
||||||
|
@ -118,7 +118,6 @@
|
|||||||
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
<Folder Include="Strukturen\Content\MediaTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
<Folder Include="Strukturen\Content\PrimitiveTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
<Folder Include="Strukturen\Content\SystemTypeReaders\" />
|
||||||
<Folder Include="Strukturen\Design\GamerServices\" />
|
|
||||||
<Folder Include="Strukturen\Input\MotionSensing\" />
|
<Folder Include="Strukturen\Input\MotionSensing\" />
|
||||||
<Folder Include="Strukturen\Input\Touch\" />
|
<Folder Include="Strukturen\Input\Touch\" />
|
||||||
<Folder Include="Strukturen\Net\" />
|
<Folder Include="Strukturen\Net\" />
|
||||||
|
@ -11,6 +11,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO
|
#if !WINDOWSMETRO
|
||||||
[Developer("AstrorEnales")]
|
[Developer("AstrorEnales")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public class ANXFieldDescriptor : PropertyDescriptor
|
public class ANXFieldDescriptor : PropertyDescriptor
|
||||||
{
|
{
|
||||||
private FieldInfo field;
|
private FieldInfo field;
|
||||||
|
@ -11,6 +11,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO
|
#if !WINDOWSMETRO
|
||||||
[Developer("AstrorEnales")]
|
[Developer("AstrorEnales")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public class ANXPropertyDescriptor : PropertyDescriptor
|
public class ANXPropertyDescriptor : PropertyDescriptor
|
||||||
{
|
{
|
||||||
private PropertyInfo property;
|
private PropertyInfo property;
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class BoundingBoxConverter : MathTypeConverter
|
public class BoundingBoxConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public BoundingBoxConverter()
|
public BoundingBoxConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class BoundingSphereConverter : MathTypeConverter
|
public class BoundingSphereConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public BoundingSphereConverter()
|
public BoundingSphereConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class ColorConverter : MathTypeConverter
|
public class ColorConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public ColorConverter()
|
public ColorConverter()
|
||||||
|
@ -19,6 +19,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public class MathTypeConverter : ExpandableObjectConverter
|
public class MathTypeConverter : ExpandableObjectConverter
|
||||||
{
|
{
|
||||||
protected PropertyDescriptorCollection propertyDescriptions;
|
protected PropertyDescriptorCollection propertyDescriptions;
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class MatrixConverter : MathTypeConverter
|
public class MatrixConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public MatrixConverter()
|
public MatrixConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class PlaneConverter : MathTypeConverter
|
public class PlaneConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public PlaneConverter()
|
public PlaneConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class PointConverter : MathTypeConverter
|
public class PointConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public PointConverter()
|
public PointConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class QuaternionConverter : MathTypeConverter
|
public class QuaternionConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public QuaternionConverter()
|
public QuaternionConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class RayConverter : MathTypeConverter
|
public class RayConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public RayConverter()
|
public RayConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class RectangleConverter : MathTypeConverter
|
public class RectangleConverter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public RectangleConverter()
|
public RectangleConverter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class Vector2Converter : MathTypeConverter
|
public class Vector2Converter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public Vector2Converter()
|
public Vector2Converter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class Vector3Converter : MathTypeConverter
|
public class Vector3Converter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public Vector3Converter()
|
public Vector3Converter()
|
||||||
|
@ -12,6 +12,7 @@ namespace ANX.Framework.Design
|
|||||||
{
|
{
|
||||||
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
#if !WINDOWSMETRO //TODO: search replacement for Win8
|
||||||
[Developer("GinieDP")]
|
[Developer("GinieDP")]
|
||||||
|
[TestState(TestStateAttribute.TestState.Tested)]
|
||||||
public class Vector4Converter : MathTypeConverter
|
public class Vector4Converter : MathTypeConverter
|
||||||
{
|
{
|
||||||
public Vector4Converter()
|
public Vector4Converter()
|
||||||
|
@ -600,14 +600,8 @@ namespace ANX.Framework.Graphics
|
|||||||
|
|
||||||
public Rectangle ScissorRectangle
|
public Rectangle ScissorRectangle
|
||||||
{
|
{
|
||||||
get
|
get { return NativeDevice.ScissorRectangle; }
|
||||||
{
|
set { NativeDevice.ScissorRectangle = value; }
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public GraphicsDeviceStatus GraphicsDeviceStatus
|
public GraphicsDeviceStatus GraphicsDeviceStatus
|
||||||
|
@ -31,8 +31,8 @@ namespace ANX.Framework.Graphics
|
|||||||
OneOverWidth = 1f / width;
|
OneOverWidth = 1f / width;
|
||||||
OneOverHeight = 1f / height;
|
OneOverHeight = 1f / height;
|
||||||
|
|
||||||
base.levelCount = 1;
|
base.LevelCount = 1;
|
||||||
base.format = SurfaceFormat.Color;
|
base.Format = SurfaceFormat.Color;
|
||||||
|
|
||||||
this.DepthStencilFormat = DepthFormat.None;
|
this.DepthStencilFormat = DepthFormat.None;
|
||||||
this.MultiSampleCount = 0;
|
this.MultiSampleCount = 0;
|
||||||
@ -53,8 +53,8 @@ namespace ANX.Framework.Graphics
|
|||||||
OneOverWidth = 1f / width;
|
OneOverWidth = 1f / width;
|
||||||
OneOverHeight = 1f / height;
|
OneOverHeight = 1f / height;
|
||||||
|
|
||||||
base.levelCount = 1;
|
base.LevelCount = 1;
|
||||||
base.format = preferredFormat;
|
base.Format = preferredFormat;
|
||||||
|
|
||||||
this.DepthStencilFormat = preferredDepthFormat;
|
this.DepthStencilFormat = preferredDepthFormat;
|
||||||
this.MultiSampleCount = 0;
|
this.MultiSampleCount = 0;
|
||||||
@ -76,8 +76,8 @@ namespace ANX.Framework.Graphics
|
|||||||
OneOverWidth = 1f / width;
|
OneOverWidth = 1f / width;
|
||||||
OneOverHeight = 1f / height;
|
OneOverHeight = 1f / height;
|
||||||
|
|
||||||
base.levelCount = 1;
|
base.LevelCount = 1;
|
||||||
base.format = preferredFormat;
|
base.Format = preferredFormat;
|
||||||
|
|
||||||
this.DepthStencilFormat = preferredDepthFormat;
|
this.DepthStencilFormat = preferredDepthFormat;
|
||||||
this.MultiSampleCount = preferredMultiSampleCount;
|
this.MultiSampleCount = preferredMultiSampleCount;
|
||||||
|
@ -11,27 +11,12 @@ namespace ANX.Framework.Graphics
|
|||||||
[TestState(TestStateAttribute.TestState.Untested)]
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public abstract class Texture : GraphicsResource
|
public abstract class Texture : GraphicsResource
|
||||||
{
|
{
|
||||||
protected internal int levelCount;
|
internal INativeTexture nativeTexture;
|
||||||
protected internal SurfaceFormat format;
|
|
||||||
protected internal INativeTexture nativeTexture;
|
|
||||||
|
|
||||||
public int LevelCount
|
public int LevelCount { get; internal set; }
|
||||||
{
|
public SurfaceFormat Format { get; internal set; }
|
||||||
get
|
|
||||||
{
|
|
||||||
return this.levelCount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SurfaceFormat Format
|
internal INativeTexture NativeTexture
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return this.format;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal INativeTexture NativeTexture
|
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@ -44,7 +29,7 @@ namespace ANX.Framework.Graphics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Texture(GraphicsDevice graphicsDevice)
|
internal Texture(GraphicsDevice graphicsDevice)
|
||||||
: base(graphicsDevice)
|
: base(graphicsDevice)
|
||||||
{
|
{
|
||||||
base.GraphicsDevice.ResourceCreated += GraphicsDevice_ResourceCreated;
|
base.GraphicsDevice.ResourceCreated += GraphicsDevice_ResourceCreated;
|
||||||
|
@ -75,8 +75,8 @@ namespace ANX.Framework.Graphics
|
|||||||
OneOverWidth = 1f / width;
|
OneOverWidth = 1f / width;
|
||||||
OneOverHeight = 1f / height;
|
OneOverHeight = 1f / height;
|
||||||
|
|
||||||
base.levelCount = 1;
|
base.LevelCount = 1;
|
||||||
base.format = SurfaceFormat.Color;
|
base.Format = SurfaceFormat.Color;
|
||||||
|
|
||||||
CreateNativeTextureSurface();
|
CreateNativeTextureSurface();
|
||||||
}
|
}
|
||||||
@ -91,8 +91,8 @@ namespace ANX.Framework.Graphics
|
|||||||
OneOverHeight = 1f / height;
|
OneOverHeight = 1f / height;
|
||||||
|
|
||||||
// TODO: pass the mipmap parameter to the creation of the texture to let the graphics card generate mipmaps!
|
// TODO: pass the mipmap parameter to the creation of the texture to let the graphics card generate mipmaps!
|
||||||
base.levelCount = 1;
|
base.LevelCount = 1;
|
||||||
base.format = format;
|
base.Format = format;
|
||||||
|
|
||||||
CreateNativeTextureSurface();
|
CreateNativeTextureSurface();
|
||||||
}
|
}
|
||||||
@ -105,8 +105,8 @@ namespace ANX.Framework.Graphics
|
|||||||
OneOverWidth = 1f / width;
|
OneOverWidth = 1f / width;
|
||||||
OneOverHeight = 1f / height;
|
OneOverHeight = 1f / height;
|
||||||
|
|
||||||
base.levelCount = mipCount;
|
base.LevelCount = mipCount;
|
||||||
base.format = format;
|
base.Format = format;
|
||||||
|
|
||||||
CreateNativeTextureSurface();
|
CreateNativeTextureSurface();
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ namespace ANX.Framework.Graphics
|
|||||||
private void CreateNativeTextureSurface()
|
private void CreateNativeTextureSurface()
|
||||||
{
|
{
|
||||||
var creator = AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>();
|
var creator = AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>();
|
||||||
nativeTexture2D = creator.CreateTexture(GraphicsDevice, format, width, height, levelCount);
|
nativeTexture2D = creator.CreateTexture(GraphicsDevice, Format, width, height, LevelCount);
|
||||||
base.nativeTexture = nativeTexture2D;
|
base.nativeTexture = nativeTexture2D;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -7,6 +7,7 @@ using ANX.Framework.NonXNA.Development;
|
|||||||
namespace ANX.Framework.Graphics
|
namespace ANX.Framework.Graphics
|
||||||
{
|
{
|
||||||
[PercentageComplete(100)]
|
[PercentageComplete(100)]
|
||||||
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public struct VertexBufferBinding
|
public struct VertexBufferBinding
|
||||||
{
|
{
|
||||||
#region Private
|
#region Private
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using ANX.Framework.Storage;
|
|
||||||
|
|
||||||
// This file is part of the ANX.Framework created by the
|
// This file is part of the ANX.Framework created by the
|
||||||
// "ANX.Framework developer group" and released under the Ms-PL license.
|
// "ANX.Framework developer group" and released under the Ms-PL license.
|
||||||
@ -9,21 +8,11 @@ namespace ANX.Framework.NonXNA.PlatformSystem
|
|||||||
{
|
{
|
||||||
public interface INativeStorageDevice
|
public interface INativeStorageDevice
|
||||||
{
|
{
|
||||||
long FreeSpace
|
long FreeSpace { get; }
|
||||||
{
|
long TotalSpace { get; }
|
||||||
get;
|
bool IsConnected { get; }
|
||||||
}
|
string StoragePath { get; }
|
||||||
|
|
||||||
long TotalSpace
|
void DeleteContainer(string titleName);
|
||||||
{
|
|
||||||
get;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsConnected
|
|
||||||
{
|
|
||||||
get;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeleteContainer(string titleName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,5 +47,6 @@ namespace ANX.Framework.NonXNA
|
|||||||
void ResizeBuffers(PresentationParameters presentationParameters);
|
void ResizeBuffers(PresentationParameters presentationParameters);
|
||||||
|
|
||||||
bool VSync { get; set; }
|
bool VSync { get; set; }
|
||||||
|
Rectangle ScissorRectangle { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ using ANX.Framework.NonXNA.PlatformSystem;
|
|||||||
|
|
||||||
namespace ANX.Framework.Storage
|
namespace ANX.Framework.Storage
|
||||||
{
|
{
|
||||||
|
[PercentageComplete(100)]
|
||||||
[Developer("AstrorEnales")]
|
[Developer("AstrorEnales")]
|
||||||
[TestState(TestStateAttribute.TestState.Untested)]
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public class StorageContainer : IDisposable
|
public class StorageContainer : IDisposable
|
||||||
@ -18,17 +19,17 @@ namespace ANX.Framework.Storage
|
|||||||
#region Public
|
#region Public
|
||||||
public event EventHandler<EventArgs> Disposing;
|
public event EventHandler<EventArgs> Disposing;
|
||||||
|
|
||||||
public string DisplayName { get; protected set; }
|
public string DisplayName { get; private set; }
|
||||||
public StorageDevice StorageDevice { get; protected set; }
|
public StorageDevice StorageDevice { get; private set; }
|
||||||
public bool IsDisposed { get; protected set; }
|
public bool IsDisposed { get; private set; }
|
||||||
|
internal PlayerIndex PlayerIndex { get; private set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
internal StorageContainer(StorageDevice device, PlayerIndex player, string displayName)
|
internal StorageContainer(StorageDevice device, PlayerIndex player, string displayName)
|
||||||
{
|
{
|
||||||
StorageDevice = device;
|
StorageDevice = device;
|
||||||
DisplayName = displayName;
|
DisplayName = displayName;
|
||||||
|
PlayerIndex = player;
|
||||||
// TODO: player!
|
|
||||||
|
|
||||||
nativeImplementation = PlatformSystem.Instance.CreateStorageContainer(this);
|
nativeImplementation = PlatformSystem.Instance.CreateStorageContainer(this);
|
||||||
}
|
}
|
||||||
@ -98,8 +99,7 @@ namespace ANX.Framework.Storage
|
|||||||
return OpenFile(file, fileMode, fileAccess, FileShare.None);
|
return OpenFile(file, fileMode, fileAccess, FileShare.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Stream OpenFile(string file, FileMode fileMode, FileAccess fileAccess,
|
public Stream OpenFile(string file, FileMode fileMode, FileAccess fileAccess, FileShare fileShare)
|
||||||
FileShare fileShare)
|
|
||||||
{
|
{
|
||||||
return nativeImplementation.OpenFile(file, fileMode, fileAccess, fileShare);
|
return nativeImplementation.OpenFile(file, fileMode, fileAccess, fileShare);
|
||||||
}
|
}
|
||||||
|
@ -9,15 +9,17 @@ using ANX.Framework.NonXNA.PlatformSystem;
|
|||||||
|
|
||||||
namespace ANX.Framework.Storage
|
namespace ANX.Framework.Storage
|
||||||
{
|
{
|
||||||
|
[PercentageComplete(100)]
|
||||||
[Developer("AstrorEnales")]
|
[Developer("AstrorEnales")]
|
||||||
[TestState(TestStateAttribute.TestState.Untested)]
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public sealed class StorageDevice
|
public sealed class StorageDevice
|
||||||
{
|
{
|
||||||
#region Private
|
#region Private
|
||||||
private INativeStorageDevice nativeImplementation;
|
private readonly PlayerIndex playerIndex;
|
||||||
|
private readonly INativeStorageDevice nativeImplementation;
|
||||||
|
|
||||||
private static Func<PlayerIndex, int, int, StorageDevice> openDeviceDelegate = null;
|
private static Func<PlayerIndex, int, int, StorageDevice> openDeviceDelegate;
|
||||||
private Func<string, StorageContainer> openContainerDelegate = null;
|
private Func<string, StorageContainer> openContainerDelegate;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Public
|
#region Public
|
||||||
@ -25,57 +27,40 @@ namespace ANX.Framework.Storage
|
|||||||
public static event EventHandler<EventArgs> DeviceChanged;
|
public static event EventHandler<EventArgs> DeviceChanged;
|
||||||
#pragma warning restore 0067
|
#pragma warning restore 0067
|
||||||
|
|
||||||
public long FreeSpace
|
public long FreeSpace
|
||||||
{
|
{
|
||||||
get
|
get { return nativeImplementation.FreeSpace; }
|
||||||
{
|
}
|
||||||
return nativeImplementation.FreeSpace;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsConnected
|
public bool IsConnected
|
||||||
{
|
{
|
||||||
get
|
get { return nativeImplementation.IsConnected; }
|
||||||
{
|
}
|
||||||
return nativeImplementation.IsConnected;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public long TotalSpace
|
public long TotalSpace
|
||||||
{
|
{
|
||||||
get
|
get { return nativeImplementation.TotalSpace; }
|
||||||
{
|
}
|
||||||
return nativeImplementation.TotalSpace;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal string StoragePath
|
internal string StoragePath
|
||||||
{
|
{
|
||||||
get;
|
get { return nativeImplementation.StoragePath; }
|
||||||
private set;
|
}
|
||||||
}
|
#endregion
|
||||||
|
|
||||||
internal PlayerIndex PlayerIndex
|
|
||||||
{
|
|
||||||
get;
|
|
||||||
private set;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructor
|
#region Constructor
|
||||||
internal StorageDevice(PlayerIndex player, int sizeInBytes, int directoryCount)
|
internal StorageDevice(PlayerIndex player, int sizeInBytes, int directoryCount)
|
||||||
{
|
{
|
||||||
|
playerIndex = player;
|
||||||
nativeImplementation = PlatformSystem.Instance.CreateStorageDevice(this, player, sizeInBytes, directoryCount);
|
nativeImplementation = PlatformSystem.Instance.CreateStorageDevice(this, player, sizeInBytes, directoryCount);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region BeginOpenContainer
|
#region BeginOpenContainer
|
||||||
public IAsyncResult BeginOpenContainer(string displayName,
|
public IAsyncResult BeginOpenContainer(string displayName, AsyncCallback callback, Object state)
|
||||||
AsyncCallback callback, Object state)
|
|
||||||
{
|
{
|
||||||
if (openContainerDelegate != null)
|
if (openContainerDelegate != null)
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException("There is currently a StorageContainer request pending. " +
|
||||||
"There is currently a StorageContainer request pending. " +
|
|
||||||
"Please let this request finish.");
|
"Please let this request finish.");
|
||||||
|
|
||||||
openContainerDelegate = OpenStorageContainer;
|
openContainerDelegate = OpenStorageContainer;
|
||||||
@ -88,35 +73,26 @@ namespace ANX.Framework.Storage
|
|||||||
{
|
{
|
||||||
return BeginShowSelector(PlayerIndex.One, 0, 0, callback, state);
|
return BeginShowSelector(PlayerIndex.One, 0, 0, callback, state);
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region BeginShowSelector
|
public static IAsyncResult BeginShowSelector(int sizeInBytes, int directoryCount, AsyncCallback callback, Object state)
|
||||||
public static IAsyncResult BeginShowSelector(int sizeInBytes, int directoryCount,
|
|
||||||
AsyncCallback callback, Object state)
|
|
||||||
{
|
{
|
||||||
return BeginShowSelector(PlayerIndex.One, sizeInBytes, directoryCount,
|
return BeginShowSelector(PlayerIndex.One, sizeInBytes, directoryCount, callback, state);
|
||||||
callback, state);
|
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region BeginShowSelector
|
public static IAsyncResult BeginShowSelector(PlayerIndex player, AsyncCallback callback, Object state)
|
||||||
public static IAsyncResult BeginShowSelector(PlayerIndex player,
|
|
||||||
AsyncCallback callback, Object state)
|
|
||||||
{
|
{
|
||||||
return BeginShowSelector(player, 0, 0, callback, state);
|
return BeginShowSelector(player, 0, 0, callback, state);
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region BeginShowSelector
|
public static IAsyncResult BeginShowSelector(PlayerIndex player, int sizeInBytes, int directoryCount,
|
||||||
public static IAsyncResult BeginShowSelector(PlayerIndex player,
|
AsyncCallback callback, Object state)
|
||||||
int sizeInBytes, int directoryCount, AsyncCallback callback, Object state)
|
|
||||||
{
|
{
|
||||||
if (openDeviceDelegate != null)
|
if (openDeviceDelegate != null)
|
||||||
throw new InvalidOperationException("There is currently a StorageDevice request pending. Please let this request finish.");
|
throw new InvalidOperationException(
|
||||||
|
"There is currently a StorageDevice request pending. Please let this request finish.");
|
||||||
|
|
||||||
openDeviceDelegate = OpenStorageDevice;
|
openDeviceDelegate = OpenStorageDevice;
|
||||||
return openDeviceDelegate.BeginInvoke(player, sizeInBytes, directoryCount,
|
return openDeviceDelegate.BeginInvoke(player, sizeInBytes, directoryCount, callback, state);
|
||||||
callback, state);
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -162,8 +138,7 @@ namespace ANX.Framework.Storage
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region OpenStorageDevice
|
#region OpenStorageDevice
|
||||||
private static StorageDevice OpenStorageDevice(PlayerIndex player,
|
private static StorageDevice OpenStorageDevice(PlayerIndex player, int sizeInBytes, int directoryCount)
|
||||||
int sizeInBytes, int directoryCount)
|
|
||||||
{
|
{
|
||||||
return new StorageDevice(player, sizeInBytes, directoryCount);
|
return new StorageDevice(player, sizeInBytes, directoryCount);
|
||||||
}
|
}
|
||||||
@ -172,7 +147,7 @@ namespace ANX.Framework.Storage
|
|||||||
#region OpenStorageContainer
|
#region OpenStorageContainer
|
||||||
private StorageContainer OpenStorageContainer(string displayName)
|
private StorageContainer OpenStorageContainer(string displayName)
|
||||||
{
|
{
|
||||||
return new StorageContainer(this, PlayerIndex, displayName);
|
return new StorageContainer(this, playerIndex, displayName);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ using ANX.Framework.NonXNA.Development;
|
|||||||
|
|
||||||
namespace ANX.Framework.Storage
|
namespace ANX.Framework.Storage
|
||||||
{
|
{
|
||||||
|
[PercentageComplete(95)]
|
||||||
[Developer("AstrorEnales")]
|
[Developer("AstrorEnales")]
|
||||||
[TestState(TestStateAttribute.TestState.Untested)]
|
[TestState(TestStateAttribute.TestState.Untested)]
|
||||||
public class StorageDeviceNotConnectedException : ExternalException
|
public class StorageDeviceNotConnectedException : ExternalException
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
using ANX.Framework;
|
||||||
using ANX.Framework.NonXNA.PlatformSystem;
|
using ANX.Framework.NonXNA.PlatformSystem;
|
||||||
using ANX.Framework.Storage;
|
using ANX.Framework.Storage;
|
||||||
|
|
||||||
@ -12,21 +14,56 @@ namespace ANX.PlatformSystem.Linux
|
|||||||
{
|
{
|
||||||
public class LinuxStorageContainer : INativeStorageContainer
|
public class LinuxStorageContainer : INativeStorageContainer
|
||||||
{
|
{
|
||||||
private StorageContainer parent;
|
private readonly StorageContainer parent;
|
||||||
private DirectoryInfo baseDirectory;
|
private readonly DirectoryInfo baseDirectory;
|
||||||
|
|
||||||
public LinuxStorageContainer(StorageContainer setParent)
|
public LinuxStorageContainer(StorageContainer setParent)
|
||||||
{
|
{
|
||||||
parent = setParent;
|
parent = setParent;
|
||||||
|
baseDirectory = new DirectoryInfo(GetDirectoryForContainer());
|
||||||
string fullPath = Path.Combine(parent.StorageDevice.StoragePath,
|
|
||||||
parent.DisplayName);
|
|
||||||
baseDirectory = new DirectoryInfo(fullPath);
|
|
||||||
// fails silently if directory exists
|
// fails silently if directory exists
|
||||||
baseDirectory.Create();
|
baseDirectory.Create();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region CreateDirectory
|
private string GetDirectoryForContainer()
|
||||||
|
{
|
||||||
|
// TODO: check if Environment.GetFolderPath returns something useful under linux!
|
||||||
|
string result = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "SavedGames");
|
||||||
|
result = Path.Combine(result, GetGameTitle());
|
||||||
|
result = Path.Combine(result, parent.DisplayName);
|
||||||
|
string playerSubDir;
|
||||||
|
switch (parent.PlayerIndex)
|
||||||
|
{
|
||||||
|
case PlayerIndex.One:
|
||||||
|
playerSubDir = "Player1";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Two:
|
||||||
|
playerSubDir = "Player2";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Three:
|
||||||
|
playerSubDir = "Player3";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Four:
|
||||||
|
playerSubDir = "Player4";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
playerSubDir = "AllPlayers";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Path.Combine(result, playerSubDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetGameTitle()
|
||||||
|
{
|
||||||
|
var entryAssembly = Assembly.GetEntryAssembly();
|
||||||
|
if (entryAssembly != null)
|
||||||
|
return Path.GetFileNameWithoutExtension(entryAssembly.Location);
|
||||||
|
|
||||||
|
throw new InvalidOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region CreateDirectory
|
||||||
public void CreateDirectory(string directory)
|
public void CreateDirectory(string directory)
|
||||||
{
|
{
|
||||||
baseDirectory.CreateSubdirectory(directory);
|
baseDirectory.CreateSubdirectory(directory);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
using ANX.Framework;
|
using ANX.Framework;
|
||||||
using ANX.Framework.NonXNA.PlatformSystem;
|
using ANX.Framework.NonXNA.PlatformSystem;
|
||||||
using ANX.Framework.Storage;
|
using ANX.Framework.Storage;
|
||||||
@ -15,9 +16,8 @@ namespace ANX.PlatformSystem.Linux
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class LinuxStorageDevice : INativeStorageDevice
|
public class LinuxStorageDevice : INativeStorageDevice
|
||||||
{
|
{
|
||||||
private string storagePath;
|
private readonly StorageDevice parent;
|
||||||
private StorageDevice parent;
|
private readonly DriveInfo storageDrive;
|
||||||
private DriveInfo storageDrive;
|
|
||||||
|
|
||||||
#region Public
|
#region Public
|
||||||
public long FreeSpace
|
public long FreeSpace
|
||||||
@ -50,55 +50,62 @@ namespace ANX.PlatformSystem.Linux
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsConnected
|
public bool IsConnected
|
||||||
|
{
|
||||||
|
get { return storageDrive.IsReady; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string StoragePath { get; private set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public LinuxStorageDevice(StorageDevice setParent, PlayerIndex player, int sizeInBytes, int directoryCount)
|
||||||
{
|
{
|
||||||
get
|
parent = setParent;
|
||||||
{
|
StoragePath = GetDirectoryForContainer(player);
|
||||||
return storageDrive.IsReady;
|
storageDrive = new DriveInfo(Path.GetPathRoot(StoragePath).Substring(0, 1));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructor
|
private string GetDirectoryForContainer(PlayerIndex player)
|
||||||
public LinuxStorageDevice(StorageDevice setParent, PlayerIndex player,
|
{
|
||||||
int sizeInBytes, int directoryCount)
|
// TODO: check if Environment.GetFolderPath returns something useful under linux!
|
||||||
{
|
string result = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "SavedGames");
|
||||||
parent = setParent;
|
result = Path.Combine(result, GetGameTitle());
|
||||||
|
//result = Path.Combine(result, StorageContainer.DisplayName);
|
||||||
|
string playerSubDir;
|
||||||
|
switch (player)
|
||||||
|
{
|
||||||
|
case PlayerIndex.One:
|
||||||
|
playerSubDir = "Player1";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Two:
|
||||||
|
playerSubDir = "Player2";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Three:
|
||||||
|
playerSubDir = "Player3";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Four:
|
||||||
|
playerSubDir = "Player4";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
playerSubDir = "AllPlayers";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
string playerPath;
|
return Path.Combine(result, playerSubDir);
|
||||||
switch (player)
|
}
|
||||||
{
|
|
||||||
case PlayerIndex.One:
|
|
||||||
playerPath = "Player1";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Two:
|
|
||||||
playerPath = "Player2";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Three:
|
|
||||||
playerPath = "Player3";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Four:
|
|
||||||
playerPath = "Player4";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
playerPath = "AllPlayers";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: find the correct linux location for this stuff!
|
private static string GetGameTitle()
|
||||||
string myDocsPath = Environment.GetFolderPath(
|
{
|
||||||
Environment.SpecialFolder.MyDocuments);
|
var entryAssembly = Assembly.GetEntryAssembly();
|
||||||
storagePath = Path.Combine(myDocsPath, "SavedGames", playerPath);
|
if (entryAssembly != null)
|
||||||
storagePath = Path.GetFullPath(storagePath);
|
return Path.GetFileNameWithoutExtension(entryAssembly.Location);
|
||||||
storageDrive = new DriveInfo(Path.GetPathRoot(myDocsPath).Substring(0, 1));
|
|
||||||
}
|
throw new InvalidOperationException();
|
||||||
#endregion
|
}
|
||||||
|
|
||||||
#region DeleteContainer
|
|
||||||
public void DeleteContainer(string titleName)
|
public void DeleteContainer(string titleName)
|
||||||
{
|
{
|
||||||
Directory.Delete(Path.Combine(parent.StoragePath, titleName), true);
|
Directory.Delete(Path.Combine(parent.StoragePath, titleName), true);
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,9 +33,14 @@ namespace ANX.PlatformSystem.Metro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string StoragePath
|
||||||
|
{
|
||||||
|
get { throw new NotImplementedException(); }
|
||||||
|
}
|
||||||
|
|
||||||
public void DeleteContainer(string titleName)
|
public void DeleteContainer(string titleName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
using ANX.Framework;
|
using ANX.Framework;
|
||||||
using ANX.Framework.NonXNA.PlatformSystem;
|
using ANX.Framework.NonXNA.PlatformSystem;
|
||||||
using ANX.Framework.Storage;
|
using ANX.Framework.Storage;
|
||||||
@ -12,9 +13,8 @@ namespace ANX.PlatformSystem.PsVita
|
|||||||
{
|
{
|
||||||
public class PsVitaStorageDevice : INativeStorageDevice
|
public class PsVitaStorageDevice : INativeStorageDevice
|
||||||
{
|
{
|
||||||
private string storagePath;
|
private readonly StorageDevice parent;
|
||||||
private StorageDevice parent;
|
private readonly DriveInfo storageDrive;
|
||||||
private DriveInfo storageDrive;
|
|
||||||
|
|
||||||
#region Public
|
#region Public
|
||||||
public long FreeSpace
|
public long FreeSpace
|
||||||
@ -47,55 +47,61 @@ namespace ANX.PlatformSystem.PsVita
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsConnected
|
public bool IsConnected
|
||||||
|
{
|
||||||
|
get { return storageDrive.IsReady; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string StoragePath { get; private set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public PsVitaStorageDevice(StorageDevice setParent, PlayerIndex player, int sizeInBytes, int directoryCount)
|
||||||
{
|
{
|
||||||
get
|
parent = setParent;
|
||||||
{
|
StoragePath = GetDirectoryForContainer(player);
|
||||||
return storageDrive.IsReady;
|
storageDrive = new DriveInfo(Path.GetPathRoot(StoragePath).Substring(0, 1));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructor
|
private string GetDirectoryForContainer(PlayerIndex player)
|
||||||
public PsVitaStorageDevice(StorageDevice setParent, PlayerIndex player,
|
{
|
||||||
int sizeInBytes, int directoryCount)
|
string result = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "SavedGames");
|
||||||
{
|
result = Path.Combine(result, GetGameTitle());
|
||||||
parent = setParent;
|
//result = Path.Combine(result, StorageContainer.DisplayName);
|
||||||
|
string playerSubDir;
|
||||||
|
switch (player)
|
||||||
|
{
|
||||||
|
case PlayerIndex.One:
|
||||||
|
playerSubDir = "Player1";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Two:
|
||||||
|
playerSubDir = "Player2";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Three:
|
||||||
|
playerSubDir = "Player3";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Four:
|
||||||
|
playerSubDir = "Player4";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
playerSubDir = "AllPlayers";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
string playerPath;
|
return Path.Combine(result, playerSubDir);
|
||||||
switch (player)
|
}
|
||||||
{
|
|
||||||
case PlayerIndex.One:
|
|
||||||
playerPath = "Player1";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Two:
|
|
||||||
playerPath = "Player2";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Three:
|
|
||||||
playerPath = "Player3";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Four:
|
|
||||||
playerPath = "Player4";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
playerPath = "AllPlayers";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: find the correct PsVita location for this stuff!
|
private static string GetGameTitle()
|
||||||
string myDocsPath = Environment.GetFolderPath(
|
{
|
||||||
Environment.SpecialFolder.MyDocuments);
|
var entryAssembly = Assembly.GetEntryAssembly();
|
||||||
storagePath = Path.Combine(myDocsPath, "SavedGames", playerPath);
|
if (entryAssembly != null)
|
||||||
storagePath = Path.GetFullPath(storagePath);
|
return Path.GetFileNameWithoutExtension(entryAssembly.Location);
|
||||||
storageDrive = new DriveInfo(Path.GetPathRoot(myDocsPath).Substring(0, 1));
|
|
||||||
}
|
throw new InvalidOperationException();
|
||||||
#endregion
|
}
|
||||||
|
|
||||||
#region DeleteContainer
|
|
||||||
public void DeleteContainer(string titleName)
|
public void DeleteContainer(string titleName)
|
||||||
{
|
{
|
||||||
Directory.Delete(Path.Combine(parent.StoragePath, titleName), true);
|
Directory.Delete(Path.Combine(parent.StoragePath, titleName), true);
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,19 +12,16 @@ namespace ANX.PlatformSystem.Windows
|
|||||||
{
|
{
|
||||||
public class WindowsStorageContainer : INativeStorageContainer
|
public class WindowsStorageContainer : INativeStorageContainer
|
||||||
{
|
{
|
||||||
private StorageContainer parent;
|
private readonly StorageContainer parent;
|
||||||
private DirectoryInfo baseDirectory;
|
private readonly DirectoryInfo baseDirectory;
|
||||||
|
|
||||||
public WindowsStorageContainer(StorageContainer setParent)
|
public WindowsStorageContainer(StorageContainer setParent)
|
||||||
{
|
{
|
||||||
parent = setParent;
|
parent = setParent;
|
||||||
|
baseDirectory = new DirectoryInfo(parent.StorageDevice.StoragePath);
|
||||||
string fullPath = Path.Combine(parent.StorageDevice.StoragePath,
|
|
||||||
parent.DisplayName);
|
|
||||||
baseDirectory = new DirectoryInfo(fullPath);
|
|
||||||
// fails silently if directory exists
|
// fails silently if directory exists
|
||||||
baseDirectory.Create();
|
baseDirectory.Create();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region CreateDirectory
|
#region CreateDirectory
|
||||||
public void CreateDirectory(string directory)
|
public void CreateDirectory(string directory)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
using ANX.Framework;
|
using ANX.Framework;
|
||||||
using ANX.Framework.NonXNA.PlatformSystem;
|
using ANX.Framework.NonXNA.PlatformSystem;
|
||||||
using ANX.Framework.Storage;
|
using ANX.Framework.Storage;
|
||||||
@ -12,9 +13,8 @@ namespace ANX.PlatformSystem.Windows
|
|||||||
{
|
{
|
||||||
public class WindowsStorageDevice : INativeStorageDevice
|
public class WindowsStorageDevice : INativeStorageDevice
|
||||||
{
|
{
|
||||||
private string storagePath;
|
private readonly StorageDevice parent;
|
||||||
private StorageDevice parent;
|
private readonly DriveInfo storageDrive;
|
||||||
private DriveInfo storageDrive;
|
|
||||||
|
|
||||||
#region Public
|
#region Public
|
||||||
public long FreeSpace
|
public long FreeSpace
|
||||||
@ -47,54 +47,61 @@ namespace ANX.PlatformSystem.Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsConnected
|
public bool IsConnected
|
||||||
{
|
{
|
||||||
get
|
get { return storageDrive.IsReady; }
|
||||||
{
|
}
|
||||||
return storageDrive.IsReady;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructor
|
public string StoragePath { get; private set; }
|
||||||
public WindowsStorageDevice(StorageDevice setParent, PlayerIndex player,
|
#endregion
|
||||||
int sizeInBytes, int directoryCount)
|
|
||||||
|
public WindowsStorageDevice(StorageDevice setParent, PlayerIndex player, int sizeInBytes, int directoryCount)
|
||||||
{
|
{
|
||||||
parent = setParent;
|
parent = setParent;
|
||||||
|
StoragePath = GetDirectoryForContainer(player);
|
||||||
string playerPath;
|
storageDrive = new DriveInfo(Path.GetPathRoot(StoragePath).Substring(0, 1));
|
||||||
switch (player)
|
|
||||||
{
|
|
||||||
case PlayerIndex.One:
|
|
||||||
playerPath = "Player1";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Two:
|
|
||||||
playerPath = "Player2";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Three:
|
|
||||||
playerPath = "Player3";
|
|
||||||
break;
|
|
||||||
case PlayerIndex.Four:
|
|
||||||
playerPath = "Player4";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
playerPath = "AllPlayers";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
string myDocsPath = Environment.GetFolderPath(
|
|
||||||
Environment.SpecialFolder.MyDocuments);
|
|
||||||
storagePath = Path.Combine(myDocsPath, "SavedGames", playerPath);
|
|
||||||
storagePath = Path.GetFullPath(storagePath);
|
|
||||||
storageDrive = new DriveInfo(Path.GetPathRoot(myDocsPath).Substring(0, 1));
|
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region DeleteContainer
|
private string GetDirectoryForContainer(PlayerIndex player)
|
||||||
|
{
|
||||||
|
string result = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "SavedGames");
|
||||||
|
result = Path.Combine(result, GetGameTitle());
|
||||||
|
//result = Path.Combine(result, StorageContainer.DisplayName);
|
||||||
|
string playerSubDir;
|
||||||
|
switch (player)
|
||||||
|
{
|
||||||
|
case PlayerIndex.One:
|
||||||
|
playerSubDir = "Player1";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Two:
|
||||||
|
playerSubDir = "Player2";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Three:
|
||||||
|
playerSubDir = "Player3";
|
||||||
|
break;
|
||||||
|
case PlayerIndex.Four:
|
||||||
|
playerSubDir = "Player4";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
playerSubDir = "AllPlayers";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Path.Combine(result, playerSubDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetGameTitle()
|
||||||
|
{
|
||||||
|
var entryAssembly = Assembly.GetEntryAssembly();
|
||||||
|
if (entryAssembly != null)
|
||||||
|
return Path.GetFileNameWithoutExtension(entryAssembly.Location);
|
||||||
|
|
||||||
|
throw new InvalidOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
public void DeleteContainer(string titleName)
|
public void DeleteContainer(string titleName)
|
||||||
{
|
{
|
||||||
Directory.Delete(Path.Combine(parent.StoragePath, titleName), true);
|
Directory.Delete(Path.Combine(parent.StoragePath, titleName), true);
|
||||||
}
|
}
|
||||||
#endregion
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,18 @@ namespace ANX.RenderSystem.GL3
|
|||||||
get { return nativeContext.VSync; }
|
get { return nativeContext.VSync; }
|
||||||
set { nativeContext.VSync = value; }
|
set { nativeContext.VSync = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Rectangle ScissorRectangle
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// TODO: test
|
||||||
|
var boxParams = new int[4];
|
||||||
|
GL.GetInteger(GetPName.ScissorBox, boxParams);
|
||||||
|
return new Rectangle(boxParams[0], boxParams[1], boxParams[2], boxParams[3]);
|
||||||
|
}
|
||||||
|
set { GL.Scissor(value.X, value.Y, value.Width, value.Height); }
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructor
|
#region Constructor
|
||||||
|
@ -29,17 +29,22 @@ namespace ANX.RenderSystem.PsVita
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Public
|
#region Public
|
||||||
public bool VSync
|
public bool VSync
|
||||||
{
|
{
|
||||||
get
|
get { return true; }
|
||||||
{
|
set { }
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
set
|
public Rectangle ScissorRectangle
|
||||||
{
|
{
|
||||||
}
|
get
|
||||||
}
|
{
|
||||||
#endregion
|
var rect = NativeContext.GetScissor();
|
||||||
|
return new Rectangle(rect.X, rect.Y, rect.Width, rect.Height);
|
||||||
|
}
|
||||||
|
set { NativeContext.SetScissor(value.X, value.Y, value.Width, value.Height); }
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Constructor
|
#region Constructor
|
||||||
public PsVitaGraphicsDevice(PresentationParameters presentationParameters)
|
public PsVitaGraphicsDevice(PresentationParameters presentationParameters)
|
||||||
|
@ -613,5 +613,11 @@ namespace ANX.RenderSystem.Windows.DX10
|
|||||||
return this.nativeDevice;
|
return this.nativeDevice;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public Rectangle ScissorRectangle
|
||||||
|
{
|
||||||
|
get { throw new NotImplementedException(); }
|
||||||
|
set { throw new NotImplementedException(); }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -628,5 +628,11 @@ namespace ANX.RenderSystem.Windows.DX11
|
|||||||
return this.nativeDevice;
|
return this.nativeDevice;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Rectangle ScissorRectangle
|
||||||
|
{
|
||||||
|
get { throw new NotImplementedException(); }
|
||||||
|
set { throw new NotImplementedException(); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,12 @@ namespace ANX.RenderSystem.Windows.Metro
|
|||||||
this.vSyncEnabled = value;
|
this.vSyncEnabled = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Rectangle ScissorRectangle
|
||||||
|
{
|
||||||
|
get { throw new NotImplementedException(); }
|
||||||
|
set { throw new NotImplementedException(); }
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructor
|
#region Constructor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user