Esempio n. 1
0
        public void readData(Excel.Worksheet v_sheet)
        {
            Excel.Cells data   = v_sheet.Cells;
            SheetHeader header = new SheetHeader();

            header.readHeader(v_sheet, 1);
            for (int i = 2; i < 100000; i++)
            {
                object idIdx = header.getData(data, i, "等级");
                if (idIdx == null || string.IsNullOrWhiteSpace(idIdx.ToString()))
                {
                    break;
                }
                int        groupId  = Convert.ToInt32(header.getData(data, i, "组ID"));
                List <int> arrIndex = null;
                if (!m_playerDataIndex.ContainsKey(groupId))
                {
                    arrIndex = new List <int>();
                    m_playerDataIndex.Add(groupId, arrIndex);
                }
                else
                {
                    arrIndex = m_playerDataIndex[groupId];
                }
                arrIndex.Add(m_playerDatas.Count);
                if (arrIndex == null)
                {
                    arrIndex = new List <int>();
                    m_playerDataIndex.Add(groupId, arrIndex);
                }
                arrIndex.Add(m_playerDatas.Count);
                playerData pd     = new playerData();
                string[]   strIpt = new string[titles.Length];
                for (int j = 0; j < titles.Length; j++)
                {
                    object tmp = header.getData(data, i, titles[j]);
                    if (tmp == null)
                    {
                        Debug.Info("读取第{0}行第{1}列时发生错误", i, titles[j]);
                    }
                    strIpt[j] = Convert.ToString(tmp);
                }
                pd.init(strIpt);
                m_playerDatas.Add(pd);
            }
        }
Esempio n. 2
0
        //protected List<BaseAttrData> monsterAttr;
        public void calPlayerAttr(Excel.Worksheet v_monsterSheet)
        {
            const int OFF_Y = 2;

            Excel.Cells data = v_monsterSheet.Cells;
            m_playerAttrdatas = new List <BaseAttrData>();
            m_playerAttrIndex = new Dictionary <int, List <int> >();
            SheetHeader header = new SheetHeader();

            header.readHeader(v_monsterSheet, 1);

            for (int i = 0; i < m_playerDatas.Count; i++)
            {
                BaseAttrData attrVal = new BaseAttrData();
                attrVal.init();
                BaseAttrData attrFac = new BaseAttrData();
                attrFac.init();
                playerData pd = m_playerDatas[i];

                //计算武将属性
                attrVal = attrVal + m_heroAttr * pd.heroAptitude * (pd.level + 10) * (float)Math.Pow(1.2, (double)pd.heroBreak);
                //计算武器
                attrVal = attrVal + m_equipStrengthenData.Weapon * (8 + pd.equipStrengthenLv);
                //计算胸甲
                attrVal = attrVal + m_equipStrengthenData.Breast * (8 + pd.equipStrengthenLv);
                //计算头盔
                attrVal = attrVal + m_equipStrengthenData.halmet * (8 + pd.equipStrengthenLv);
                //计算鞋子
                attrVal = attrVal + m_equipStrengthenData.shoose * (8 + pd.equipStrengthenLv);
                //计算神器
                attrFac = attrFac + m_equipStrengthenData.almulet_1 * (10 + pd.amulet_level) * pd.heroNum;
                //计算圣器
                attrFac = attrFac + m_equipStrengthenData.almulet_2 * (10 + pd.amulet_level) * pd.heroNum;
                //计算装备突破
                for (int j = 0; j < 4; j++)
                {
                    attrFac = attrFac + m_equipBreakupData.getData(j + 1, pd.equipBreakLv);
                }
                //计算宝物精炼
                for (int j = 0; j < pd.amuletQualityArrHp.Length; j++)
                {
                    attrVal = attrVal + m_amuletRecoinData.getData(0, j, pd.amulet_recoin) * pd.amuletQualityArrHp[j];
                    attrVal = attrVal + m_amuletRecoinData.getData(1, j, pd.amulet_recoin) * pd.amuletQualityArrAtk[j];
                }
                //计算战宠培养
                attrVal = attrVal + m_petFosterData.levelData[pd.pet_level] * pd.heroNum;
                //计算战宠星语
                attrFac = attrFac + m_petStarData.levelData[pd.pet_xingyu] * pd.heroNum;
                //计算最终结果
                attrVal = attrVal / pd.heroNum;
                attrFac = attrFac / pd.heroNum;
                BaseAttrData finalAttr = attrVal * attrFac;
                //考虑英雄技能系数
                float avgSkillFac = 0;
                for (int j = 0; j < 5; j++)
                {
                    avgSkillFac += m_skillFac[j] * pd.heroQualitys[j];
                }
                avgSkillFac   /= pd.heroNum;
                finalAttr.Atk *= avgSkillFac;
                float[] arrAttr = new float[] { (float)Math.Round(finalAttr.Hp, 2),
                                                (float)Math.Round(finalAttr.Atk, 2),
                                                (float)Math.Round(finalAttr.PhisicalDef, 2),
                                                (float)Math.Round(finalAttr.MagicalDef, 2) };
                BaseAttrData bad = new BaseAttrData();
                bad.init(arrAttr);
                List <int> arrPlayerAttrIndex = null;
                if (!m_playerAttrIndex.ContainsKey(pd.groupID))
                {
                    arrPlayerAttrIndex = new List <int>();
                    m_playerAttrIndex.Add(pd.groupID, arrPlayerAttrIndex);
                }
                else
                {
                    arrPlayerAttrIndex = m_playerAttrIndex[pd.groupID];
                }
                arrPlayerAttrIndex.Add(m_playerAttrdatas.Count);
                m_playerAttrdatas.Add(bad);


                header.setData(data, OFF_Y + i, "玩家血", bad.Hp);
                header.setData(data, OFF_Y + i, "玩家攻", bad.Atk);
                header.setData(data, OFF_Y + i, "玩家物防", bad.PhisicalDef);
                header.setData(data, OFF_Y + i, "玩家法防", bad.MagicalDef);
            }
        }