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)); } }
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); }
public static bool IsResetable(this RngId rngId) { if (rngId != RngId.Rewards && rngId != RngId.Spawning) { return(rngId == RngId.StoryEvents); } return(true); }
public static bool IsDebugLog(this RngId rngId) { if (rngId != RngId.NonDeterministic && rngId != RngId.Chatter) { return(rngId != RngId.BattleTest); } return(false); }
private static RngId ConvertRngId(RngId rngId) { if (_saveManager != null && _saveManager.PreviewMode && rngId == RngId.Battle) { return(RngId.BattleTest); } return(rngId); }
public static bool IsDeterministic(this RngId rngId) { if (rngId != RngId.NonDeterministic) { return(rngId != RngId.BattleTest); } return(false); }
public static bool IsAdvanceNode(this RngId rngId) { if (rngId != 0 && rngId != RngId.NonDeterministic) { return(rngId != RngId.SetupRun); } return(false); }
private static NiceRNG GetRng(RngId rngId) { RandomState.State state = _randomState.GetState(_rngLookup[(int)rngId]); if (state == null) { return(null); } return(state.rng); }
public int FindStateIdx(RngId rngId) { for (int i = 0; i < _rngStates.Count; i++) { if (_rngStates[i].rngIdName == rngId.ToString()) { return(i); } } return(-1); }
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; } }
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); } }
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)); }
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; }
public static T RandomElement <T>(this IEnumerable <T> list, RngId rngId) { return(list.ElementAt(RandomManager.Range(0, list.Count(), rngId))); }
public LotteryBucket(RngId rngId) { _data = new List <T>(); _rngId = rngId; }
public static bool IsReserved(this RngId rngId) { return(rngId == RngId.Master); }
public static T RandomElement <T>(this T[] coll, RngId rngId) { int num = RandomManager.Range(0, coll.Length, rngId); return(coll[num]); }
public static T RandomElement <T>(this IList <T> coll, RngId rngId) { int index = RandomManager.Range(0, coll.Count, rngId); return(coll[index]); }
public State FindState(RngId rngId) { return(GetState(FindStateIdx(rngId))); }
public RandomBucket(List <T> data, RngId rngId) { _data = new List <T>(data); _currentBucket = new List <T>(data); _rngId = rngId; }
public bool HasState(RngId rngId) { return(FindStateIdx(rngId) >= 0); }