Esempio n. 1
0
        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));
    }
Esempio n. 3
0
 public void RemoveRoomObject(IRoomObject roomObject)
 {
     RoomObjects.Remove(roomObject);
 }
Esempio n. 4
0
 public void AddRoomObject(IRoomObject roomObject)
 {
     RoomObjects.Add(roomObject);
 }
Esempio n. 5
0
 public void AddRoomObjects(IEnumerable <IRoomObject> roomObjects)
 {
     RoomObjects.AddRange(roomObjects);
 }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 public void AddRoomObject(RoomObject roomObj)
 {
     RoomObjects.Add(roomObj);
     RoomElements.Add(roomObj);
 }
Esempio n. 8
0
File: Room.cs Progetto: vadian/Novus
        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;
        }
Esempio n. 9
0
 public TownRoom(string name, string desc, Trainer trainer) : this(name, desc)
 {
     Trainer = trainer;
     RoomObjects.Add(Trainer);
 }
Esempio n. 10
0
 public TownRoom(string name, string desc, Vendor vendor) : this(name, desc)
 {
     Vendor = vendor;
     RoomObjects.Add(Vendor);
 }
Esempio n. 11
0
        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);
                }
            }
        }