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)); }
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.")); } }
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; } }
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.")); } }
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; } }
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; } }
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; } }
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); } }