Example #1
0
 private static void AssertNotCalledInPreviewMode(RngId rngId)
 {
     if (_saveManager != null && _saveManager.PreviewMode && rngId.IsDeterministic())
     {
         Log.Error(LogGroups.Random, string.Format("RandomManager.Range: Called in preview mode ({0})", rngId));
     }
 }
Example #2
0
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            ProviderManager.TryGetProvider <RoomManager>(out RoomManager roomManager);
            CharacterState target = roomManager.GetPyreRoom().GetPyreHeart();

            if (cardEffectParams.saveManager.PreviewMode)
            {
                yield break;
            }

            StatusEffectStackData statusEffectStack = GetStatusEffectStack(cardEffectState);

            if (statusEffectStack == null)
            {
                yield break;
            }
            int intInRange = cardEffectState.GetIntInRange();

            CharacterState.AddStatusEffectParams addStatusEffectParams = default(CharacterState.AddStatusEffectParams);
            addStatusEffectParams.sourceRelicState = cardEffectParams.sourceRelic;
            addStatusEffectParams.sourceCardState  = cardEffectParams.playedCard;
            addStatusEffectParams.cardManager      = cardEffectParams.cardManager;
            addStatusEffectParams.sourceIsHero     = (cardEffectState.GetSourceTeamType() == Team.Type.Heroes);
            CharacterState.AddStatusEffectParams addStatusEffectParams2 = addStatusEffectParams;

            RngId         rngId = cardEffectParams.saveManager.PreviewMode ? RngId.BattleTest : RngId.Battle;
            PlayerManager playerManager;

            ProviderManager.TryGetProvider <PlayerManager>(out playerManager);

            target.AddStatusEffect(statusEffectStack.statusId, playerManager.GetEnergy(), addStatusEffectParams2);
        }
Example #3
0
 public static bool IsResetable(this RngId rngId)
 {
     if (rngId != RngId.Rewards && rngId != RngId.Spawning)
     {
         return(rngId == RngId.StoryEvents);
     }
     return(true);
 }
Example #4
0
 public static bool IsDebugLog(this RngId rngId)
 {
     if (rngId != RngId.NonDeterministic && rngId != RngId.Chatter)
     {
         return(rngId != RngId.BattleTest);
     }
     return(false);
 }
Example #5
0
 private static RngId ConvertRngId(RngId rngId)
 {
     if (_saveManager != null && _saveManager.PreviewMode && rngId == RngId.Battle)
     {
         return(RngId.BattleTest);
     }
     return(rngId);
 }
Example #6
0
 public static bool IsDeterministic(this RngId rngId)
 {
     if (rngId != RngId.NonDeterministic)
     {
         return(rngId != RngId.BattleTest);
     }
     return(false);
 }
Example #7
0
 public static bool IsAdvanceNode(this RngId rngId)
 {
     if (rngId != 0 && rngId != RngId.NonDeterministic)
     {
         return(rngId != RngId.SetupRun);
     }
     return(false);
 }
Example #8
0
 private static NiceRNG GetRng(RngId rngId)
 {
     RandomState.State state = _randomState.GetState(_rngLookup[(int)rngId]);
     if (state == null)
     {
         return(null);
     }
     return(state.rng);
 }
Example #9
0
 public int FindStateIdx(RngId rngId)
 {
     for (int i = 0; i < _rngStates.Count; i++)
     {
         if (_rngStates[i].rngIdName == rngId.ToString())
         {
             return(i);
         }
     }
     return(-1);
 }
Example #10
0
        public static void Shuffle <T>(this IList <T> list, RngId rngId)
        {
            int num = list.Count;

            while (num > 1)
            {
                num--;
                int index = RandomManager.Range(0, num + 1, rngId);
                T   value = list[index];
                list[index] = list[num];
                list[num]   = value;
            }
        }
Example #11
0
 public static void ResetRng(RngId rngId, int offset = 0)
 {
     if (rngId.IsDebugLog())
     {
         Log.Verbose(LogGroups.Random, string.Format("ResetRng {0} [{1}]", rngId, offset));
     }
     if (!rngId.IsResetable())
     {
         Log.Error(LogGroups.Random, string.Format("RandomManager.Reset: type {0} is not allowed to be reset", rngId));
     }
     else
     {
         GetRng(rngId).Reset(offset);
     }
 }
Example #12
0
        public int AddState(RngId rngId, int seed)
        {
            if (HasState(rngId))
            {
                Log.Error(LogGroups.Random, string.Format("RandomState.AddState: State already exists: {0}", rngId));
                return(FindStateIdx(rngId));
            }
            State item = new State
            {
                rngIdName = rngId.ToString(),
                rng       = new NiceRNG(seed)
            };

            _rngStates.Add(item);
            return(FindStateIdx(rngId));
        }
Example #13
0
        public static int Range(int min, int max, RngId rngId)
        {
            rngId = ConvertRngId(rngId);
            AssertNotCalledInPreviewMode(rngId);
            if (rngId.IsReserved())
            {
                Log.Error(LogGroups.Random, string.Format("RandomManager.Range: type {0} is reserved.  It can't be used for Range.", rngId));
                return(min);
            }
            int num = GetRng(rngId).Range(min, max);

            if (rngId.IsDebugLog())
            {
                Log.Verbose(LogGroups.Random, string.Format("RangeInt {0} [{1} {2}] [{3}]", rngId, min, max, num));
            }
            return(num);
        }
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            if (cardEffectParams.targets.Count == 0)
            {
                yield break;
            }

            var availableFloors = GetAvailableFloors(cardEffectParams.targets[0], cardEffectParams.roomManager);
            int chosenFloor     = 0;

            if (availableFloors.Count > 0)
            {
                RngId rngId = cardEffectParams.saveManager.PreviewMode ? RngId.BattleTest : RngId.Battle;
                chosenFloor = availableFloors[RandomManager.Range(0, availableFloors.Count, rngId)];
            }

            yield return(bumper.Bump(cardEffectParams, chosenFloor - cardEffectParams.targets[0].GetCurrentRoomIndex()));

            yield break;
        }
Example #15
0
 public static T RandomElement <T>(this IEnumerable <T> list, RngId rngId)
 {
     return(list.ElementAt(RandomManager.Range(0, list.Count(), rngId)));
 }
Example #16
0
 public LotteryBucket(RngId rngId)
 {
     _data  = new List <T>();
     _rngId = rngId;
 }
Example #17
0
 public static bool IsReserved(this RngId rngId)
 {
     return(rngId == RngId.Master);
 }
Example #18
0
        public static T RandomElement <T>(this T[] coll, RngId rngId)
        {
            int num = RandomManager.Range(0, coll.Length, rngId);

            return(coll[num]);
        }
Example #19
0
        public static T RandomElement <T>(this IList <T> coll, RngId rngId)
        {
            int index = RandomManager.Range(0, coll.Count, rngId);

            return(coll[index]);
        }
Example #20
0
 public State FindState(RngId rngId)
 {
     return(GetState(FindStateIdx(rngId)));
 }
Example #21
0
 public RandomBucket(List <T> data, RngId rngId)
 {
     _data          = new List <T>(data);
     _currentBucket = new List <T>(data);
     _rngId         = rngId;
 }
Example #22
0
 public bool HasState(RngId rngId)
 {
     return(FindStateIdx(rngId) >= 0);
 }