Ejemplo n.º 1
0
        public override void MousePressed(MouseState mouseState, Vector2 offset)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;

            if (mouseState.MiddlePressed())
            {
                PanIsPressed = true;
            }
            else if (mouseState.LeftPressed())
            {
                Vector2 mousePos = new Vector2(mouseState.X, mouseState.Y) - offset - Position - SoftOffset;
                if (actualGame.CurrentWorldLayer != null)
                {
                    WorldItem item = new WorldItem(UIManager, actualGame.CurrentWorldItemType, SnapPosition(mousePos), actualGame.CurrentWorldLayer.DrawLayer);
                    actualGame.CurrentWorldLayer.WorldItems.Add(item);
                }
            }
            else if (mouseState.RightPressed())
            {
                if (actualGame.CurrentWorldLayer != null)
                {
                    Vector2 mousePos = GetMousePosition(offset);
                    for (int i = 0; i < actualGame.CurrentWorldLayer.WorldItems.Count; i++)
                    {
                        WorldItem item = actualGame.CurrentWorldLayer.WorldItems[i];
                        if (PlatformerMath.PointInRectangle(new Rectangle(item.Position.ToPoint(), item.Size.ToPoint()), mousePos))
                        {
                            actualGame.CurrentWorldLayer.WorldItems.RemoveAt(i);
                            break;
                        }
                    }
                }
            }
            base.MousePressed(mouseState, offset);
        }
Ejemplo n.º 2
0
        public void AddLayer(int layer)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;

            if (actualGame.GetWorldLayer(layer) != null)
            {
                return;
            }
            GroupElement  group       = new GroupElement(UIManager, new Vector2(0, 0), new Vector2(128, 32), Layer + 0.01f, Name + "_" + layer.ToString());
            ButtonElement layerButton = new ButtonElement(UIManager, new Vector2(0, 0), new Vector2(96, 32), group.Layer + 0.01f, group.Name + "_button", "layer " + layer.ToString());

            layerButton.Click = () =>
            {
                WorldLayer worldLayer = actualGame.GetWorldLayer(layer);
                actualGame.CurrentWorldLayer = worldLayer;
            };
            CheckboxElement layerDisplayCheckbox = new CheckboxElement(UIManager, new Vector2(layerButton.Size.X, 0), new Vector2(32, 32), group.Layer + 0.01f, group.Name + "_checkbox", true);

            layerDisplayCheckbox.Tick = (ticked) =>
            {
                WorldLayer worldLayer = actualGame.GetWorldLayer(layer);
                if (worldLayer != null)
                {
                    worldLayer.IsVisible = ticked;
                }
            };
            group.Elements.Add(layerButton);
            group.Elements.Add(layerDisplayCheckbox);
            AddItem(group);
            layerButtonGroups.Add(group);
        }
Ejemplo n.º 3
0
 static void Main()
 {
     using (var game = new PlatformerEditor())
     {
         Action endCb = ConsoleManager.Start();
         game.Run();
         endCb();
     }
 }
        public WorldItemListElement(UIManager uiManager, Vector2 position, Vector2 size, float layer, string name) : base(uiManager, position, size, layer, name)
        {
            PlatformerEditor actualGame  = (PlatformerEditor)UIManager.Game;
            ButtonElement    resetObject = new ButtonElement(UIManager, new Vector2(0, 0), new Vector2(64, 32), Layer + 0.01f, Name + "_none", "-none-");

            resetObject.Click = () =>
            {
                actualGame.CurrentWorldItemType = null;
            };
            AddItem(resetObject);
            WorldItemTypes = new List <WorldItemType>();
        }
        public void AddWorldItem(WorldItemType item)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;
            GroupElement     group      = new GroupElement(UIManager, new Vector2(0, 0), new Vector2(128, 32), Layer + 0.01f, Name + "_" + item.Name);
            ButtonElement    itemButton = new ButtonElement(UIManager, new Vector2(0, 0), new Vector2(96, 32), Layer + 0.01f, group.Name + "_button", item.Name);

            itemButton.Click = () =>
            {
                actualGame.CurrentWorldItemType = item;
            };
            group.Elements.Add(itemButton);
            WorldItemTypes.Add(item);
            AddItem(group);
        }
