Beispiel #1
0
        private void UseInventoryItem(RPGListMenu obj)
        {
            var selected = obj.SelectedIndex;
            if (selected >= PlayerData.Inventory.Count)
            {
                View.PopMenu();
                return;
            }

            if (!PlayerData.Inventory.Any()) return;

            var selectedItem = PlayerData.Inventory[selected];

            var used = RPGMethods.UseItem(selectedItem);

            if (selectedItem.Quantity <= 0)
            {
                selected--;
                if (selected < 0) selected = 0;
            }

            UpdateInventory(selected);
            InventoryMenu.SelectedIndex = selected;
            if(used)
                RPG.Notify(Notification.Alert("Used : " + selectedItem.Name));
        }
Beispiel #2
0
        private void CraftItem(RPGListMenu obj)
        {
            var craftableItems = ItemRepository.Items.Where(i => i.CanCraft).ToList();

            if (obj.SelectedIndex >= craftableItems.Count)
            {
                View.PopMenu();
                return;
            }

            var itemToCraft = craftableItems[obj.SelectedIndex];

            //have items?
            var hasItems = true;
            foreach(var kvp in itemToCraft.CraftItems)
            {
                var inventoryItem = RPG.PlayerData.Inventory.FirstOrDefault(i => i.Name == kvp.Key);
                if(inventoryItem != null)
                {
                    if(inventoryItem.Quantity < kvp.Value)
                    {
                        hasItems = false;
                    }
                }
                else
                {
                    hasItems = false;
                }
            }

            if(hasItems)
            {
                foreach (var kvp in itemToCraft.CraftItems)
                {
                    var inventoryItem = RPG.PlayerData.Inventory.First(i => i.Name == kvp.Key);
                    inventoryItem.Quantity -= kvp.Value;
                    if(inventoryItem.Quantity <= 0)
                    {
                        PlayerData.Inventory.Remove(inventoryItem);
                    }
                }

                var item = ItemRepository.Get(itemToCraft.Name);
                PlayerData.AddItem(item);
                RPG.Notify(Notification.Alert("Crafted: " + itemToCraft.Name));
                UpdateCrafting(obj.SelectedIndex);
            }
            else
            {
                RPG.Notify(Notification.Alert("You do not have the items."));
            }
        }
Beispiel #3
0
        private void UpdateInventory(int selected = 0)
        {
            var inventoryList = new List<IMenuItem>();

            if (!PlayerData.Inventory.Any())
            {
                inventoryList.Add(new MenuButton("Empty"));
            }

            for (int i = 0; i < PlayerData.Inventory.Count; i++)
            {
                var item = PlayerData.Inventory[i];

                inventoryList.Add(new MenuButton(item.Quantity + "x\t" + item.Name, item.Description));
            }

            inventoryList.Add(new MenuButton("Back"));

            foreach(var i in inventoryList)
            {
                i.Parent = InventoryMenu;
            }

            if (InventoryMenu == null)
            {
                InventoryMenu = new RPGListMenu("Inventory", new GTASprite("CommonMenu", "interaction_bgd", Color.ForestGreen), UseInventoryItem, inventoryList.ToArray());
            }
            else
            {
                InventoryMenu.Caption = "GTA$" + PlayerData.Money.ToString("N0");
                InventoryMenu.Items.Clear();
                InventoryMenu.Items.AddRange(inventoryList);
                InventoryMenu.Initialize();
            }

            RPGUI.FormatMenuWithFooter(InventoryMenu);
            InventoryMenu.HeaderHeight = 25;
            InventoryMenu.Caption = "GTA$" + PlayerData.Money.ToString("N0");

            if (InventoryMenu != null && IsOpen(InventoryMenu))
            {
                InventoryMenu.SelectedIndex = selected;
            }
        }
Beispiel #4
0
        private void BuyShopItem(RPGListMenu obj)
        {
            var purchasableItems = ItemRepository.Items.Where(i => i.CanBuy).ToList();
            if (obj.SelectedIndex >= purchasableItems.Count)
            {
                View.PopMenu();
                return;
            }

            var itemToBuy = purchasableItems[obj.SelectedIndex];
            if(PlayerData.Money >= itemToBuy.Cost)
            {
                PlayerData.Money -= itemToBuy.Cost;
                var item = ItemRepository.Get(itemToBuy.Name);
                PlayerData.AddItem(item);
                RPG.Notify(Notification.Alert("Purchased: " + itemToBuy.Name));
                UpdateShop(obj.SelectedIndex);
            }
            else
            {
                RPG.Notify(Notification.Alert("Not enough money."));
            }
        }
