public override CommandResult Execute(CommandEventArgs commandEventArgs) { try { base.Execute(commandEventArgs); } catch (CommandException ex) { return(ex.CommandResult); } var output = new OutputBuilder("Inventory: "); var entities = commandEventArgs.Entity.GetInventoryItems(); if (entities.Count == 0) { output.Append("You aren't carrying anything."); } else { var itemDescriptions = EntityQuantityMapper.ParseEntityQuantitiesAsStrings(entities, EntityQuantityMapper.MapStringTypes.ShortDescription); output.Append(Formatter.NewTableFromList(itemDescriptions, 1, 4, 0)); } return(CommandResult.Success(output.Output)); }
public override CommandResult Execute(CommandEventArgs commandEventArgs) { try { base.Execute(commandEventArgs); } catch (CommandException ex) { return(ex.CommandResult); } var nameToDrop = CommandService.ParseFirstArgument(commandEventArgs.Argument).ToUpper(); if (nameToDrop == "") { return(new CommandResult(ResultCode.ERR_SYNTAX, "What would you like to drop?")); } var room = commandEventArgs.Entity.GetInstanceParentRoom(); if (room == null) { return(CommandResult.Failure("There is nowhere to drop it to.")); } // Search inventory for a match var inventoryEntities = commandEventArgs.Entity.GetInventoryItems(); if (inventoryEntities.Count == 0) { if (nameToDrop == "ALL") { return(CommandResult.Failure("You don't have anything to drop.")); } else { return(new CommandResult(ResultCode.ERR_SYNTAX, "You don't have that.")); } } List <EntityInanimate> matchedItems; var output = new OutputBuilder(); if (nameToDrop == "ALL") { matchedItems = inventoryEntities; } else { matchedItems = new List <EntityInanimate>(); var itemMatched = Parse.MatchOnEntityNameByOrder(nameToDrop, inventoryEntities.Cast <IEntity>().ToList()); if (itemMatched != null) { matchedItems.Add((EntityInanimate)itemMatched); } } if (matchedItems.Count == 0) { return(CommandResult.Failure("You don't have that.")); } foreach (var item in matchedItems) { commandEventArgs.Entity.RemoveInventoryItem(item.Instance); room.Items.AddEntity(item.Instance, item, false); } if (matchedItems.Count == 1) { output.Append("You drop " + matchedItems[0].ShortDescription + "."); } else { var droppedItems = EntityQuantityMapper.ParseEntityQuantitiesAsStrings(matchedItems, EntityQuantityMapper.MapStringTypes.ShortDescription); output.Append("You drop:"); output.Append(Formatter.NewTableFromList(droppedItems, 1, 4, 0)); } return(CommandResult.Success(output.Output)); }
public override CommandResult Execute(CommandEventArgs commandEventArgs) { // TODO: Implement Look <Direction> try { base.Execute(commandEventArgs); } catch (CommandException ex) { return(ex.CommandResult); } var output = new OutputBuilder(); var entity = commandEventArgs.Entity; var argument = commandEventArgs.Argument; var room = entity.GetInstanceParentRoom(); if (room != null) { var items = room.Items.GetAllEntitiesAsObjects <EntityInanimate>(); var storage = room.StorageItems.GetAllEntitiesAsObjects <Storage>(); var mobs = room.Animates.GetAllEntitiesAsObjects <Mob>(); var players = room.Animates.GetAllEntitiesAsObjects <Player>(); if (entity.GetType() == typeof(Player)) { players.Remove((Player)entity); } else if (entity.GetType() == typeof(Mob)) { mobs.Remove((Mob)entity); } if (argument?.Length > 0) { var allEntities = new List <IEntity>(); allEntities.AddRange(items); allEntities.AddRange(storage); allEntities.AddRange(mobs); allEntities.AddRange(players); var matchedEntity = Parse.MatchOnEntityNameByOrder(argument, allEntities); if (matchedEntity != null) { output.Append(matchedEntity.LongDescription); } else { return(CommandResult.Failure("You do not see that here.")); } } else { var area = entity.GetInstanceParentArea(); output.Append(""); if (entity.GetType() == typeof(Player)) { output.Append(((Player)entity).Configuration.DisplayAreaName ? $"{area.Name} > {room.Name}" : room.Name); } output.Append(room.Description); output.Append("Exits: " + Formatter.ParseExits(room)); // Print players if (players.Count > 0) { foreach (var desc in EntityQuantityMapper.ParseEntityQuantitiesAsStrings(players, EntityQuantityMapper.MapStringTypes.ShortDescription)) { output.Append(desc); } } // Print mobs if (mobs.Count > 0) { output.Append(string.Join(", ", EntityQuantityMapper.ParseEntityQuantitiesAsStrings(mobs, EntityQuantityMapper.MapStringTypes.ShortDescription).ToArray())); } // Print items if (items.Count > 0) { output.Append(string.Join(", ", EntityQuantityMapper.ParseEntityQuantitiesAsStrings(items, EntityQuantityMapper.MapStringTypes.ShortDescription).ToArray())); } // Print containers if (storage.Count > 0) { output.Append(string.Join(", ", EntityQuantityMapper.ParseEntityQuantitiesAsStrings(storage, EntityQuantityMapper.MapStringTypes.ShortDescription).ToArray())); } } } else { output.Append("You are in the void..."); } return(CommandResult.Success(output.Output)); }
public override CommandResult Execute(CommandEventArgs commandEventArgs) { try { base.Execute(commandEventArgs); } catch (CommandException ex) { return(ex.CommandResult); } var nameToGet = CommandService.ParseFirstArgument(commandEventArgs.Argument).ToUpper(); if (nameToGet == "") { return(new CommandResult(ResultCode.ERR_SYNTAX, "What would you like to get?")); } // Search room for a match var room = commandEventArgs.Entity.GetInstanceParentRoom(); var roomEntities = room.Items.GetAllEntitiesAsObjects <EntityInanimate>(); if (roomEntities.Count == 0) { // There are no items in the room to pick up if (nameToGet == "ALL") { return(new CommandResult(ResultCode.SUCCESS, "There is nothing to pick up.")); } else { return(new CommandResult(ResultCode.FAIL, "You don't see that.")); } } List <EntityInanimate> matchedItems; var output = new OutputBuilder(); if (nameToGet == "ALL") { matchedItems = roomEntities; } else { matchedItems = new List <EntityInanimate>(); var itemMatched = Parse.MatchOnEntityNameByOrder(nameToGet, roomEntities.Cast <IEntity>().ToList()); if (itemMatched != null) { matchedItems.Add((EntityInanimate)itemMatched); } } if (matchedItems.Count == 0) { return(new CommandResult(ResultCode.FAIL, "You don't see that.")); } foreach (var item in matchedItems) { room.Items.RemoveEntity(item.Instance, item); commandEventArgs.Entity.AddInventoryItem(item.Instance); } if (matchedItems.Count == 1) { output.Append("You pick up " + matchedItems[0].ShortDescription + "."); } else { var itemsPicked = EntityQuantityMapper.ParseEntityQuantitiesAsStrings(matchedItems, EntityQuantityMapper.MapStringTypes.ShortDescription); output.Append("You pick up:"); output.Append(Formatter.NewTableFromList(itemsPicked, 1, 4, 0)); } return(CommandResult.Success(output.Output)); }