public void LoadRoom() { List <string> objectNameList = objectNameData.ToList(); List <string> locationList = locationData.ToList(); int objectlistPosition = 0; int locationlistPosition = 0; foreach (string str in objectTypeData) { switch (str) { case "IBlock": IBlock block = ObjectStorage.CreateBlockObject(objectNameList[objectlistPosition]); DoorCalculations(block); CurrentRoomBlocks.Add(block); CurrentRoomBlocks[CurrentRoomBlocks.Count - 1].Position = new Vector2(int.Parse(locationList[locationlistPosition].Substring(0, locationList[locationlistPosition].IndexOf(' '))) * Constant.DisplayScaleX, int.Parse(locationList[locationlistPosition].Substring(locationList[locationlistPosition].IndexOf(' ') + 1)) * Constant.DisplayScaleY) + (Vector2.UnitY * HUDConstants.HUDHeight * Constant.DisplayScaleY); objectlistPosition++; locationlistPosition++; break; case "IEnemy": CurrentRoomChars.Add(ObjectStorage.CreateCharObject(objectNameList[objectlistPosition])); CurrentRoomChars[CurrentRoomChars.Count - 1].Position = new Vector2(int.Parse(locationList[locationlistPosition].Substring(0, locationList[locationlistPosition].IndexOf(' '))) * Constant.DisplayScaleX, int.Parse(locationList[locationlistPosition].Substring(locationList[locationlistPosition].IndexOf(' ') + 1)) * Constant.DisplayScaleY) + (Vector2.UnitY * HUDConstants.HUDHeight * Constant.DisplayScaleY); objectlistPosition++; locationlistPosition++; break; case "INPC": CurrentRoomChars.Add(ObjectStorage.CreateCharObject(objectNameList[objectlistPosition])); CurrentRoomChars[CurrentRoomChars.Count - 1].Position = new Vector2(int.Parse(locationList[locationlistPosition].Substring(0, locationList[locationlistPosition].IndexOf(' '))) * Constant.DisplayScaleX, int.Parse(locationList[locationlistPosition].Substring(locationList[locationlistPosition].IndexOf(' ') + 1)) * Constant.DisplayScaleY) + (Vector2.UnitY * HUDConstants.HUDHeight * Constant.DisplayScaleY); objectlistPosition++; locationlistPosition++; break; case "IItem": CurrentRoomItems.Add(ObjectStorage.CreateItemObject(objectNameList[objectlistPosition])); CurrentRoomItems[CurrentRoomItems.Count - 1].Position = new Vector2(int.Parse(locationList[locationlistPosition].Substring(0, locationList[locationlistPosition].IndexOf(' '))) * Constant.DisplayScaleX, int.Parse(locationList[locationlistPosition].Substring(locationList[locationlistPosition].IndexOf(' ') + 1)) * Constant.DisplayScaleY) + (Vector2.UnitY * HUDConstants.HUDHeight * Constant.DisplayScaleY); objectlistPosition++; locationlistPosition++; break; case "IDoorTrigger": IDoorTrigger doorTrigger = ObjectStorage.CreateDoorTriggerObject(objectNameList[objectlistPosition]); CurrentRoomDoorTriggers.Add(doorTrigger); CurrentRoomDoorTriggers[CurrentRoomDoorTriggers.Count - 1].Position = new Vector2(int.Parse(locationList[locationlistPosition].Substring(0, locationList[locationlistPosition].IndexOf(' '))) * Constant.DisplayScaleX, int.Parse(locationList[locationlistPosition].Substring(locationList[locationlistPosition].IndexOf(' ') + 1)) * Constant.DisplayScaleY) + (Vector2.UnitY * HUDConstants.HUDHeight * Constant.DisplayScaleY); objectlistPosition++; locationlistPosition++; break; default: break; } } }
public void Draw(SpriteBatch spriteBatch) { DrawGameObjectList(spriteBatch, CurrentRoomBlocks.Cast <IGameObject>().ToList()); DrawGameObjectList(spriteBatch, CurrentRoomItems.Cast <IGameObject>().ToList()); DrawGameObjectList(spriteBatch, CurrentRoomChars.Cast <IGameObject>().ToList()); DrawGameObjectList(spriteBatch, CurrentRoomPlayers.Cast <IGameObject>().ToList()); DrawGameObjectList(spriteBatch, CurrentRoomProjectiles.Cast <IGameObject>().ToList()); DrawGameObjectList(spriteBatch, CurrentRoomUsableItems.Cast <IGameObject>().ToList()); DrawGameObjectList(spriteBatch, CurrentRoomDoorTriggers.Cast <IGameObject>().ToList()); foreach (ISpriteEffect spriteEffect in CurrentRoomSpriteEffects) { spriteEffect.Draw(spriteBatch); } }