Beispiel #1
0
        public override BaseAbilityMixin CreateInstancedAbilityMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config)
        {
            BaseAbilityMixin mixin = config.MPCreateInstancedMixin(instancedAbility, instancedModifier);

            if (mixin == null)
            {
                return(null);
            }
            mixin.selfIdentity = Singleton <MPManager> .Instance.GetIdentity <BaseAbilityEntityIdentiy>(mixin.actor.runtimeID);

            return(mixin);
        }
Beispiel #2
0
        public ActorAbility(BaseAbilityActor caster, ConfigAbility config, Dictionary <string, object> overrideMap)
        {
            this.caster       = caster;
            this.config       = config;
            this._overrideMap = overrideMap;
            List <BaseAbilityMixin> list = new List <BaseAbilityMixin>();

            for (int i = 0; i < config.AbilityMixins.Length; i++)
            {
                BaseAbilityMixin item = caster.abilityPlugin.CreateInstancedAbilityMixin(this, null, config.AbilityMixins[i]);
                if (item != null)
                {
                    list.Add(item);
                }
            }
            base.instancedMixins = list.ToArray();
            for (int j = 0; j < base.instancedMixins.Length; j++)
            {
                base.instancedMixins[j].instancedMixinID = j;
            }
        }
Beispiel #3
0
        public ActorModifier(ActorAbility parentAbility, BaseAbilityActor owner, ConfigAbilityModifier config)
        {
            this.parentAbility = parentAbility;
            this.config        = config;
            this.owner         = owner;
            List <BaseAbilityMixin> list = new List <BaseAbilityMixin>();

            for (int i = 0; i < config.ModifierMixins.Length; i++)
            {
                BaseAbilityMixin item = owner.abilityPlugin.CreateInstancedAbilityMixin(parentAbility, this, config.ModifierMixins[i]);
                if (item != null)
                {
                    list.Add(item);
                }
            }
            base.instancedMixins = list.ToArray();
            for (int j = 0; j < base.instancedMixins.Length; j++)
            {
                base.instancedMixins[j].instancedMixinID = j;
            }
            this.stackIndices = new int[config.Properties.Count + config.EntityProperties.Count];
        }
Beispiel #4
0
        public void HandleInvokes(Packet_Ability_InvocationTable table, int fromPeerID)
        {
            int invokesLength = table.InvokesLength;

            for (int i = 0; i < invokesLength; i++)
            {
                AbilityInvokeEntry invokes = table.GetInvokes(i);
                if (invokes.LocalID == 0xff)
                {
                    if (this._abilityIdentity.isAuthority)
                    {
                        this.MetaAuthorityInvokeHandler(invokes);
                    }
                    else
                    {
                        this.MetaRemoteInvokeHandler(invokes);
                    }
                }
                else
                {
                    ActorAbility     parentAbility;
                    ActorModifier    instancedModifierByID;
                    uint             target = invokes.Target;
                    BaseAbilityActor actor  = (target != 0) ? Singleton <EventManager> .Instance.GetActor <BaseAbilityActor>(target) : base._owner;

                    if (actor == null)
                    {
                        return;
                    }
                    int instancedModifierID = invokes.InstancedModifierID;
                    if (instancedModifierID != 0)
                    {
                        instancedModifierByID = this.GetInstancedModifierByID(instancedModifierID);
                        parentAbility         = instancedModifierByID.parentAbility;
                    }
                    else
                    {
                        instancedModifierByID = null;
                        parentAbility         = this.GetInstancedAbilityByID(invokes.InstancedAbilityID);
                    }
                    BaseActionContainer container = parentAbility.config.InvokeSites[invokes.LocalID];
                    if (container is ConfigAbilityAction)
                    {
                        ConfigAbilityAction actionConfig = (ConfigAbilityAction)container;
                        actionConfig.MPGetRemoteHandler(this)(actionConfig, parentAbility, instancedModifierByID, actor, invokes);
                    }
                    else
                    {
                        BaseAbilityMixin instancedMixin = null;
                        if (instancedModifierByID != null)
                        {
                            instancedMixin = instancedModifierByID.GetInstancedMixin(invokes.LocalID);
                        }
                        if (instancedMixin == null)
                        {
                            instancedMixin = parentAbility.GetInstancedMixin(invokes.LocalID);
                        }
                        instancedMixin.HandleMixinInvokeEntry(invokes, fromPeerID);
                    }
                }
            }
        }