Example #1
0
 static public int get_id(IntPtr l)
 {
     try {
         TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l);
         pushValue(l, true);
         pushValue(l, self.id);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Example #2
0
 static public int constructor(IntPtr l)
 {
     try {
         TableConfig.AttrDefine o;
         o = new TableConfig.AttrDefine();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Example #3
0
 static public int GetId(IntPtr l)
 {
     try {
         TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l);
         var ret = self.GetId();
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Example #4
0
 static public int set_id(IntPtr l)
 {
     try {
         TableConfig.AttrDefine self = (TableConfig.AttrDefine)checkSelf(l);
         System.Int32           v;
         checkType(l, 2, out v);
         self.id = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Example #5
0
 static public int WriteToBinary(IntPtr l)
 {
     try {
         TableConfig.AttrDefine    self = (TableConfig.AttrDefine)checkSelf(l);
         GameFramework.BinaryTable a1;
         checkType(l, 2, out a1);
         self.WriteToBinary(a1);
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Example #6
0
 static public int ReadFromBinary(IntPtr l)
 {
     try {
         TableConfig.AttrDefine    self = (TableConfig.AttrDefine)checkSelf(l);
         GameFramework.BinaryTable a1;
         checkType(l, 2, out a1);
         System.Int32 a2;
         checkType(l, 3, out a2);
         var ret = self.ReadFromBinary(a1, a2);
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
            internal long Calc(SceneContextInfo context, CharacterProperty source, CharacterProperty target, long[] args, Dictionary <int, long> variables)
            {
                m_Stack.Clear();
                for (int i = 0; i < m_Codes.Count; ++i)
                {
                    Instruction ins = m_Codes[i];
                    switch (ins.Opcode)
                    {
                    case InsEnum.CONST:
                        m_Stack.Push(ins.Operand);
                        break;

                    case InsEnum.ATTR: {
                        int  id  = (int)ins.Operand;
                        long val = source.GetLong((CharacterPropertyEnum)id);
                        m_Stack.Push(val);
                    }
                    break;

                    case InsEnum.ATTR2: {
                        int  id  = (int)ins.Operand;
                        long val = target.GetLong((CharacterPropertyEnum)id);
                        m_Stack.Push(val);
                    }
                    break;

                    case InsEnum.VALUE: {
                        int id = (int)ins.Operand;
                        TableConfig.Const cfg = TableConfig.ConstProvider.Instance.GetConst(id);
                        if (null != cfg)
                        {
                            m_Stack.Push(cfg.value);
                        }
                        else
                        {
                            m_Stack.Push(0);
                        }
                    }
                    break;

                    case InsEnum.ARG: {
                        int index = (int)ins.Operand;
                        if (index >= 0 && index < args.Length)
                        {
                            m_Stack.Push(args[index]);
                        }
                        else
                        {
                            m_Stack.Push(0);
                        }
                    }
                    break;

                    case InsEnum.VAR: {
                        int  id = (int)ins.Operand;
                        long ret;
                        if (!variables.TryGetValue(id, out ret))
                        {
                            ret = 0;
                        }
                        m_Stack.Push(ret);
                    }
                    break;

                    case InsEnum.ATTRSET: {
                        long op2 = m_Stack.Pop();
                        int  id  = (int)ins.Operand;
                        TableConfig.AttrDefine cfg = TableConfig.AttrDefineProvider.Instance.GetAttrDefine(id);
                        if (null != cfg)
                        {
                            if (op2 < cfg.minValue)
                            {
                                op2 = cfg.minValue;
                            }
                            if (op2 > cfg.maxValue)
                            {
                                op2 = cfg.maxValue;
                            }
                        }
                        source.SetLong((CharacterPropertyEnum)id, op2);
                        m_Stack.Push(op2);
                    }
                    break;

                    case InsEnum.VARSET: {
                        long op2 = m_Stack.Pop();
                        int  id  = (int)ins.Operand;
                        variables[id] = op2;
                        m_Stack.Push(op2);
                    }
                    break;

                    case InsEnum.ADD: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 + op2);
                    }
                    break;

                    case InsEnum.SUB: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 - op2);
                    }
                    break;

                    case InsEnum.MUL: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 * op2);
                    }
                    break;

                    case InsEnum.DIV: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 / op2);
                    }
                    break;

                    case InsEnum.MOD: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 % op2);
                    }
                    break;

                    case InsEnum.MAX: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 >= op2 ? op1 : op2);
                    }
                    break;

                    case InsEnum.MIN: {
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        m_Stack.Push(op1 <= op2 ? op1 : op2);
                    }
                    break;

                    case InsEnum.ABS: {
                        long op2 = m_Stack.Pop();
                        m_Stack.Push(op2 >= 0 ? op2 : -op2);
                    }
                    break;

                    case InsEnum.CLAMP: {
                        long op3 = m_Stack.Pop();
                        long op2 = m_Stack.Pop();
                        long op1 = m_Stack.Pop();
                        if (op3 < op1)
                        {
                            m_Stack.Push(op1);
                        }
                        else if (op3 > op2)
                        {
                            m_Stack.Push(op2);
                        }
                        else
                        {
                            m_Stack.Push(op3);
                        }
                    }
                    break;
                    }
                }
                return(m_Stack.Pop());
            }
