示例#1
0
 public void RemoveScreen(Data.UI.Interfaces.IGameScreen screen)
 {
     _gameScreens.Remove(screen);
     if (screen is IDrawable)
     {
         var dScreen = screen as IDrawable;
         dScreen.UnloadContent();
         if (dScreen.CoversOthers)
         {
             foreach (IDrawable oScreen in _gameScreens)
             {
                 oScreen.IsCovered = false;
                 oScreen.OnTop     = false;
             }
             if (_gameScreens.Last.Value is IDrawable)
             {
                 (_gameScreens.Last.Value as IDrawable).OnTop = true;
             }
         }
     }
     if (screen is IInputReciever)
     {
         if (_gameScreens.Count > 0)
         {
             if (_gameScreens.Last.Value is IInputReciever)
             {
                 (_gameScreens.Last.Value as IInputReciever).HasFocus = true;
             }
         }
     }
 }
 public LoadingScreen(Action loadMethod, 
     Data.UI.Interfaces.IGameScreen next)
     : base(true,false)
 {
     multiThreaded = false;
     fadeBlack = false;
     _loadMethod = loadMethod;
     nextScreen = next;
 }
示例#3
0
 public LoadingScreen(Action loadMethod,
                      Data.UI.Interfaces.IGameScreen next)
     : base(true)
 {
     multiThreaded = false;
     fadeBlack     = false;
     _loadMethod   = loadMethod;
     nextScreen    = next;
 }
        public void AddScreenLoad(Data.UI.Interfaces.IGameScreen screen)
        {
            if (!_ready)
            {
                throw new Data.Exceptions.EngineException("System not ready", true);
            }
            screen.StateManager = this;
            var loadingScreen = new SystemScreens.LoadingScreen(screen.LoadContent, screen);

            AddScreen(loadingScreen, false);
        }
示例#5
0
 public LoadingScreen(Action loadMethod,
                      Data.UI.Interfaces.IGameScreen next,
                      TimedAction updateMethod,
                      TimedAction drawMethod)
     : base(true)
 {
     multiThreaded = true;
     nextScreen    = next;
     _loadMethod   = loadMethod;
     _drawMethod   = drawMethod;
     _updateMathod = updateMethod;
 }
 public LoadingScreen(Action loadMethod,
     Data.UI.Interfaces.IGameScreen next,
     TimedAction updateMethod, 
     TimedAction drawMethod)
     : base(true, false)
 {
     multiThreaded = true;
     nextScreen = next;
     _loadMethod = loadMethod;
     _drawMethod = drawMethod;
     _updateMathod = updateMethod;
 }
示例#7
0
        public void AddScreen(Data.UI.Interfaces.IGameScreen screen, bool loaded = false)
        {
            screen.StateManager = this;

            if (!loaded)
            {
                screen.Initialize();
            }
            if (screen is IDrawable)
            {
                var dScreen = screen as IDrawable;
                if (!loaded)
                {
                    dScreen.LoadContent();
                }
                if (dScreen.CoversOthers)
                {
                    foreach (IDrawable oScreen in _gameScreens)
                    {
                        oScreen.IsCovered = true;
                        oScreen.OnTop     = false;
                    }
                    dScreen.OnTop     = true;
                    dScreen.IsCovered = false;
                }
            }
            if (screen is IInputReciever)
            {
                var iScreen      = screen as IInputReciever;
                var inputScreens = from s in _gameScreens where s is IInputReciever select s;
                foreach (IInputReciever oScreen in inputScreens)
                {
                    oScreen.HasFocus = false;
                }
                InputManager.RegisterScreen(iScreen);
                iScreen.HasFocus = true;
            }

            if (_gameScreens.Count > 0 && _gameScreens.Last.Value is SystemScreens.LoadingScreen)
            {
                _gameScreens.AddBefore(_gameScreens.Last, screen);
            }
            else
            {
                _gameScreens.AddLast(screen);
            }
        }
 public void RemoveScreen(Data.UI.Interfaces.IGameScreen screen)
 {
     screen.UnloadContent();
     _gameScreens.Remove(screen);
     if (_gameScreens.Count > 1)
     {
         if (screen.CoversOthers)
         {
             var oldScreen = _gameScreens.Last;
             if (_gameScreens.Count > 1)
             {
                 do
                 {
                     if (oldScreen.Value.CoversOthers)
                     {
                         oldScreen.Value.IsCovered = false;
                         break;
                     }
                     oldScreen = oldScreen.Previous;
                 } while (oldScreen.Previous != null);
             }
         }
         if (screen.HasFocus)
         {
             var oldScreen = _gameScreens.Last;
             do
             {
                 if (oldScreen.Value.GetsInput)
                 {
                     oldScreen.Value.HasFocus = true;
                     break;
                 }
                 oldScreen = oldScreen.Previous;
             } while (oldScreen.Previous != null);
         }
     }
     else
     {
         var temp = _gameScreens.First;
         temp.Value.IsCovered = false;
         if (temp.Value.GetsInput)
         {
             temp.Value.HasFocus = true;
         }
     }
 }
 public void AddScreen(Data.UI.Interfaces.IGameScreen screen, bool loaded = false)
 {
     screen.StateManager = this;
     if (_ready && !loaded)
     {
         screen.Initialize();
         screen.LoadContent();
     }
     if (screen.GetsInput)
     {
         screen.HasFocus = true;
         InputManager.RegisterScreen(screen);
         if (_gameScreens.Count > 0)
         {
             var oldScreen = _gameScreens.First;
             do
             {
                 oldScreen.Value.HasFocus = false;
                 oldScreen = oldScreen.Next;
             } while (oldScreen != null);
         }
     }
     if (screen.CoversOthers)
     {
         screen.HasFocus = true;
         if (_gameScreens.Count > 0)
         {
             var oldScreen = _gameScreens.First;
             do
             {
                 oldScreen.Value.IsCovered = true;
                 oldScreen = oldScreen.Next;
             } while (oldScreen != null);
         }
         _gameScreens.AddLast(screen);
     }
     else
     {
         _gameScreens.AddBefore(_gameScreens.Last, screen);
     }
 }
示例#10
0
        /*public static void RegisterPlayerNode(Objects.GameObjects.Player player)
         * {
         *  player.RegisterControlReference(_controls);
         * }*/

        public static void RegisterScreen(Data.UI.Interfaces.IGameScreen screen)
        {
            screen.ControlReference = _controls;
        }