private void UseMenu_Selected(object sender, EventArgs e) { Global.game_system.play_se(System_Sounds.Confirm); var useMenu = (sender as ItemUseMenu); var actor = useMenu.Actor; int itemIndex = useMenu.SelectedItem; var itemData = actor.items[itemIndex]; if (itemData.to_item.targets_inventory()) { var repairWindow = useMenu.GetRepairWindow(); var repairMenu = new ItemRepairMenu( actor.id, itemIndex, repairWindow, useMenu); repairMenu.Selected += RepairMenu_Selected; repairMenu.Canceled += RepairMenu_Canceled; AddMenu(repairMenu); useMenu.HideWindow(); } else { Vector2 cursorLoc = useMenu.CurrentCursorLoc; var useConfirmWindow = UseConfirmMenu(cursorLoc); var useConfirmMenu = new ConfirmationMenu(useConfirmWindow); useConfirmMenu.Confirmed += UseConfirmMenu_Confirmed; useConfirmMenu.Canceled += UseConfirmMenu_Canceled; AddMenu(useConfirmMenu); } }
private void UseItem( ConfirmationMenu useConfirmMenu, ItemUseMenu useMenu, ItemRepairMenu repairMenu) { Game_Actor actor = useMenu.Actor; Data_Item item = useMenu.SelectedItemData.to_item; // Use -1 if nothing int inventoryTarget = -1; if (repairMenu != null) { inventoryTarget = repairMenu.SelectedItem; } // If promoting if (actor.PromotedBy(item)) { // If there are multiple promotion choices if (actor.PromotedBy(item) && actor.NeedsPromotionMenu) { Global.game_map.add_actor_unit(Constants.Team.PLAYER_TEAM, Config.OFF_MAP, actor.id, ""); var unit = Global.game_map.last_added_unit; var promotionChoiceMenu = new PromotionChoiceMenu(unit); promotionChoiceMenu.Selected += PromotionChoiceMenu_Selected; promotionChoiceMenu.Canceled += PromotionChoiceMenu_Canceled; promotionChoiceMenu.Closed += menu_Closed; promotionChoiceMenu.Confirmed += PromotionChoiceMenu_Confirmed; AddMenu(promotionChoiceMenu); var promotionMenuFadeIn = promotionChoiceMenu.FadeInMenu(false); promotionMenuFadeIn.Finished += menu_Closed; AddMenu(promotionMenuFadeIn); } else { Promote(useMenu); } } else { RemoveTopMenu(useConfirmMenu); if (repairMenu != null) { RemoveTopMenu(repairMenu); } Global.game_system.play_se(System_Sounds.Gain); Dictionary <Boosts, int> boosts = actor.item_boosts(item); // Apply item effect actor.item_effect(item, inventoryTarget); actor.recover_hp(); useMenu.UseItem(); useMenu.ShowWindow(); if (item.is_stat_booster() || item.is_growth_booster()) { useMenu.CreateStatsPopup(item, boosts); } else if (item.can_repair) { useMenu.CreateRepairPopup(inventoryTarget); } } }