Example #1
0
        public static List <PropIdGroup> GetPropListC()
        {
            if (_listC == null)
            {
                AtkGroup.cInit    = InitBattleForce;
                AtkGroup.cInitPer = InitBattleForcePer;
                AtkGroup.cAdd     = BattleForceAdd;
                AtkGroup.cPer     = BattleForcePer;
                AtkGroup.cFinal   = BattleForce;
                AtkGroup.cRate    = ConstConfig.GetFloat(ConstConfig.ID.War_DV_BattleForce2Atk_Ratio);

                DefGroup.cInit    = InitBattleForce;
                DefGroup.cInitPer = InitBattleForcePer;
                DefGroup.cAdd     = BattleForceAdd;
                DefGroup.cPer     = BattleForcePer;
                DefGroup.cFinal   = BattleForce;
                DefGroup.cRate    = ConstConfig.GetFloat(ConstConfig.ID.War_DV_BattleForce2Defence_Ratio);


                MoveSpeedGroup.cInit    = InitSpeedAtk;
                MoveSpeedGroup.cInitPer = InitSpeedAtkPer;
                MoveSpeedGroup.cAdd     = SpeedAtkAdd;
                MoveSpeedGroup.cPer     = SpeedAtkPer;
                MoveSpeedGroup.cFinal   = SpeedAtk;
                MoveSpeedGroup.cRate    = ConstConfig.GetFloat(ConstConfig.ID.War_DV_SpeedAtk2MoveSpeed_Ratio);

                _listC = new List <PropIdGroup>();
                _listC.Add(AtkGroup);
                _listC.Add(DefGroup);
                _listC.Add(MoveSpeedGroup);
            }

            return(_listC);
        }
Example #2
0
        /** 防守损兵比
         * 防守损兵比 = 参数A*(参数B*城池模块--战中防御/(参数B*城池模块--战中防御+士兵模块--战中攻击));
         * 参数C≤防守损兵比≤参数D;
         * //参数A 默认为2.2
         * //参数B 默认为1.2
         * //参数C 默认为0.5
         * //参数D 默认为4
         * //假设防守损兵比为0.8,则意味着防守方每1个士兵可以抵消攻击方0.8个士兵
         */
        public static float WD_DefCostRate(float d_def, float a_atk)
        {
            //高方损兵比=(高/低-A)*B+C
            float r = d_def > a_atk ? d_def / a_atk : a_atk / d_def;

            if (r < 0)
            {
                if (Application.isEditor)
                {
                    Debug.LogErrorFormat("hpbug WD_DefCostRate r={0}, a_atk={1}, d_def={2}", r, a_atk, d_def);
                }
            }


            float a = ConstConfig.GetFloat(ConstConfig.ID.War_DV_DefCostRate_RatioA);
            float b = ConstConfig.GetFloat(ConstConfig.ID.War_DV_DefCostRate_RatioB);
            float c = ConstConfig.GetFloat(ConstConfig.ID.War_DV_DefCostRate_RatioC);
            float d = ConstConfig.GetFloat(ConstConfig.ID.War_DV_DefCostRate_RatioD);

            float val = (r - a) * b + c;

            if (a_atk >= d_def)
            {
                val = 1 / val;
            }

//			float val = a * (b * d_def / (b * d_def + a_atk));

//			if(val < c) val = c;
//			else if(val > d)  val = d;
            return(val);
        }
Example #3
0
        private static void LoadUrlsFromXML()
        {
            UrlTable = new Hashtable();
            if (ConfigFilePath == null)
            {
                ConfigFilePath = ConstConfig.GetConfigFilePath("RemoteConfig.xml");
            }
            if (!File.Exists(ConfigFilePath))
            {
                throw new PLMException("客户端配置文件" + ConfigFilePath + "没有找到!无法与应用服务器通信!");
            }
            StreamReader  input  = new StreamReader(ConfigFilePath);
            XmlTextReader reader = new XmlTextReader(input)
            {
                WhitespaceHandling = WhitespaceHandling.None
            };

            while (reader.Read())
            {
                if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "RemotingObject"))
                {
                    ProcessXml(reader, Server, Port);
                }
            }
            input.Close();
        }
Example #4
0
        public ActionResult Edit(string CKey, string CValue, string Remarks)
        {
            //ConstConfig model = bll.GetObjectById(s => s.CKey == CKey);

            ConstConfig model = new ConstConfig();

            model.CKey    = CKey;
            model.CValue  = System.Text.Encoding.UTF8.GetBytes(CValue);
            model.Remarks = Remarks;
            bll.UploadConfig(model);

            return(Content("修改成功!"));;
        }
        private void Init_Load()
        {
            string path = ConstConfig.GetValue(saveName);

            if (string.IsNullOrEmpty(path))
            {
                path = ConstConfig.AppPath + @"\ConcFiles";
            }
            textSelectSaveUrl.Text = savePath = importPath = path;
            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }
        }
