private void FxHighlight_OnItemSelect(UIMenu sender, UIMenuItem selectedItem, int index, UIMenuItem itemToControl, FxName fxName, string asset, bool useEvolutionArg = false) { if (selectedItem == itemToControl) { PTFXHelper.RemovePTFX(fxHandle); if (itemToControl.Text == "REMOVED") { return; } Ped player = Game.Player.Character; PlayLoopOrNonLoopedFX(player.IsInVehicle() ? player.CurrentVehicle : (Entity)player, asset, fxName, useEvolutionArg); lastAsset = asset; lastFXName = fxName; if (Game.IsKeyPressed(Keys.ShiftKey)) { if (sender == FavouritesMenu || (sender.ParentMenu != null && sender.ParentMenu == FavouritesMenu)) //Remove from favourites { try { FavouritesList.Remove(FavouritesList.Find(d => d.FxName == fxName && d.AssetName == asset)); ForceDecimal(); XMLHelper.SaveObjectToXML(FavouritesList, @"scripts\ParticleFxFavourites.xml"); if (sender == FavouritesMenu) { itemToControl.Text = "REMOVED"; itemToControl.Value = null; itemToControl.Description = null; } else if (sender.ParentMenu != null && sender.ParentMenu == FavouritesMenu) { sender.Title = "REMOVED"; sender.ParentItem.Text = "REMOVED"; sender.ParentItem.Description = null; } UI.ShowSubtitle("Removed from Favourites!"); } catch { } } else //Add to favourites { DetailedFx newFav = new DetailedFx(asset, fxName); FavouritesList.Add(newFav); ForceDecimal(); XMLHelper.SaveObjectToXML(FavouritesList, @"scripts\ParticleFxFavourites.xml"); UI.ShowSubtitle("Saved to Favourites!"); favLastIndex = FavouritesMenu.SelectedIndex; rebuildFavourites = true; allowMenuDraw = false; } } } }
void SetupSearchMenu() { List <DetailedFx> searchFxList = new List <DetailedFx>(); foreach (var dic in FxAssets) { foreach (var fxname in dic.FxNames.Where(n => n.PTFXName.Contains(searchString))) { DetailedFx fx = new DetailedFx(dic.AssetName, fxname); searchFxList.Add(fx); } } foreach (var detailedPtfx in searchFxList) { DecideDetailedFxMenuArrangement(SearchMenu, detailedPtfx); } }
void DecideDetailedFxMenuArrangement(UIMenu menuToModify, DetailedFx detailedPtfx) { int evoListCount = detailedPtfx.FxName.EvolutionList.Count; if (evoListCount > 1) { UIMenu fxNameMenu = new UIMenu(detailedPtfx.FxName.PTFXName); _menuPool.AddSubMenu(fxNameMenu, menuToModify, detailedPtfx.FxName.PTFXName, "Asset Name: " + detailedPtfx.AssetName + ". May Require Evolution Arguments."); foreach (var e in detailedPtfx.FxName.EvolutionList) { UIMenuItem evoName = new UIMenuItem("Evolution Name: " + e.EvolutionName, "< " + e.Amount + " >", "Hold SHIFT and select to save to/remove from favourites."); fxNameMenu.OnItemSelect += (s, selItem, selIndex) => FxHighlight_OnItemSelect(s, selItem, selIndex, evoName, detailedPtfx.FxName, detailedPtfx.AssetName, true); fxNameMenu.OnItemLeftRight += (s, selItem, selIndex, direction) => FxEvolution_OnItemLeftRight(s, selItem, selIndex, direction, evoName, detailedPtfx.FxName.PTFXName, detailedPtfx.AssetName, true, e, e.EvolutionName); fxNameMenu.AddMenuItem(evoName); } } else { UIMenuItem fxnameItem = new UIMenuItem(detailedPtfx.FxName.PTFXName, null, "Asset Name: " + detailedPtfx.AssetName); if (evoListCount == 1) { fxnameItem.Value = "< " + detailedPtfx.FxName.EvolutionList[0].Amount + " >"; fxnameItem.Description = "Asset Name: " + detailedPtfx.AssetName + ". Has one Evolution argument: " + detailedPtfx.FxName.EvolutionList[0].EvolutionName + ". Hold SHIFT and select to save to / remove from favourites."; menuToModify.OnItemLeftRight += (s, selItem, selIndex, direction) => FxEvolution_OnItemLeftRight(s, selItem, selIndex, direction, fxnameItem, detailedPtfx.FxName.PTFXName, detailedPtfx.AssetName, true, detailedPtfx.FxName.EvolutionList[0], detailedPtfx.FxName.EvolutionList[0].EvolutionName); menuToModify.OnItemSelect += (s, selItem, selIndex) => FxHighlight_OnItemSelect(s, selItem, selIndex, fxnameItem, detailedPtfx.FxName, detailedPtfx.AssetName, true); } else { fxnameItem.Description = "Asset Name: " + detailedPtfx.AssetName + ". No Evolution arguments found. Hold SHIFT and select to save to / remove from favourites."; menuToModify.OnItemSelect += (s, selItem, selIndex) => FxHighlight_OnItemSelect(s, selItem, selIndex, fxnameItem, detailedPtfx.FxName, detailedPtfx.AssetName); } menuToModify.AddMenuItem(fxnameItem); } }