Esempio n. 1
0
 public StageSimulatorSheets(
     MaterialItemSheet materialItemSheet,
     SkillSheet skillSheet,
     SkillBuffSheet skillBuffSheet,
     BuffSheet buffSheet,
     CharacterSheet characterSheet,
     CharacterLevelSheet characterLevelSheet,
     EquipmentItemSetEffectSheet equipmentItemSetEffectSheet,
     StageSheet stageSheet,
     StageWaveSheet stageWaveSheet,
     EnemySkillSheet enemySkillSheet
     ) : base(
         materialItemSheet,
         skillSheet,
         skillBuffSheet,
         buffSheet,
         characterSheet,
         characterLevelSheet,
         equipmentItemSetEffectSheet
         )
 {
     StageSheet      = stageSheet;
     StageWaveSheet  = stageWaveSheet;
     EnemySkillSheet = enemySkillSheet;
 }
Esempio n. 2
0
        /// <summary>
        /// Do not use anymore since v100025.
        /// </summary>
        public StageSimulator(
            IRandom random,
            AvatarState avatarState,
            List <Guid> foods,
            int worldId,
            int stageId,
            StageSimulatorSheets stageSimulatorSheets
            )
            : base(
                random,
                avatarState,
                foods,
                stageSimulatorSheets
                )
        {
            _waves = new List <Wave>();

            WorldId         = worldId;
            StageId         = stageId;
            IsCleared       = avatarState.worldInformation.IsStageCleared(StageId);
            EnemySkillSheet = stageSimulatorSheets.EnemySkillSheet;

            var stageSheet = stageSimulatorSheets.StageSheet;

            if (!stageSheet.TryGetValue(StageId, out var stageRow))
            {
                throw new SheetRowNotFoundException(nameof(stageSheet), StageId);
            }

            var stageWaveSheet = stageSimulatorSheets.StageWaveSheet;

            if (!stageWaveSheet.TryGetValue(StageId, out var stageWaveRow))
            {
                throw new SheetRowNotFoundException(nameof(stageWaveSheet), StageId);
            }

            Exp       = StageRewardExpHelper.GetExp(avatarState.level, stageId);
            TurnLimit = stageRow.TurnLimit;

            SetWave(stageRow, stageWaveRow);
            var itemSelector = SetItemSelector(stageRow, Random);

            _waveRewards = SetReward(
                itemSelector,
                Random.Next(stageRow.DropItemMin, stageRow.DropItemMax + 1),
                Random,
                stageSimulatorSheets.MaterialItemSheet
                );
        }
Esempio n. 3
0
        public StageSimulator(
            IRandom random,
            AvatarState avatarState,
            List <Guid> foods,
            int worldId,
            int stageId,
            StageSimulatorSheets stageSimulatorSheets,
            int constructorVersion,
            int playCount
            )
            : base(
                random,
                avatarState,
                foods,
                stageSimulatorSheets
                )
        {
            _waves = new List <Wave>();

            WorldId         = worldId;
            StageId         = stageId;
            IsCleared       = avatarState.worldInformation.IsStageCleared(StageId);
            EnemySkillSheet = stageSimulatorSheets.EnemySkillSheet;

            var stageSheet = stageSimulatorSheets.StageSheet;

            if (!stageSheet.TryGetValue(StageId, out var stageRow))
            {
                throw new SheetRowNotFoundException(nameof(stageSheet), StageId);
            }

            var stageWaveSheet = stageSimulatorSheets.StageWaveSheet;

            if (!stageWaveSheet.TryGetValue(StageId, out var stageWaveRow))
            {
                throw new SheetRowNotFoundException(nameof(stageWaveSheet), StageId);
            }

            Exp       = StageRewardExpHelper.GetExp(avatarState.level, stageId);
            TurnLimit = stageRow.TurnLimit;

            SetWave(stageRow, stageWaveRow);
            var itemSelector = SetItemSelector(stageRow, Random);
            var maxCount     = Random.Next(stageRow.DropItemMin, stageRow.DropItemMax + 1);

            switch (constructorVersion)
            {
            case ConstructorVersionDefault:
                _waveRewards = SetReward(
                    itemSelector,
                    maxCount,
                    random,
                    MaterialItemSheet
                    );
                break;

            case ConstructorVersionV100025:
                _waveRewards = SetRewardV2(
                    itemSelector,
                    maxCount,
                    Random,
                    MaterialItemSheet
                    );
                break;

            case ConstructorVersionV100080:
                _waveRewards = new List <ItemBase>();
                for (var i = 0; i < playCount; i++)
                {
                    itemSelector = SetItemSelector(stageRow, Random);
                    var rewards = SetRewardV2(
                        itemSelector,
                        maxCount,
                        Random,
                        MaterialItemSheet
                        );

                    foreach (var reward in rewards)
                    {
                        _waveRewards.Add(reward);
                    }
                }
                break;
            }
        }