コード例 #1
0
    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);
    }
コード例 #2
0
    float GetJoyTotalProbDeviation(MachineTestLuckyMode mode, SpinResultType resultType, float totalProb)
    {
        float expectProb = MachineTestUtility.GetJoyTotalProb(_machineConfig, mode, resultType);
        float result     = totalProb - expectProb;

        return(result);
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    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);
    }
コード例 #5
0
    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);
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    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);
    }
コード例 #8
0
    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);
    }