Ejemplo n.º 6
0
        public LevelTab(UIManager uiManager, Vector2 position, Vector2 size, float layer, string name) : base(uiManager, position, size, layer, name)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;

            Elements.Add(new LevelElement(UIManager, new Vector2(0, 0), new Vector2(Size.X, Size.Y), 0.3f, "level"));
            actualGame.WorldLayerListElement = new WorldLayerListElement(UIManager, new Vector2(0, 0), new Vector2(128, 256), 0.4f, "list_layers");
            Elements.Add(actualGame.WorldLayerListElement);
            actualGame.ObjectListElement = new WorldItemListElement(UIManager, new Vector2(0, 0), new Vector2(128, 240), 0.4f, "list_objects");
            actualGame.TileListElement   = new WorldItemListElement(UIManager, new Vector2(0, 0), new Vector2(128, 240), 0.4f, "list_tiles");
            TabbedElement worldItemTabs = new TabbedElement(UIManager, new Vector2(0, 256), new Vector2(128, 256), 0.4f, "tabs_worlditems", 16);

            worldItemTabs.AddTab("objects", actualGame.ObjectListElement, 64);
            worldItemTabs.AddTab("tiles", actualGame.TileListElement, 64);
            Elements.Add(worldItemTabs);
            Elements.Add(new SettingsElement(UIManager, new Vector2(actualGame.GraphicsDevice.Viewport.Width - 128, 0), new Vector2(128, 692), 0.4f, "box_settings"));
        }
Ejemplo n.º 7
0
        public override void MouseReleased(MouseState mouseState, Vector2 offset)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;

            if (!mouseState.MiddlePressed())
            {
                PanIsPressed = false;
            }
            else if (!mouseState.LeftPressed())
            {
                if (!(actualGame.CurrentWorldLayer != null && actualGame.CurrentWorldItemType != null))
                {
                    PanIsPressed = false;
                }
            }
            base.MouseReleased(mouseState, offset);
        }
Ejemplo n.º 8
0
        public WorldLayerListElement(UIManager uiManager, Vector2 position, Vector2 size, float layer, string name) : base(uiManager, position, size, layer, name)
        {
            PlatformerEditor actualGame     = (PlatformerEditor)UIManager.Game;
            GroupElement     group          = new GroupElement(UIManager, new Vector2(0, 0), new Vector2(128, 32), Layer, Name + "_add");
            ButtonElement    addLayerButton = new ButtonElement(UIManager, new Vector2(0, 0), new Vector2(64, 32), Layer + 0.01f, group.Name + "_button", "add layer");
            TextInputElement addLayerInput  = new TextInputElement(UIManager, new Vector2(64, 0), new Vector2(64, 32), Layer + 0.01f, group.Name + "_input");

            addLayerInput.ValidKeys = "0123456789".ToCharArray();
            addLayerButton.Click    = () =>
            {
                if (addLayerInput.Text.Length > 0)
                {
                    actualGame.AddWorldLayer(int.Parse(addLayerInput.Text));
                    addLayerInput.Text = "";
                }
            };
            group.Elements.Add(addLayerButton);
            group.Elements.Add(addLayerInput);
            AddItem(group);
            layerButtonGroups = new List <GroupElement>();
        }
