示例#1
0
 /// <summary>
 /// Adds a new screen to the manager
 /// </summary>
 public static void AddScreen(ScreenLayer screen)
 {
     _screens.Add(screen);
     if (_initialized)
     {
         screen.LoadContent();
     }
 }
示例#2
0
 public void Restart(ScreenLayer initialLayer = null, string message = null)
 {
     initializeOverlay();
     ScreenLayerManager.Set(initialLayer ?? new StartMenu());
     if (message != null)
     {
         ScreenLayerManager.ShowMessage(message);
     }
 }
示例#3
0
        /// <summary>
        /// Removes a screen from the manager
        /// </summary>
        /// <param name="screen"></param>
        public static void RemoveScreen(ScreenLayer screen)
        {
            if (screen != null)
            {
                screen.UnloadContent();
            }

            _screens.Remove(screen);
            _updateScreens.Remove(screen);
        }
 private static void PrefixFinalize(ScreenBase __instance, ScreenLayer layer)
 {
     if (__instance is GauntletPartyScreen && screenLayer != null)
     {
         GauntletPartyScreen obj    = (GauntletPartyScreen)__instance;
         GauntletLayer       layer2 = screenLayer;
         screenLayer = null;
         obj.RemoveLayer(layer2);
     }
 }
示例#5
0
        public void RenderLayer(ScreenLayer layer)
        {
            layer.Draw();

            surfaces.ViewMatrix.Matrix       = layer.ViewMatrix;
            surfaces.ProjectionMatrix.Matrix = layer.ProjectionMatrix;

            surfaces.ConsoleBackground.Render();
            surfaces.ConsoleFontSurface.Render();
        }
示例#6
0
 public static void Prefix(ref ScreenBase __instance, ref ScreenLayer layer)
 {
     if (__instance is GauntletPartyScreen && screenLayer != null && layer.Input.IsCategoryRegistered(HotKeyManager.GetCategory("PartyHotKeyCategory")))
     {
         __instance.RemoveLayer(screenLayer);
         enhancementVm.OnFinalize();
         enhancementVm = null;
         screenLayer   = null;
     }
 }
示例#7
0
        // *** Push ***
        // Push a new layer onto the list
        public void Push(ScreenLayer layer)
        {
            gameHasStarted = true;
            layers.Add(layer);

            // If the added layer is not transparent, it must be the first layer drawn
            if (lowestVisibleLayer == -1 || !layer.isTransparent)
            {
                lowestVisibleLayer = layers.Count - 1;
            }
        }
 public void DestroyScreen(ScreenLayer layerName)
 {
     for (int i = 0; i < inGameActiveScreens.Count; i++)
     {
         if (inGameActiveScreens[i].screenLayer == layerName)
         {
             Destroy(inGameActiveScreens[i].screenObject);
             inGameActiveScreens.RemoveAt(i);
         }
     }
 }
 private static void PostfixActivate(ScreenBase __instance, ScreenLayer layer)
 {
     if (__instance is GauntletPartyScreen && screenLayer == null)
     {
         GauntletPartyScreen obj   = (GauntletPartyScreen)__instance;
         PartyVM             value = Traverse.Create(obj).Field <PartyVM>("_dataSource").Value;
         screenLayer = new GauntletLayer(99);
         screenLayer.LoadMovie("AutoPartyManager", new AutoPartyManagerVM(value));
         screenLayer.InputRestrictions.SetInputRestrictions();
         obj.AddLayer(screenLayer);
     }
 }
示例#10
0
        public void RenderLayer(ScreenLayer layer)
        {
            layer.Draw();

            _surfaces.ViewMatrix.Matrix       = layer.ViewMatrix;
            _surfaces.ProjectionMatrix.Matrix = layer.ProjectionMatrix;

            _surfaces.FreshmanFontSurface.Render();
            _surfaces.ConsolasFontSurface.Render();
            _surfaces.SpriteSurface.Render();
            _surfaces.PhotonSurface.Render();
        }
示例#11
0
        public static void Prefix(ref ScreenBase __instance, ref ScreenLayer layer)
        {
            bool flag = __instance is GauntletClanScreen && ClanScreenLayerPatch.screenLayer != null && layer.Input.IsCategoryRegistered(HotKeyManager.GetCategory("GenericCampaignPanelsGameKeyCategory"));

            if (flag)
            {
                __instance.RemoveLayer(ClanScreenLayerPatch.screenLayer);
                ClanScreenLayerPatch.spouseClanView.OnFinalize();
                ClanScreenLayerPatch.spouseClanView = null;
                ClanScreenLayerPatch.screenLayer    = null;
            }
        }
示例#12
0
        public static void Prefix(ref ScreenBase __instance, ref ScreenLayer layer)
        {
            bool flag = __instance is GauntletKingdomScreen && KindomScreenLayerPatch.screenLayer != null && layer.Input.IsCategoryRegistered(HotKeyManager.GetCategory("GenericCampaignPanelsGameKeyCategory"));

            if (flag)
            {
                __instance.RemoveLayer(KindomScreenLayerPatch.screenLayer);
                KindomScreenLayerPatch.kindomScreenVM.OnFinalize();
                KindomScreenLayerPatch.kindomScreenVM = null;
                KindomScreenLayerPatch.screenLayer    = null;
            }
        }
