Exemple #1
0
    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);
            }
        }
    }
Exemple #2
0
    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;
    }