Ejemplo n.º 9
0
        public override void Draw(SpriteBatch spriteBatch, Vector2 offset)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;

            spriteBatch.End();
            spriteBatch.GraphicsDevice.SetRenderTarget(Graphics);
            //draw grid
            spriteBatch.Begin(UIManager.SortMode);
            spriteBatch.GraphicsDevice.Clear(Color.Transparent);
            //Vector2 actualOffset = offset + SoftOffset;// + Position;
            Vector2 actualOffset = SoftOffset;

            for (int i = (int)actualOffset.X; i <= actualOffset.X + LevelSize.X; i += (int)Snap.X)
            {
                spriteBatch.DrawLine(new Vector2(i, actualOffset.Y), new Vector2(i, actualOffset.Y + LevelSize.Y), Color.Black);
            }
            for (int i = (int)actualOffset.Y; i <= actualOffset.Y + LevelSize.Y; i += (int)Snap.Y)
            {
                spriteBatch.DrawLine(new Vector2(actualOffset.X, i), new Vector2(actualOffset.X + LevelSize.X, i), Color.Black);
            }
            spriteBatch.End();
            //draw layers
            List <int> layerKeys = new List <int>(actualGame.WorldLayers.Keys); //TODO: this is probably slow. make it not

            layerKeys.Sort((a, b) =>
            {
                return(Math.Sign(b - a));
            });
            for (int i = 0; i < layerKeys.Count; i++)
            {
                WorldLayer worldLayer = actualGame.WorldLayers[layerKeys[i]];
                if (!worldLayer.IsVisible)
                {
                    continue;
                }
                spriteBatch.Begin(UIManager.SortMode);
                for (int j = 0; j < worldLayer.WorldItems.Count; j++)
                {
                    WorldItem item = worldLayer.WorldItems[j];
                    item.Draw(spriteBatch, actualOffset);
                }
                spriteBatch.End();
            }
            //draw mouse item
            if (actualGame.CurrentWorldItemType == null && CurrentWorldItem != null)
            {
                CurrentWorldItem = null;
            }
            else if ((actualGame.CurrentWorldItemType != null && CurrentWorldItem == null) || (actualGame.CurrentWorldItemType != null && CurrentWorldItem.ItemType != actualGame.CurrentWorldItemType))
            {
                CurrentWorldItem = new WorldItem(UIManager, actualGame.CurrentWorldItemType, SnapPosition(GetMousePosition(offset)), 0.6f);
            }
            else if (CurrentWorldItem != null)
            {
                CurrentWorldItem.Position = SnapPosition(GetMousePosition(offset));
            }
            spriteBatch.Begin(UIManager.SortMode);
            CurrentWorldItem?.Draw(spriteBatch, actualOffset);
            spriteBatch.End();
            spriteBatch.GraphicsDevice.SetRenderTarget(null);
            spriteBatch.Begin(UIManager.SortMode);
            spriteBatch.Draw(Graphics, Position + offset, Color.White);
        }