示例#13
0
        private void ConstructLayers()
        {
            foreach (MDScreenLayer ScreenLayer in (MDScreenLayer[])Enum.GetValues(typeof(MDScreenLayer)))
            {
                MDLayerStack LayerStack = new MDLayerStack
                {
                    Name      = ScreenLayer.ToString() + "Layer",
                    LayerType = ScreenLayer
                };

                LayerMap.Add(ScreenLayer, LayerStack);
                AddChild(LayerStack);
            }
        }
示例#14
0
        public void Initialize(ScreenLayer initialLayer = null)
        {
            ResourceContainer = new AssemblyResourceContainer(Assembly.GetEntryAssembly(), $"{nameof(StorybrewEditor)}.Resources", "resources");

            DrawState.Initialize(ResourceContainer, Window.Width, Window.Height);
            drawContext = new DrawContext();
            drawContext.Register(this, false);
            drawContext.Register <TextureContainer>(new TextureContainerAtlas(ResourceContainer), true);
            drawContext.Register <QuadRenderer>(new QuadRendererBuffered(), true);
            drawContext.Register <LineRenderer>(new LineRendererBuffered(), true);

            try
            {
                var brewLibAssembly = Assembly.GetAssembly(typeof(Drawable));
                Skin = new Skin(drawContext.Get <TextureContainer>())
                {
                    ResolveDrawableType = (drawableTypeName) =>
                                          brewLibAssembly.GetType($"{nameof(BrewLib)}.{nameof(BrewLib.Graphics)}.{nameof(BrewLib.Graphics.Drawables)}.{drawableTypeName}", true, true),
                    ResolveWidgetType = (widgetTypeName) =>
                                        Type.GetType($"{nameof(StorybrewEditor)}.{nameof(UserInterface)}.{widgetTypeName}", false, true) ??
                                        brewLibAssembly.GetType($"{nameof(BrewLib)}.{nameof(UserInterface)}.{widgetTypeName}", true, true),
                    ResolveStyleType = (styleTypeName) =>
                                       Type.GetType($"{nameof(StorybrewEditor)}.{nameof(UserInterface)}.{nameof(UserInterface.Skinning)}.{nameof(UserInterface.Skinning.Styles)}.{styleTypeName}", false, true) ??
                                       brewLibAssembly.GetType($"{nameof(BrewLib)}.{nameof(UserInterface)}.{nameof(UserInterface.Skinning)}.{nameof(UserInterface.Skinning.Styles)}.{styleTypeName}", true, true),
                };
                Skin.Load("skin.json", ResourceContainer);
            }
            catch (Exception e)
            {
                Trace.WriteLine($"Failed to load skin: {e}");
                Skin = new Skin(drawContext.Get <TextureContainer>());
            }

            var inputDispatcher = new InputDispatcher();

            InputManager = new InputManager(Window, inputDispatcher);

            ScreenLayerManager = new ScreenLayerManager(Window, clock, this);
            inputDispatcher.Add(createOverlay(ScreenLayerManager));
            inputDispatcher.Add(ScreenLayerManager.InputHandler);

            Restart(initialLayer);

            Window.Resize  += window_Resize;
            Window.Closing += window_Closing;

            resizeToWindow();
        }
示例#15
0
        // *** Pop ***
        // Remove and return the topmost layer
        public ScreenLayer Pop()
        {
            ScreenLayer sl = layers[layers.Count - 1];

            layers.RemoveAt(layers.Count - 1);

            // Recalculate lowestVisibleLayer
            lowestVisibleLayer = -1;
            for (int i = layers.Count - 1; i >= 0; i--)
            {
                if (!layers[i].isTransparent)
                {
                    lowestVisibleLayer = i;
                    break;
                }
            }
            if (layers.Count > 0)
            {
                layers[layers.Count - 1].state = ScreenState.Active;
            }

            return(sl);
        }
示例#16
0
        /// <summary>
        /// Allows each screen to run logic
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Update(GameTime gameTime)
        {
            //Lets make a copy of the master list
            _updateScreens.Clear();

            foreach (ScreenLayer screen in _screens)
            {
                _updateScreens.Add(screen);
            }

            bool hasFocus = !Game.IsActive;
            bool covered  = false;

            while (_updateScreens.Count > 0)
            {
                ScreenLayer screen = _updateScreens[_updateScreens.Count - 1];
                _updateScreens.RemoveAt(_updateScreens.Count - 1);

                // Update the screen.
                screen.Update(gameTime, hasFocus, covered);

                if (screen.ScreenState == ScreenState.On ||
                    screen.ScreenState == ScreenState.Active)
                {
                    if (!hasFocus)
                    {
                        screen.HandleInput(GameManager.Input);
                        hasFocus = true;
                    }

                    if (!screen.IsPopup)
                    {
                        covered = true;
                    }
                }
            }
        }
示例#17
0
 public void RenderLayer(ScreenLayer layer)
 {
     prepareForRendering(layer);
     renderWithOptions(layer.RenderOptions);
 }
示例#18
0
 private void setMatricesFrom(ScreenLayer layer)
 {
     surfaces.ViewMatrix.Matrix       = layer.ViewMatrix;
     surfaces.ProjectionMatrix.Matrix = layer.ProjectionMatrix;
 }
示例#19
0
 private void prepareForRendering(ScreenLayer layer)
 {
     layer.Draw();
     setMatricesFrom(layer);
 }