public void OpenDoor() { if (AtFloor == null) { throw new EmergencyException("Elevator was is not at a floor level"); } else { CageDoor.OpenDoor(); } }
public override void Paint(Level level) { var ice = LevelSave.BiomeGenerated is IceBiome; if (ice) { var clip = Painter.Clip; Painter.Clip = null; Painter.Rect(level, this, 0, Tile.WallB); Painter.Clip = clip; } var id = GenerateNpc(); if (id == null) { return; } GameSave.Put("npc_appeared", true); var d = Connected.Values.First(); var npc = ShopNpc.FromId(id); level.Area.Add(npc); var fl = Tiles.RandomFloorOrSpike(); if (d.X == Left || d.X == Right) { var w = (int)(GetWidth() / 2f + Rnd.Int(-1, 1)); var door = new Dot(Left + w, Rnd.Int(Top + 2, Bottom - 2)); Painter.DrawLine(level, new Dot(Left + w, Top), new Dot(Left + w, Bottom), ice ? Tile.WallB : Tile.WallA); Painter.Set(level, door, fl); npc.Center = new Dot(Left + w + (d.X == Left ? 2 : -2), Rnd.Int(Top + 2, Bottom - 3)) * 16 + new Vector2(8); var dr = new CageDoor { Vertical = true }; dr.Center = door * 16 + new Vector2(12, 0); level.Area.Add(dr); var v = (d.X == Left ? -1 : 1); Painter.DrawLine(level, new Dot(Left + w + v, Top + 1), new Dot(Left + w + v, Bottom - 1), Tiles.Pick(Tile.Chasm, Tile.Lava, Tile.SensingSpikeTmp)); Painter.Set(level, door + new Dot(v, 0), fl); } else if (true) { var h = (int)(GetHeight() / 2f + Rnd.Int(-1, 1)); var door = new Dot(Rnd.Int(Left + 2, Right - 2), Top + h); Painter.DrawLine(level, new Dot(Left, Top + h), new Dot(Right, Top + h), Tile.WallA); Painter.Set(level, door, fl); npc.Center = new Dot(Rnd.Int(Left + 2, Right - 2), Top + h + (d.Y == Top ? 2 : -2)) * 16 + new Vector2(8); var dr = new CageDoor(); dr.Center = door * 16 + new Vector2(7, 8); level.Area.Add(dr); var v = (d.Y == Top ? -1 : 1); Painter.DrawLine(level, new Dot(Left + 1, Top + h + v), new Dot(Right - 1, Top + h + v), Tiles.Pick(Tile.Chasm, Tile.Lava, Tile.SensingSpikeTmp)); Painter.Set(level, door + new Dot(0, v), fl); } }
public override void Initialize() { CageDoor.Initialize(); AtFloor = BottomFloorNumber; }
public void CloseDoor() { CageDoor.CloseDoor(); }