Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
File: Get.cs Project: dmbyer/Hedron
        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));
        }