public ItemDropManager(E_GameModeType gameModeType, int defaultTier) { this.gameModeType = gameModeType; this.defaultTier = defaultTier; { groupedTables = new Dictionary<E_CousumableGroupType, HashSet<ConsumableEntity>>(); var table = TableLoader.GetTable<ConsumableEntity>(); foreach (var entity in table.Values) { if (!groupedTables.ContainsKey(entity.ConsumableGroupType)) { groupedTables.Add(entity.ConsumableGroupType, new HashSet<ConsumableEntity>()); } groupedTables[entity.ConsumableGroupType].Add(entity); } } { var table = TableLoader.GetTable<ConsumableGroupDrop>(); var groupTable = table.GetMany(gameModeType); groupDart = new Dart<E_CousumableGroupType>(); foreach (var entity in groupTable) { groupDart.Add(entity.Value.DropChance, entity.Value.CousumableGroupType); } } }
public ItemCommand DropItem(E_CousumableGroupType groupType, int tier) { var groupTable = groupedTables[groupType]; List<ConsumableEntity> tierItem = new List<ConsumableEntity>(); foreach (var entity in groupTable) { if (entity.ConsumableTier == 0 || tier == 0 || entity.ConsumableTier == tier) { tierItem.Add(entity); } } if (tierItem.Count == 1) { return new ItemCommand(tierItem[0]); } Dart<ConsumableEntity> ret = new Dart<ConsumableEntity>(); if (tierItem.Count > 0) { foreach (var entity in tierItem) { bool droppable = (gameModeType == E_GameModeType.Tutorial && entity.bDropTutorial) || (gameModeType == E_GameModeType.Adventure && entity.bDropAdventure) || (gameModeType == E_GameModeType.Raid && entity.bDropRaid) || (gameModeType == E_GameModeType.Arena && entity.DropArena); if (droppable) { ret.Add(1, entity); } } return new ItemCommand(ret.Get()); } return null; }