Ejemplo n.º 10
0
        public LevelTab(UIManager uiManager, Vector2 position, Vector2 size, float layer, string name) : base(uiManager, position, size, layer, name)
        {
            PlatformerEditor actualGame = (PlatformerEditor)UIManager.Game;

            Elements.Add(new LevelElement(UIManager, new Vector2(0, 0), new Vector2(Size.X, Size.Y), 0.3f, "level"));
            actualGame.WorldLayerListElement = new WorldLayerListElement(UIManager, new Vector2(0, 0), new Vector2(128, 256), 0.4f, "list_layers");
            Elements.Add(actualGame.WorldLayerListElement);
            actualGame.ObjectListElement = new WorldItemListElement(UIManager, new Vector2(0, 0), new Vector2(128, 240), 0.4f, "list_objects");
            actualGame.TileListElement   = new WorldItemListElement(UIManager, new Vector2(0, 0), new Vector2(128, 240), 0.4f, "list_tiles");
            TabbedElement worldItemTabs = new TabbedElement(UIManager, new Vector2(0, 256), new Vector2(128, 256), 0.4f, "tabs_worlditems", 16);

            worldItemTabs.AddTab("objects", actualGame.ObjectListElement, 64);
            worldItemTabs.AddTab("tiles", actualGame.TileListElement, 64);
            Elements.Add(worldItemTabs);
            TextInputElement filenameInputElement = new TextInputElement(UIManager, new Vector2(0, 512), new Vector2(128, 24), 0.4f, "input_filename");
            ButtonElement    loadButton           = new ButtonElement(UIManager, new Vector2(0, 536), new Vector2(48, 24), 0.4f, "button_load", "load");

            loadButton.Click = () =>
            {
                string filename = filenameInputElement.Text;
                if (filename.Length == 0)
                {
                    return;
                }
                actualGame.LoadLevel(filename);
            };
            ButtonElement saveButton = new ButtonElement(UIManager, new Vector2(48, 536), new Vector2(48, 24), 0.4f, "button_save", "save");

            saveButton.Click = () =>
            {
                string filename = filenameInputElement.Text;
                if (filename.Length == 0)
                {
                    return;
                }
                actualGame.SaveLevel(filename);
            };
            Elements.Add(filenameInputElement);
            Elements.Add(loadButton);
            Elements.Add(saveButton);
            TextInputElement snapXInput    = new TextInputElement(UIManager, new Vector2(0, 560), new Vector2(56, 24), 0.4f, "input_snap_x");
            TextInputElement snapYInput    = new TextInputElement(UIManager, new Vector2(56, 560), new Vector2(56, 24), 0.4f, "input_snap_y");
            ButtonElement    setSnapButton = new ButtonElement(UIManager, new Vector2(0, 584), new Vector2(64, 20), 0.4f, "button_snap_set", "set snap");

            setSnapButton.Click = () =>
            {
                LevelElement levelElement = (LevelElement)UIManager.GetUIElement("level");
                levelElement.Snap = new Vector2(int.Parse(snapXInput.Text), int.Parse(snapYInput.Text));
            };
            Elements.Add(snapXInput);
            Elements.Add(snapYInput);
            Elements.Add(setSnapButton);

            TextInputElement gravityXInput    = new TextInputElement(UIManager, new Vector2(0, 604), new Vector2(56, 24), 0.4f, "input_gravity_x");
            TextInputElement gravityYInput    = new TextInputElement(UIManager, new Vector2(56, 604), new Vector2(56, 24), 0.4f, "input_gravity_y");
            ButtonElement    setGravityButton = new ButtonElement(UIManager, new Vector2(0, 628), new Vector2(64, 20), 0.4f, "button_gravity_set", "set gravity");

            setGravityButton.Click = () =>
            {
                LevelElement levelElement = (LevelElement)UIManager.GetUIElement("level");
                string       xText        = gravityXInput.Text;
                if (xText.Length == 0)
                {
                    xText = "0";
                }
                string yText = gravityYInput.Text;
                if (yText.Length == 0)
                {
                    yText = "0";
                }
                levelElement.Gravity = new Vector2(int.Parse(xText), int.Parse(yText));
            };
            Elements.Add(gravityXInput);
            Elements.Add(gravityYInput);
            Elements.Add(setGravityButton);

            TextInputElement roomWidthInput    = new TextInputElement(UIManager, new Vector2(0, 648), new Vector2(56, 24), 0.4f, "input_room_height");
            TextInputElement roomHeightInput   = new TextInputElement(UIManager, new Vector2(56, 648), new Vector2(56, 24), 0.4f, "input_room_width");
            ButtonElement    setRoomSizeButton = new ButtonElement(UIManager, new Vector2(0, 672), new Vector2(64, 20), 0.4f, "button_room_size_set", "set room size");

            setRoomSizeButton.Click = () =>
            {
                LevelElement levelElement = (LevelElement)UIManager.GetUIElement("level");
                string       xText        = roomWidthInput.Text;
                if (xText.Length == 0)
                {
                    xText = "0";
                }
                string yText = roomHeightInput.Text;
                if (yText.Length == 0)
                {
                    yText = "0";
                }
                levelElement.LevelSize = new Vector2(int.Parse(xText), int.Parse(yText));
            };
            Elements.Add(roomWidthInput);
            Elements.Add(roomHeightInput);
            Elements.Add(setRoomSizeButton);
        }
