/// <summary> /// The on load. /// </summary> public void OnLoad() { this.LocalTeam = new AbilityTeam(GlobalVariables.Team); var enemyTeam = new AbilityTeam(GlobalVariables.EnemyTeam) { OtherTeams = new List <IAbilityTeam> { this.LocalTeam } }; this.LocalTeam.OtherTeams.Add(enemyTeam); this.Teams = new List <IAbilityTeam> { this.LocalTeam, enemyTeam }; // foreach (var unit in ObjectManager.GetEntities<Unit>()) // { // if (!(unit is Hero) || unit.Team == GlobalVariables.EnemyTeam && !(unit is Hero) // || unit.ClassId == ClassId.CDOTA_BaseNPC_Creep_Lane // || unit.ClassId == ClassId.CDOTA_BaseNPC_Creep_Siege || unit.IsIllusion) // { // continue; // } // this.AddUnit(unit); // } // var delay = Game.GameTime < 0 ? 3000 : 500; // DelayAction.Add( // delay, // () => // { // }); foreach (var hero in Heroes.All) { this.AddUnit(hero); } var size = new Vector2((float)(HUDInfo.ScreenSizeX() / 2.3), HUDInfo.ScreenSizeY() / 2); this.ui = new AbilityManagerUserInterface( new Vector2(HUDInfo.ScreenSizeX() - size.X - 10, (float)(HUDInfo.ScreenSizeY() / 2 - size.Y / 1.5)), size, this); this.TeamAdd.Next(this.LocalTeam); this.TeamAdd.Next(enemyTeam); ObjectManager.OnAddEntity += this.OnAddEntity; ObjectManager.OnRemoveEntity += this.OnRemoveEntity; // Game.OnUpdate += this.Game_OnUpdate; // Drawing.OnDraw += this.Drawing_OnDraw; }
/// <summary> /// The on load. /// </summary> public void OnLoad() { this.LocalTeam = new AbilityTeam(GlobalVariables.Team); var enemyTeam = new AbilityTeam(GlobalVariables.EnemyTeam) { OtherTeams = new List <IAbilityTeam> { this.LocalTeam } }; this.LocalTeam.OtherTeams.Add(enemyTeam); this.Teams = new List <IAbilityTeam> { this.LocalTeam, enemyTeam }; // foreach (var unit in ObjectManager.GetEntities<Unit>()) // { // if (!(unit is Hero) || unit.Team == GlobalVariables.EnemyTeam && !(unit is Hero) // || unit.ClassId == ClassID.CDOTA_BaseNPC_Creep_Lane // || unit.ClassId == ClassID.CDOTA_BaseNPC_Creep_Siege || unit.IsIllusion) // { // continue; // } // this.AddUnit(unit); // } // var delay = Game.GameTime < 0 ? 3000 : 500; // DelayAction.Add( // delay, // () => // { // }); var heroes = ObjectManager.GetEntities <Player>() .Where(x => x.Hero != null && x.Hero.IsValid) .Select(x => x.Hero) .ToList(); foreach (var hero in ObjectManager.GetEntities <Hero>() .Where(hero => !hero.IsIllusion && heroes.All(x => x.Handle != hero.Handle))) { heroes.Add(hero); } foreach (var hero in heroes) { this.AddUnit(hero); } foreach (var keyValuePair in this.Units) { foreach (var sourceUnitModifier in keyValuePair.Value.SourceUnit.Modifiers) { keyValuePair.Value.Modifiers.AddModifier(sourceUnitModifier); } } // foreach (var hero in heroes) // { // foreach (var heroModifier in hero.Modifiers) // { // this.Unit_OnModifierAdded(hero, new ModifierChangedEventArgs(heroModifier)); // } // } foreach (var entity in ObjectManager.GetEntities <Unit>()) { if (entity.IsValid && !(entity is Hero) && !(entity is Courier) && entity.Team == this.LocalTeam.Name && entity.IsControllable) { // if (entity.Name == "npc_dota_lone_druid_bear1") // { // Console.WriteLine(entity.GetType()); // } // Console.WriteLine(entity.Name); this.AddUnit(entity); } } var size = new Vector2((float)(HUDInfo.ScreenSizeX() / 2.3), HUDInfo.ScreenSizeY() / 2); this.ui = new AbilityManagerUserInterface( new Vector2(HUDInfo.ScreenSizeX() - size.X - 10, (float)(HUDInfo.ScreenSizeY() / 2 - size.Y / 1.5)), size, this); this.TeamAdd.Next(this.LocalTeam); this.TeamAdd.Next(enemyTeam); ObjectManager.OnAddEntity += this.OnAddEntity; ObjectManager.OnRemoveEntity += this.OnRemoveEntity; Unit.OnModifierAdded += this.Unit_OnModifierAdded; Unit.OnModifierRemoved += this.Unit_OnModifierRemoved; // Game.OnUpdate += this.Game_OnUpdate; // Drawing.OnDraw += this.Drawing_OnDraw; }
/// <summary> /// The add unit. /// </summary> /// <param name="unit"> /// The unit. /// </param> public void AddUnit(Unit unit) { var contains = false; if (!unit.IsValid || (contains = this.units.ContainsKey(unit.Handle))) { if (contains) { Console.WriteLine("unit :" + unit.Name + " already added"); } return; } if (unit.IsControllable && unit.Team == GlobalVariables.Team) { this.AddControllableUnit(unit); return; } // Console.WriteLine(unit.Name); // foreach (var modifier in unit.Modifiers) // { // Console.WriteLine(modifier.Name); // } var team = this.Teams.FirstOrDefault(x => x.Name == unit.Team); if (team == null) { team = new AbilityTeam(unit.Team) { OtherTeams = new List <IAbilityTeam>(this.Teams) }; team.OtherTeams.Add(this.LocalTeam); foreach (var abilityTeam in this.Teams) { abilityTeam.OtherTeams.Add(team); } this.Teams.Add(team); this.LocalTeam.OtherTeams.Add(team); this.TeamAdd.Next(team); } Console.WriteLine("adding enemy " + team.Name + " " + GlobalVariables.EnemyTeam); var abilityUnit = this.AbilityFactory.Value.CreateNewUnit(unit, team); this.AssignSkills(unit, abilityUnit); abilityUnit.Initialize(); foreach (var keyValuePair in abilityUnit.Parts) { keyValuePair.Value.Initialize(); } if (abilityUnit.IsEnemy) { this.enemies.Add(unit.Handle, abilityUnit); } else { this.allies.Add(unit.Handle, abilityUnit); } this.units.Add(unit.Handle, abilityUnit); this.OnUnitAdded(new UnitEventArgs { AbilityUnit = abilityUnit }); this.abilityUnitProvider.Next(abilityUnit); }