Example #6
0
 private static string GetURL(string objType)
 {
     lock (typeof(Hashtable))
     {
         if (UrlTable == null)
         {
             RetriveConfigInfo();
             UrlTable = new Hashtable();
             if (ConfigFilePath == null)
             {
                 ConfigFilePath = ConstConfig.GetConfigFilePath("RemoteConfig.xml");
             }
             if (!File.Exists(ConfigFilePath))
             {
                 throw new PLMException("客户端配置文件" + ConfigFilePath + "没有找到!无法与应用服务器通信!");
             }
             StreamReader  input  = new StreamReader(ConfigFilePath);
             XmlTextReader reader = new XmlTextReader(input)
             {
                 WhitespaceHandling = WhitespaceHandling.None
             };
             while (reader.Read())
             {
                 if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "RemotingObject"))
                 {
                     ProcessXml(reader);
                 }
             }
             input.Close();
             string path = Path.Combine(Path.GetDirectoryName(ConstConfig.GetConfigFilePath("RemoteConfig.xml")), "RemoteConfig.config");
             try
             {
                 if (isfirst && File.Exists(path))
                 {
                     RemotingConfiguration.Configure(path, false);
                     isfirst = false;
                 }
             }
             catch (Exception exception)
             {
                 EventLog.WriteEntry("TiPLM", exception.Message);
             }
         }
         if (UrlTable[objType] != null)
         {
             return(UrlTable[objType].ToString());
         }
         return(null);
     }
 }
Example #7
0
        /** 战前兵营--初始兵力:
         * 有武将驻守
         * 初始兵力=(战前--玩家城池--速攻值+战前--玩家武将--速攻值*参数A)*参数B;
         * //参数A=武将城池额外附加最大兵力比例
         * //参数B=有武将城池初始兵力比例
         *
         *
         * 无武将驻守
         * 初始兵力=战前--玩家城池--速攻值*参数C;
         * //参数C=无武将城池初始兵力比例
         */
        public static float WF_Casern_Hp2(float configHp, float casern_InitSpeedAtk, bool hasHero, float hero_InitSpeedAtk)
        {
            if (configHp != -1)
            {
                return(configHp);
            }

            if (hasHero)
            {
                return((casern_InitSpeedAtk + hero_InitSpeedAtk * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_Hp_RatioA)) * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_Hp_RatioB) + ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_Hp_RatioD));
            }
            else
            {
                return(casern_InitSpeedAtk * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_Hp_RatioC) + ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_Hp_RatioD));
            }
        }
Example #8
0
        public void Init()
        {
            if (isInit)
            {
                return;
            }
            isInit = true;
            buildUplevel_RequireMinHp   = ConstConfig.GetFloat(ConstConfig.ID.War_BuildUplevel_RequireMinHp);
            buildUplevel_RequireMaxHp   = ConstConfig.GetFloat(ConstConfig.ID.War_BuildUplevel_RequireMaxHp);
            buildUplevel_RequireMaxTime = ConstConfig.GetFloat(ConstConfig.ID.War_BuildUplevel_RequireMaxTime);
            buildUplevel_Hp2Time        = ConstConfig.GetFloat(ConstConfig.ID.War_BuildUplevel_Hp2Time);


            skillChangeBuildTime = ConstConfig.GetFloat(ConstConfig.ID.War_SkillChangeBuildTime);

            skillSnap = Setting.SkillSnapSwitch;
        }
Example #9
0
 public void DisplyListItemThum(ListViewItem lvItem)
 {
     if (((((lvItem != null) && (this.ThumSetting != null)) && (this.ThumSetting.DisplayStyle != DisplayStyle.Detail)) && ((base.Bounds.Bottom > lvItem.Bounds.Bottom) && (lvItem.Index >= base.TopItem.Index))) && (lvItem.Tag is IBizItem))
     {
         IBizItem tag  = lvItem.Tag as IBizItem;
         string   path = UIThumbnailHelper.Instance.DownLoadThumFile(tag, this.ThumPSOption);
         string   str2 = Path.Combine(ConstConfig.GetTempfilePath(), "Thum");
         if (!Directory.Exists(str2))
         {
             Directory.CreateDirectory(str2);
         }
         string key          = "";
         Image  reducedImage = null;
         if (File.Exists(path))
         {
             key          = Path.GetFileName(path);
             reducedImage = UIThumbnailHelper.Instance.GetReducedImage(path);
             if (reducedImage != null)
             {
                 if (this.ThumImageList.Images.ContainsKey(key))
                 {
                     int num = this.ThumImageList.Images.IndexOfKey(key);
                     this.ThumImageList.Images[num] = reducedImage;
                 }
                 else
                 {
                     this.ThumImageList.Images.Add(key, reducedImage);
                 }
                 reducedImage.Dispose();
             }
         }
         else
         {
             int objectImage = ClientData.ItemImages.GetObjectImage(tag.ClassName, PLDataModel.GetStateByMasterInfo(tag.ExactState, tag.HasFile));
             if (!this.ThumImageList.Images.ContainsKey(objectImage.ToString()))
             {
                 string filename = Path.Combine(str2, objectImage.ToString() + ".jpg");
                 reducedImage = ClientData.ItemImages.GetObjectImage1(tag.ClassName, PLDataModel.GetStateByMasterInfo(tag.ExactState, tag.HasFile));
                 reducedImage.Save(filename);
                 this.ThumImageList.Images.Add(objectImage.ToString() + ".jpg", reducedImage);
                 reducedImage.Dispose();
             }
         }
         lvItem.ImageIndex = this.ThumImageList.Images.IndexOfKey(key);
     }
 }
