/// <summary> /// Instantiates a new ContextMenu instance. /// </summary> /// <param name="from"> /// The <see cref="Mobile" /> who opened this ContextMenu. /// <seealso cref="From" /> /// </param> /// <param name="target"> /// The <see cref="Mobile" /> or <see cref="Item" /> for which this ContextMenu is on. /// <seealso cref="Target" /> /// </param> public ContextMenu(Mobile from, IEntity target) { From = from; Target = target; List <ContextMenuEntry> list = new List <ContextMenuEntry>(); if (target is Mobile mobile) { mobile.GetContextMenuEntries(from, list); } else if (target is Item item) { item.GetContextMenuEntries(from, list); } EventSink.InvokeContextMenu(new ContextMenuEventArgs(From, Target, list)); for (var index = 0; index < list.Count; index++) { ContextMenuEntry e = list[index]; e.Owner = this; } Entries = list.ToArray(); list.Clear(); list.TrimExcess(); }
public static bool Display(Mobile m, IEntity target) { if (m == null || target == null || m.Map != target.Map) { return(false); } if (target is Mobile && !Utility.InUpdateRange(m, target.Location)) { return(false); } if (target is Item item && !Utility.InUpdateRange(m, item.GetWorldLocation())) { return(false); } if (!m.CheckContextMenuDisplay(target)) { return(false); } ContextMenu c = new ContextMenu(m, target); if (c.Entries.Length <= 0) { return(false); } if (target is Item i) { object root = i.RootParent; if (root is Mobile mobile && mobile != m && mobile.AccessLevel >= m.AccessLevel) { for (var index = 0; index < c.Entries.Length; index++) { ContextMenuEntry e = c.Entries[index]; if (!e.NonLocalUse) { e.Enabled = false; } } } } m.ContextMenu = c; return(true); }
public void Dispose() { if (IsDisposed) { return; } IsDisposed = true; if (Entries != null) { for (var index = 0; index < Entries.Length; index++) { ContextMenuEntry e = Entries[index]; if (e != null) { e.Dispose(); } } Entries = null; } if (From != null) { if (From.ContextMenu == this) { From.ContextMenu = null; } From = null; } Target = null; }
public static void AddContextMenuEntries(Mobile from, Item item, List<ContextMenuEntry> list) { if (!item.IsChildOf(from.Backpack) && item.Parent != from) return; PlayerMobile pm = from as PlayerMobile; if (pm == null) return; int typeentry = 0; if (pm.ToggleCutClippings) typeentry = 1112282; if (pm.ToggleCutReeds) typeentry = 1112283; ContextMenuEntry clippingEntry = new ContextMenuEntry(typeentry); clippingEntry.Color = 0x421F; //list.Add( clippingEntry ); list.Add(new ToggleClippings(pm, true, false, 1112282)); //set to clip plants list.Add(new ToggleClippings(pm, false, true, 1112283)); //Set to cut reeds }
public static void AddContextMenuEntries( Mobile from, Item item, ArrayList list, HarvestSystem system ) { if ( system != Mining.System ) return; if ( !item.IsChildOf( from.Backpack ) && item.Parent != from ) return; PlayerMobile pm = from as PlayerMobile; if ( pm == null ) return; ContextMenuEntry miningEntry = new ContextMenuEntry( pm.ToggleMiningStone ? 6179 : 6178 ); miningEntry.Color = 0x421F; list.Add( miningEntry ); list.Add( new ToggleMiningStoneEntry( pm, false, 6176 ) ); list.Add( new ToggleMiningStoneEntry( pm, true, 6177 ) ); }
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list ) { base.GetContextMenuEntries( from, list ); if ( !IsChildOf( from.Backpack ) ) return; PlayerMobile pm = from as PlayerMobile; if ( pm.BardMastery == BardMastery.Discordance ) { foreach ( var element in ElementalDamages ) { if ( element != pm.BardElementDamage ) list.Add( new SwitchDamageEntry( pm, this, element ) ); } } if ( DateTime.Now > pm.NextBardMasterySwitch ) { ContextMenuEntry titleEntry = new ContextMenuEntry( 1151948 ); // Switch Mastery titleEntry.Enabled = false; list.Add( titleEntry ); foreach ( var mastery in BardMastery.AllMasteries ) { if ( mastery != pm.BardMastery ) list.Add( new SwitchMasteryEntry( pm, this, mastery ) ); } } }
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list ) { base.GetContextMenuEntries( from, list ); if ( Controlled && ControlMaster == from ) { PlayerMobile pm = from as PlayerMobile; if ( pm == null ) return; ContextMenuEntry miningEntry = new ContextMenuEntry( pm.ToggleMiningStone ? 6179 : 6178 ); miningEntry.Color = 0x421F; list.Add( miningEntry ); list.Add( new BaseHarvestTool.ToggleMiningStoneEntry( pm, false, 6176 ) ); list.Add( new BaseHarvestTool.ToggleMiningStoneEntry( pm, true, 6177 ) ); } }
public static void AddContextMenuEntries(Mobile from, Item item, List<ContextMenuEntry> list, HarvestSystem system) { if (system != Mining.System) return; if (!item.IsChildOf(from.Backpack) && item.Parent != from) return; PlayerMobile pm = from as PlayerMobile; if (pm == null) return; int typeentry = 0; if (pm.ToggleMiningStone) typeentry = 6179; if (pm.ToggleMiningGem) typeentry = 1112239; if (!pm.ToggleMiningStone && !pm.ToggleMiningGem) typeentry = 6178; ContextMenuEntry miningEntry = new ContextMenuEntry(typeentry); miningEntry.Color = 0x421F; list.Add(miningEntry); list.Add(new ToggleMiningStoneEntry(pm, false, false, 6176)); list.Add(new ToggleMiningStoneEntry(pm, true, false, 6177)); list.Add(new ToggleMiningStoneEntry(pm, false, true, 1112237)); }