public List <string> GetObjectsInRoom(RoomObjects objectType, double percentage = 100) { List <string> result = new List <string>(); object objectList = null; switch (objectType) { case RoomObjects.Players: objectList = players; break; case RoomObjects.Npcs: objectList = npcs; break; case RoomObjects.Items: objectList = items; break; default: break; } foreach (string id in (dynamic)objectList) { if (RandomNumber.GetRandomNumber().NextNumber(0, 100) <= percentage) { result.Add(id); } } return(result); }
static void Main(string[] args) { Door frontDoor = new Door("Front Door"); Decoration photo = new Decoration("Awkward Family Portrait"); Decoration antiqueVase = new Decoration("Antique Vase", 2, true); Key carKey = new Key("Car Key"); List <Base> allObjects = new List <Base>(); allObjects.Add(frontDoor); allObjects.Add(photo); allObjects.Add(antiqueVase); allObjects.Add(carKey); RoomObjects.IterateAction(allObjects, typeof(IInteractive)); RoomObjects.IterateAction(allObjects, typeof(IBreakable)); RoomObjects.IterateAction(allObjects, typeof(ICollectable)); }
public void RemoveRoomObject(IRoomObject roomObject) { RoomObjects.Remove(roomObject); }
public void AddRoomObject(IRoomObject roomObject) { RoomObjects.Add(roomObject); }
public void AddRoomObjects(IEnumerable <IRoomObject> roomObjects) { RoomObjects.AddRange(roomObjects); }
public void LootCorpse(Player player, string[] input) { StringBuilder inputString = new StringBuilder(); for (int i = 1; i < input.Length; i++) { inputString.Append(input[i]); inputString.Append(' '); } string inputName = inputString.ToString().Trim(); string[] monsterName = Monster.Name.Split(' '); if (monsterName.Last() == inputName || Monster.Name.Contains(inputName)) { if (Monster.HitPoints <= 0 && Monster.WasLooted == false) { int goldLooted = Monster.Gold; player.Gold += Monster.Gold; try { Monster.Gold = 0; string lootGoldString = $"You looted {goldLooted} gold coins from the {Monster.Name}!"; OutputHelper.Display.StoreUserOutput( Settings.FormatSuccessOutputText(), Settings.FormatDefaultBackground(), lootGoldString); while (Monster.MonsterItems.Count > 0) { int playerWeight = PlayerHelper.GetInventoryWeight(player); int itemWeight = Monster.MonsterItems[0].Weight; if (playerWeight + itemWeight > player.MaxCarryWeight) { OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), "You can't carry that much!"); return; } else { player.Inventory.Add(Monster.MonsterItems[0]); } string lootItemString = $"You looted {Monster.MonsterItems[0].Name} from the {Monster.Name}!"; OutputHelper.Display.StoreUserOutput( Settings.FormatSuccessOutputText(), Settings.FormatDefaultBackground(), lootItemString); Monster.MonsterItems.RemoveAt(0); } Monster.WasLooted = true; int monsterIndex = RoomObjects.FindIndex( f => f.Name == Monster.Name); if (monsterIndex != -1) { RoomObjects.RemoveAt(monsterIndex); } } catch (InvalidOperationException) { } } else if (Monster.WasLooted) { string alreadyLootString = $"You already looted {Monster.Name}!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), alreadyLootString); } else { OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), "You cannot loot something that isn't dead!"); } } else { string noLootString = $"There is no {inputName} in the room!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), noLootString); } }
public void AddRoomObject(RoomObject roomObj) { RoomObjects.Add(roomObj); RoomElements.Add(roomObj); }
public List<string> GetObjectsInRoom(RoomObjects objectType, double percentage = 100) { List<string> result = new List<string>(); object objectList = null; switch (objectType) { case RoomObjects.Players: objectList = players; break; case RoomObjects.Npcs: objectList = npcs; break; case RoomObjects.Items: objectList = items; break; default: break; } foreach (string id in (dynamic)objectList) { if (RandomNumber.GetRandomNumber().NextNumber(0, 100) <= percentage) { result.Add(id); } } return result; }
public TownRoom(string name, string desc, Trainer trainer) : this(name, desc) { Trainer = trainer; RoomObjects.Add(Trainer); }
public TownRoom(string name, string desc, Vendor vendor) : this(name, desc) { Vendor = vendor; RoomObjects.Add(Vendor); }
public void LookNpc(string[] input, Player player) { StringBuilder inputString = new StringBuilder(); for (int i = 1; i < input.Length; i++) { inputString.Append(input[i]); inputString.Append(' '); } string inputName = inputString.ToString().Trim(); int nameIndex = RoomObjects.FindIndex( f => f.Name == inputName || f.Name.Contains(inputName)); if (RoomObjects[nameIndex].GetType() == typeof(Vendor)) { string[] vendorName = Vendor.Name.Split(' '); if (vendorName.Last() == inputName || Vendor.Name == inputName) { for (int i = 0; i < Vendor.Desc.Length; i += Settings.GetGameWidth()) { if (Vendor.Desc.Length - i < Settings.GetGameWidth()) { OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Vendor.Desc.Substring(i, Vendor.Desc.Length - i)); continue; } OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Vendor.Desc.Substring(i, Settings.GetGameWidth())); } List <string> sameLineOutput = new List <string> { Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), "The vendor is carrying: " }; OutputHelper.Display.StoreUserOutput(sameLineOutput); TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; foreach (IItem itemForSale in Vendor.VendorItems) { List <string> sameLineOutputItem = new List <string>(); StringBuilder sb = new StringBuilder(); string itemTitle = itemForSale.Name; itemTitle = textInfo.ToTitleCase(itemTitle); sb.Append(itemTitle); sameLineOutputItem.Add(Settings.FormatRoomOutputText()); sameLineOutputItem.Add(Settings.FormatDefaultBackground()); sameLineOutputItem.Add(sb.ToString()); OutputHelper.Display.StoreUserOutput(sameLineOutputItem); } } else { string noVendorString = "There is no " + inputName + " in the room!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), noVendorString); } } else { string[] trainerName = Trainer.Name.Split(' '); if (trainerName.Last() == inputName || Trainer.Name == inputName) { for (int i = 0; i < Trainer.Desc.Length; i += Settings.GetGameWidth()) { if (Trainer.Desc.Length - i < Settings.GetGameWidth()) { OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Trainer.Desc.Substring(i, Trainer.Desc.Length - i)); continue; } OutputHelper.Display.StoreUserOutput( Settings.FormatRoomOutputText(), Settings.FormatDefaultBackground(), Trainer.Desc.Substring(i, Settings.GetGameWidth())); } } else { string noTrainerString = "There is no " + inputName + " in the room!"; OutputHelper.Display.StoreUserOutput( Settings.FormatFailureOutputText(), Settings.FormatDefaultBackground(), noTrainerString); } } }