예제 #1
0
        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));
            }
        }
예제 #2
0
 public void AddUnit(Unit unit) => OnUnitAdd?.Invoke(unit);