locked
different game class use the same class (pass the different game class) RRS feed

  • 問題

  • My MapEditor and ModelViewer use the same class called ModelManager.
    I pass the Game1 to the ModelManager's constructor. And the Game1 maybe be MapEditor's Game1 or ModelViewer's Game1.
    Somebody could tell me how do I achieve this goal?

    //ModelManager.cs      
    using MapEditor;      
         
    namespace AkModelManager   
    {   
        /// <summary>   
        /// This is a game component that implements IUpdateable.   
        /// </summary>   
        public class ModelManager : Microsoft.Xna.Framework.DrawableGameComponent   
        {   
            List<BasicModel> models = new List<BasicModel>();   
            Camera m_Camera;   
            Game1 game1;   
      
            public ModelManager(Game1 game)   
                : base(game)   
            {   
                // TODO: Construct any child components here   
                game1 = game;   
            }     
         
         
    //MapEditor.cs      
    namespace MapEditor      
    {      
        /// <summary>      
        /// This is the main type for your game      
        /// </summary>      
        public class Game1 : Microsoft.Xna.Framework.Game      
         
         
    //ModelViewer.cs      
    namespace ModelViewer      
    {      
        /// <summary>      
        /// This is the main type for your game      
        /// </summary>      
        public class Game1 : Microsoft.Xna.Framework.Game     
    
    2009年7月3日 下午 05:55

解答

  • 最簡單的方法是弄多一個Abstraction Layer
    將MapEditor跟ModelViewer的共通點抽出來

    首先設立新的CommonGame class:
    public class CommonGame : Microsoft.Xna.Framework.Game
    {
    }

    MapEditor 跟 ModelViewer都繼承自CommonGame:
    public MapEditorGame : CommonGame
    {
    }

    public ModelViewerGame : CommonGame
    {
    }

    那ModelManager就可以使用CommonGame了
    開發日誌 http://koetap.mysinablog.com/
    • 已標示為解答 Lolota Lee 2009年7月9日 上午 08:05
    2009年7月4日 上午 02:06

所有回覆

  • 最簡單的方法是弄多一個Abstraction Layer
    將MapEditor跟ModelViewer的共通點抽出來

    首先設立新的CommonGame class:
    public class CommonGame : Microsoft.Xna.Framework.Game
    {
    }

    MapEditor 跟 ModelViewer都繼承自CommonGame:
    public MapEditorGame : CommonGame
    {
    }

    public ModelViewerGame : CommonGame
    {
    }

    那ModelManager就可以使用CommonGame了
    開發日誌 http://koetap.mysinablog.com/
    • 已標示為解答 Lolota Lee 2009年7月9日 上午 08:05
    2009年7月4日 上午 02:06
  • 這個是個好方法,不過好像變複雜一點

    2009年7月8日 下午 04:18