Beispiel #1
0
    /// <summary>
    /// Loads things that aren't tiles at their correct positions
    /// </summary>
    /// <param name="positionStringList">The given list of strings by the main method</param>
    protected void LevelPositionLoader(List <string> positionStringList)
    {
        for (int i = 0; i < positionStringList.Count; i++)
        {
            string[] splitArray = positionStringList[i].Split(' ');
            // All the code blocks below check what object needs to be loaded, loads them in, and then assigns the correct values that are in the file to them
            switch (splitArray[0])
            {
            case "PENGUIN":
                Monster penguin = new LittlePenguin(this)
                {
                    StartPosition = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]))
                };
                penguin.Reset();
                monsterList.Add(penguin);
                break;

            case "DUMMY":
                Monster dummy = new Dummy("Assets/Sprites/Enemies/Dummy", this)
                {
                    StartPosition = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]))
                };
                dummy.Reset();
                monsterList.Add(dummy);
                break;

            case "BUNNY":
                Bunny bunny = new Bunny(this)
                {
                    StartPosition = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]))
                };
                bunny.Reset();
                monsterList.Add(bunny);
                break;

            case "SPIKETRAP":
                AutomatedObject spikeTrap = new SpikeTrap("Assets/Sprites/InteractiveObjects/SpikeTrap@2", "spikeTrap", 0, this);
                spikeTrap.Position = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]));
                objectList.Add(spikeTrap);
                break;

            case "HANDLE":
                Handle handle = new Handle("Assets/Sprites/InteractiveObjects/handles@2", "Handle", 0)
                {
                    Position = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]))
                };
                handle.ObjectNumberConnected = int.Parse(splitArray[3]);
                objectList.Add(handle);
                break;

            case "TRAPDOOR":
                Trapdoor trapdoor = new Trapdoor(TileType.DoorTile, "Assets/Sprites/InteractiveObjects/NextLevelCombined@2", "Trapdoor", 0, this)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2])),
                    Objectnumber = int.Parse(splitArray[3])
                };
                objectList.Add(trapdoor);
                break;

            case "DOOR":
                Door doorupperleft = new Door("Assets/Sprites/Tiles/DoorBottomRight@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]) + 50, float.Parse(splitArray[2]) + 50),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door doorupperright = new Door("Assets/Sprites/Tiles/DoorUpperRight@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]) + 50, float.Parse(splitArray[2])),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door doorbottomleft = new Door("Assets/Sprites/Tiles/DoorBottomLeft@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]) + 50),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door doorbottomright = new Door("Assets/Sprites/Tiles/DoorUpperleft@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2])),
                    Objectnumber = int.Parse(splitArray[3])
                };
                levelTileField.Add(doorupperleft, (int)doorupperleft.Position.X / 50, (int)doorupperleft.Position.Y / 50);
                levelTileField.Add(doorupperright, (int)doorupperright.Position.X / 50, (int)doorupperright.Position.Y / 50);
                levelTileField.Add(doorbottomleft, (int)doorbottomleft.Position.X / 50, (int)doorbottomleft.Position.Y / 50);
                levelTileField.Add(doorbottomright, (int)doorbottomright.Position.X / 50, (int)doorbottomright.Position.Y / 50);
                break;

            case "VDOOR":
                Door vdoorupperleft = new Door("Assets/Sprites/Tiles/VerticalDoorUpperLeft@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2])),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door vdoorupperright = new Door("Assets/Sprites/Tiles/VerticalDoorUpperRight@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]) + 50, float.Parse(splitArray[2])),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door vdoormiddleleft = new Door("Assets/Sprites/Tiles/VerticalDoorMiddleLeft@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]) + 50),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door vdoorbottomleft = new Door("Assets/Sprites/Tiles/VerticalDoorBottomLeft@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]), float.Parse(splitArray[2]) + 100),
                    Objectnumber = int.Parse(splitArray[3])
                };
                Door vdoormiddleright = new Door("Assets/Sprites/Tiles/VerticalDoorMiddleRight@2", "Door", 0)
                {
                    Position     = new Vector2(float.Parse(splitArray[1]) + 50, float.Parse(splitArray[2]) + 50),
                    Objectnumber = int.Parse(splitArray[3])
                };
                levelTileField.Add(vdoorupperleft, (int)vdoorupperleft.Position.X / 50, (int)vdoorupperleft.Position.Y / 50);
                levelTileField.Add(vdoorupperright, (int)vdoorupperright.Position.X / 50, (int)vdoorupperright.Position.Y / 50);
                levelTileField.Add(vdoorbottomleft, (int)vdoorbottomleft.Position.X / 50, (int)vdoorbottomleft.Position.Y / 50);
                levelTileField.Add(vdoormiddleright, (int)vdoormiddleright.Position.X / 50, (int)vdoormiddleright.Position.Y / 50);
                levelTileField.Add(vdoormiddleleft, (int)vdoormiddleleft.Position.X / 50, (int)vdoormiddleleft.Position.Y / 50);
                break;

            case "SHIELDMAIDEN":
                ShieldMaidenLoader(splitArray);
                break;

            case "KEY":
                KeyLoader(splitArray);
                break;

            case "LOCK":
                LockLoader(splitArray);
                break;
            }
        }
    }