private void OnAddEntity(EntityEventArgs args) { var ability = args.Entity as Ability; if (ability != null && ability.IsValid && ability.Id != AbilityId.ability_base) { var isMine = ability.Owner?.Handle == MyHero.Handle; if (isMine) { MyHero.AddAbility(ability); var type = types.FirstOrDefault( x => x.GetCustomAttributes <AbilityAttribute>().Any(z => z.AbilityId == ability.Id)); if (type != null) { MyHero.UsableAbilities.Add((UsableAbility)Activator.CreateInstance(type, ability, this)); } } OnAbilityAdd?.Invoke(null, new AbilityEventArgs(ability, isMine)); } var item = args.Entity as Item; if (item != null && item.IsValid && item.Id != AbilityId.ability_base) { var isMine = item.Purchaser?.Hero?.Handle == MyHero.Handle; if (isMine) { MyHero.AddItem(item); } OnItemAdd?.Invoke(null, new ItemEventArgs(item, isMine)); return; } var unit = args.Entity as Unit; if (unit != null && unit.IsValid && unit.IsRealUnit()) { Units.Add(unit); OnUnitAdd?.Invoke(null, new UnitEventArgs(unit)); } }
public void AddUnit(Unit unit) => OnUnitAdd?.Invoke(unit);