Example #10
0
        public Dictionary <Guid, string> DownLoadThumFiles(List <IBizItem> bizItems, DEPSOption psOption)
        {
            List <Guid>   list  = new List <Guid>();
            List <string> list2 = new List <string>();

            for (int i = 0; i < bizItems.Count; i++)
            {
                list.Add(bizItems[i].IterOid);
                list2.Add(bizItems[i].ClassName);
            }
            DEItemIteration2[] thumBizitemIters = null;
            DESecureFile[]     files            = null;
            PLItem.Agent.GetThumbnailFiles(list.ToArray(), list2.ToArray(), ClientData.LogonUser.Oid, (psOption == null) ? ClientData.UserGlobalOption.CloneAsLocal() : psOption, out thumBizitemIters, out files);
            Dictionary <Guid, string> dictionary = new Dictionary <Guid, string>();

            for (int j = 0; j < list.Count; j++)
            {
                if (files[j] != null)
                {
                    bizItems[j].ThumBizitemIterOid = thumBizitemIters[j].Oid;
                    string str = ViewFileHelper.DownloadFileByDir(thumBizitemIters[j], files[j], null, psOption, true, true, "ClaRel_BROWSE");
                    if (!string.IsNullOrEmpty(str))
                    {
                        string path = Path.Combine(ConstConfig.GetTempfilePath(), "Thum");
                        if (!Directory.Exists(path))
                        {
                            Directory.CreateDirectory(path);
                        }
                        string destFileName = Path.Combine(path, files[j].FileOid.ToString() + ".jpg");
                        if (File.Exists(str))
                        {
                            File.Copy(str, destFileName, true);
                            dictionary.Add(list[j], destFileName);
                        }
                        else if (!string.IsNullOrEmpty(files[j].FullPath) && File.Exists(files[j].FullPath))
                        {
                            File.Copy(files[j].FullPath, destFileName, true);
                            dictionary.Add(list[j], destFileName);
                        }
                    }
                }
            }
            return(dictionary);
        }
Example #11
0
        public ActionResult Add(string CKey, string CValue, string Remarks)
        {
            var count = bll.GetQueryCount(s => s.CKey == CKey);

            if (count > 0)
            {
                return(Content("Key不能重复!"));
            }

            ConstConfig model = new ConstConfig();

            model.CKey    = CKey;
            model.CValue  = System.Text.Encoding.UTF8.GetBytes(CValue);
            model.Remarks = Remarks;


            bll.AddConfig(model);

            return(Content("添加成功!"));
        }
Example #12
0
 public string CopyToTemp(string securityPath)
 {
     if (PLSystemParam.SecurityDiskIsUse && ConstCommon.FUNCTION_SECURITYDISK)
     {
         string tempfilePath = ConstConfig.GetTempfilePath();
         if (!File.Exists(securityPath))
         {
             return(securityPath);
         }
         securityPath = tempfilePath.Substring(0, 1) + securityPath.Substring(1, securityPath.Length - 1);
         if (!Directory.Exists(Path.GetDirectoryName(securityPath)))
         {
             Directory.CreateDirectory(Path.GetDirectoryName(securityPath));
         }
         try {
             File.Copy(securityPath, tempfilePath.Substring(0, 1) + securityPath.Substring(1, securityPath.Length - 1), true);
         } catch {
         }
     }
     return(securityPath);
 }