Beispiel #5
0
        public void UpdateShop(int selected = 0)
        {
            var shopList = new List<IMenuItem>();

            var purchasableItems = ItemRepository.Items.Where(i => i.CanBuy).ToList();
            for (int i = 0; i < purchasableItems.Count; i++)
            {
                var item = purchasableItems[i];
                shopList.Add(new MenuButton(item.Quantity + "x\t" + item.Name,"[ GTA$" + item.Cost + " ]" + item.Description));
            }
            shopList.Add(new MenuButton("Back"));

            foreach(var i in shopList)
            {
                i.Parent = ShopMenu;
            }

            if (ShopMenu == null)
            {
                ShopMenu = new RPGListMenu("Shop", new GTASprite("CommonMenu", "interaction_bgd", Color.ForestGreen), BuyShopItem, shopList.ToArray());
            }
            else
            {
                ShopMenu.Caption = "GTA$" + PlayerData.Money.ToString("N0");
                ShopMenu.Items.Clear();
                ShopMenu.Items.AddRange(shopList);
                ShopMenu.Initialize();
            }
            ShopMenu.Caption = "GTA$" + PlayerData.Money.ToString("N0");

            RPGUI.FormatMenuWithFooter(ShopMenu);
            ShopMenu.HeaderHeight = 25;

            if (ShopMenu != null && IsOpen(ShopMenu))
            {
                ShopMenu.SelectedIndex = selected;
            }
        }
Beispiel #6
0
        public void UpdateQuestLog(int selected = 0)
        {
            var questList = new List<IMenuItem>();

            var storyQuests = RPG.PlayerData.Quests.Where(q => !q.IsContract && !q.IsRepeatable).ToList();
            var completion = (float) storyQuests.Count(s => s.Done)/storyQuests.Count;

            var quests = PlayerData.Quests.Where(s => s.InProgress).Concat(PlayerData.Quests.Where(c => !c.InProgress)).Where(c => !c.IsContract || c.InProgress).ToList();

            for (int i = 0; i < quests.Count; i++)
            {
                var item = quests[i];
                questList.Add(new MenuButton((item.InProgress ? "[In Progress] " : (item.Done ? "[Done] " : "[Not Started] ")) + item.Name, item.Description));
            }

            questList.Add(new MenuButton("Back"));

            foreach (var i in questList)
            {
                i.Parent = QuestLogMenu;
            }

            if (QuestLogMenu == null)
            {
                QuestLogMenu = new RPGListMenu("Quest Log", new GTASprite("CommonMenu", "interaction_bgd", Color.DarkOrange), UseQuestLogEntry, questList.ToArray());
            }
            else
            {
                QuestLogMenu.Caption = "Story Progress: " + completion.ToString("P0");
                QuestLogMenu.Items.Clear();
                QuestLogMenu.Items.AddRange(questList);
                QuestLogMenu.Initialize();
            }

            QuestLogMenu.Caption = "Story Progress: " + completion.ToString("P0");
            RPGUI.FormatMenuWithFooter(QuestLogMenu);
            QuestLogMenu.FooterHeight = 40;
            QuestLogMenu.HeaderHeight = 25;
            if (QuestLogMenu != null && IsOpen(QuestLogMenu))
            {
                QuestLogMenu.SelectedIndex = selected;
            }
        }
Beispiel #7
0
        public void UpdateCrafting(int selected = 0)
        {
            var craftingList = new List<IMenuItem>();

            var craftableItems = ItemRepository.Items.Where(i => i.CanCraft).ToList();
            for (int i = 0; i < craftableItems.Count; i++)
            {
                var item = craftableItems[i];
                craftingList.Add(new MenuButton(item.Quantity + "x\t" + item.Name, item.GetCraftString()));
            }

            craftingList.Add(new MenuButton("Back"));

            foreach (var i in craftingList)
            {
                i.Parent = CraftingMenu;
            }

            if (CraftingMenu == null)
            {
                CraftingMenu = new RPGListMenu("Crafting", new GTASprite("CommonMenu", "interaction_bgd", Color.ForestGreen), CraftItem, craftingList.ToArray());
            }
            else
            {
                CraftingMenu.Items.Clear();
                CraftingMenu.Items.AddRange(craftingList);
                CraftingMenu.Initialize();
            }

            RPGUI.FormatMenuWithFooter(CraftingMenu);
            CraftingMenu.FooterCentered = true;
            CraftingMenu.FooterHeight = 75;

            if (CraftingMenu != null && IsOpen(CraftingMenu))
            {
                CraftingMenu.SelectedIndex = selected;
            }
        }
Beispiel #8
0
        private void UseQuestLogEntry(RPGListMenu obj)
        {
            var quests = PlayerData.Quests.Where(s => s.InProgress).Concat(PlayerData.Quests.Where(c => !c.InProgress)).Where(c => !c.IsContract || c.InProgress).ToList();
            var selected = obj.SelectedIndex;
            if (selected >= quests.Count)
            {
                View.PopMenu();
                return;
            }

            var selectedItem = quests[selected];

            if(selectedItem.InProgress)
            {
                var abandon = RPGMessageBox.Create("Would you like to abandon [" + selectedItem.Name + "] ?","Abandon Quest","Cancel", () => { selectedItem.Reset(); UpdateQuestLog(); }, () => { });
                RPGUI.FormatMenu(abandon);
                abandon.HeaderCentered = true;
                View.AddMenu(abandon);
            }
        }