List <int> GetJoyRowCounts(IsLuckyModePredicate pred, MachineTestLuckyMode mode, SpinResultType resultType, List <MachineTestRoundResult> roundResults) { int rowCount = MachineTestUtility.GetJoyRowCount(_machineConfig, mode, resultType); List <int> result = new List <int>(rowCount); for (int i = 0; i < rowCount; i++) { result.Add(0); } foreach (var r in roundResults) { if (pred(r) && r._output._spinResult.Type == resultType) { int id = r._output._spinResult.GetJoyId(); if (id > result.Count) { Debug.LogError("index out of range"); Debug.Assert(false); } ++result[id - 1]; } } return(result); }
float GetJoyTotalProbDeviation(MachineTestLuckyMode mode, SpinResultType resultType, float totalProb) { float expectProb = MachineTestUtility.GetJoyTotalProb(_machineConfig, mode, resultType); float result = totalProb - expectProb; return(result); }
List <float> GetJoyRowProbDeviations(MachineTestLuckyMode mode, SpinResultType resultType, List <float> rowProbs) { int joyRowCount = MachineTestUtility.GetJoyRowCount(_machineConfig, mode, resultType); List <float> result = new List <float>(joyRowCount); for (int i = 0; i < rowProbs.Count; i++) { float expectProb = MachineTestUtility.GetJoyOverallHit(_machineConfig, mode, resultType, i); float v = rowProbs[i] - expectProb; result.Add(v); } return(result); }
private string ConstructResult(int id, MachineTestInput input, MachineTestOutput output) { CoreSpinResult spinResult = output._spinResult; SpinResultType spinResultType = spinResult.Type; List <string> symbolNames = ListUtility.MapList(spinResult.SymbolList, (CoreSymbol s) => { return(s.SymbolData.Name); }); string symbolNameStr = string.Join(_delimiter, symbolNames.ToArray()); int resultType = CoreUtility.SpinResultTypeToInt(spinResultType); int resultId = 0; if (spinResultType == SpinResultType.Win) { resultId = spinResult.GetPayoutId(); } else if (spinResultType == SpinResultType.NearHit) { resultId = spinResult.GetNearHitId(); } int lucky = CoreUtility.LuckyModeToInt(spinResult.LuckyMode); long curCredit = input._credit; int consumedBetAmount = (int)spinResult.ConsumedBetAmount; float winRatio = spinResult.WinRatio; long creditChange = output._creditChange; long remainCredit = output._remainCredit; int luckyChange = output._luckyChange; int remainLucky = output._remainLucky; int isRespin = spinResult.IsRespin ? 1 : 0; List <string> isFixedStrList = ListUtility.MapList(spinResult.IsFixedList, (bool b) => { return(b ? "1" : "0"); }); string isFixedStr = string.Join(_delimiter, isFixedStrList.ToArray()); int isTriggerIndieGame = output._isTriggerIndieGame ? 1 : 0; ulong indieGameWinAmount = output._indieGameWinAmount; string indieGameCustomData = output._indieGameCustomData; string result = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16}", id, symbolNameStr, resultType, resultId, lucky, curCredit, consumedBetAmount, winRatio, creditChange, remainCredit, luckyChange, remainLucky, isRespin, isFixedStr, isTriggerIndieGame, indieGameWinAmount, indieGameCustomData); return(result); }
public static int GetJoyRowCount(MachineConfig machineConfig, MachineTestLuckyMode mode, SpinResultType resultType) { int result = 0; if (machineConfig.BasicConfig.IsMultiLine) { if (machineConfig.BasicConfig.IsMultiLineExhaustive) { BaseJoyDistConfig config = GetBaseJoyDistConfig(machineConfig, mode, resultType); result = config.JoyDataArray.Length; } } else { BaseJoyConfig config = GetBaseJoyConfig(machineConfig, mode, resultType); result = config.JoyDataArray.Length; } return(result); }
public static BaseJoyConfig GetBaseJoyConfig(MachineConfig machineConfig, MachineTestLuckyMode mode, SpinResultType resultType) { Debug.Assert(!machineConfig.BasicConfig.IsMultiLine); BaseJoyConfig result = null; if (mode == MachineTestLuckyMode.Normal) { if (resultType == SpinResultType.Win) { result = machineConfig.PayoutConfig; } else if (resultType == SpinResultType.NearHit) { result = machineConfig.NearHitConfig; } else { Debug.Assert(false); } } else if (mode == MachineTestLuckyMode.Lucky) { if (resultType == SpinResultType.Win) { result = machineConfig.LuckyPayoutConfig; } else if (resultType == SpinResultType.NearHit) { result = machineConfig.LuckyNearHitConfig; } else { Debug.Assert(false); } } else { Debug.Assert(false); } return(result); }
public static float GetJoyTotalProb(MachineConfig machineConfig, MachineTestLuckyMode mode, SpinResultType resultType) { float result = 0.0f; if (machineConfig.BasicConfig.IsMultiLine) { if (machineConfig.BasicConfig.IsMultiLineExhaustive) { BaseJoyDistConfig config = GetBaseJoyDistConfig(machineConfig, mode, resultType); result = config.TotalProb; } } else { BaseJoyConfig config = GetBaseJoyConfig(machineConfig, mode, resultType); result = config.TotalProb; } return(result); }
public static float GetJoyOverallHit(MachineConfig machineConfig, MachineTestLuckyMode mode, SpinResultType resultType, int index) { float result = 0.0f; if (machineConfig.BasicConfig.IsMultiLine) { if (machineConfig.BasicConfig.IsMultiLineExhaustive) { BaseJoyDistConfig config = GetBaseJoyDistConfig(machineConfig, mode, resultType); result = config.OverallHitArray[index]; } } else { BaseJoyConfig config = GetBaseJoyConfig(machineConfig, mode, resultType); result = config.OverallHitArray[index]; } return(result); }