Example #13
0
        /** 生成数据--势力 */
        public void GenerationLegions()
        {
            // 占用自己颜色的势力
            LegionData occupyMainLegionData = null;

            War.realPlayerCount = 0;

            // 创建势力数据LegionData
            foreach (KeyValuePair <int, StageLegionConfig> kvp in stageConfig.legionDict)
            {
                StageLegionConfig legionConfig = kvp.Value;
                LegionData        legionData;
                if (legionConfig.type == LegionType.Player)
                {
                    legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Player, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce);
                    if (enterData.vsmode == VSMode.PVP && legionData.legionId != ownLegionID)
                    {
                        legionData.aiSendArm = false;
                        legionData.aiSkill   = false;
                        legionData.aiUplevel = false;
                    }
                }
                else if (legionConfig.type == LegionType.Computer)
                {
                    legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Computer, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce);
                    if (enterData.vsmode == VSMode.PVP && !War.isMainLegion)
                    {
                        legionData.aiSendArm = false;
                        legionData.aiSkill   = false;
                        legionData.aiUplevel = false;
                    }
                }
                else
                {
                    legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Neutral, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce);
                    if (enterData.vsmode == VSMode.PVP && !War.isMainLegion)
                    {
                        legionData.aiSendArm = false;
                        legionData.aiSkill   = false;
                        legionData.aiUplevel = false;
                    }
                }



                legionData.produceLimit = legionConfig.produceLimit;
                legionData.colorId      = legionConfig.color;
                legionDict.Add(legionData.legionId, legionData);

                if (legionData.colorId == War.config.ownDefaultColor)
                {
                    occupyMainLegionData = legionData;
                }

                legionData.roleId = enterData.GetRoleId(legionData.legionId);
                if (!roleDict.ContainsKey(legionData.roleId))
                {
                    roleDict.Add(legionData.roleId, legionData);
                }

                legionData.expeditionTotalMaxHP = enterData.GetTotalMaxHP(legionData.legionId);
                legionData.expeditionTotalHP    = enterData.GetTotalHP(legionData.legionId);
                legionData.expeditionInitHP     = legionData.expeditionTotalHP;
                legionData.expeditionLeftHP     = legionData.expeditionTotalHP;


                WarEnterLegionData enterLegionData = enterData.GetEnterLegionData(legionData.legionId);
                if (enterLegionData != null)
                {
                    legionData.name                      = enterLegionData.name;
                    legionData.headAvatarId              = enterLegionData.headAvatarId;
                    legionData.levelData.intBattleForce  = enterLegionData.totalAtk;
                    legionData.levelData.intProduceSpeed = enterLegionData.totalProduceSpeed;
                    legionData.levelData.intMoveSpeed    = enterLegionData.totalMoveSpeed;
                    legionData.levelData.initHP          = enterLegionData.initHP;

                    legionData.levelData.maxBattleForce  = enterLegionData.maxAtk;
                    legionData.levelData.maxProduceSpeed = enterLegionData.maxProduceSpeed;
                    legionData.levelData.maxMoveSpeed    = enterLegionData.maxMovespeed;


                    legionData.levelData.subBattleForce  = enterLegionData.subAtk;
                    legionData.levelData.subProduceSpeed = enterLegionData.subProduceSpeed;
                    legionData.levelData.subMoveSpeed    = enterLegionData.subMoveSpeed;

                    legionData.sendArmRate = enterLegionData.sendArmRate;

                    if (enterLegionData.isRobot)
                    {
                        if (enterData.vsmode == VSMode.PVP && War.isMainLegion && legionData.colorId != 0)
                        {
                            legionData.aiSendArm = true;
                            legionData.aiSkill   = true;
                            legionData.aiUplevel = true;
                        }
                        legionData.type = LegionType.Computer;

                        if (legionData.colorId == 0)
                        {
                            legionData.type = LegionType.Neutral;
                        }
                    }
                    else
                    {
                        legionData.type      = LegionType.Player;
                        legionData.aiSendArm = false;
                        legionData.aiSkill   = false;
                        legionData.aiUplevel = false;
                    }


                    if (enterLegionData.ai > 0)
                    {
                        legionData.aiConfig = War.model.GetAIConfig(enterLegionData.ai);;
                    }
                }
                else
                {
                    NeutralExpConfig roleExpConfig = War.model.GetNeutralExpConfig(stageConfig.neutralRoleLevel);

                    legionData.levelData.intBattleForce  = roleExpConfig.props[PropId.BattleForceAdd];
                    legionData.levelData.intProduceSpeed = roleExpConfig.props[PropId.ProduceSpeedAdd];
                    legionData.levelData.intMoveSpeed    = roleExpConfig.props[PropId.MoveSpeedAdd];
                    legionData.levelData.initHP          = roleExpConfig.props[PropId.HpAdd];


                    if (legionData.colorId == 0)
                    {
                        legionData.type = LegionType.Neutral;
                    }
                    else
                    {
                        legionData.type = LegionType.Computer;
                    }
                }

                if (legionConfig.type == LegionType.Player)
                {
                    War.realPlayerCount++;
                }


                if (War.isEditor)
                {
                    legionData.aiSendArm = false;
                    legionData.aiSkill   = false;
                    legionData.produce   = false;
                    legionData.aiUplevel = false;
                }


                if (War.isTest)
                {
                    if (legionData.type == LegionType.Computer || (legionData.type == LegionType.Player && legionData.legionId != War.ownLegionID))
                    {
                        legionData.aiSendArm = true;
                        legionData.aiSkill   = true;
                        legionData.produce   = true;
                        legionData.aiUplevel = true;
                        legionData.aiConfig  = stageConfig.id >= 71 && stageConfig.id <= 80 ? War.model.GetAIConfig(102) : War.model.GetAIConfig(302);
                    }
                }

                if (War.isRecord)
                {
                    legionData.aiSendArm = false;
                    legionData.aiSkill   = false;
                    legionData.aiUplevel = false;
                }


                int id = GetPlayerUID(legionData.legionId);

                // 势力单位数据
                UnitData unitData = new UnitData();
                unitData.id       = id;
                unitData.legionId = legionData.legionId;
                unitData.unitType = UnitType.Player;
                float x = 5 * Mathf.FloorToInt((legionData.legionId + 1) / 2) * (legionData.legionId % 2 == 0 ? 1 : -1);
                unitData.position   = new Vector3(x, 0f, -11F);
                legionData.unitData = unitData;

                /** 战前势力--怒气上限 */
                legionData.legionInitProp[PropId.InitMaxMage] = WarFormula.WF_Legion_MaxMage();
                /** 战前势力--怒气 */
                legionData.legionInitProp[PropId.MagAdd] = legionData.legionInitProp[PropId.InitMag] = enterData.vsmode != VSMode.PVE_Expedition ? WarFormula.WF_Legion_Mage() : enterData.GetMag(legionData.legionId);
                /** 战前势力--怒气 */
                legionData.legionInitProp[PropId.InitMageSpeed] = ConstConfig.GetFloat(ConstConfig.ID.War_DV_Mag_Recovery_Ratio);



                //TODO Test
                //legionData.aiSendArm = true;
                //legionData.aiSkill = true;
                //legionData.aiConfig = War.model.GetAIConfig(302);
            }

            // 获取自己势力数据
            ownLegion = legionDict[ownLegionID];


            // 交换势力颜色
            if (occupyMainLegionData != null && occupyMainLegionData != ownLegion)
            {
                int tempColorId = ownLegion.colorId;
                ownLegion.colorId            = occupyMainLegionData.colorId;
                occupyMainLegionData.colorId = tempColorId;
            }
            else
            {
                ownLegion.colorId = War.config.ownDefaultColor;
            }


            // 创建势力联盟数据LegionGroupData
            foreach (StageLegionGroupConfig groupConfig in stageConfig.legionGroups)
            {
                LegionGroupData groupData = new LegionGroupData(groupConfig.id);
                legionGroupDict.Add(groupData.id, groupData);

                foreach (StageLegionConfig legionConfig in groupConfig.list)
                {
                    groupData.AddLegion(legionDict[legionConfig.legionId]);
                }
            }


            List <int> colorIdList = new List <int>();

            foreach (KeyValuePair <int, LegionData> legionKVP in War.sceneData.legionDict)
            {
                colorIdList.Add(legionKVP.Value.colorId);
            }

            colorIds = colorIdList.ToArray();
        }
