예제 #1
0
        private BuffInstanceInfo NewBuffInstance(int buffId)
        {
            BuffInstanceInfo instanceInfo = GetUnusedBuffInstanceInfoFromPool(buffId);

            if (null == instanceInfo)
            {
                BuffConfig config = BuffConfigProvider.Instance.GetBuffConfig(buffId);
                if (null != config)
                {
                    ConfigManager.Instance.LoadIfNotExist(buffId, 2, HomePath.Instance.GetAbsolutePath(config.Script));
                }
                IInstance instance = ConfigManager.Instance.NewInstance(buffId, 2);
                if (null == instance)
                {
                    LogUtil.Error("ImpactSystem.NewImpactInstance : Can't load impact config, impact:{0}.", buffId);
                }
                BuffInstanceInfo res = new BuffInstanceInfo
                {
                    BuffId       = buffId,
                    BuffInstance = instance,
                    IsUsed       = true
                };

                AddImpactInstanceInfoToPool(buffId, res);
                return(res);
            }
            else
            {
                instanceInfo.IsUsed = true;
                return(instanceInfo);
            }
        }
예제 #2
0
 public virtual void Init(Role sendRole, Role receRole, BuffConfig info, float beginTime)
 {
     mSendRole   = sendRole;
     mReceRole   = receRole;
     mBuffConfig = info;
     mBeginTime  = beginTime;
 }
예제 #3
0
    protected virtual BuffData toCreateBuff(int id, int level, int adderInstanceID, BuffData eData)
    {
        BuffData buff = eData != null ? eData : GameC.pool.buffDataPool.getOne();

        buff.instanceID  = getBuffInstanceID();
        buff.id          = id;
        buff.config      = BuffConfig.get(id);
        buff.level       = getBuffUseLevel(buff.config, level);
        buff.levelConfig = BuffLevelConfig.get(id, buff.level);
        //客户端用
        buff.timeMax = getBuffUseLastTime(buff);

        buff.adderInstanceID = adderInstanceID;

        if (eData == null)
        {
            buff.lastTime = getBuffUseLastTime(buff);
            buff.lastNum  = buff.levelConfig.lastNum;
            //叠层强制1
            if (buff.config.plusType == BuffPlusType.AddFloor)
            {
                buff.lastNum = 1;
            }
        }

        return(buff);
    }
예제 #4
0
    /** 设置数据 */
    public void setData(IntObjectMap <BuffData> datas)
    {
        _buffDataDic = datas;

        if (datas != null && !datas.isEmpty())
        {
            BuffData[] values = datas.getValues();
            BuffData   data;

            for (int i = values.Length - 1; i >= 0; --i)
            {
                if ((data = values[i]) != null)
                {
                    data.config      = BuffConfig.get(data.id);
                    data.levelConfig = BuffLevelConfig.get(data.id, data.level);

                    toAddBuffToDic(data);

                    doAddActions(data, _parent.isDriveAll());
                }
            }

            for (int i = values.Length - 1; i >= 0; --i)
            {
                if ((data = values[i]) != null)
                {
                    data.timeMax = getBuffUseLastTime(data);
                }
            }
        }
    }
 public void SetBuffConfig(BuffConfig cfg, Vector3 position, bool isEnemy)
 {
     this.config = cfg;
     this.pos = position;
     this.isEnemy = isEnemy;
     if (isEnemy)
     {
         this.pos += this.enemyRepositionAmount;
     }
     else
     {
         this.pos += this.selfRepositionAmount;
     }
     this.repositionObj.transform.position = this.pos;
     this.titleTM.text = this.config.title;
     this.titleTM.Commit();
     this.levelTM.text = string.Empty;
     if (this.config.level > 0)
     {
         this.levelTM.text = "Lv." + this.config.level;
     }
     this.levelTM.Commit();
     this.descTM.text = this.config.desc;
     this.descTM.Commit();
     base.Invoke("OnClick", this.autoHideTime);
 }
예제 #6
0
        public void AddBuff(int buffId, int blevel, double dura)
        {
            BuffConfig buffConfig = ConfigData.GetBuffConfig(buffId);
            var        immuneRate = GetBuffImmuneRate(buffConfig.Group);

            if (immuneRate >= 1)//免疫了
            {
                return;
            }
            if (immuneRate > 0)
            {
                dura *= (1 - immuneRate);
            }

            MemBaseBuff buffdata;

            if (buffDict.TryGetValue(buffId, out buffdata))
            {
                buffdata.TimeLeft = Math.Max(buffdata.TimeLeft, dura);
            }
            else
            {
                Buff buff = new Buff(buffId);
                buff.UpgradeToLevel(blevel);
                buffdata = new MemBaseBuff(buff, dura);
                //buff.CheckBuffEffect(this, 1);
                buffdata.OnAddBuff(self);
                buffDict.Add(buffId, buffdata);
            }
        }
