private static async void BenchmarkHooks_OnCommand(CommandEventArgs eventArgs)
        {
            if (eventArgs.Arguments.Length != 1)
            {
                return;
            }

            var iterations = eventArgs.GetUInt32(0);

            var elapsed = TimeSpan.FromTicks(0);

            elapsed += RunBench(
                "EnchantmentDictionary.Set",
                iterations,
                null,
                (i, enchanted) => enchanted.Enchantments.Set((DexBonus e) => e.Value = i)
                );

            await Timer.Pause(1_000);

            elapsed += RunBench(
                "EnchantmentDictionary.Get",
                iterations,
                null,
                (_, enchanted) => enchanted.Enchantments.Get((DexBonus e) => e.Value)
                );

            await Timer.Pause(1_000);

            elapsed += RunBench(
                "EnchantmentHooks.Fire",
                iterations,
                subject => Enumerable.Range(0, 10).ToList().ForEach(i => subject.Enchantments.Set((HealingBonus e) => e.Value = i)),
                (i, enchanted) =>
            {
                var val = 10.0 * i;
                (enchanted as Mobile).FireHook(h => h.OnHeal(enchanted, enchanted, null, ref val));
            });

            Console.WriteLine($"Finished all benchmarks in ({elapsed.TotalSeconds:F6} seconds).");
        }
Beispiel #2
0
        private static void Props_OnCommand(CommandEventArgs e)
        {
            if (e.Length == 1)
            {
                IEntity ent = World.FindEntity(e.GetUInt32(0));

                if (ent == null)
                {
                    e.Mobile.SendMessage("No object with that serial was found.");
                }
                else if (!BaseCommand.IsAccessible(e.Mobile, ent))
                {
                    e.Mobile.SendLocalizedMessage(500447); // That is not accessible.
                }
                else
                {
                    e.Mobile.SendGump(new PropertiesGump(e.Mobile, ent));
                }
            }
            else
            {
                e.Mobile.Target = new PropsTarget();
            }
        }