Example #14
0
        /// <summary>
        /// 进入战斗
        /// </summary>
        /// <param name="enterData">进入战斗数据</param>


        public static void Start(WarEnterData enterData)
        {
            Debug.Log("进入战斗数据 enterData=" + enterData);

            if (War.isTest)
            {
                War.Clear();
            }

            War.enterData = enterData;
            War.isRecord  = enterData.isRecord;
            // 初始化
            War.Init();

            // 战斗流程状态--生成数据
            War.processState = WarProcessState.GenerateData;
            // 对战模式
            War.vsmode = enterData.vsmode;
            // 是否自动关闭加载面板
            War.isAutoCloseLoad = !War.requireSynch;
            // 自己势力ID
            War.ownLegionID = enterData.ownLegionId;

            Debug.LogFormat("type====={0}", enterData.vsmode);
            // 战斗已过时间
            War.time = 0;
            // 战斗环境配置--PC机是否开启PC操作模式
            War.config.PCOperater = ConstConfig.GetInt(ConstConfig.ID.War_PCOperater) == 1;

            // 生成战场数据
            War.sceneData = new SceneDataForEnterData();
            (War.sceneData as SceneDataForEnterData).Generation(enterData);

            // 生成预加载资源
            WarRes.GenerationPreloadList();

            // 战斗流程状态--加载中
            War.processState = WarProcessState.Loading;

            if (War.isEditor == false)
            {
                if (!War.isTest)
                {
                    LoadType loadType = LoadType.None;
                    switch (War.vsmode)
                    {
                    case VSMode.Dungeon:
                    case VSMode.Train:
                        loadType = LoadType.Scene_Dungeon;
                        break;

                    case VSMode.PVP:
                        loadType = LoadType.Scene_PVP;
                        break;

                    case VSMode.PVE:
                    case VSMode.PVE_Expedition:
                    default:
                        loadType = LoadType.Scene_Normal;
                        break;
                    }

                    Coo.menuManager.OpenMenuBack(MenuType.WarScene, enterData.backMenuId, null, loadType);
                }
            }

            War.signal.GenerateDataComplete();
            Debug.Log("	战斗数据生成完毕 War.sGenerateDataComplete.Dispatch();");

            LuaCallMethod("Start");
        }
Example #15
0
 /** 战前英雄--防斩杀值--玩家:
  * 防斩杀值=武将模块--防斩杀值*参数;//参数默认为1
  */
 public static float WF_Hero_DefKillHero_Player(float defKillHero)
 {
     return(defKillHero * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Hero_Player_DefKillHero_Ratio));
 }
