Example #1
0
 public void OnLoad()
 {
     Hero           = ObjectManager.LocalHero;
     enemyTeam      = Hero.GetEnemyTeam();
     heroTeam       = Hero.Team;
     Menu           = new MenuManager();
     Sleeper        = new MultiSleeper();
     fountain       = new Fountain(heroTeam);
     itemManager    = new ItemManager();
     abilityUpdater = new AbilityUpdater();
 }
Example #2
0
 public void OnLoad()
 {
     sleeper              = new MultiSleeper();
     statusDrawer         = new StatusDrawer();
     abilityUpdater       = new AbilityUpdater();
     randomiser           = new Random();
     Variables.Hero       = ObjectManager.LocalHero;
     Variables.Menu       = new MenuManager();
     Variables.Pathfinder = new Pathfinder();
     Variables.HeroTeam   = Hero.Team;
     fountain             =
         ObjectManager.GetEntities <Unit>()
         .First(x => x.ClassID == ClassID.CDOTA_Unit_Fountain && x.Team == HeroTeam);
 }
Example #3
0
        public void OnLoad()
        {
            Variables.Hero = ObjectManager.LocalHero;
            Variables.HeroTeam = Hero.Team;
            Variables.EnemyTeam = Hero.GetEnemyTeam();
            Variables.Menu = new MenuManager();
            Variables.Pathfinder = new Pathfinder();

            sleeper = new MultiSleeper();
            statusDrawer = new StatusDrawer();
            abilityUpdater = new AbilityUpdater();
            randomiser = new Random();
            abilityModifiers = new AbilityModifiers();
            fountain =
                ObjectManager.GetEntities<Unit>()
                    .First(x => x.ClassID == ClassID.CDOTA_Unit_Fountain && x.Team == HeroTeam);
        }
Example #4
0
 public void OnLoad()
 {
     Hero = ObjectManager.LocalHero;
     enemyTeam = Hero.GetEnemyTeam();
     heroTeam = Hero.Team;
     Menu = new MenuManager();
     Sleeper = new MultiSleeper();
     fountain = new Fountain(heroTeam);
     itemManager = new ItemManager();
     abilityUpdater = new AbilityUpdater();
 }
