コード例 #1
0
        private static void DropEquips(int equipLevel, List <int> items)
        {
            int[] qualRate   = { 70, 20, 5, 4, 1 };
            int   resultQual = 0;
            int   sum        = 0;
            int   roll       = MathTool.GetRandom(100);

            for (int i = 0; i < 5; i++)
            {
                sum += qualRate[i];
                if (roll < sum)
                {
                    resultQual = i;
                    break;
                }
            }

            int resultItemId = 0;

            while (resultItemId == 0)
            {
                resultItemId = EquipBook.GetRandEquipByLevelQuality(equipLevel, resultQual);
                resultQual--;//如果该品质没有道具,就降低一档品质继续查找
            }

            items.Add(resultItemId);
        }
コード例 #2
0
 private void RefreshEquip()
 {
     equipDataList = EquipBook.GetEquipsList(Array.ConvertAll(UserProfile.InfoEquip.Equipon,equip=>equip.BaseId));
     vEquip = EquipBook.GetVirtualEquips(equipDataList);
     var jobConfig = ConfigData.GetJobConfig(UserProfile.InfoBasic.Job);
     jobInfo = new JobAddon();
     jobInfo.Lp += jobConfig.EnergyRate[0];
     jobInfo.Pp += jobConfig.EnergyRate[1];
     jobInfo.Mp += jobConfig.EnergyRate[2];
 }
コード例 #3
0
        public DbMergeData[] GetAllMergeData()
        {
            int time = TimeTool.DateTimeToUnixTime(DateTime.Now);

            if (MergeMethods == null || UserProfile.InfoRecord.GetRecordById((int)MemPlayerRecordTypes.LastMergeTime) < time - GameConstants.MergeWeaponDura)
            {
                int[]      ids    = EquipBook.GetCanMergeId(UserProfile.InfoBasic.Level);
                List <int> newids = new List <int>(ids);
                ListTool.RandomShuffle(newids);
                MergeMethods = new List <DbMergeData>();
                for (int i = 0; i < 8; i++)
                {
                    MergeMethods.Add(CreateMergeMethod(newids[i]));
                }
                UserProfile.InfoRecord.SetRecordById((int)MemPlayerRecordTypes.LastMergeTime, TimeManager.GetTimeOnNextInterval(UserProfile.InfoRecord.GetRecordById((int)MemPlayerRecordTypes.LastMergeTime), time, GameConstants.MergeWeaponDura));
            }

            return(MergeMethods.ToArray());
        }
コード例 #4
0
        private void CalculateEquipAndSkill(int[] equipids, int[] energyData)
        {
            var equipList = EquipBook.GetEquipsList(equipids);

            foreach (var equip in equipList)
            {
                EquipConfig equipConfig = ConfigData.GetEquipConfig(equip.TemplateId);
                for (int i = 0; i < 3; i++)
                {
                    energyData[i] += equipConfig.EnergyRate[i];
                }

                if (equipConfig.HeroSkillId > 0)
                {
                    HeroSkillList.Add(equipConfig.HeroSkillId); //添加装备附带的技能
                }
            }

            var addon = EquipBook.GetVirtualEquips(equipList);

            State.UpdateAttr(addon);
        }
コード例 #5
0
        private void selectPanel_DrawCell(Graphics g, int info, int xOff, int yOff)
        {
            EquipConfig equipConfig = ConfigData.GetEquipConfig(info);

            g.DrawImage(EquipBook.GetEquipImage(info), 5 + xOff, 5 + yOff, 40, 40);
            Font       font = new Font("微软雅黑", 11.25F * 1.33f, FontStyle.Bold, GraphicsUnit.Pixel);
            SolidBrush sb   = new SolidBrush(Color.FromName(HSTypes.I2QualityColor(equipConfig.Quality)));

            g.DrawString(equipConfig.Name, font, sb, 50 + xOff, 5 + yOff);
            sb.Dispose();
            font.Dispose();

            font = new Font("宋体", 10F * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);
            g.DrawString("Lv" + equipConfig.Level, font, Brushes.DimGray, 50 + xOff + 10, 5 + yOff + 24);
            font.Dispose();

            if (UserProfile.InfoEquip.EquipComposeAvail.Contains(info))
            {
                var img = PicLoader.Read("System", "Learn.PNG");
                g.DrawImage(img, xOff + 10, 3 + yOff, img.Width, img.Height);
                img.Dispose();
            }
        }
