public static void CreateEmptyRoom(int width, int height) { view.LeftMax = 0; view.TopMax = 0; view.BottomMax = height * GRID_SIZE; view.RightMax = width * GRID_SIZE; grid = new Tile[width, height]; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { if (x == 0 || y == 0 || x == width - 1 || y == height - 1) grid[x, y] = new Tile(new Point(1, 0)); else grid[x, y] = new Tile(new Point(0, 0)); } } entities = new List<Entity>(); entities.Add(new Player(new Point(1, 1))); }
public static void LoadRoom(string room) { currentRoomName = room; LevelFile file = FileHandling.LoadLevel(room); grid = new Tile[file.Width, file.Height]; width = file.Width; height = file.Height; view.LeftMax = 0; view.TopMax = 0; view.BottomMax = height * GRID_SIZE; view.RightMax = width * GRID_SIZE; for (int x = 0; x < file.Width; x++) { for (int y = 0; y < file.Height; y++) { grid[x, y] = new Tile(file.grid[x, y]); } } entities = new List<Entity>(); entities.Add(new Player(new Point(2, 2))); for (int i = 0; i < file.entities.Count; i++) { #region Entities //TODO: THIS IS JUST A FRAMEWORK, ONLY REGULAR BOXES WORK AT THE MOMENT!!! //start (I): Start position of player //box: Regular Box //teleport: Teleporter //exit: Exit //button (U): Button //switch: Switch Block //key: Key //door: Door //pad: Pressure Pad (For light up box) //asthetic: Asthetic string type = file.entities[i][0].ToLower(); Point pos = FileHandling.ParsePoint(file.entities[i][1]); if (type == "b" || type == "box") { #region Boxes if (file.entities[i].Length >= 3) { string boxType = file.entities[i][2].ToLower(); if (boxType == "n" || boxType == "normal" || boxType == "0") { entities.Insert(1, new BoxEntity(pos, false)); } else if (boxType == "l" || boxType == "light" || boxType == "1") { entities.Insert(1, new BoxEntity(pos, true)); } else { entities.Insert(1, new BoxEntity(pos, false)); } } else { entities.Insert(1, new BoxEntity(pos, false)); } #endregion } else if (type == "g" || type == "gem") { #region Gem entities.Add(new GemEntity(pos)); #endregion } else if (type == "t" || type == "teleporter") { #region Teleporters if (file.entities[i].Length >= 3) { string teleType = file.entities[i][2].ToLower(); if (teleType == "red" || teleType == "0") { entities.Add(new TeleporterEntity(pos, 0)); } else if (teleType == "green" || teleType == "1") { entities.Add(new TeleporterEntity(pos, 1)); } else if (teleType == "blue" || teleType == "2") { entities.Add(new TeleporterEntity(pos, 2)); } else { entities.Add(new TeleporterEntity(pos, 0)); } } else { entities.Add(new TeleporterEntity(pos, 0)); } #endregion } else if (type == "e" || type == "exit") { #region Exit entities.Add(new ExitEntity(pos)); #endregion } else if (type == "u" || type == "button") { #region Buttons if (file.entities[i].Length >= 3) { string buttonType = file.entities[i][2].ToLower(); Point target = new Point(-1, -1); bool isOneTimeUse = false; if (file.entities[i].Length >= 4) bool.TryParse(file.entities[i][3], out isOneTimeUse); if (file.entities[i].Length >= 5) target = FileHandling.ParsePoint(file.entities[i][4]); //0=gray, 1=yellow, 2=orange, 3=blue, 4=green, 5=purple if (buttonType == "gray" || buttonType == "0") { entities.Add(new ButtonEntity(pos, 0, isOneTimeUse, target)); } else if (buttonType == "yellow" || buttonType == "1") { entities.Add(new ButtonEntity(pos, 1, isOneTimeUse, target)); } else if (buttonType == "orange" || buttonType == "2") { entities.Add(new ButtonEntity(pos, 2, isOneTimeUse, target)); } else if (buttonType == "blue" || buttonType == "3") { entities.Add(new ButtonEntity(pos, 3, isOneTimeUse, target)); } else if (buttonType == "green" || buttonType == "4") { entities.Add(new ButtonEntity(pos, 4, isOneTimeUse, target)); } else if (buttonType == "purple" || buttonType == "5") { entities.Add(new ButtonEntity(pos, 5, isOneTimeUse, target)); } else { entities.Add(new ButtonEntity(pos, 0, true));//<--Set them to onetimeuse to represent that they weren't loaded right } } else { entities.Add(new ButtonEntity(pos, 0, true));//<--Set them to onetimeuse to represent that they weren't loaded right } #endregion } else if (type == "s" || type == "switch") { #region Switch Blocks if (file.entities[i].Length >= 3) { string switchType = file.entities[i][2].ToLower(); //yellow, orange, blue, green, purple //There is no 'gray' switch blocks only 'gray' buttons List<string> settings = new List<string>(); if (file.entities[i].Length >= 4) { for (int i2 = 3; i2 < file.entities[i].Length; i2++) settings.Add(file.entities[i][i2]); } if (switchType == "yellow" || switchType == "1") { entities.Add(new SwitchEntity(pos, 1, settings)); } else if (switchType == "orange" || switchType == "2") { entities.Add(new SwitchEntity(pos, 2, settings)); } else if (switchType == "blue" || switchType == "3") { entities.Add(new SwitchEntity(pos, 3, settings)); } else if (switchType == "green" || switchType == "4") { entities.Add(new SwitchEntity(pos, 4, settings)); } else if (switchType == "purple" || switchType == "5") { entities.Add(new SwitchEntity(pos, 5, settings)); } else { entities.Add(new SwitchEntity(pos, 1, settings)); } } else { entities.Add(new SwitchEntity(pos, 1, new List<string>())); } #endregion } else if (type == "k" || type == "key") //TODO: Impliment keys { #region Keys if (file.entities[i].Length >= 3) { string keyType = file.entities[i][2].ToLower(); if (keyType == "gray" || keyType == "0") { //CREATE GRAY KEY } else if (keyType == "blue" || keyType == "1") { //CREATE BLUE KEY } else if (keyType == "green" || keyType == "2") { //CREATE GREEN KEY } else if (keyType == "brown" || keyType == "3") { //CREATE BROWN KEY } else { //ADD DEFAULT KEY } } else { //ADD DEFAULT KEY } #endregion } else if (type == "d" || type == "door") { #region Doors if (file.entities[i].Length >= 3) { string doorType = file.entities[i][2].ToLower(); if (doorType == "gray" || doorType == "0") { entities.Add(new DoorEntity(pos, 0)); } else if (doorType == "blue" || doorType == "1") { entities.Add(new DoorEntity(pos, 1)); } else if (doorType == "green" || doorType == "2") { entities.Add(new DoorEntity(pos, 2)); } else if (doorType == "brown" || doorType == "3") { entities.Add(new DoorEntity(pos, 3)); } else if (doorType == "pressure" || doorType == "4") { entities.Add(new DoorEntity(pos, 4)); } else { entities.Add(new DoorEntity(pos, 0)); } } else { entities.Add(new DoorEntity(pos, 0)); } #endregion } else if (type == "p" || type == "pad") { #region Pressure Pad entities.Add(new PressurePadEntity(pos)); #endregion } else if (type == "i" || type == "start") { entities.RemoveAt(0); entities.Insert(0, new Player(pos)); } else if (type == "a" || type == "asthetic" || type == "decal") { #region Asthetic if (file.entities[i].Length >= 3) { float alpha = 1; if (file.entities[i].Length >= 4) float.TryParse(file.entities[i][3], out alpha); entities.Add(new AstheticEntity(pos, FileHandling.ParsePoint(file.entities[i][2]), alpha)); } else { entities.Add(new AstheticEntity(pos, new Point(9,9))); } #endregion } else { //Didn't recognize the entity type but would still like to see it //loaded and shown when debugDraw is on entities.Add(new Entity(new Point(0, 3), pos, true, false)); } #endregion } if (!(entities[0] is Player)) { entities.Insert(0, new Player(new Point(1, 1))); } }