コード例 #1
0
        public void LoadMap(JsonData data, ref Camera cam)
        {
            tiles.Clear();
            rows     = (int)data["rows"];
            columns  = (int)data["columns"];
            tileSize = (int)data["tileSize"];

            player = new Player();
            player.Initialize("PlayerAnimations", "PlayerCollision");
            player.Position = new Vector2((int)data["playerPos"][0], (int)data["playerPos"][1]);

            for (int y = 0; y < rows; y++)
            {
                string mapString = (string)data["tiles"][y];
                for (int x = 0; x < columns; x++)
                {
                    string     tile    = mapString.Substring(x, 1);
                    EditorTile newTile = new EditorTile(int.Parse(tile), ref cam);
                    newTile.Position = new Vector2(x * tileSize, y * tileSize);
                    newTile.Initialize();
                    tiles.Add(newTile);
                }
            }

            for (int i = 0; i < data["entities"].Count; i++)
            {
                string name = data["entities"][i]["name"].ToString();
                switch (name)
                {
                case "slime":
                    Slime slime = new Slime();
                    slime.Initialize("Slime");
                    slime.Position = new Vector2((int)data["entities"][i]["position"][0], (int)data["entities"][i]["position"][1]);
                    entities.Add(slime);
                    break;
                }
            }
        }
コード例 #2
0
        public override void Update(GameTime gameTime)
        {
            if (InputManager.Instance.isDown(Keys.W))
            {
                cam.position += new Vector2(0, -2);
            }
            if (InputManager.Instance.isDown(Keys.S))
            {
                cam.position += new Vector2(0, 2);
            }
            if (InputManager.Instance.isDown(Keys.A))
            {
                cam.position += new Vector2(-2, 0);
            }
            if (InputManager.Instance.isDown(Keys.D))
            {
                cam.position += new Vector2(2, 0);
            }

            if (previewTile.Id < 9 && InputManager.Instance.getMouseWheelState() > InputManager.Instance.getOldMouseWheelState())
            {
                previewTile.Id++;
            }
            if (previewTile.Id > 0 && InputManager.Instance.getMouseWheelState() < InputManager.Instance.getOldMouseWheelState() && cam.zoom > 0.1f)
            {
                previewTile.Id--;
            }

            if (InputManager.Instance.isDown(Keys.LeftAlt))
            {
                if (InputManager.Instance.getMouseWheelState() > InputManager.Instance.getOldMouseWheelState())
                {
                    cam.zoom += 1;
                }
                if (InputManager.Instance.getMouseWheelState() < InputManager.Instance.getOldMouseWheelState() && cam.zoom > 0.1f)
                {
                    cam.zoom -= 1;
                }
            }

            if (InputManager.Instance.isPressed(Keys.Tab))
            {
                drawTileID = !drawTileID;
            }

            if (editorMode == EditorMode.TileMode)
            {
                if (map != null && !overUI)
                {
                    for (int i = 0; i < map.tiles.Count; i++)
                    {
                        EditorTile temp = (EditorTile)map.tiles[i];
                        if (temp.BoundingBox.Contains(InputManager.Instance.getMouseWorldPos(cam.GetViewMatrix())) && InputManager.Instance.mouseIsPressed(CoreGame.Managers.MouseButton.Left))
                        {
                            Debug.WriteLine("Mouse Pos" + InputManager.Instance.getMouseWorldPos(cam.GetViewMatrix()));
                            Debug.WriteLine("Pos" + temp.Position);
                            temp.Id = previewTile.Id;
                            temp.Initialize();
                        }
                    }
                }
            }

            if (editorMode == EditorMode.EntityMode)
            {
                previewEntity.Position = InputManager.Instance.getMousePos();
                previewEntity.Update(gameTime);
                map.Update(gameTime);
            }

            UIManager.Update(gameTime);
            base.Update(gameTime);
        }