Пример #1
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="IreliaQ" /> class.
 /// </summary>
 /// <param name="graphGenerator">
 ///     The graph generator.
 /// </param>
 /// <param name="pathfinderModule">
 ///     The pathfinder module.
 /// </param>
 public IreliaQ(
     IGraphGenerator <AStarNode, AStarEdge <AStarNode> > graphGenerator,
     PathfinderModule pathfinderModule)
 {
     this.GraphGenerator   = graphGenerator;
     this.PathfinderModule = pathfinderModule;
 }
Пример #2
0
        /// <summary>
        ///     Loads this instance.
        /// </summary>
        public override void Load()
        {
            var superParent = new SuperParent(this.DisplayName);

            var orbwalkerModule = new OrbwalkerModule();

            orbwalkerModule.Load();

            var graphGeneratorModule = new GraphGeneratorModule(null);

            var pathfinderModule = new PathfinderModule();

            var damageCalculator = new DamageCalculatorParent();

            //var ireliaP = new IreliaP();
            var ireliaQ = new IreliaQ(graphGeneratorModule, pathfinderModule);

            graphGeneratorModule.IreliaQ = ireliaQ;
            var ireliaW = new IreliaW();
            var ireliaE = new IreliaE();
            var ireliaR = new IreliaR();

            var aa = new AutoAttacks();

            damageCalculator.Add(aa);
            damageCalculator.Add(ireliaQ);
            damageCalculator.Add(ireliaW);
            damageCalculator.Add(ireliaE);
            damageCalculator.Add(ireliaR);

            graphGeneratorModule.IreliaQ = ireliaQ;

            var spellInterrupterModule =
                new SpellInterrupterModule(new SpellInterrupter(ireliaE.Spell, sender => ireliaE.CanStun(sender)));

            var dashToMouseModule = new PathfindToMouseModule(ireliaQ);

            var spellParent = new SpellParent.SpellParent();

            spellParent.Add(new List <Base> {
                ireliaQ, ireliaW, ireliaE, ireliaR,
            });
            spellParent.Load();

            var comboParent = new OrbwalkingParent(
                "Combo",
                orbwalkerModule.OrbwalkerInstance,
                Orbwalking.OrbwalkingMode.Combo);

            var laneClearParent = new OrbwalkingParent(
                "LaneClear",
                orbwalkerModule.OrbwalkerInstance,
                Orbwalking.OrbwalkingMode.LaneClear);

            var lastHitParent = new OrbwalkingParent(
                "LastHit",
                orbwalkerModule.OrbwalkerInstance,
                Orbwalking.OrbwalkingMode.LastHit,
                Orbwalking.OrbwalkingMode.Mixed,
                Orbwalking.OrbwalkingMode.LaneClear);

            var mixedParent = new OrbwalkingParent(
                "Mixed",
                orbwalkerModule.OrbwalkerInstance,
                Orbwalking.OrbwalkingMode.Mixed);

            var drawingParent = new Parent("Drawings");

            comboParent.Add(
                new List <Base>
            {
                new Q(ireliaQ, damageCalculator).Guardian(new SpellMustBeReady(SpellSlot.Q)),
                new W(ireliaW, ireliaQ).Guardian(new SpellMustBeReady(SpellSlot.W)),
                new E(ireliaE).Guardian(new SpellMustBeReady(SpellSlot.E)).Guardian(new PlayerMustNotBeWindingUp()),
                new R(ireliaR, ireliaQ, damageCalculator).Guardian(new SpellMustBeReady(SpellSlot.R))
                .Guardian(new PlayerMustNotBeWindingUp())
            });

            laneClearParent.Add(
                new List <Base>
            {
                new LaneClear.W(ireliaW).Guardian(new SpellMustBeReady(SpellSlot.W)),
                new LaneClear.E(ireliaE).Guardian(new SpellMustBeReady(SpellSlot.E))
                .Guardian(new PlayerMustNotBeWindingUp())
            });

            lastHitParent.Add(
                new List <Base>
            {
                new LastHit.Q(ireliaQ).Guardian(new SpellMustBeReady(SpellSlot.Q)),
                new LastHit.E(ireliaE).Guardian(new SpellMustBeReady(SpellSlot.E))
                .Guardian(new PlayerMustNotBeWindingUp())
            });

            mixedParent.Add(
                new List <Base>
            {
                new Q(ireliaQ, damageCalculator).Guardian(new SpellMustBeReady(SpellSlot.Q)),
                new W(ireliaW, ireliaQ).Guardian(new SpellMustBeReady(SpellSlot.W)),
                new Mixed.E(ireliaE).Guardian(new SpellMustBeReady(SpellSlot.E))
                .Guardian(new PlayerMustNotBeWindingUp())
            });

            var module = new DamageDrawingParent("Damage Drawings");

            const byte defaultAlpha = 50 * 255 / 100;

            module.Add(
                new List <IDamageDrawing>
            {
                new DamageDrawingChild("Auto-Attacks", aa.GetDamage)
                {
                    Color = new Color(40, 175, 175)
                    {
                        A = defaultAlpha
                    },
                },
                new DamageDrawingChild("Q", ireliaQ.GetDamage)
                {
                    Color = new Color(25, 100, 125)
                    {
                        A = defaultAlpha
                    }
                },
                new DamageDrawingChild("W", ireliaW.GetDamage)
                {
                    Color = new Color(40, 175, 175)
                    {
                        A = defaultAlpha
                    }
                },
                new DamageDrawingChild("E", ireliaE.GetDamage)
                {
                    Color = new Color(255, 210, 95)
                    {
                        A = defaultAlpha
                    }
                },
                new DamageDrawingChild("R", ireliaR.GetDamage)
                {
                    Color = new Color(240, 150, 75)
                    {
                        A = defaultAlpha
                    }
                }
            });

            var spellRangeParent = new Parent("Ranges");

            spellRangeParent.Add(
                new List <Base>
            {
                new RangeDrawingChild(ireliaQ.Spell, "Q"),
                new RangeDrawingChild(ireliaE.Spell, "E"),
                new RangeDrawingChild(ireliaR.Spell, "R", true),
            });

            drawingParent.Add(new List <Base> {
                spellRangeParent, module
            });

            superParent.Add(
                new List <Base>
            {
                orbwalkerModule,
                spellParent,
                damageCalculator,
                pathfinderModule,
                graphGeneratorModule,
                comboParent,
                laneClearParent,
                lastHitParent,
                mixedParent,
                dashToMouseModule,
                spellInterrupterModule,
                drawingParent
            });

            superParent.Load();

            superParent.Menu.Style = FontStyle.Bold;
            superParent.Menu.Color = Color.Firebrick;
        }