コード例 #1
0
        public void ReactivateEffects(List <string> ListIgnoreSkill = null)
        {
            foreach (KeyValuePair <string, List <BaseEffect> > ActiveListEffect in DicActiveEffect)
            {
                if (ListIgnoreSkill != null && ListIgnoreSkill.Contains(ActiveListEffect.Key))
                {
                    continue;
                }

                for (int E = ActiveListEffect.Value.Count - 1; E >= 0; --E)
                {
                    BaseEffect ActiveEffect = ActiveListEffect.Value[E];

                    ActiveEffect.ReactivateEffect();
                }
            }
        }
コード例 #2
0
        public BaseEffect Copy()
        {
            BaseEffect NewCopy = DoCopy();

            NewCopy.Lifetime           = 0;
            NewCopy.IsStacking         = IsStacking;
            NewCopy.MaximumStack       = MaximumStack;
            NewCopy.LifetimeType       = LifetimeType;
            NewCopy.LifetimeTypeValue  = LifetimeTypeValue;
            NewCopy.ListFollowingSkill = new List <BaseAutomaticSkill>(ListFollowingSkill.Count);

            foreach (BaseAutomaticSkill ActiveFollowingSkill in ListFollowingSkill)
            {
                NewCopy.ListFollowingSkill.Add(new BaseAutomaticSkill(ActiveFollowingSkill));
            }

            return(NewCopy);
        }
コード例 #3
0
        public void QuickLoad(BinaryReader BR)
        {
            int DicActivePilotEffectCount = BR.ReadInt32();

            DicActiveEffect = new Dictionary <string, List <BaseEffect> >(DicActivePilotEffectCount);
            for (int i = 0; i < DicActivePilotEffectCount; ++i)
            {
                string Key = BR.ReadString();

                int ListEffectValueCount     = BR.ReadInt32();
                List <BaseEffect> ListEffect = new List <BaseEffect>(ListEffectValueCount);
                for (int E = 0; E < ListEffectValueCount; ++E)
                {
                    ListEffect.Add(BaseEffect.FromFile(BR));
                }

                DicActiveEffect.Add(Key, ListEffect);
            }
        }
コード例 #4
0
        public void QuickLoad(BinaryReader BR, FormulaParser ActiveParser, Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect,
                              Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget)
        {
            int DicActivePilotEffectCount = BR.ReadInt32();

            DicActiveEffect = new Dictionary <string, List <BaseEffect> >(DicActivePilotEffectCount);
            for (int i = 0; i < DicActivePilotEffectCount; ++i)
            {
                string Key = BR.ReadString();

                int ListEffectValueCount     = BR.ReadInt32();
                List <BaseEffect> ListEffect = new List <BaseEffect>(ListEffectValueCount);
                for (int E = 0; E < ListEffectValueCount; ++E)
                {
                    ListEffect.Add(BaseEffect.FromQuickSaveFile(BR, ActiveParser, DicRequirement, DicEffect, DicAutomaticSkillTarget));
                }

                DicActiveEffect.Add(Key, ListEffect);
            }
        }
コード例 #5
0
        public void CopyMembers(BaseEffect Copy)
        {
            Lifetime          = Copy.Lifetime;
            IsStacking        = Copy.IsStacking;
            MaximumStack      = Copy.MaximumStack;
            LifetimeType      = Copy.LifetimeType;
            LifetimeTypeValue = Copy.LifetimeTypeValue;

            if (Copy.GetType() == GetType())
            {
                DoCopyMembers(Copy);
            }

            ListFollowingSkill = new List <BaseAutomaticSkill>(Copy.ListFollowingSkill.Count);

            foreach (BaseAutomaticSkill ActiveFollowingSkill in Copy.ListFollowingSkill)
            {
                ListFollowingSkill.Add(ActiveFollowingSkill);
            }
        }
コード例 #6
0
        public void UpdateAllEffectsLifetime(string LifetimeType)
        {
            foreach (KeyValuePair <string, List <BaseEffect> > ActiveListEffect in DicActiveEffect)
            {
                for (int E = ActiveListEffect.Value.Count - 1; E >= 0; --E)
                {
                    BaseEffect ActiveEffect = ActiveListEffect.Value[E];

                    if (ActiveEffect.LifetimeType == LifetimeType)
                    {
                        --ActiveEffect.Lifetime;
                        ActiveEffect.ResetState();

                        if (ActiveEffect.Lifetime == 0)
                        {
                            ActiveListEffect.Value.RemoveAt(E);
                        }
                    }
                }
            }
        }
