void ShowLimitationConfig(MachineSeedGenConfig genConfig) { EditorGUILayout.LabelField("----- limitation config -----"); for (int i = 0; i < genConfig._limitConfigs.Count; i++) { MachineSeedLimitationConfig limitConfig = genConfig._limitConfigs[i]; GUILayout.BeginHorizontal(); limitConfig._type = (MachineSeedLimitationType)EditorGUILayout.EnumPopup(limitConfig._type, GUILayout.ExpandWidth(false), GUILayout.MinWidth(70)); if (limitConfig._type == MachineSeedLimitationType.Bankcrupt) { EditorGUILayout.LabelField("StartSpinCount", GUILayout.MaxWidth(100)); limitConfig._startSpinCount = EditorGUILayout.IntField(limitConfig._startSpinCount); EditorGUILayout.LabelField("EndSpinCount", GUILayout.MaxWidth(100)); limitConfig._endSpinCount = EditorGUILayout.IntField(limitConfig._endSpinCount); } else if (limitConfig._type == MachineSeedLimitationType.CreditRange) { EditorGUILayout.LabelField("SpinCount", GUILayout.MaxWidth(70)); limitConfig._spinCount = EditorGUILayout.IntField(limitConfig._spinCount); EditorGUILayout.LabelField("MinCredit", GUILayout.MaxWidth(70)); limitConfig._minCredit = EditorGUILayout.LongField(limitConfig._minCredit); EditorGUILayout.LabelField("MaxCredit", GUILayout.MaxWidth(70)); limitConfig._maxCredit = EditorGUILayout.LongField(limitConfig._maxCredit); } else { Debug.Assert(false); } if (GUILayout.Button("-", GUILayout.Width(20))) { genConfig._limitConfigs.RemoveAt(i); } if (GUILayout.Button("+", GUILayout.Width(20))) { genConfig._limitConfigs.Insert(i + 1, new MachineSeedLimitationConfig()); } GUILayout.EndHorizontal(); } if (GUILayout.Button("+", GUILayout.Width(20))) { genConfig._limitConfigs.Add(new MachineSeedLimitationConfig()); } }
bool IsUserResultPassSingleLimitConfig(MachineTestUserResult userResult, MachineSeedLimitationConfig limitConfig) { bool result = false; List <MachineTestRoundResult> roundResults = userResult.RoundResults; if (limitConfig._type == MachineSeedLimitationType.Bankcrupt) { Debug.Assert(limitConfig._startSpinCount < limitConfig._endSpinCount); for (int i = limitConfig._startSpinCount; i < limitConfig._endSpinCount && i < roundResults.Count; i++) { MachineTestRoundResult roundResult = roundResults[i]; if (roundResult._output._remainCredit <= 0) { result = true; break; } } } else if (limitConfig._type == MachineSeedLimitationType.CreditRange) { if (limitConfig._spinCount <= roundResults.Count) { MachineTestRoundResult roundResult = roundResults[limitConfig._spinCount - 1]; long remainCredit = roundResult._output._remainCredit; result = (remainCredit >= limitConfig._minCredit && remainCredit <= limitConfig._maxCredit); } else { // just treat it as not passed result = false; } } else { Debug.Assert(false); } return(result); }