Ejemplo n.º 11
0
        public SettingsElement(UIManager uiManager, Vector2 position, Vector2 size, float layer, string name) : base(uiManager, position, size, layer, name)
        {
            PlatformerEditor actualGame           = (PlatformerEditor)UIManager.Game;
            TextInputElement filenameInputElement = new TextInputElement(UIManager, new Vector2(0, 0), new Vector2(128, 24), 0.4f, "input_filename");
            ButtonElement    loadButton           = new ButtonElement(UIManager, new Vector2(0, 24), new Vector2(48, 24), 0.4f, "button_load", "load");

            loadButton.Click = () =>
            {
                string filename = filenameInputElement.Text;
                if (filename.Length == 0)
                {
                    return;
                }
                actualGame.LoadLevel(filename);
            };
            ButtonElement saveButton = new ButtonElement(UIManager, new Vector2(48, 24), new Vector2(48, 24), 0.4f, "button_save", "save");

            saveButton.Click = () =>
            {
                string filename = filenameInputElement.Text;
                if (filename.Length == 0)
                {
                    return;
                }
                actualGame.SaveLevel(filename);
            };
            Elements.Add(filenameInputElement);
            Elements.Add(loadButton);
            Elements.Add(saveButton);
            TextInputElement snapXInput    = new TextInputElement(UIManager, new Vector2(0, 48), new Vector2(56, 24), 0.4f, "input_snap_x");
            TextInputElement snapYInput    = new TextInputElement(UIManager, new Vector2(56, 48), new Vector2(56, 24), 0.4f, "input_snap_y");
            ButtonElement    setSnapButton = new ButtonElement(UIManager, new Vector2(0, 72), new Vector2(64, 20), 0.4f, "button_snap_set", "set snap");

            setSnapButton.Click = () =>
            {
                LevelElement levelElement = (LevelElement)UIManager.GetUIElement("level");
                levelElement.Snap = new Vector2(int.Parse(snapXInput.Text), int.Parse(snapYInput.Text));
            };
            Elements.Add(snapXInput);
            Elements.Add(snapYInput);
            Elements.Add(setSnapButton);

            TextInputElement gravityXInput    = new TextInputElement(UIManager, new Vector2(0, 92), new Vector2(56, 24), 0.4f, "input_gravity_x");
            TextInputElement gravityYInput    = new TextInputElement(UIManager, new Vector2(56, 92), new Vector2(56, 24), 0.4f, "input_gravity_y");
            ButtonElement    setGravityButton = new ButtonElement(UIManager, new Vector2(0, 116), new Vector2(64, 20), 0.4f, "button_gravity_set", "set gravity");

            setGravityButton.Click = () =>
            {
                LevelElement levelElement = (LevelElement)UIManager.GetUIElement("level");
                string       xText        = gravityXInput.Text;
                if (xText.Length == 0)
                {
                    xText = "0";
                }
                string yText = gravityYInput.Text;
                if (yText.Length == 0)
                {
                    yText = "0";
                }
                levelElement.Gravity = new Vector2(int.Parse(xText), int.Parse(yText));
            };
            Elements.Add(gravityXInput);
            Elements.Add(gravityYInput);
            Elements.Add(setGravityButton);

            TextInputElement roomWidthInput    = new TextInputElement(UIManager, new Vector2(0, 136), new Vector2(56, 24), 0.4f, "input_room_height");
            TextInputElement roomHeightInput   = new TextInputElement(UIManager, new Vector2(56, 136), new Vector2(56, 24), 0.4f, "input_room_width");
            ButtonElement    setRoomSizeButton = new ButtonElement(UIManager, new Vector2(0, 160), new Vector2(64, 20), 0.4f, "button_room_size_set", "set room size");

            setRoomSizeButton.Click = () =>
            {
                LevelElement levelElement = (LevelElement)UIManager.GetUIElement("level");
                string       xText        = roomWidthInput.Text;
                if (xText.Length == 0)
                {
                    xText = "0";
                }
                string yText = roomHeightInput.Text;
                if (yText.Length == 0)
                {
                    yText = "0";
                }
                levelElement.LevelSize = new Vector2(int.Parse(xText), int.Parse(yText));
            };
            Elements.Add(roomWidthInput);
            Elements.Add(roomHeightInput);
            Elements.Add(setRoomSizeButton);
        }