コード例 #7
0
        public BaseSkillActivation(BinaryReader BR, Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect,
                                   Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget)
        {
            ActivationPercentage = BR.ReadByte();
            _Weight = BR.ReadInt32();

            //Requirements
            int ListRequirementCount = BR.ReadInt32();

            ListRequirement = new List <BaseSkillRequirement>(ListRequirementCount);
            for (int R = 0; R < ListRequirementCount; R++)
            {
                ListRequirement.Add(BaseSkillRequirement.LoadCopy(BR, DicRequirement));
            }

            //Effects.
            int ListEffectCount = BR.ReadInt32();

            ListEffect           = new List <BaseEffect>(ListEffectCount);
            ListEffectTarget     = new List <List <string> >(ListEffectCount);
            ListEffectTargetReal = new List <List <AutomaticSkillTargetType> >(ListEffectCount);
            for (int E = 0; E < ListEffectCount; E++)
            {
                int ListActivationTypesCount = BR.ReadInt32();

                List <string> NewListActivationType = new List <string>(ListActivationTypesCount);
                List <AutomaticSkillTargetType> NewListEffectTargetReal = new List <AutomaticSkillTargetType>(ListActivationTypesCount);
                for (int A = 0; A < ListActivationTypesCount; A++)
                {
                    string ListActivationType = BR.ReadString();
                    NewListActivationType.Add(ListActivationType);
                    NewListEffectTargetReal.Add(DicAutomaticSkillTarget[ListActivationType].Copy());
                }

                ListEffectTarget.Add(NewListActivationType);
                ListEffectTargetReal.Add(NewListEffectTargetReal);

                ListEffect.Add(BaseEffect.FromFile(BR, DicRequirement, DicEffect, DicAutomaticSkillTarget));
            }
        }
コード例 #8
0
        public void ReloadSkills(Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect, Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget)
        {
            foreach (BaseSkillLevel ActiveSkillLevel in ListSkillLevel)
            {
                foreach (BaseSkillActivation ActiveActivation in ActiveSkillLevel.ListActivation)
                {
                    for (int R = 0; R < ActiveActivation.ListRequirement.Count; R++)
                    {
                        BaseSkillRequirement NewRequirement = DicRequirement[ActiveActivation.ListRequirement[R].SkillRequirementName].Copy();
                        NewRequirement.CopyMembers(ActiveActivation.ListRequirement[R]);
                        ActiveActivation.ListRequirement[R] = NewRequirement;
                    }

                    ActiveActivation.ListEffectTargetReal.Clear();
                    foreach (List <string> ListActiveTarget in ActiveActivation.ListEffectTarget)
                    {
                        List <AutomaticSkillTargetType> NewListEffectTargetReal = new List <AutomaticSkillTargetType>(ListActiveTarget.Count);
                        ActiveActivation.ListEffectTargetReal.Add(NewListEffectTargetReal);
                        foreach (string ActiveTarget in ListActiveTarget)
                        {
                            NewListEffectTargetReal.Add(DicAutomaticSkillTarget[ActiveTarget].Copy());
                        }
                    }

                    for (int E = 0; E < ActiveActivation.ListEffect.Count; E++)
                    {
                        BaseEffect NewEffect = DicEffect[ActiveActivation.ListEffect[E].EffectTypeName].Copy();
                        NewEffect.CopyMembers(ActiveActivation.ListEffect[E]);
                        ActiveActivation.ListEffect[E] = NewEffect;

                        foreach (BaseAutomaticSkill ActiveFollowingSkill in ActiveActivation.ListEffect[E].ListFollowingSkill)
                        {
                            ActiveFollowingSkill.ReloadSkills(DicRequirement, DicEffect, DicAutomaticSkillTarget);
                        }
                    }
                }
            }
        }
コード例 #9
0
 public abstract void ExecuteAndAddEffectToTarget(BaseEffect ActiveSkillEffect, string SkillName);
コード例 #10
0
 public abstract bool CanExecuteEffectOnTarget(BaseEffect ActiveSkillEffect);
コード例 #11
0
 protected abstract void DoCopyMembers(BaseEffect Copy);