Example #16
0
 public static void FillItemImage(ThumbnailListView lvw)
 {
     try {
         try {
             if ((!lvw.Visible || (lvw.TopItem == null)) || (lvw.TopItem.Index == -1))
             {
                 return;
             }
         } catch {
             return;
         }
         Cursor.Current = Cursors.WaitCursor;
         if ((lvw.SmallImageList == null) || (lvw.SmallImageList != lvw.ThumImageList))
         {
             lvw.SmallImageList = lvw.ThumImageList;
         }
         int             generation = GC.GetGeneration(lvw.ThumImageList);
         List <IBizItem> bizItems   = new List <IBizItem>();
         ArrayList       masterOids = new ArrayList();
         ArrayList       revNums    = new ArrayList();
         for (int i = lvw.TopItem.Index; i < lvw.Items.Count; i++)
         {
             if ((lvw.Items[i] != null) && (lvw.Bounds.Bottom > lvw.Items[i].Bounds.Top))
             {
                 ListViewItem item = lvw.Items[i];
                 IBizItem     tag  = null;
                 if (item.Tag is IBizItem)
                 {
                     tag = item.Tag as IBizItem;
                 }
                 else if (item.Tag is DataRowView)
                 {
                     try {
                         masterOids.Add(new Guid((byte[])((DataRowView)item.Tag)[0]));
                         revNums.Add(0);
                     } catch {
                     }
                 }
                 if (tag != null)
                 {
                     bizItems.Add(tag);
                 }
             }
         }
         if (masterOids.Count > 0)
         {
             ArrayList list4 = PLItem.Agent.GetBizItemsByMasters(masterOids, revNums, lvw.ThumPSOption.CurView, ClientData.LogonUser.Oid, BizItemMode.BizItem);
             if (list4.Count > 0)
             {
                 bizItems.AddRange((IBizItem[])list4.ToArray(typeof(IBizItem)));
             }
         }
         Dictionary <Guid, string> dictionary = new Dictionary <Guid, string>();
         if (bizItems.Count > 0)
         {
             try {
                 dictionary = UIThumbnailHelper.Instance.DownLoadThumFiles(bizItems, lvw.ThumPSOption);
             } catch (Exception exception) {
                 PLMEventLog.WriteExceptionLog(exception);
             }
         }
         string key = 0.ToString() + ".jpg";
         if (!lvw.ThumImageList.Images.ContainsKey(key))
         {
             string path = Path.Combine(ConstConfig.GetTempfilePath(), "Thum");
             if (!Directory.Exists(path))
             {
                 Directory.CreateDirectory(path);
             }
             string filename = Path.Combine(path, key);
             Image  image    = ClientData.ItemImages.imageList.Images[0];
             image.Save(filename);
             lock (typeof(ImageList)) {
                 lvw.ThumImageList.Images.Add(key, image);
             }
             image.Dispose();
         }
         for (int j = lvw.TopItem.Index; j < lvw.Items.Count; j++)
         {
             if ((lvw.Items[j] != null) && (lvw.Bounds.Bottom > lvw.Items[j].Bounds.Top))
             {
                 ListViewItem item3 = lvw.Items[j];
                 IBizItem     item4 = null;
                 if (item3.Tag is IBizItem)
                 {
                     item4 = item3.Tag as IBizItem;
                 }
                 else if (item3.Tag is DataRowView)
                 {
                     try {
                         Guid masterOid = new Guid((byte[])((DataRowView)item3.Tag)[0]);
                         item4 = FindBizItems(bizItems, masterOid);
                     } catch {
                     }
                 }
                 if (item4 != null)
                 {
                     string str4         = "";
                     string fileName     = "";
                     Image  reducedImage = null;
                     if (dictionary.ContainsKey(item4.IterOid))
                     {
                         str4 = dictionary[item4.IterOid];
                         if (File.Exists(str4))
                         {
                             fileName     = Path.GetFileName(str4);
                             reducedImage = UIThumbnailHelper.Instance.GetReducedImage(str4);
                             if (reducedImage != null)
                             {
                                 if (lvw.ThumImageList.Images.ContainsKey(fileName))
                                 {
                                     int num5 = lvw.ThumImageList.Images.IndexOfKey(fileName);
                                     lvw.ThumImageList.Images[num5] = reducedImage;
                                 }
                                 else
                                 {
                                     lock (typeof(ImageList)) {
                                         lvw.ThumImageList.Images.Add(fileName, reducedImage);
                                     }
                                 }
                                 reducedImage.Dispose();
                             }
                         }
                     }
                     else
                     {
                         fileName = ClientData.ItemImages.GetObjectImage(item4.ClassName, PLDataModel.GetStateByMasterInfo(item4.ExactState, item4.HasFile)).ToString() + ".jpg";
                         if (!lvw.ThumImageList.Images.ContainsKey(fileName))
                         {
                             string str6 = Path.Combine(ConstConfig.GetTempfilePath(), "Thum");
                             if (!Directory.Exists(str6))
                             {
                                 Directory.CreateDirectory(str6);
                             }
                             string str7 = Path.Combine(str6, fileName);
                             reducedImage = ClientData.ItemImages.GetObjectImage1(item4.ClassName, PLDataModel.GetStateByMasterInfo(item4.ExactState, item4.HasFile));
                             reducedImage.Save(str7);
                             lock (typeof(ImageList)) {
                                 lvw.ThumImageList.Images.Add(fileName, reducedImage);
                             }
                             reducedImage.Dispose();
                         }
                     }
                     item3.ImageIndex = lvw.ThumImageList.Images.IndexOfKey(fileName);
                 }
             }
         }
         lvw.Refresh();
         GC.GetGeneration(generation);
     } finally {
         Cursor.Current = Cursors.Default;
     }
 }
Example #17
0
 /** 战前势力--怒气
  *  初始怒气=(默认最小值)*参数//参数默认为0.01
  */
 public static float WF_Legion_Mage()
 {
     return(ConstConfig.GetFloat(ConstConfig.ID.War_DV_Team_Mage_Default) * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Team_Mage_Ratio));
 }
