public static Point getTileSize(DUNGEON_SPRITES sprite)
 {
     switch (sprite)
     {
         case DUNGEON_SPRITES.TOTEM_1:
         case DUNGEON_SPRITES.TOTEM_2:
         case DUNGEON_SPRITES.TOTEM_3:
         case DUNGEON_SPRITES.TOTEM_4:
         case DUNGEON_SPRITES.TOTEM_5:
         case DUNGEON_SPRITES.TOTEM_6:
         case DUNGEON_SPRITES.TOTEM_7:
             //Totems are 2x3
             return new Point(2, 3);
         case DUNGEON_SPRITES.GATE_1:
         case DUNGEON_SPRITES.GATE_2:
         case DUNGEON_SPRITES.GATE_3:
         case DUNGEON_SPRITES.GATE_4:
         case DUNGEON_SPRITES.GATE_5:
             //Gates are 3x2
             return new Point(3, 2);
         case DUNGEON_SPRITES.WALL_TL:
         case DUNGEON_SPRITES.WALL_T:
         case DUNGEON_SPRITES.WALL_TR:
             //Top Walls are 1x2
             return new Point(1, 2);
         default:
             //1x1
             return new Point(1, 1);
     }
 }
        /// <summary>
        /// Creates and returns a Rectangle for the exact position of a sprite on the spritesheet.
        /// </summary>
        /// <param name="sprite"></param>
        /// <returns></returns>
        private static Rectangle getRoomTextureRect(DUNGEON_SPRITES sprite)
        {
            int rectX = -1;
            int rectY = -1;

            //Make the Rectangle the right size for the sprite to be loaded
            Point tileSize = getTileSize(sprite);

            //Get the sprite's location on the spritesheet
            // x
            switch (sprite)
            {
                case DUNGEON_SPRITES.SWITCH_1:
                case DUNGEON_SPRITES.GATE_1:
                    rectX = 0;
                    break;
                case DUNGEON_SPRITES.PLAIN_BLACK:
                case DUNGEON_SPRITES.SWITCH_2:
                    rectX = 1;
                    break;
                case DUNGEON_SPRITES.SWITCH_3:
                    rectX = 2;
                    break;
                case DUNGEON_SPRITES.SWITCH_4:
                case DUNGEON_SPRITES.GATE_2:
                    rectX = 3;
                    break;
                case DUNGEON_SPRITES.SWITCH_5:
                    rectX = 4;
                    break;
                case DUNGEON_SPRITES.WALL_TL:
                case DUNGEON_SPRITES.WALL_L:
                case DUNGEON_SPRITES.WALL_BL:
                case DUNGEON_SPRITES.SWITCH_6:
                case DUNGEON_SPRITES.BLOCK_SMALL_1:
                    rectX = 5;
                    break;
                case DUNGEON_SPRITES.WALL_T:
                case DUNGEON_SPRITES.PLAIN_GREEN:
                case DUNGEON_SPRITES.WALL_B:
                case DUNGEON_SPRITES.SWITCH_7:
                case DUNGEON_SPRITES.BLOCK_SMALL_2:
                case DUNGEON_SPRITES.GATE_3:
                    rectX = 6;
                    break;
                case DUNGEON_SPRITES.WALL_TR:
                case DUNGEON_SPRITES.WALL_R:
                case DUNGEON_SPRITES.WALL_BR:
                case DUNGEON_SPRITES.BLOCK_SMALL_3:
                    rectX = 7;
                    break;
                case DUNGEON_SPRITES.BLOCK_1:
                    rectX = 8;
                    break;
                case DUNGEON_SPRITES.BLOCK_2:
                case DUNGEON_SPRITES.GATE_4:
                    rectX = 9;
                    break;
                case DUNGEON_SPRITES.TOTEM_1:
                case DUNGEON_SPRITES.BLOCK_3:
                    rectX = 10;
                    break;
                case DUNGEON_SPRITES.BLOCK_SMALL_4:
                    rectX = 11;
                    break;
                case DUNGEON_SPRITES.TOTEM_2:
                case DUNGEON_SPRITES.BLOCK_SMALL_5:
                case DUNGEON_SPRITES.GATE_5:
                    rectX = 12;
                    break;
                case DUNGEON_SPRITES.BLOCK_4:
                    rectX = 13;
                    break;
                case DUNGEON_SPRITES.TOTEM_3:
                case DUNGEON_SPRITES.BLOCK_5:
                    rectX = 14;
                    break;
                case DUNGEON_SPRITES.BLOCK_SMALL_6:
                    rectX = 15;
                    break;
                case DUNGEON_SPRITES.TOTEM_4:
                case DUNGEON_SPRITES.BLOCK_SMALL_7:
                    rectX = 16;
                    break;
                case DUNGEON_SPRITES.BLOCK_6:
                    rectX = 17;
                    break;
                case DUNGEON_SPRITES.TOTEM_5:
                case DUNGEON_SPRITES.BLOCK_7:
                    rectX = 18;
                    break;
                case DUNGEON_SPRITES.BUTTON_1:
                case DUNGEON_SPRITES.BEACON_1:
                    rectX = 19;
                    break;
                case DUNGEON_SPRITES.TOTEM_6:
                case DUNGEON_SPRITES.BUTTON_2:
                case DUNGEON_SPRITES.BEACON_2:
                    rectX = 20;
                    break;
                case DUNGEON_SPRITES.BUTTON_3:
                case DUNGEON_SPRITES.BEACON_3:
                    rectX = 21;
                    break;
                case DUNGEON_SPRITES.TOTEM_7:
                case DUNGEON_SPRITES.BUTTON_4:
                case DUNGEON_SPRITES.BEACON_4:
                    rectX = 22;
                    break;
                case DUNGEON_SPRITES.BUTTON_5:
                case DUNGEON_SPRITES.BEACON_5:
                    rectX = 23;
                    break;
            }

            // y
            switch(sprite)
            {
                case DUNGEON_SPRITES.WALL_TL:
                case DUNGEON_SPRITES.WALL_T:
                case DUNGEON_SPRITES.WALL_TR:
                    rectY = 0;
                    break;
                case DUNGEON_SPRITES.PLAIN_BLACK:
                    rectY = 1;
                    break;
                case DUNGEON_SPRITES.WALL_L:
                case DUNGEON_SPRITES.PLAIN_GREEN:
                case DUNGEON_SPRITES.WALL_R:
                    rectY = 2;
                    break;
                case DUNGEON_SPRITES.WALL_BL:
                case DUNGEON_SPRITES.WALL_B:
                case DUNGEON_SPRITES.WALL_BR:
                case DUNGEON_SPRITES.TOTEM_1:
                case DUNGEON_SPRITES.TOTEM_2:
                case DUNGEON_SPRITES.TOTEM_3:
                case DUNGEON_SPRITES.TOTEM_4:
                case DUNGEON_SPRITES.TOTEM_5:
                case DUNGEON_SPRITES.TOTEM_6:
                case DUNGEON_SPRITES.TOTEM_7:
                    rectY = 3;
                    break;
                case DUNGEON_SPRITES.SWITCH_1:
                case DUNGEON_SPRITES.SWITCH_2:
                case DUNGEON_SPRITES.SWITCH_3:
                case DUNGEON_SPRITES.SWITCH_4:
                case DUNGEON_SPRITES.SWITCH_5:
                case DUNGEON_SPRITES.SWITCH_6:
                case DUNGEON_SPRITES.SWITCH_7:
                    rectY = 5;
                    break;
                case DUNGEON_SPRITES.BLOCK_SMALL_1:
                case DUNGEON_SPRITES.BLOCK_SMALL_2:
                case DUNGEON_SPRITES.BLOCK_SMALL_3:
                case DUNGEON_SPRITES.BLOCK_1:
                case DUNGEON_SPRITES.BLOCK_2:
                case DUNGEON_SPRITES.BLOCK_3:
                case DUNGEON_SPRITES.BLOCK_SMALL_4:
                case DUNGEON_SPRITES.BLOCK_SMALL_5:
                case DUNGEON_SPRITES.BLOCK_4:
                case DUNGEON_SPRITES.BLOCK_5:
                case DUNGEON_SPRITES.BLOCK_SMALL_6:
                case DUNGEON_SPRITES.BLOCK_SMALL_7:
                case DUNGEON_SPRITES.BLOCK_6:
                case DUNGEON_SPRITES.BLOCK_7:
                case DUNGEON_SPRITES.BUTTON_1:
                case DUNGEON_SPRITES.BUTTON_2:
                case DUNGEON_SPRITES.BUTTON_3:
                case DUNGEON_SPRITES.BUTTON_4:
                case DUNGEON_SPRITES.BUTTON_5:
                    rectY = 6;
                    break;
                case DUNGEON_SPRITES.BEACON_1:
                case DUNGEON_SPRITES.BEACON_2:
                case DUNGEON_SPRITES.BEACON_3:
                case DUNGEON_SPRITES.BEACON_4:
                case DUNGEON_SPRITES.BEACON_5:
                    rectY = 7;
                    break;
                case DUNGEON_SPRITES.GATE_1:
                case DUNGEON_SPRITES.GATE_2:
                case DUNGEON_SPRITES.GATE_3:
                case DUNGEON_SPRITES.GATE_4:
                case DUNGEON_SPRITES.GATE_5:
                    rectY = 8;
                    break;
            }

            //Incase I missed assigning the sprite a location above
            if(rectX == -1 || rectY == -1)
                throw new Exception("Sprite location has not been specified!");

            return new Rectangle(rectX * SpriteWidth, rectY * SpriteHeight, tileSize.X * SpriteWidth, tileSize.Y * SpriteHeight);
        }
 /// <summary>
 /// Gets a Rectangle used to specify the exact location of a given sprite on the spritesheet.
 /// Pass this Rectangle into the Sprite2D.Create() method!
 /// </summary>
 /// <param name="sprite">Name of the sprite to get rectangle of</param>
 /// <returns>Returns an empty Rectangle if sprite name not found</returns>
 public static Rectangle getRoomSpriteRect(DUNGEON_SPRITES sprite)
 {
     if (RoomSprites.ContainsKey(sprite))
         return RoomSprites[sprite];
     return new Rectangle();
 }