Exemple #1
0
    public void AddUIRune(RuneData runeData)
    {
        UIRuneOnRunePage uiRune = null;

        // 오브젝트풀링
        foreach (var uiRuneOnRunePage in uiRuneListOnRunePage)
        {
            if (uiRuneOnRunePage.gameObject.activeSelf == false)
            {
                uiRune = uiRuneOnRunePage;
                uiRune.SetUIRune(runeData);
                uiRune.gameObject.SetActive(true);
                Sort();
                return;
            }
        }

        // inactive상태인 룬이 없다면
        uiRune = Instantiate(uiRuneOnRunePage, girdLayoutGroup.transform);
        uiRune.Initialize();
        uiRune.SetUIRune(runeData);
        uiRuneListOnRunePage.Add(uiRune);

        Sort();
    }
    public void EquipRune(UIRuneOnRunePage uiRuneToEquip, bool isInitialize = false)
    {
        var runeData = uiRuneToEquip.rune.runeData;
        int runeId   = runeData.Id;
        int socketPositionOfRuneDataToEquip = runeData.SocketPosition;

        uiEquippedRuneList[socketPositionOfRuneDataToEquip].SetUIRune(runeData);
        RuneManager.Instance.SetEquippedRune(uiRuneToEquip.rune);

        var uiRunesForCombination = MainManager.instance.backCanvas.uiMainMenu.uiIllustratedBook.uiRunePage.uiRuneCombination.uiRunesForCombination;

        uiRunesForCombination.SetEquipped(runeId);

        //var uiRuneListOnRunePage = MainManager.instance.backCanvas.uiMainMenu.uiIllustratedBook.uiRunePage.uiRunesOnRunePage;
        //uiRuneListOnRunePage.RemoveRune(uiRuneToEquip);

        if (!isInitialize)
        {
            SaveManager.Instance.SetEquippedRuneIdsSaveData(socketPositionOfRuneDataToEquip, uiRuneToEquip.rune.runeData.Id);
            SaveManager.Instance.SaveEquippedRuneIds();
        }
    }
    /// <summary>
    /// 룬 장착 함수
    /// </summary>
    /// <param name="runeDataToEquip"> 장착할 룬의 데이터</param>
    /// <returns>교체 되었는지의 Bool값과 교체되었다면 교체된 RuneData, 교체가 안되었다면 null값을 가진 Tuple을 리턴</returns>
    public (bool IsReplaced, Rune EquippedRune) EquipRuneAndGetReplaceResult(UIRuneOnRunePage uiRuneToEquip)
    {
        bool isReplaced;
        Rune equippedRune;

        int         socketPositionOfRuneDataToEquip = uiRuneToEquip.rune.runeData.SocketPosition;
        UIEquipRune uiEquipRuneToBeEquip            = uiEquippedRuneList[socketPositionOfRuneDataToEquip];

        // 장착할 위치에 룬이 없는경우
        if (uiEquipRuneToBeEquip.rune == null)
        {
            isReplaced   = false;
            equippedRune = null;
        }
        else
        {
            isReplaced   = true;
            equippedRune = uiEquipRuneToBeEquip.rune;
        }

        EquipRune(uiRuneToEquip);

        return(isReplaced, equippedRune);
    }