Example #18
0
 /** 战前势力--斩将率
  * 斩杀率=士兵模块--斩杀等级*参数;//参数默认为0.01
  */
 public static float WF_Legion_KillHero(float solider_KillHero)
 {
     return(solider_KillHero * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Team_KillHero_Ratio));
 }
Example #19
0
        /** 战前兵营--防御--玩家
         *  防御=(主公模块--战力+武将模块--上阵武将总战力)*战力转换防御参数
         */
        public static float WF_Casern_Def(float legionInitBattleForce, float totalHero_Def)
        {
//			return totalHero_Def + legionInitBattleForce * ConstConfig.GetFloat(ConstConfig.ID.War_DV_BattleForce2Defence_Ratio);
            return(legionInitBattleForce * ConstConfig.GetFloat(ConstConfig.ID.War_DV_BattleForce2Defence_Ratio));
        }
Example #20
0
        /** 斩杀率
         * 斩杀概率=1-(3*B势力防斩杀值/(3*B势力防斩杀值+A势力斩杀值))
         */
        public static float WD_KillHeroRate(float d_defKillHero, float a_killHero)
        {
            float a = ConstConfig.GetFloat(ConstConfig.ID.War_DV_KillHeroRate_Ratio);

            return(1 - (a * d_defKillHero / (a * d_defKillHero + a_killHero)));
        }
Example #21
0
 /** 战前兵营--兵力上限--玩家:
  *  兵力上限=(城池模块--默认兵力上限+武将模块--兵力上限之和)*参数A;
  */
 public static float WF_Casern_MaxHP(float totalHero_MaxHP)
 {
     return((ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_MaxHp_DefaultMin) + totalHero_MaxHP) * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_MaxHp_Ratio));
 }
Example #22
0
 /** 战前兵营--速攻:
  *  速攻值=(默认最小值+武将模块--参战武将总速攻值)*参数;//默认参数为1;
  */
 public static float WF_Casern_SpeedAtk(float legionInitSpeedAtk, float totalHero_InitSpeedAtk)
 {
     return((legionInitSpeedAtk + legionInitSpeedAtk) * ConstConfig.GetFloat(ConstConfig.ID.War_DV_Casern_SpeedAtk_Ratio));
 }
