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; } } } }
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); }
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; } }
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); }
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); }