Пример #1
0
        public void GetDropDict(DTDrop dropData, CacheDictionary <int, int> dropDict)
        {
            for (int i = 0; i < dropData.RepeatCount; i++)
            {
                int randomValue = random.Next(0, GameConsts.DropItemTotalWeight);
                foreach (DropItem di in dropData.DropList)
                {
                    randomValue -= di.ItemWeight;
                    if (randomValue < 0)
                    {
                        int itemId, itemCount;
                        if (di.ItemId < 0)
                        {
                            switch ((RandomDropSetType)di.ItemId)
                            {
                            case RandomDropSetType.RandomWhiteGear:
                                itemId = GetOneSpecifiedQualityGear(GearQuality.White);
                                break;

                            case RandomDropSetType.RandomGreenGear:
                                itemId = GetOneSpecifiedQualityGear(GearQuality.Green);
                                break;

                            case RandomDropSetType.RandomBlueGear:
                                itemId = GetOneSpecifiedQualityGear(GearQuality.Blue);
                                break;

                            case RandomDropSetType.RandomPurpleGear:
                                itemId = GetOneSpecifiedQualityGear(GearQuality.Purple);
                                break;

                            case RandomDropSetType.RandomOrangeGear:
                                itemId = GetOneSpecifiedQualityGear(GearQuality.Orange);
                                break;

                            default:
                                continue;
                            }
                            itemCount = di.ItemCount;
                        }
                        else
                        {
                            itemId    = di.ItemId;
                            itemCount = di.ItemCount;
                        }
                        if (dropDict.ContainsKey(itemId))
                        {
                            dropDict[itemId] += itemCount;
                        }
                        else
                        {
                            dropDict[itemId] = itemCount;
                        }
                        break;
                    }
                }
            }
        }
Пример #2
0
        public CacheDictionary <int, int> OpenInInstanceChest(int index)
        {
            CacheDictionary <int, int> dropDict = new CacheDictionary <int, int>();

            if (m_InstanceDrop.ChestList.Count <= index)
            {
                return(dropDict);
            }
            DTDrop drop = CacheSet.DropTable.GetData(m_InstanceDrop.ChestList[index]);

            m_RandomDrop.GetDropDict(drop, dropDict);
            m_InstanceDrop.ChestList.RemoveAt(index);
            return(dropDict);
        }
Пример #3
0
        public void RefreshCosmosCrackInstance()
        {
            m_CosmosCrack.ChosenInstance.Clear();
            var instances = GameUtils.RandomChoose(CacheSet.InstanceCosmosCrackTable.GetAllData(), InstanceCount);

            foreach (var instance in instances)
            {
                CosmosCrackInstance cci = new CosmosCrackInstance();
                cci.RewardLevel = random.Next(MinRewardLevel, MaxRewardLevel + 1);
                DTDrop                     dropData = CacheSet.DropTable.GetData(cci.RewardLevel + 1000);
                RandomDropLogic            rd       = RandomDropLogic.GetInstance();
                CacheDictionary <int, int> dropDict = new CacheDictionary <int, int>();
                rd.GetDropDict(dropData, dropDict);
                cci.RewardItem = dropDict;
                m_CosmosCrack.ChosenInstance[instance.Id] = cci;
            }
        }
Пример #4
0
        public override bool TakeAction()
        {
            PlayerFoundryLogic pf = new PlayerFoundryLogic();

            pf.SetUser(m_UserId);

            int[]                      drops    = GameConsts.Foundry.FoundryRewardDropPackageId[m_RequestPacket.Level];
            RandomDropLogic            random   = RandomDropLogic.GetInstance();
            CacheDictionary <int, int> dropDict = new CacheDictionary <int, int>();

            foreach (int dropId in drops)
            {
                DTDrop dataRow = CacheSet.DropTable.GetData(dropId);
                random.GetDropDict(dataRow, dropDict);
            }
            PlayerPackageLogic pp = new PlayerPackageLogic();

            pp.SetUser(m_UserId);
            if (!pp.CheckPackageSlot(dropDict))
            {
                ErrorCode = (int)ErrorType.PackageSlotFull;
                ErrorInfo = "package is full";
                return(false);
            }
            if (!pf.GetReward(m_RequestPacket.Level))
            {
                ErrorCode = (int)ErrorType.RequireNotMet;
                ErrorInfo = "You can not get this reward";
                return(false);
            }
            PBReceivedItems receivedItems;

            pp.GetItems(dropDict, ReceiveItemMethodType.GearFoundry, out receivedItems);
            m_ResponsePacket.ReceivedItems = receivedItems;
            m_ResponsePacket.RewardFlags.AddRange(pf.MyFoundry.CanReceiveRewards);
            return(true);
        }
Пример #5
0
        public CacheDictionary <int, int> GenerateDropList(int instanceId, bool isCleanOut, out List <PBDropInfo> dropInfoList)
        {
            DTInstance instanceData             = CacheSet.InstanceTable.GetData(instanceId);
            CacheDictionary <int, int> dropDict = new CacheDictionary <int, int>();
            int totalCount = 0;

            dropInfoList = new List <PBDropInfo>();
            var dropIds = isCleanOut ? instanceData.CleanOutDropIds : instanceData.DropIds;

            foreach (DropGroup dropGroup in dropIds)
            {
                Random random      = new Random();
                int    randomValue = random.Next(1, 1000);
                int    id          = 0;
                foreach (var dropInfo in dropGroup.Drops)
                {
                    if (randomValue - dropInfo.Value <= 0)
                    {
                        id = dropInfo.Key;
                        break;
                    }
                }
                if (id == 0)
                {
                    continue;
                }
                DTDrop drop = CacheSet.DropTable.GetData(id);
                m_RandomDrop.GetDropDict(drop, dropDict);
                int tmpTotalCount = 0;
                foreach (var item in dropDict)
                {
                    tmpTotalCount += item.Value;
                }
                totalCount = tmpTotalCount;
            }
            return(dropDict);
        }