Beispiel #1
0
    void Awake()
    {
        _pRandomItemTable = CManagerRandomTable <SItemData> .instance;
        _pRandomItemTable.DoSetRandomMode(CManagerRandomTable <SItemData> .ERandomGetMode.Delete);

        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 장갑", 20));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 신발", 20));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 장갑", 20));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 신발", 20));

        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 장갑", 20));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 신발", 20));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 장갑", 20));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 신발", 20));


        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Rare, "드문 장갑", 15));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Rare, "드문 신발", 15));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Rare, "드문 장갑", 15));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Rare, "드문 신발", 15));

        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Unique, "특별한 장갑", 10));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Unique, "특별한 신발", 10));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Legend, "전설의 장갑", 4));
        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Legend, "전설의 신발", 4));

        _pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Named, "유일무이한 신발", 2));
    }
Beispiel #2
0
    public IEnumerator Test_RandomItem_Peek()
    {
        HashSet <SItemData>             setGetItem       = new HashSet <SItemData>();
        CManagerRandomTable <SItemData> pRandomItemTable = CManagerRandomTable <SItemData> .instance;

        CManagerRandomTable <SItemData> .instance.DoClearRandomItemTable();

        pRandomItemTable.DoSetRandomMode(CManagerRandomTable <SItemData> .ERandomGetMode.Peek);

        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 장갑", 40));  // Total
        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 신발", 40));  // 80
        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Rare, "드문 장갑", 19));     // 95
        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Named, "네임드 신발", 1));    // 100

        for (int i = 0; i < 100; i++)
        {
            setGetItem.Add(pRandomItemTable.GetRandomItem());
        }

        UnityEngine.Assertions.Assert.IsTrue(setGetItem.Count > 1); // 종류가 1가지 이상 뽑혔는지

        var pIterNamed = setGetItem.Where(x => x.eGrade == EItemGrade.Named);

        if (pIterNamed != null)                                             // 한개도 없으면 null이다.
        {
            UnityEngine.Assertions.Assert.IsTrue(pIterNamed.Count() <= 10); // 네임드 퍼센트가 1%인데 100번중 10개 이하로 뽑혔는지
        }
        yield break;
    }
Beispiel #3
0
    public IEnumerator Test_RandomItem_Delete()
    {
        HashSet <SItemData>             setGetItem       = new HashSet <SItemData>();
        CManagerRandomTable <SItemData> pRandomItemTable = CManagerRandomTable <SItemData> .instance;

        CManagerRandomTable <SItemData> .instance.DoClearRandomItemTable();

        pRandomItemTable.DoSetRandomMode(CManagerRandomTable <SItemData> .ERandomGetMode.Delete);

        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 장갑", 40));  // Total
        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Common, "평범한 신발", 40));  // 80
        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Rare, "드문 장갑", 19));     // 95
        pRandomItemTable.DoAddRandomItem(new SItemData(EItemGrade.Named, "네임드 신발", 1));    // 100

        for (int i = 0; i < 4; i++)
        {
            setGetItem.Add(pRandomItemTable.GetRandomItem());
        }

        UnityEngine.Assertions.Assert.IsTrue(setGetItem.Count >= 4); // 딜리트 모드는 모든 아이템이 뽑혀야 한다.

        Assert.IsNull(pRandomItemTable.GetRandomItem());             // 다 뽑으면 Null이 나온다.

        // 다시 한번 반복
        setGetItem.Clear();
        pRandomItemTable.DoReset_OnDeleteMode();

        for (int i = 0; i < 4; i++)
        {
            setGetItem.Add(pRandomItemTable.GetRandomItem());
        }

        UnityEngine.Assertions.Assert.IsTrue(setGetItem.Count >= 4); // 딜리트 모드는 모든 아이템이 뽑혀야 한다.
        Assert.IsNull(pRandomItemTable.GetRandomItem());             // 다 뽑으면 Null이 나온다.

        yield break;
    }