Example #5
0
        private Entity AbilityDetail(Func <GameInstance> gameFunc, Func <CachedMob> mobFunc, int abilityIndex,
                                     ParticleEffectSettings particleEffectSettings)
        {
            var abilityDetailWrapper = new Entity {
                SizeFunc = () => new Vector2(120, 80),
                Hidden   = true
            };

            abilityDetailWrapper.AddComponent(_ => { abilityDetailWrapper.Hidden = mobFunc() == null; });

            var abilityDetail = new Entity()
            {
                Renderer    = new SpellRenderer(_game, _gameBoardController, mobFunc, abilityIndex),
                CustomBatch = true,
                SizeFunc    = () => new Vector2(150, 150)
            };

            abilityDetail.AddComponent(() => { abilityDetail.LayoutEntity(); });
            abilityDetailWrapper.AddChild(abilityDetail);

            var abilityDetailNotEnoughAp = new Entity()
            {
                Renderer  = new SpriteRenderer(_assetManager[AssetManager.SpellBgNotEnoughAp]),
                SortOrder = Camera2D.SortUI + 10000
            };

            abilityDetailNotEnoughAp.AddComponent(() => {
                var mob = mobFunc();
                if (mob != null)
                {
                    if (abilityIndex < mob.MobInfo.Abilities.Count)
                    {
                        var abilityId = mob.MobInfo.Abilities[abilityIndex];
                        var ability   = _game.MobManager.Abilities[abilityId];

                        bool onCooldown = _game.State.Cooldowns[abilityId] > 0;
                        abilityDetailNotEnoughAp.Hidden = ability.Cost <= mob.MobInstance.Ap;

                        if (abilityDetailNotEnoughAp.Hidden == false && onCooldown)
                        {
                            abilityDetailNotEnoughAp.Hidden = true;
                        }
                    }
                    else
                    {
                        abilityDetailNotEnoughAp.Hidden = true;
                    }
                }
                else
                {
                    abilityDetailNotEnoughAp.Hidden = true;
                }
            });

            var abilityDetailCooldown = new Entity()
            {
                Renderer  = new SpriteRenderer(_assetManager[AssetManager.SpellBgCooldown]),
                SortOrder = Camera2D.SortUI + 10000
            };

            abilityDetailCooldown.AddComponent(() => {
                var mob = mobFunc();
                if (mob != null)
                {
                    if (abilityIndex < mob.MobInfo.Abilities.Count)
                    {
                        var abilityId = mob.MobInfo.Abilities[abilityIndex];

                        abilityDetailCooldown.Hidden = _game.State.Cooldowns[abilityId] == 0;
                    }
                    else
                    {
                        abilityDetailCooldown.Hidden = true;
                    }
                }
                else
                {
                    abilityDetailCooldown.Hidden = true;
                }
            });

            var dmgLabel = new Label(_assetManager.AbilityFont)
            {
                Position = new Vector2(53, 12)
            };

            abilityDetailWrapper.AddChild(dmgLabel);

            var apLabel = new Label(_assetManager.AbilityFont)
            {
                Position = new Vector2(119, 12)
            };

            abilityDetailWrapper.AddChild(apLabel);

            var rangeLabel = new Label(_assetManager.AbilityFont)
            {
                Position = new Vector2(58, 55)
            };

            abilityDetailWrapper.AddChild(rangeLabel);

            var buffLabel = new Label(_assetManager.AbilityFontSmall)
            {
                Position = new Vector2(38, 106)
            };

            abilityDetailWrapper.AddChild(buffLabel);

            var areaBuffLabel = new Label(_assetManager.AbilityFontSmall)
            {
                Position = new Vector2(38, 124)
            };

            abilityDetailWrapper.AddChild(areaBuffLabel);

            var cooldownLabel = new Label(_assetManager.AbilityFont)
            {
                Position = new Vector2(119, 55)
            };

            abilityDetailWrapper.AddChild(cooldownLabel);

            abilityDetailWrapper.AddChild(abilityDetailNotEnoughAp);
            abilityDetailWrapper.AddChild(abilityDetailCooldown);

            const float speed            = 1;
            const float horizontalOffset = 6;

            Func <Random, Vector2> offsetFunc = rnd =>
                                                new Vector2(
                (float)rnd.NextDouble() * horizontalOffset * 2 - horizontalOffset, 0);

            Func <Random, Vector2> velocityFunc = rnd =>
                                                  new Vector2((float)rnd.NextDouble() - 0.2f,
                                                              (float)rnd.NextDouble() * speed - speed / 2);

            const int maximumNumberOfParticles = 200;
            const int particlesPerSecond       = 20;

            if (particleEffectSettings == ParticleEffectSettings.HighlightParticles)
            {
                var particles = new ParticleSystem(maximumNumberOfParticles,
                                                   particlesPerSecond,
                                                   new Vector2(0, -1), speed,
                                                   _assetManager[AssetManager.ParticleSprite],
                                                   0.01f, offsetFunc, velocityFunc);

                particles.CustomBatch = true;
                particles.Position    = new Vector2(60, 120);

                particles.ColorFunc = () => {
                    var mob = mobFunc();
                    if (_gameBoardController.SelectedAbilityIndex.HasValue && mob != null)
                    {
                        return(Color.Red);
                    }
                    else
                    {
                        return(Color.White);
                    }
                };

                abilityDetail.AddComponent(_ => {
                    particles.Active = _gameBoardController.SelectedAbilityIndex == abilityIndex;
                });

                abilityDetailWrapper.AddChild(particles);
            }

            var abilityUpdater = new AbilityUpdater(gameFunc,
                                                    mobFunc,
                                                    abilityIndex,
                                                    dmgLabel,
                                                    apLabel,
                                                    rangeLabel,
                                                    buffLabel,
                                                    cooldownLabel,
                                                    areaBuffLabel);

            abilityDetail.AddComponent(abilityUpdater);

            abilityUpdater.OnClick += index => {
                if (_game.CurrentController is PlayerController)
                {
                    _gameBoardController.SelectAbility(index);
                }
            };

            return(abilityDetailWrapper);
        }