Example #8
0
        public void LoadData(TableConfig.Actor cfg)
        {
            m_ConfigData              = cfg;
            BaseProperty.ConfigData   = cfg;
            BaseProperty.Owner        = this;
            ActualProperty.ConfigData = cfg;
            ActualProperty.Owner      = this;

            TableConfig.SkillEventProvider.Instance.skillEventTable.TryGetValue(cfg.id, out m_SkillEventConfigData);

            SetLinkId(cfg.id);
            SetModel(cfg.avatar);
            EntityType    = cfg.type;
            m_Radius      = cfg.size;
            m_ViewRange   = cfg.viewrange;
            m_GohomeRange = cfg.gohomerange;

            float maxAttackRange = 0;

            if (cfg.skill0 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill0);
                GetSkillStateInfo().AddSkill(info);

                if (maxAttackRange < info.ConfigData.skillData.distance)
                {
                    maxAttackRange = info.ConfigData.skillData.distance;
                }

                m_AutoSkillIds.Add(cfg.skill0);
            }
            if (cfg.skill1 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill1);
                GetSkillStateInfo().AddSkill(info);

                if (maxAttackRange < info.ConfigData.skillData.distance)
                {
                    maxAttackRange = info.ConfigData.skillData.distance;
                }

                m_AutoSkillIds.Add(cfg.skill1);
            }
            if (cfg.skill2 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill2);
                GetSkillStateInfo().AddSkill(info);

                if (maxAttackRange < info.ConfigData.skillData.distance)
                {
                    maxAttackRange = info.ConfigData.skillData.distance;
                }

                m_AutoSkillIds.Add(cfg.skill2);
            }
            if (cfg.skill3 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill3);
                GetSkillStateInfo().AddSkill(info);

                if (maxAttackRange < info.ConfigData.skillData.distance)
                {
                    maxAttackRange = info.ConfigData.skillData.distance;
                }

                m_AutoSkillIds.Add(cfg.skill3);
            }
            if (cfg.skill4 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill4);
                GetSkillStateInfo().AddSkill(info);

                if (maxAttackRange < info.ConfigData.skillData.distance)
                {
                    maxAttackRange = info.ConfigData.skillData.distance;
                }

                m_ManualSkillId = cfg.skill4;
            }
            if (cfg.skill5 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill5);
                GetSkillStateInfo().AddSkill(info);

                m_PassiveSkillIds.Add(cfg.skill5);
            }
            if (cfg.skill6 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill6);
                GetSkillStateInfo().AddSkill(info);

                m_PassiveSkillIds.Add(cfg.skill6);
            }
            if (cfg.skill7 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill7);
                GetSkillStateInfo().AddSkill(info);

                m_PassiveSkillIds.Add(cfg.skill7);
            }
            if (cfg.skill8 > 0)
            {
                SkillInfo info = new SkillInfo(cfg.skill8);
                GetSkillStateInfo().AddSkill(info);

                m_PassiveSkillIds.Add(cfg.skill8);
            }
            if (cfg.bornskill > 0)
            {
                SkillInfo info = new SkillInfo(cfg.bornskill);
                GetSkillStateInfo().AddSkill(info);

                m_BornSkillId = cfg.bornskill;
            }
            if (cfg.deadskill > 0)
            {
                SkillInfo info = new SkillInfo(cfg.deadskill);
                GetSkillStateInfo().AddSkill(info);

                m_DeadSkillId = cfg.deadskill;
            }

            foreach (var pair in TableConfig.AttrDefineProvider.Instance.AttrDefineMgr.GetData())
            {
                TableConfig.AttrDefine def = pair.Value as TableConfig.AttrDefine;
                BaseProperty.SetInt((CharacterPropertyEnum)def.id, def.value);
            }

            InitProperty(CharacterPropertyEnum.x1001_基础物理攻击, cfg.x1001);
            InitProperty(CharacterPropertyEnum.x1002_物理攻击成长, cfg.x1002);
            InitProperty(CharacterPropertyEnum.x1006_基础法术攻击, cfg.x1006);
            InitProperty(CharacterPropertyEnum.x1007_法术攻击成长, cfg.x1007);
            InitProperty(CharacterPropertyEnum.x1011_基础物理防御, cfg.x1011);
            InitProperty(CharacterPropertyEnum.x1012_物理防御成长, cfg.x1012);
            InitProperty(CharacterPropertyEnum.x1016_基础法术防御, cfg.x1016);
            InitProperty(CharacterPropertyEnum.x1017_法术防御成长, cfg.x1017);
            InitProperty(CharacterPropertyEnum.x1021_暴击等级, cfg.x1021);
            InitProperty(CharacterPropertyEnum.x1022_抗暴击等级, cfg.x1022);
            InitProperty(CharacterPropertyEnum.x1024_命中等级, cfg.x1024);
            InitProperty(CharacterPropertyEnum.x1026_闪避等级, cfg.x1026);
            InitProperty(CharacterPropertyEnum.x1028_破击等级, cfg.x1028);
            InitProperty(CharacterPropertyEnum.x1030_格挡等级, cfg.x1030);
            InitProperty(CharacterPropertyEnum.x1032_格挡强度, cfg.x1032);
            InitProperty(CharacterPropertyEnum.x1033_暴击伤害, cfg.x1033);
            InitProperty(CharacterPropertyEnum.x1034_暴击伤害减免, cfg.x1034);

            InitProperty(CharacterPropertyEnum.x2001_基础生命, cfg.x2001);
            InitProperty(CharacterPropertyEnum.x2002_生命成长, cfg.x2002);
            InitProperty(CharacterPropertyEnum.x2007_基础速度, cfg.x2007);
            InitProperty(CharacterPropertyEnum.x2008_速度成长, cfg.x2008);

            InitProperty(CharacterPropertyEnum.x4001_职业, cfg.x4001);
            InitProperty(CharacterPropertyEnum.x4002_阵营, cfg.x4002);
            InitProperty(CharacterPropertyEnum.x4003_品质, cfg.x4003);
            InitProperty(CharacterPropertyEnum.x4004_性别, cfg.x4004);

            AttrCalculator.Calc(this);
            Hp = ActualProperty.GetInt(CharacterPropertyEnum.x2005_最大生命值);
        }