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(); }
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); }
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); }
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); }