/// <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; } } }