예제 #7
0
    static void AddBuff(int buffId, GameObject o)
    {
        var buffC = BuffConfig.Get(buffId);
        var type  = CONSTANT.CONST.BUFF_PERFIX + Enum.GetName(typeof(ENUM_EFFECT), buffC.EffectType);
        var buff  = o.AddComponent(Type.GetType(type)) as Buff;

        buff.BuffId = buffId;
    }
예제 #8
0
    //server部分

    /** 服务器添加buff */
    public void addBuffByServer(BuffData data)
    {
        data.config      = BuffConfig.get(data.id);
        data.levelConfig = BuffLevelConfig.get(data.id, data.level);
        data.timeMax     = getBuffUseLastTime(data);

        toAddBuff(data);
    }
예제 #9
0
 public Buff(Characer caster, Characer receiver, BuffConfig config, int round)
 {
     this.caster   = caster;
     this.receiver = receiver;
     this.config   = config;
     this.duration = round;
     Start();
 }
예제 #10
0
        public static Color GetBuffColor(int id)
        {
            BuffConfig buffConfig = ConfigData.BuffDict[id];
            var        color      = buffConfig.Color;
            var        colorStr   = color.Split(',');

            return(Color.FromArgb(100, int.Parse(colorStr[0]), int.Parse(colorStr[1]), int.Parse(colorStr[2])));
        }
예제 #11
0
 protected void Start()
 {
     config   = BuffConfig.Get(BuffId);
     lifeTime = config.Duration / 1000f;
     delay    = config.Delay / 1000f;
     period   = config.Period / 1000f;
     ppt      = GetComponent <Property>();
 }
예제 #12
0
 public Buff(BuffConfig config)
 {
     Config   = config;
     BuffName = Config.BuffName;
     Type     = Config.Type;
     Cd       = Config.Cd;
     LeftCd   = Cd;
     IsActive = true;
 }
예제 #13
0
    /** 获取buff使用等级 */
    private int getBuffUseLevel(BuffConfig config, int level)
    {
        foreach (int v in config.groups)
        {
            level += _buffLevelUpDic.getOrDefault(v, 0);
        }

        return(level);
    }
 public void AddEnemyBuff(BuffConfig buff)
 {
     if (this.enemyBuffs == null)
     {
         this.enemyBuffs = new List<BuffConfig>();
     }
     if (buff != null)
     {
         this.enemyBuffs.Add(buff);
         this.UpdateEnemyBuffShow(buff);
     }
 }
예제 #15
0
    private void LoadFromNative()
    {
        string path     = Application.streamingAssetsPath + "/buff_configs.json";
        var    jsonData = JsonMapper.ToObject(File.ReadAllText(path));

        for (var i = 0; i < jsonData.Count; i++)
        {
            BuffConfig d = new BuffConfig();
            d.ReadFromJson(jsonData[i]);
            configs.Add(d);
        }
    }
 public void AddSelfBuff(BuffConfig buff)
 {
     if (this.selfBuffs == null)
     {
         this.selfBuffs = new List<BuffConfig>();
     }
     if (buff != null)
     {
         this.selfBuffs.Add(buff);
         this.UpdateSelfBuffShow(buff);
     }
 }
예제 #17
0
        public static Image GetBuffImage(int id, int index)
        {
            BuffConfig buffConfig = ConfigData.BuffDict[id];
            string     indexTxt   = index == 0 ? "" : index.ToString();
            string     fname      = string.Format("Buff/{0}{1}", buffConfig.Icon, indexTxt);

            if (!ImageManager.HasImage(fname))
            {
                Image image = PicLoader.Read("Buff", string.Format("{0}{1}.PNG", buffConfig.Icon, indexTxt));
                ImageManager.AddImage(fname, image.GetThumbnailImage(20, 20, null, new IntPtr(0)));
            }
            return(ImageManager.GetImage(fname));
        }