Example #23
0
        /** 生成数据--兵营 */
        public void GenerationBuilds()
        {
            Dictionary <int, float[]> legionHeroTotals = new Dictionary <int, float[]>();
            Dictionary <int, int>     legionHeroCounts = new Dictionary <int, int>();

            foreach (KeyValuePair <int, LegionData> legionKVP in legionDict)
            {
                LegionData legionData = legionKVP.Value;
                float[]    heroTotals = new float[PropId.MAX];
                int        heroCount  = 0;
                foreach (KeyValuePair <int, float[]> heroKVP in  legionData.heroInitProp)
                {
                    heroCount++;
                    heroTotals.PropAdd(heroKVP.Value);
                }

                legionHeroTotals.Add(legionData.legionId, heroTotals);
                legionHeroCounts.Add(legionData.legionId, heroCount);
            }



            foreach (KeyValuePair <int, StageLegionConfig> kvp in stageConfig.legionDict)
            {
                StageLegionConfig legionConfig = kvp.Value;
                LegionData        legionData   = legionDict[legionConfig.legionId];


                float[] soliderInitProp_Final = new float[PropId.MAX];
                soliderInitProp_Final.PropAdd(legionData.soliderInitProp);
                soliderInitProp_Final.Calculate();

                legionHeroTotals[legionData.legionId].Calculate();


                //------------------ 生成势力 士兵属性(士兵模块提供攻击+参战武将战前攻击之和) -----------------------//

                //	Debug.Log(legionData.legionId +  " <color=green>F legionData.soliderData.Props</color>" + legionData.soliderInitProp.ToStrProp());
//				legionData.soliderInitProp[PropId.InitAtk] = WarFormula.WF_Solider_Atk(legionData.levelData.intBattleForce, legionHeroTotals[legionData.legionId][PropId.Atk]);
                legionData.soliderInitProp[PropId.InitBattleForce] = WarFormula.WF_Solider_BattleForce(legionData.levelData.intBattleForce);
                legionData.soliderInitProp[PropId.InitMoveSpeed]   = WarFormula.WF_Solider_MoveSpeed(legionData.levelData.intMoveSpeed, legionHeroTotals[legionData.legionId][PropId.MoveSpeed]);

                //	Debug.Log(legionData.legionId +  " <color=green>B legionData.soliderData.Props=</color>" + legionData.soliderInitProp.ToStrProp());

                //------------------ 生成势力 兵营属性(产兵速度, 防御, 兵力上限) -----------------------//

                float[] props = new float[PropId.MAX];

                // 战前兵营--产兵速度
                props[PropId.InitProduceSpeed] = WarFormula.WF_Casern_ProduceSpeed(legionData.levelData.intProduceSpeed, legionHeroTotals[legionData.legionId][PropId.ProduceSpeed]);
                // 战前兵营--防御
//				props[PropId.InitDef] = WarFormula.WF_Casern_Def(legionData.levelData.intBattleForce, legionHeroTotals[legionData.legionId][PropId.Def]);
                props[PropId.InitBattleForce] = WarFormula.WF_Casern_BattleForce(legionData.levelData.intBattleForce);

                // 战前兵营--兵力上限
                props[PropId.InitMaxHp] = WarFormula.WF_Casern_MaxHP(legionHeroTotals[legionData.legionId][PropId.MaxHp]);
//				// 战前兵营--速攻
//				props[PropId.InitSpeedAtk] = WarFormula.WF_Casern_SpeedAtk(legionData.levelData.intBattleForce, legionHeroTotals[legionData.legionId][PropId.SpeedAtk]);

                //Debug.Log ("legionData.legionId=" + legionData.legionId + "  " +  props.ToStrProp());

                // 设置势力--兵营战前属性
                legionData.buildInitProp = props;
            }


            // 兵营初始兵力(血量Hp)
            foreach (KeyValuePair <int, StagePositionConfig> kvp in stageConfig.buildDict)
            {
                StagePositionConfig buildConfig = kvp.Value;
                LegionData          legionData  = legionDict[buildConfig.legionId];



                float[] full = new float[PropId.MAX];
                full.PropAdd(legionData.buildInitProp);


                float hero_InitSpeedAtk = 0f;
//				HeroData heroData;
//				if(herosByBuild.TryGetValue(buildConfig.index, out heroData))
//				{
//					hero_InitSpeedAtk = legionData.heroInitProp[heroData.heroId][PropId.InitSpeedAtk];
//				}


                // 初始兵力--计算
//				Debug.Log(string.Format("<color=yellow>buildConfig.index={0}, buildConfig.hp={1}</color>, full[PropId.MaxHp]={2}, hasHero={3} heroMaxHp={4}", buildConfig.index, buildConfig.hp, full[PropId.MaxHp],herosByBuild.ContainsKey(buildConfig.index), heroMaxHp));
//				float hp = WarFormula.WF_Casern_Hp(buildConfig.hp, legionData.buildInitProp[PropId.InitMaxHp], herosByBuild.ContainsKey(buildConfig.index), heroMaxHp);
                float hp = WarFormula.WF_Casern_Hp(buildConfig.hp, legionData.levelData.initHP);

                float[] firstProp = new float[PropId.MAX];
                firstProp[PropId.HpAdd] = hp;


                // 兵营初始属性[Hp]
                float[] initProp = new float[PropId.MAX];
                initProp[PropId.InitHp] = hp;

                buildFirstProp.Add(buildConfig.index, firstProp);
                buildInitProp.Add(buildConfig.index, initProp);
            }

            int casernCount = 0;
            int turretCount = 0;
            int spotCount   = 0;

            // 生成兵营UnitData
            foreach (KeyValuePair <int, StagePositionConfig> kvp in stageConfig.buildDict)
            {
                StagePositionConfig positionConfig = kvp.Value;

                UnitData unitData = new UnitData();
                unitData.id                    = positionConfig.index;
                unitData.legionId              = positionConfig.legionId;
                unitData.unitType              = UnitType.Build;
                unitData.buildType             = positionConfig.buildType;
                unitData.level                 = positionConfig.level;
                unitData.position              = positionConfig.position;
                unitData.buildConfig           = positionConfig.buildConfig;
                unitData.we_BuildConfigData    = new WE_BuildConfigData();
                unitData.we_BuildConfigData.hp = (int)positionConfig.hp;
                unitData.we_BuildConfigData.settledPriority = positionConfig.settledPriority;
                unitData.we_BuildConfigData.buildConfig     = unitData.buildConfig;


                buildDict.Add(positionConfig.index, unitData);

                switch (unitData.buildType)
                {
                case BuildType.Casern:
                    casernCount++;
                    break;

                case BuildType.Turret:
                    turretCount++;
                    break;

                case BuildType.Spot:
                    spotCount++;
                    break;
                }
            }

            legionTotalMaxHP = casernCount * ConstConfig.GetFloat(ConstConfig.ID.War_StageLegionTotalMaxHP_Ratio_Casern)
                               + turretCount * ConstConfig.GetFloat(ConstConfig.ID.War_StageLegionTotalMaxHP_Ratio_Turret)
                               + spotCount * ConstConfig.GetFloat(ConstConfig.ID.War_StageLegionTotalMaxHP_Ratio_Spot);


            foreach (KeyValuePair <int, LegionData> kvp in legionDict)
            {
                kvp.Value.totalMaxHP = legionTotalMaxHP;
            }
        }
Example #24
0
        /** 战前士兵--攻击:
         * 攻击=(主公模块--战力+武将模块--上阵武将总战力)*战力转换攻击参数
         */
        public static float WF_Solider_Atk(float legionInitBattleForce, float totalHero_atk)
        {
//			return totalHero_atk + legionInitBattleForce * ConstConfig.GetFloat(ConstConfig.ID.War_DV_BattleForce2Atk_Ratio);
            return(legionInitBattleForce * ConstConfig.GetFloat(ConstConfig.ID.War_DV_BattleForce2Atk_Ratio));
        }