コード例 #6
0
        private void virtualRegion_RegionClicked(int id, int x, int y, MouseButtons button)
        {
            tooltip.Hide(this);

            if (button == MouseButtons.Left)
            {
                if (id < 10)//点击装备
                {
                    if (selectTar != -1)//穿上装备
                    {
                        EquipConfig equipConfig = ConfigData.GetEquipConfig(UserProfile.InfoEquip.Equipoff[selectTar].BaseId);
                        if (!EquipBook.CanEquip(equipConfig.Id))
                        {
                            AddFlowCenter("等级不足", "Red");
                        }
                        else
                        {
                            if (equipConfig.Position == id)
                            {
                                var oldItem = UserProfile.InfoEquip.Equipon[id - 1];
                                UserProfile.InfoEquip.Equipon[id - 1] = UserProfile.InfoEquip.Equipoff[selectTar];
                                vRegion.SetRegionKey(id, UserProfile.InfoEquip.Equipon[id - 1].BaseId);
                                UserProfile.InfoEquip.Equipoff[selectTar] = oldItem;
                                vRegion.SetRegionKey(selectTar + 20, oldItem.BaseId);
                                RefreshEquip();
                                selectTar = -1;
                                myCursor.ChangeCursor("default");
                            }
                        }
                    }
                    else//脱下装备
                    {
                        int i = UserProfile.InfoEquip.GetBlankEquipPos();
                        if (i == -1)//没有空格了
                            return;
                        UserProfile.InfoEquip.Equipoff[i] = UserProfile.InfoEquip.Equipon[id - 1];
                        vRegion.SetRegionKey(i + 20, UserProfile.InfoEquip.Equipoff[i].BaseId);
                        UserProfile.InfoEquip.Equipon[id - 1] = new DbEquip();
                        vRegion.SetRegionKey(id, 0);
                        RefreshEquip();
                    }
                }
                else if (id >= 20)
                {
                    var tar = id - 20;
                    if (selectTar == -1)
                    {
                        if (UserProfile.InfoEquip.Equipoff[tar].BaseId != 0)
                        {
                            var icon = ConfigData.GetEquipConfig(UserProfile.InfoEquip.Equipoff[tar].BaseId).Url;
                            myCursor.ChangeCursor("Equip", string.Format("{0}.JPG", icon), 40, 40);
                            selectTar = tar;
                            tooltip.Hide(this);
                        }
                    }
                    else
                    {
                        myCursor.ChangeCursor("default");
                        if (UserProfile.InfoEquip.Equipoff[tar].BaseId == 0)//移动
                        {
                            UserProfile.InfoEquip.Equipoff[tar] = UserProfile.InfoEquip.Equipoff[selectTar];
                            UserProfile.InfoEquip.Equipoff[selectTar] = new DbEquip();

                            vRegion.SetRegionKey(tar + 20, UserProfile.InfoEquip.Equipoff[tar].BaseId);
                            vRegion.SetRegionKey(selectTar + 20, 0);
                        }
                        else//交换
                        {
                            var oldItem = UserProfile.InfoEquip.Equipoff[tar];
                            UserProfile.InfoEquip.Equipoff[tar] = UserProfile.InfoEquip.Equipoff[selectTar];
                            UserProfile.InfoEquip.Equipoff[selectTar] = oldItem;

                            vRegion.SetRegionKey(tar + 20, UserProfile.InfoEquip.Equipoff[tar].BaseId);
                            vRegion.SetRegionKey(selectTar + 20, UserProfile.InfoEquip.Equipoff[selectTar].BaseId);
                        }
                        selectTar = -1;
                    }
                }
                Invalidate();
            }
            else
            {
                if (id >= 20)
                {
                    var tar = id - 20;
                    tooltip.Hide(this);

                    popMenuEquip.Clear();
                    #region 构建菜单
                    if (UserProfile.InfoEquip.Equipoff[tar].BaseId != 0)
                    {
                        popMenuEquip.AddItem("decompose", "分解", "Red");
                    }
                    popMenuEquip.AddItem("exit", "退出");
                    #endregion
                    popMenuEquip.AutoResize();
                    popMenuEquip.EquipIndex = tar;
                    var pos = vRegion.GetRegionPosition(tar + 20);
                    popContainer.Show(this, pos.X, pos.Y);
                }
            }
        }