예제 #18
0
        public static bool HasEffect(int id, BuffEffectTypes etype)
        {
            BuffConfig buffConfig = ConfigData.BuffDict[id];

            foreach (int eff in buffConfig.Effect)
            {
                if ((int)etype == eff)
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #19
0
    /** 是否有buff(为一些绑定逻辑使用) */
    public bool hasBuff(int id)
    {
        if (BuffConfig.get(id).plusType == BuffPlusType.AllExist)
        {
            IntObjectMap <BuffData> dic;

            return((dic = _buffDatasForAllExist.get(id)) != null && !dic.isEmpty());
        }
        else
        {
            return(_buffDatasByID.get(id) != null);
        }
    }
예제 #20
0
 public void LoadConfigs()
 {
     ItemConfig.LoadCsvCfg();
     AnimConfig.LoadCsvCfg();
     PlayerConfig.LoadCsvCfg();
     MonsterConfig.LoadCsvCfg();
     BossConfig.LoadCsvCfg();
     BuffConfig.LoadCsvCfg();
     SkillConfig.LoadCsvCfg();
     LevelConfig.LoadCsvCfg();
     BulletConfig.LoadCsvCfg();
     BarrageConfig.LoadCsvCfg();
     ColliderConfig.LoadCsvCfg();
 }
예제 #21
0
        public void Execute()
        {
            var entities = m_AttrGroup.GetEntities();

            foreach (var entity in entities)
            {
                entity.isBuffAttrChanged = false;

                if (!entity.hasAttr || !entity.hasBuff)
                {
                    continue;
                }

                AttributeConfig attrConfig = AttributeConfigProvider.Instance.GetAttributeConfig(entity.attr.Id);
                if (null != attrConfig)
                {
                    AttributeData attrData = entity.attr.Value;
                    attrData.SetAbsoluteByConfig(attrConfig);

                    foreach (var pair in entity.buff.InstanceInfos)
                    {
                        int buffId = pair.Key;
                        List <BuffInstanceInfo> buffInstances = pair.Value;
                        BuffConfig buffConfig = BuffConfigProvider.Instance.GetBuffConfig(buffId);
                        if (null != buffConfig)
                        {
                            foreach (var instanceInfo in buffInstances)
                            {
                                AttributeConfig buffAttrConfig = AttributeConfigProvider.Instance.GetAttributeConfig(buffConfig.AttrId);
                                if (null != buffAttrConfig)
                                {
                                    attrData.SetRelativeByConfig(buffAttrConfig);
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #22
0
        public EngineAction Run(BuffConfig Config)
        {
            lock (ActiveBuffs)
            {
                // Want to find party members where they have an autobuff configured but it isn't in their list of buffs.
                foreach (PartyMember ptMember in Monitored.GetActivePartyMembers())
                {
                    // Make sure there's at least 1 auto-buff for the player.
                    if (AutoBuffs.ContainsKey(ptMember.Name) && AutoBuffs[ptMember.Name].Any())
                    {
                        // First check if they're ActiveBuffs are empty, and if so return first buff to cast.
                        if (!ActiveBuffs.ContainsKey(ptMember.Name) || !ActiveBuffs[ptMember.Name].Any())
                        {
                            return(new EngineAction()
                            {
                                Spell = AutoBuffs[ptMember.Name].First(),
                                Target = ptMember.Name
                            });
                        }
                        else
                        {
                            var missingBuffSpell = AutoBuffs[ptMember.Name].FirstOrDefault(buff => !ActiveBuffs[ptMember.Name].Contains(Data.SpellEffects[buff]));
                            if (!string.IsNullOrEmpty(missingBuffSpell))
                            {
                                return(new EngineAction()
                                {
                                    Spell = missingBuffSpell,
                                    Target = ptMember.Name
                                });
                            }
                        }
                    }
                }
            }

            return(null);
        }
예제 #23
0
    /** 删除buff通过ID */
    public void removeBuffByID(int id)
    {
        if (BuffConfig.get(id).plusType == BuffPlusType.AllExist)
        {
            IntObjectMap <BuffData> dic;

            if ((dic = _buffDatasForAllExist.get(id)) != null && !dic.isEmpty())
            {
                foreach (BuffData data in dic)
                {
                    toRemoveBuff(data);
                }
            }
        }
        else
        {
            BuffData data;

            if ((data = _buffDatasByID.get(id)) != null)
            {
                toRemoveBuff(data);
            }
        }
    }
예제 #24
0
        public void Execute()
        {
            long time = (long)(m_Contexts.input.time.Value * 1000);

            foreach (GameEntity entity in m_ImpactEntities)
            {
                BuffComponent buffComponent = entity.buff;
                foreach (var pair in buffComponent.InstanceInfos)
                {
                    int buffId = pair.Key;
                    var infos  = pair.Value;
                    for (int i = infos.Count - 1; i >= 0; i--)
                    {
                        var info = infos[i];
                        info.BuffInstance.Tick(time);
                        if (info.BuffInstance.IsTerminated)
                        {
                            RecycleImpactInstance(info);

                            entity.isBuffAttrChanged = true;

                            infos.Remove(info);
                        }
                    }
                }
                foreach (var startParam in buffComponent.StartParams)
                {
                    //SkillSystem.Instance.BreakSkill(entity);

                    BuffConfig buffConfig = BuffConfigProvider.Instance.GetBuffConfig(startParam.Id);
                    if (null != buffConfig)
                    {
                        int maxCount = buffConfig.MaxCount;

                        if (!buffComponent.InstanceInfos.TryGetValue(startParam.Id, out List <BuffInstanceInfo> infos))
                        {
                            infos = new List <BuffInstanceInfo>();
                            buffComponent.InstanceInfos.Add(startParam.Id, infos);
                        }
                        if (maxCount == 0 && infos.Count > 0)
                        {
                            continue;
                        }
                        else if (maxCount > 0 && infos.Count >= maxCount)
                        {
                            for (int i = 0; i < infos.Count - maxCount + 1; ++i)
                            {
                                if (!infos[i].BuffInstance.IsTerminated)
                                {
                                    infos[i].BuffInstance.SendMessage("onbreak");
                                    infos[i].BuffInstance.IsTerminated = true;
                                }
                            }
                        }

                        BuffInstanceInfo instance = NewBuffInstance(startParam.Id);
                        if (null != instance)
                        {
                            instance.BuffInstance.SenderId        = startParam.SenderId;
                            instance.BuffInstance.SenderPosition  = startParam.SenderPosition;
                            instance.BuffInstance.SenderDirection = startParam.SenderDirection;
                            instance.BuffInstance.Target          = entity;
                            instance.BuffInstance.Context         = Contexts.sharedInstance.game;
                            instance.BuffInstance.AddVariable("@@id", entity.id.value);
                            instance.BuffInstance.GlobalVariables = m_GlobalVariables;
                            instance.BuffInstance.Start();

                            infos.Add(instance);

                            entity.isBuffAttrChanged = true;
                        }
                    }
                }
                buffComponent.StartParams.Clear();
            }
        }
예제 #25
0
 public static Buff CreateBuff(BuffConfig buffConfig)
 {
     return((Buff)Activator.CreateInstance(Type.GetType(buffConfig.ClassName), new Object[] { buffConfig }));
 }
 public void SetBuff(BuffConfig buff, [Optional, DefaultParameterValue(false)] bool isEnemy)
 {
     this.warBuff = buff;
     this.isEnemy = isEnemy;
     this.icon.SetSprite("buff" + buff.icon);
 }
예제 #27
0
 public void SetBuffConfigs(BuffConfig[] configs)
 {
     if (configs == null)
     {
         this.buffConfigsDic = new Dictionary<int, BuffConfig>();
     }
     else
     {
         if (f_am_cache10 == null)
         {
             f_am_cache10 = n => n.cid;
         }
         if (f_am_cache11 == null)
         {
             f_am_cache11 = n => n;
         }
         this.buffConfigsDic = configs.ToDictionary<BuffConfig, int, BuffConfig>(f_am_cache10, f_am_cache11);
     }
 }
예제 #28
0
파일: Buff.cs 프로젝트: narlon/TOMClassic
 public Buff(int id)
 {
     BuffConfig = ConfigData.BuffDict[id];
 }
예제 #29
0
    /// <summary>
    /// 执行单个装备方法
    /// </summary>
    protected void doOneEquipAction(MUnitUseLogic logic, PlayerEquipContainerTool tool, int slot, int index, int[] args, bool isOn)
    {
        switch (args[0])
        {
        case ItemEquipActionType.AddBuff:
        {
            if (!CommonSetting.isClientDriveLogic)
            {
                return;
            }

            if (isOn)
            {
                if (ShineSetting.openCheck)
                {
                    BuffConfig buffConfig = BuffConfig.get(args[0]);

                    if (buffConfig.keepType != BuffKeepType.Online)
                    {
                        Ctrl.throwError("装备用buff的保存类型必须为Online");
                    }
                }

                BuffData buffData = logic.getBuffLogic().addBuff(args[0], args[1]);
                //记录buffID
                tool.getBuffInstanceIDDic().put(slot << CommonSetting.buffActionIndexOff | index, buffData.instanceID);
            }
            else
            {
                int instanceID = tool.getBuffInstanceIDDic().remove(slot << CommonSetting.buffActionIndexOff | index);

                if (instanceID <= 0)
                {
                    Ctrl.errorLog("不该找不到buff instanceID");
                }
                else
                {
                    logic.getBuffLogic().removeBuffByInstanceID(instanceID);
                }
            }
        }
        break;

        case ItemEquipActionType.AddSkill:
        {
            if (!CommonSetting.isClientDriveLogic)
            {
                return;
            }

            if (isOn)
            {
                logic.getFightLogic().addSkill(args[0], args[1]);
            }
            else
            {
                logic.getFightLogic().removeSkill(args[0]);
            }
        }
        break;
        }
    }
예제 #30
0
파일: Buff.cs 프로젝트: jayrulez/TOMClassic
 public Buff(int id)
 {
     BuffConfig = ConfigData.BuffDict[id];
 }
예제 #31
0
    private BuffData addOneBuff(int id, int level, int adderInstanceID, BuffData eData)
    {
        BuffConfig config = BuffConfig.get(id);

        //先看忽略
        foreach (int v in config.groups)
        {
            if (_ignoreBuffGroupDic.get(v) > 0)
            {
                return(null);
            }
        }

        BuffData re;
        BuffData oldData;
        BuffData data;

        switch (config.plusType)
        {
        case BuffPlusType.Normal:
        {
            if ((oldData = _buffDatasByID.get(id)) != null)
            {
                //新的等级更高
                if (level > oldData.level)
                {
                    toRemoveBuff(oldData);
                    toAddBuff(re = toCreateBuff(id, level, adderInstanceID, eData));
                }
                else
                {
                    toRefreshBuff(re = oldData);
                }
            }
            else
            {
                toAddBuff(re = toCreateBuff(id, level, adderInstanceID, eData));
            }
        }
        break;

        case BuffPlusType.Replace:
        {
            if ((oldData = _buffDatasByID.get(id)) != null)
            {
                toRemoveBuff(oldData);
            }

            toAddBuff(re = toCreateBuff(id, level, adderInstanceID, eData));
        }
        break;

        case BuffPlusType.AllExist:
        {
            IntObjectMap <BuffData> dic = _buffDatasForAllExist.get(id);

            if (dic == null)
            {
                toAddBuff(re = toCreateBuff(id, level, adderInstanceID, eData));
            }
            else
            {
                if (config.plusMax > 0 && dic.size() >= config.plusMax)
                {
                    BuffData temp = null;

                    BuffData[] values = dic.getValues();

                    for (int i = values.Length - 1; i >= 0; --i)
                    {
                        if ((data = values[i]) != null)
                        {
                            if (temp == null)
                            {
                                temp = data;
                            }
                            else if (data.instanceID < temp.instanceID)                                  //更小
                            {
                                temp = data;
                            }
                        }
                    }

                    //删了最早的
                    if (temp != null)
                    {
                        toRemoveBuff(temp);
                    }
                }

                toAddBuff(re = toCreateBuff(id, level, adderInstanceID, eData));
            }
        }

        break;

        case BuffPlusType.AddFloor:
        {
            if ((oldData = _buffDatasByID.get(id)) != null)
            {
                //新的等级更高
                if (level > oldData.level)
                {
                    toRemoveBuff(oldData);
                    re = toCreateBuff(id, level, adderInstanceID, eData);
                    //继承层数
                    re.lastNum = oldData.lastNum;

                    toAddBuff(re);
                }
                else
                {
                    //没满级
                    if (oldData.lastNum < config.plusMax)
                    {
                        //加
                        oldData.lastNum++;

                        refreshOneBuffAttributeVar(oldData);

                        //刷新buff时间
                        toRefreshBuff(re = oldData);

                        //到达上限
                        if (oldData.lastNum == config.plusMax)
                        {
                            doPlusMaxActions(oldData);
                        }
                    }
                    else
                    {
                        re = oldData;

                        if (oldData.levelConfig.lastTime > 0)
                        {
                            //刷新buff时间
                            toRefreshBuff(oldData);
                        }
                    }
                }
            }
            else
            {
                toAddBuff(re = toCreateBuff(id, level, adderInstanceID, eData));
            }
        }
        break;

        default:
        {
            re = null;
            Ctrl.throwError("不支持的buff plusType", config.plusType);
        }
        break;
        }

        return(re);
    }
예제 #32
0
 public override void clear()
 {
     config      = null;
     levelConfig = null;
 }
예제 #33
0
    //private (string[], int[]) LoadConfig(string configName)
    //{
    //    var data = AssetDatabase.LoadAssetAtPath<IdNameTableObject>($"Assets/{configName}.asset");
    //    var kArr = new string[data.Names.Length + 1];
    //    kArr[0] = "(空)";
    //    var vArr = new int[data.Names.Length + 1];
    //    for (int i = 0; i < data.Names.Length; i++)
    //    {
    //        kArr[i + 1] = data.Names[i];
    //    }
    //    for (int i = 0; i < vArr.Length; i++)
    //    {
    //        vArr[i] = i;
    //    }
    //    return (kArr, vArr);
    //}

    private void OnGUI()
    {
        BuffHelper.Init();
        //textColor = GUI.skin.textField.normal.textColor;
        //BuffHelper.buffTypeKArr =  BuffHelper.buffTypes.Values.ToArray();
        //BuffHelper.buffTypeVArr =  BuffHelper.buffTypes.Keys.ToArray();
        //BuffHelper.logicTypeKArr = BuffHelper.logicTypes.Values.ToArray();
        //BuffHelper.logicTypeVArr = BuffHelper.logicTypes.Keys.ToArray();

        //(BuffHelper.stateTypeKArr, BuffHelper.stateTypeVArr) = LoadConfig("状态配置");
        //BuffHelper.stateTypeKArr[0] = "(请选择状态)";
        //(BuffHelper.numericTypeKArr, BuffHelper.numericTypeVArr) = LoadConfig("属性配置");
        //BuffHelper.numericTypeKArr[0] = "(请选择属性)";
        //(BuffHelper.actionTypeKArr, BuffHelper.actionTypeVArr) = LoadConfig("动作配置");
        //BuffHelper.actionTypeKArr[0] = "(请选择动作)";
        //(BuffHelper.conditionTypeKArr, BuffHelper.conditionTypeVArr) = LoadConfig("条件配置");
        //BuffHelper.conditionTypeKArr[0] = "(请选择条件)";

        textColor = GUI.skin.textField.normal.textColor;
        scrollPos = EditorGUILayout.BeginScrollView(scrollPos); // 组开始

        BuffConfig removeBuff = null;

        foreach (var item in buffConfigs)
        {
            EditorGUILayout.BeginHorizontal(/*GUILayout.Height(16)*/);
            {
                EditorGUILayout.BeginHorizontal(GUILayout.Width(100));
                GUILayout.Label("ID:");
                item.Id = EditorGUILayout.IntField(item.Id, GUILayout.Width(60));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal(GUILayout.Width(100));
                GUILayout.Label("名称:");
                item.Name = EditorGUILayout.TextField(item.Name, GUILayout.Width(60));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal(GUILayout.Width(100));
                GUILayout.Label("时间:");
                item.Duration = EditorGUILayout.FloatField(item.Duration, GUILayout.Width(60));
                GUILayout.Label(":");
                EditorGUILayout.EndHorizontal();

                if (item.Functions == null)
                {
                    item.Functions = new List <FunctionConfig>()
                    {
                        new FunctionConfig()
                        {
                            Type = 1
                        }
                    };
                }
                FunctionConfig removeFunc = null;
                EditorGUILayout.BeginVertical();
                foreach (var func in item.Functions)
                {
                    EditorGUILayout.BeginHorizontal();
                    OnFuncDraw(func);
                    {
                        EditorGUILayout.BeginHorizontal(GUILayout.Width(30));
                        if (GUILayout.Button("-"))
                        {
                            removeFunc = (func);
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                    EditorGUILayout.EndHorizontal();
                }
                if (removeFunc != null)
                {
                    item.Functions.Remove(removeFunc);
                }
                if (item.Functions.Count == 0)
                {
                    removeBuff = item;
                }
                GUI.color = Color.white;
                {
                    EditorGUILayout.BeginHorizontal(GUILayout.Width(30));
                    if (GUILayout.Button("+"))
                    {
                        item.Functions.Add(new FunctionConfig());
                    }
                    EditorGUILayout.EndHorizontal();
                }
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndHorizontal();
        }
        if (removeBuff != null)
        {
            buffConfigs.Remove(removeBuff);
        }
        if (GUILayout.Button("+", GUILayout.Height(30)))
        {
            buffConfigs.Add(new BuffConfig()
            {
                Id = buffConfigs.Count
            });
        }

        EditorGUILayout.EndScrollView(); // 组结束
    }
예제 #34
0
파일: FightMgr.cs 프로젝트: luoshujie/Chess
        public BuffConfig AllBuff(PersonData personData)
        {
            BuffConfig buffConfig = new BuffConfig();

            return(buffConfig);
        }
예제 #35
0
        public static void RefixCharacterProperty(CharacterInfo entity, int buffId, float factor)
        {
            BuffConfig buffConfig = BuffConfigProvider.Instance.GetDataById(buffId);

            if (null == buffConfig)
            {
                return;
            }

            float aMoveSpeed          = entity.GetActualProperty().MoveSpeed;
            float aWalkSpeed          = entity.GetActualProperty().WalkSpeed;
            int   aHpMax              = entity.GetActualProperty().HpMax;
            int   aEnergyMax          = entity.GetActualProperty().EnergyMax;
            float aHpRecover          = entity.GetActualProperty().HpRecover;
            float aEnergyRecover      = entity.GetActualProperty().EnergyRecover;
            int   aAttackBase         = entity.GetActualProperty().AttackBase;
            int   aADefenceBase       = entity.GetActualProperty().ADefenceBase;
            int   aMDefenceBase       = entity.GetActualProperty().MDefenceBase;
            float aCritical           = entity.GetActualProperty().Critical;
            float aCriticalPow        = entity.GetActualProperty().CriticalPow;
            float aCriticalBackHitPow = entity.GetActualProperty().CriticalBackHitPow;
            float aCriticalCrackPow   = entity.GetActualProperty().CriticalCrackPow;
            float aFireDamage         = entity.GetActualProperty().FireDamage;
            float aFireERD            = entity.GetActualProperty().FireERD;
            float aIceDamage          = entity.GetActualProperty().IceDamage;
            float aIceERD             = entity.GetActualProperty().IceERD;
            float aPoisonDamage       = entity.GetActualProperty().PoisonDamage;
            float aPoisonERD          = entity.GetActualProperty().PoisonERD;
            float aWeight             = entity.GetActualProperty().Weight;

            aMoveSpeed          += AddFactor(buffConfig.m_AttrData.GetAddSpd(aMoveSpeed, entity.GetLevel()), factor);
            aWalkSpeed          += AddFactor(buffConfig.m_AttrData.GetAddWalkSpd(aWalkSpeed, entity.GetLevel()), factor);
            aHpMax              += (int)AddFactor(buffConfig.m_AttrData.GetAddHpMax(aHpMax, entity.GetLevel()), factor);
            aEnergyMax          += (int)AddFactor(buffConfig.m_AttrData.GetAddEpMax(aEnergyMax, entity.GetLevel()), factor);
            aHpRecover          += AddFactor(buffConfig.m_AttrData.GetAddHpRecover(aHpRecover, entity.GetLevel()), factor);
            aEnergyRecover      += AddFactor(buffConfig.m_AttrData.GetAddEpRecover(aEnergyRecover, entity.GetLevel()), factor);
            aAttackBase         += (int)AddFactor(buffConfig.m_AttrData.GetAddAd(aAttackBase, entity.GetLevel()), factor);
            aADefenceBase       += (int)AddFactor(buffConfig.m_AttrData.GetAddADp(aADefenceBase, entity.GetLevel()), factor);
            aMDefenceBase       += (int)AddFactor(buffConfig.m_AttrData.GetAddMDp(aMDefenceBase, entity.GetLevel()), factor);
            aCritical           += AddFactor(buffConfig.m_AttrData.GetAddCri(aCritical, entity.GetLevel()), factor);
            aCriticalPow        += AddFactor(buffConfig.m_AttrData.GetAddPow(aCriticalPow, entity.GetLevel()), factor);
            aCriticalBackHitPow += AddFactor(buffConfig.m_AttrData.GetAddBackHitPow(aCriticalBackHitPow, entity.GetLevel()), factor);
            aCriticalCrackPow   += AddFactor(buffConfig.m_AttrData.GetAddCrackPow(aCriticalCrackPow, entity.GetLevel()), factor);
            aFireDamage         += AddFactor(buffConfig.m_AttrData.GetAddFireDam(aFireDamage, entity.GetLevel()), factor);
            aFireERD            += AddFactor(buffConfig.m_AttrData.GetAddFireErd(aFireERD, entity.GetLevel()), factor);
            aIceDamage          += AddFactor(buffConfig.m_AttrData.GetAddIceDam(aIceDamage, entity.GetLevel()), factor);
            aIceERD             += AddFactor(buffConfig.m_AttrData.GetAddIceErd(aIceERD, entity.GetLevel()), factor);
            aPoisonDamage       += AddFactor(buffConfig.m_AttrData.GetAddPoisonDam(aPoisonDamage, entity.GetLevel()), factor);
            aPoisonERD          += AddFactor(buffConfig.m_AttrData.GetAddPoisonErd(aPoisonERD, entity.GetLevel()), factor);
            aWeight             += AddFactor(buffConfig.m_AttrData.GetAddWeight(aWeight, entity.GetLevel()), factor);

            entity.GetActualProperty().SetMoveSpeed(Operate_Type.OT_Absolute, aMoveSpeed);
            entity.GetActualProperty().SetWalkSpeed(Operate_Type.OT_Absolute, aWalkSpeed);
            entity.GetActualProperty().SetHpMax(Operate_Type.OT_Absolute, aHpMax);
            entity.GetActualProperty().SetEnergyMax(Operate_Type.OT_Absolute, aEnergyMax);
            entity.GetActualProperty().SetHpRecover(Operate_Type.OT_Absolute, aHpRecover);
            entity.GetActualProperty().SetEnergyRecover(Operate_Type.OT_Absolute, aEnergyRecover);
            entity.GetActualProperty().SetAttackBase(Operate_Type.OT_Absolute, aAttackBase);
            entity.GetActualProperty().SetADefenceBase(Operate_Type.OT_Absolute, aADefenceBase);
            entity.GetActualProperty().SetMDefenceBase(Operate_Type.OT_Absolute, aMDefenceBase);
            entity.GetActualProperty().SetCritical(Operate_Type.OT_Absolute, aCritical);
            entity.GetActualProperty().SetCriticalPow(Operate_Type.OT_Absolute, aCriticalPow);
            entity.GetActualProperty().SetCriticalBackHitPow(Operate_Type.OT_Absolute, aCriticalBackHitPow);
            entity.GetActualProperty().SetCriticalCrackPow(Operate_Type.OT_Absolute, aCriticalCrackPow);
            entity.GetActualProperty().SetFireDamage(Operate_Type.OT_Absolute, aFireDamage);
            entity.GetActualProperty().SetFireERD(Operate_Type.OT_Absolute, aFireERD);
            entity.GetActualProperty().SetIceDamage(Operate_Type.OT_Absolute, aIceDamage);
            entity.GetActualProperty().SetIceERD(Operate_Type.OT_Absolute, aIceERD);
            entity.GetActualProperty().SetPoisonDamage(Operate_Type.OT_Absolute, aPoisonDamage);
            entity.GetActualProperty().SetPoisonERD(Operate_Type.OT_Absolute, aPoisonERD);
            entity.GetActualProperty().SetWeight(Operate_Type.OT_Absolute, aWeight);
        }
 private bool isAirWarBuff(BuffConfig buff)
 {
     return ((buff.cid >= 0x38f) && (buff.cid <= 0x393));
 }
 private void UpdateSelfBuffShow(BuffConfig buff)
 {
     List<GameObject> items = this.selfBuffContainer.GetItems();
     if (items == null)
     {
         items = new List<GameObject>();
     }
     GameObject item = GameObjectUtil.InstantiateItemAsChildOf(this.buffItemPrefab, this.selfBuffContainer.gameObject);
     item.GetComponent<WarBuffItem>().SetBuff(buff, false);
     items.Add(item);
     if (this.isAirWarBuff(buff))
     {
         this.selfAirBuffObj = item;
     }
     this.selfBuffContainer.SetItems(items);
 }
 public void ShowDetailInfoOfBuff(BuffConfig config, Vector3 position, bool isEnemy)
 {
     if (GlobalLock.instance.CanGo)
     {
         GlobalLock.instance.GoNow();
     }
     else
     {
         return;
     }
     if (this.showingDetailBuff != null)
     {
         UnityEngine.Object.Destroy(this.showingDetailBuff);
     }
     this.showingDetailBuff = GameObjectUtil.InstantiateItemAsChildOf(this.detailInfoPrefab, base.gameObject);
     this.showingDetailBuff.GetComponent<ShowBuffDetailInfo>().SetBuffConfig(config, position, isEnemy);
 }
예제 #39
0
 public void reloadConfig()
 {
     config      = BuffConfig.get(id);
     levelConfig = BuffLevelConfig.get(id, level);
 }