public void UpdateRuneCombinableNum(RuneGrade grade)
    {
        isActive = true;

        var runeCombinableNumDataSheet = DataBase.Instance.runeCombinableNumDataSheet;

        if (runeCombinableNumDataSheet.TryGetRuneCombinableNum(grade, out var runeCombinableNum))
        {
            int numIndex = 0;

            foreach (var uiSelectedRuneSpace in uiSelectedRuneSpaceList)
            {
                uiSelectedRuneSpace.Reset();

                if (numIndex >= runeCombinableNum)
                {
                    uiSelectedRuneSpace.OnHide();
                }
                else
                {
                    uiSelectedRuneSpace.OnShow();
                }

                ++numIndex;
            }
        }
    }
예제 #2
0
    public static int GetRandomIdByGrade(RuneGrade runeGrade)
    {
        var runeIdList  = ListOfRuneIdsByGrade[runeGrade];
        int randomIndex = RandomService.RandRange(0, runeIdList.Count - 1);

        return(runeIdList[randomIndex]);
    }
예제 #3
0
    private void SetCombinationButton()
    {
        combinationButton.onClick.AddListener(() =>
        {
            var runeIdAndIsEquippedList = uiCombinationSpace.GetRuneIdAndIsEquippedList();

            foreach (var runeIdAndIsEquipped in runeIdAndIsEquippedList)
            {
                var runeId     = runeIdAndIsEquipped.runeId;
                var isEquipped = runeIdAndIsEquipped.IsEquipped;

                RuneManager.Instance.RemoveRune(runeId, isEquipped);
            }

            Reset();

            /// 조합 과정 ///
            RuneGrade combinationGrade = uiCombinationSpace.combinationGrade;

            // 조합된 룬 등급에서 한 단계 업그레이드 된 등급
            int randomId = RuneService.GetRandomIdByGrade(combinationGrade + 1);

            RuneManager.Instance.AddRune(randomId);
            var uiObtainedRuneByCombinationScreen = MainManager.instance.backCanvas.uiMainMenu.uiIllustratedBook.uiObtainedRuneByCombinationScreen;

            uiObtainedRuneByCombinationScreen.SetUIObtainedScreen(randomId);
            UIManager.Instance.ShowNew(uiObtainedRuneByCombinationScreen);

            HideCombinationButton();
        });
    }
예제 #4
0
    protected void SetGoodsPrice(int price, RuneGrade runeGrade)
    {
        if (RuneService.IsPlusGrade(runeGrade))
        {
            price = RuneService.GetPriceOfPlusGrade(runeGrade);
        }

        goodsPrice.text = price.ToString();
    }
    private void GenerateData()
    {
        RuneCombinableNumDatas = new Dictionary <RuneGrade, int>();

        foreach (var runeCombinableNumExcelData in RuneCombinableNumExcelDatas)
        {
            RuneGrade grade = runeCombinableNumExcelData.Grade;
            int       num   = runeCombinableNumExcelData.Num;

            RuneCombinableNumDatas.Add(grade, num);
        }
    }
