a93df07c6e
--HG-- branch : axios-newgsm
50 lines
2.3 KiB
C#
50 lines
2.3 KiB
C#
#region File Description
|
|
//-----------------------------------------------------------------------------
|
|
// IScreenFactory.cs
|
|
//
|
|
// Microsoft XNA Community Game Platform
|
|
// Copyright (C) Microsoft Corporation. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
#endregion
|
|
|
|
using System;
|
|
|
|
namespace GameStateManagement
|
|
{
|
|
/// <summary>
|
|
/// Defines an object that can create a screen when given its type.
|
|
///
|
|
/// The ScreenManager attempts to handle tombstoning on Windows Phone by creating an XML
|
|
/// document that has a list of the screens currently in the manager. When the game is
|
|
/// reactivated, the ScreenManager needs to create instances of those screens. However
|
|
/// since there is no restriction that a particular GameScreen subclass has a parameterless
|
|
/// constructor, there is no way the ScreenManager alone could create those instances.
|
|
///
|
|
/// IScreenFactory fills this gap by providing an interface the game should implement to
|
|
/// act as a translation from type to instance. The ScreenManager locates the IScreenFactory
|
|
/// from the Game.Services collection and passes each screen type to the factory, expecting
|
|
/// to get the correct GameScreen out.
|
|
///
|
|
/// If your game screens all have parameterless constructors, the minimal implementation of
|
|
/// this interface would look like this:
|
|
///
|
|
/// return Activator.CreateInstance(screenType) as GameScreen;
|
|
///
|
|
/// If you have screens with constructors that take arguments, you will need to ensure that
|
|
/// you can read these arguments from storage or generate new ones, then construct the screen
|
|
/// based on the type.
|
|
///
|
|
/// The ScreenFactory type in the sample game has the minimal implementation along with some
|
|
/// extra comments showing a potentially more complex example of how to implement IScreenFactory.
|
|
/// </summary>
|
|
public interface IScreenFactory
|
|
{
|
|
/// <summary>
|
|
/// Creates a GameScreen from the given type.
|
|
/// </summary>
|
|
/// <param name="screenType">The type of screen to create.</param>
|
|
/// <returns>The newly created screen.</returns>
|
|
GameScreen CreateScreen(Type screenType);
|
|
}
|
|
}
|