Esempio n. 1
0
        /// <summary>
        /// Do not use anymore since v100025.
        /// </summary>
        public StageSimulator(
            IRandom random,
            AvatarState avatarState,
            List <Guid> foods,
            int worldId,
            int stageId,
            StageSimulatorSheets stageSimulatorSheets,
            Model.Skill.Skill skill
            )
            : this(
                random,
                avatarState,
                foods,
                worldId,
                stageId,
                stageSimulatorSheets
                )
        {
            var stageSheet = stageSimulatorSheets.StageSheet;

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

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

            if (!ReferenceEquals(skill, null))
            {
                Player.OverrideSkill(skill);
            }
        }
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
 /// <summary>
 /// Do not use anymore since v100025.
 /// </summary>
 public StageSimulator(
     IRandom random,
     AvatarState avatarState,
     List <Guid> foods,
     int worldId,
     int stageId,
     StageSimulatorSheets stageSimulatorSheets,
     CostumeStatSheet costumeStatSheet
     )
     : this(
         random,
         avatarState,
         foods,
         worldId,
         stageId,
         stageSimulatorSheets
         )
 {
     Player.SetCostumeStat(costumeStatSheet);
 }
Esempio n. 4
0
 public StageSimulator(
     IRandom random,
     AvatarState avatarState,
     List <Guid> foods,
     int worldId,
     int stageId,
     StageSimulatorSheets stageSimulatorSheets,
     CostumeStatSheet costumeStatSheet,
     int constructorVersion,
     int playCount = 1
     )
     : this(
         random,
         avatarState,
         foods,
         worldId,
         stageId,
         stageSimulatorSheets,
         constructorVersion,
         playCount
         )
 {
     Player.SetCostumeStat(costumeStatSheet);
 }
Esempio n. 5
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;
            }
        }