예제 #6
0
 public static bool IsPlusGrade(RuneGrade runeGrade)
 {
     if (runeGrade == RuneGrade.S_1 || runeGrade == RuneGrade.SS_1 || runeGrade == RuneGrade.SS_2 ||
         runeGrade == RuneGrade.SSS_1 || runeGrade == RuneGrade.SSS_2 || runeGrade == RuneGrade.SSS_3)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
    public bool TryGetRuneCombinableNum(RuneGrade grade, out int num)
    {
        num = 0;

        if (RuneCombinableNumDatas.TryGetValue(grade, out var runeCombinableNum))
        {
            num = runeCombinableNum;
            return(true);
        }

        Debug.LogError($"Error TryGetRuneCombinableNum grade:{grade}");
        return(false);
    }
예제 #8
0
    private void AddRuneToRuneListByGrade(int runeId, int num = 1)
    {
        RuneGrade grade = RuneGrade.None;

        if (DataBase.Instance.runeDataSheet.TryGetRuneData(runeId, out var runeData))
        {
            grade = runeData.Grade;
        }

        if (ownedRuneListByGrade.ContainsKey(grade))
        {
            ownedRuneListByGrade[grade] += num;
        }
        else
        {
            ownedRuneListByGrade.Add(grade, num);
        }
    }
예제 #9
0
    public void LockUpdate(RuneGrade grade)
    {
        uiCanSelectRuneList = new List <UIRuneForCombination>();

        foreach (var uiRuneForCombination in uiRuneListForCombination)
        {
            RuneGrade runeGrade = uiRuneForCombination.rune.runeData.Grade;
            if (runeGrade != grade)
            {
                uiRuneForCombination.Lock();
            }
            else
            {
                uiRuneForCombination.Unlock();
                uiCanSelectRuneList.Add(uiRuneForCombination);
            }
        }
    }
예제 #10
0
    private void RemoveRuneToRuneListByGrade(int runeId, int num = 1)
    {
        RuneGrade grade = RuneGrade.None;

        if (DataBase.Instance.runeDataSheet.TryGetRuneData(runeId, out var runeData))
        {
            grade = runeData.Grade;
        }

        if (ownedRuneListByGrade.ContainsKey(grade))
        {
            ownedRuneListByGrade[grade] -= num;
        }

        if (ownedRuneListByGrade[grade] <= 0)
        {
            ownedRuneListByGrade.Remove(grade);
        }
    }
예제 #11
0
    public static int GetPriceOfPlusGrade(RuneGrade runeGrade)
    {
        int price = 0;

        switch (runeGrade)
        {
        case RuneGrade.S_1:
            price = 100;
            break;

        case RuneGrade.SS_1:
            price = 200;
            break;

        case RuneGrade.SS_2:
            price = 300;
            break;

        case RuneGrade.SSS_1:
            price = 400;
            break;

        case RuneGrade.SSS_2:
            price = 500;
            break;

        case RuneGrade.SSS_3:
            price = 600;
            break;

        default:
            price = -1;
            break;
        }

        return(price);
    }
예제 #12
0
    public UISelectedRuneSpace AddSelectedRune(RuneData runeData, UIRuneForCombination uiRuneForCombination)
    {
        if (!isActive)
        {
            combinationGrade = runeData.Grade;
            UpdateRuneCombinableNum(runeData.Grade);
            OnShow();

            var uiRunesForCombination = MainManager.instance.backCanvas.uiMainMenu.uiIllustratedBook.uiRunePage.uiRuneCombination.uiRunesForCombination;
            uiRunesForCombination.LockUpdate(runeData.Grade);
        }

        foreach (var uiSelectedRuneSpace in uiSelectedRuneSpaceList)
        {
            if (!uiSelectedRuneSpace.gameObject.activeSelf)
            {
                continue;
            }

            if (uiSelectedRuneSpace.uiSelectedRune.rune != null)
            {
                continue;
            }

            uiSelectedRuneSpace.SetUISelectRune(runeData, uiRuneForCombination);

            if (IsFull())
            {
                MainManager.instance.backCanvas.uiMainMenu.uiIllustratedBook.uiRunePage.uiRuneCombination.ShowCombinationButton();
            }

            return(uiSelectedRuneSpace);
        }

        return(null);
    }
예제 #13
0
 private void SetRuneGrade(RuneGrade runeGrade)
 {
     this.goodsGrade.text = RuneService.GetNameStrByGrade(runeGrade);
 }
 private void SetRuneGrade(RuneGrade runeGrade)
 {
     this.runeGrade = runeGrade;
 }
예제 #15
0
 public void SetGoodsGrade(RuneGrade runeGrade)
 {
     goodsGrade.text = RuneService.GetNameStrByGrade(runeGrade);
 }
예제 #16
0
    public static string GetNameStrByGrade(RuneGrade runeGrade)
    {
        string gradeStr = "";

        switch (runeGrade)
        {
        case RuneGrade.None:
            gradeStr = "에러";
            break;

        case RuneGrade.F_0:
            gradeStr = "F등급";
            break;

        case RuneGrade.D_0:
            gradeStr = "D등급";
            break;

        case RuneGrade.C_0:
            gradeStr = "C등급";
            break;

        case RuneGrade.B_0:
            gradeStr = "B등급";
            break;

        case RuneGrade.A_0:
            gradeStr = "A등급";
            break;

        case RuneGrade.S_0:
            gradeStr = "S등급";
            break;

        case RuneGrade.S_1:
            gradeStr = "S+등급";
            break;

        case RuneGrade.SS_0:
            gradeStr = "SS등급";
            break;

        case RuneGrade.SS_1:
            gradeStr = "SS+등급";
            break;

        case RuneGrade.SS_2:
            gradeStr = "SS++등급";
            break;

        case RuneGrade.SSS_0:
            gradeStr = "SSS등급";
            break;

        case RuneGrade.SSS_1:
            gradeStr = "SSS+등급";
            break;

        case RuneGrade.SSS_2:
            gradeStr = "SSS++등급";
            break;

        case RuneGrade.SSS_3:
            gradeStr = "SSS+++등급";
            break;

        default:
            break;
        }

        return(gradeStr);
    }