SND\AstrorEnales_cp 663dff347d - Added a new Sample to test all AlphaTestEffect behaviours
- Working on some tests
2015-03-15 01:11:46 +01:00

193 lines
3.7 KiB
C#

using System;
using ANX.Framework;
using Windows.ApplicationModel.Core;
using Windows.Graphics.Display;
using Windows.UI.Core;
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace ANX.PlatformSystem.Metro
{
public class WindowsGameWindow : GameWindow, IFrameworkView
{
#region Private
private WindowsGameHost gameHost;
private CoreWindow gameWindow;
private float dpi;
private Rectangle clientBounds;
#endregion
#region Public
public CoreWindow Form
{
get
{
return gameWindow;
}
}
public override IntPtr Handle
{
get
{
return IntPtr.Zero;
}
}
internal override bool IsMinimized
{
get
{
//TODO: return gameWindow.WindowState == FormWindowState.Minimized;
return false;
}
}
public override string ScreenDeviceName
{
get
{
throw new NotImplementedException();
}
}
public override DisplayOrientation CurrentOrientation
{
get
{
throw new NotImplementedException();
}
}
public override bool AllowUserResizing
{
get
{
//return gameWindow.FormBorderStyle == FormBorderStyle.Sizable;
return false;
}
set
{
throw new NotSupportedException("AllowUserResizing can not be changed in RenderSystem Metro");
}
}
public override Rectangle ClientBounds
{
get
{
return clientBounds;
}
}
#endregion
#region Constructor
internal WindowsGameWindow(WindowsGameHost setGameHost)
{
gameHost = setGameHost;
//TODO: Hook up activate and deactivate events
}
#endregion
#region Close
public void Close()
{
if (gameWindow != null)
{
gameWindow.Close();
}
}
#endregion
#region BeginScreenDeviceChange
public override void BeginScreenDeviceChange(bool willBeFullScreen)
{
throw new NotImplementedException();
}
#endregion
#region EndScreenDeviceChange
public override void EndScreenDeviceChange(string screenDeviceName,
int clientWidth, int clientHeight)
{
throw new NotImplementedException();
}
#endregion
#region SetTitle
protected override void SetTitle(string title)
{
//TODO: this.gameWindow.Text = title;
}
#endregion
#region SetDpiIfNeeded
private void SetDpiIfNeeded(float setDpi)
{
if (dpi != setDpi)
{
dpi = setDpi;
SizeChanged();
}
}
#endregion
#region SetWindow
public void SetWindow(CoreWindow window)
{
gameWindow = window;
window.SizeChanged += delegate
{
SizeChanged();
};
SetDpiIfNeeded(DisplayProperties.LogicalDpi);
}
#endregion
private void SizeChanged()
{
clientBounds = new Rectangle(
(int)gameWindow.Bounds.Left, (int)gameWindow.Bounds.Top,
(int)gameWindow.Bounds.Width, (int)gameWindow.Bounds.Height);
OnClientSizeChanged();
}
#region Run
public void Run()
{
DisplayProperties.LogicalDpiChanged += delegate
{
SetDpiIfNeeded(DisplayProperties.LogicalDpi);
};
gameWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 0);
gameWindow.Activate();
while (gameHost.ExitRequested == false)
{
gameWindow.Dispatcher.ProcessEvents(CoreProcessEventsOption.ProcessAllIfPresent);
gameHost.InvokeOnIdle();
}
}
#endregion
#region IFrameworkView Methods
public void Uninitialize()
{
}
public void Initialize(CoreApplicationView applicationView)
{
}
public void Load(string entryPoint)
{
}
#endregion
}
}