You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1543 lines
59 KiB
1543 lines
59 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using IVDataFormat;
|
|
using IVServerFormat;
|
|
using TMPro;
|
|
using System;
|
|
|
|
public class DungeonMgr : MonoBehaviour
|
|
{
|
|
#region Const
|
|
private static DungeonMgr curMgr = null;
|
|
#endregion Const
|
|
|
|
#region UI
|
|
[SerializeField]
|
|
private Canvas canvasUI;
|
|
[SerializeField]
|
|
TextMeshProUGUI txtMainT;
|
|
[SerializeField]
|
|
Button mainDungeonButton;
|
|
GameObject mainLock;
|
|
|
|
[SerializeField]
|
|
Canvas dungeonLeftPn;
|
|
GameObject leftCanvasUI;
|
|
|
|
GameObject leftPanel;
|
|
Image dungeonImage;
|
|
TextMeshProUGUI dungeonName;
|
|
//[SerializeField]
|
|
//Sprite[] dungeonImageKind;
|
|
[SerializeField]
|
|
ButtonIV btnDungeonOut;
|
|
[SerializeField]
|
|
GoodsItem[] rewardItem;
|
|
[SerializeField]
|
|
GameObject[] dungeonPanel;
|
|
TextMeshProUGUI[] txtDungeonPanel = new TextMeshProUGUI[5];
|
|
GameObject[] objDungeonSelect = new GameObject[5];
|
|
GameObject[] objDungeonLock = new GameObject[5];
|
|
ButtonIV btnDungeonSkip;
|
|
TextMeshProUGUI txtDungeonSkip;
|
|
[SerializeField]
|
|
TextMeshProUGUI txtAutoProgress;
|
|
GameObject DungeonPetSet;
|
|
TextMeshProUGUI dungeonPetLevel;
|
|
ButtonIV btnPrevLevel, btnNextLevel;
|
|
[SerializeField]
|
|
ButtonIV[] btnTabs;
|
|
#endregion
|
|
|
|
#region Escr
|
|
[SerializeField]
|
|
EScrController escrDungeonSelect;
|
|
#endregion
|
|
|
|
int iSelectArea = -1;
|
|
bool isFirst = true;
|
|
|
|
Toggle autoProgressToggle;
|
|
[SerializeField]
|
|
bool autoProgress = false;
|
|
public static bool GetAutoProgress()
|
|
{
|
|
return curMgr.autoProgress;
|
|
}
|
|
public static void SetAutoProgress(bool onoff)
|
|
{
|
|
curMgr.autoProgress = onoff;
|
|
}
|
|
|
|
public enum DungeonKind //던전 종류 중 4번 과 5번 은 던전이 아닌 다른 곳을 눌러야 나타남
|
|
{
|
|
GoldDG = 0,
|
|
EnhanceStoneDG = 1,
|
|
PetDG = 2,
|
|
AwakenStoneDG = 3,
|
|
AwakenDG = 4,
|
|
GuardianDG = 5,
|
|
relicDG = 6,
|
|
|
|
total
|
|
}
|
|
|
|
private int iLoading = 1;
|
|
private bool bReLocalize = true;
|
|
private bool bReLocalizeDg = false;
|
|
private int iSelectedTab = -1;
|
|
DungeonKind dungeonKind;
|
|
public static void SetDungeonKind(DungeonKind i)
|
|
{
|
|
curMgr.dungeonKind = i;
|
|
}
|
|
private int DungeonLevel = 1;
|
|
private float DungeonBonus = 1;
|
|
|
|
//프리셋 배열의 갯수는 스킬의 갯수가 아닌 던전의 갯수.
|
|
int[] dungeonSkillPreset = { 0, 0, 0, 0, 0, 0,0 };
|
|
int[] dungeonPetPreset = { 0, 0, 0, 0, 0, 0,0 };
|
|
int[] dungeonAwakenPreset = { 0, 0, 0, 0, 0, 0,0 };
|
|
|
|
bool isUnlockDungeon = false;
|
|
|
|
public static DungeonKind GetDungeonKind()
|
|
{
|
|
return curMgr.dungeonKind;
|
|
}
|
|
|
|
#region Base
|
|
public static void SLocalize(bool bmain)
|
|
{
|
|
if (curMgr != null)
|
|
curMgr.Localize(bmain);
|
|
}
|
|
|
|
// 번역.
|
|
private void Localize(bool bmain)
|
|
{
|
|
if (bmain)
|
|
{
|
|
txtMainT.text = LocalizationText.GetText("dg_title");
|
|
}
|
|
else
|
|
{
|
|
bReLocalize = false;
|
|
canvasUI.transform.Find("txtT").GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("dungeon_title");
|
|
|
|
leftPanel = dungeonLeftPn.gameObject;
|
|
dungeonImage = leftPanel.transform.Find("DungeonImage").GetComponent<Image>();
|
|
dungeonName = dungeonImage.transform.Find("DungeonName").GetComponent<TextMeshProUGUI>();
|
|
|
|
|
|
for (int i = 0; i < dungeonPanel.Length; i++)
|
|
{
|
|
txtDungeonPanel[i] = dungeonPanel[i].transform.Find("txtTabTitle").GetComponent<TextMeshProUGUI>();
|
|
objDungeonSelect[i] = dungeonPanel[i].transform.Find("select").gameObject;
|
|
objDungeonLock[i] = dungeonPanel[i].transform.Find("DungeonLock").gameObject;
|
|
}
|
|
txtDungeonPanel[0].text = LocalizationText.GetText("gold_dungeon_title");
|
|
txtDungeonPanel[1].text = LocalizationText.GetText("enhance_stone_dungeon_title");
|
|
txtDungeonPanel[2].text = LocalizationText.GetText("pet_dungeon_title");
|
|
txtDungeonPanel[3].text = LocalizationText.GetText("awaken_stone_dungeon_title");
|
|
txtDungeonPanel[4].text = LocalizationText.GetText("mask_dungeon_title");
|
|
|
|
leftCanvasUI = dungeonLeftPn.gameObject;
|
|
leftCanvasUI.transform.Find("txtT").GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("dungeon_info");
|
|
btnDungeonSkip = leftCanvasUI.transform.Find("btnSkip").GetComponent<ButtonIV>();
|
|
txtDungeonSkip = btnDungeonSkip.transform.Find("txt").GetComponent<TextMeshProUGUI>();
|
|
txtDungeonSkip.text = LocalizationText.GetText("dungeon_skip");
|
|
txtAutoProgress.text = LocalizationText.GetText("auto_progress");
|
|
DungeonPetSet = leftCanvasUI.transform.Find("PetDungeonSet").gameObject;
|
|
dungeonPetLevel = DungeonPetSet.transform.Find("PetLevel").GetComponent<TextMeshProUGUI>();
|
|
dungeonPetLevel.text = FormatString.StringFormat(LocalizationText.GetText("dungeon_pet_level"), "1");
|
|
btnPrevLevel = DungeonPetSet.transform.Find("prevArrow").GetComponent<ButtonIV>();
|
|
btnNextLevel = DungeonPetSet.transform.Find("nextArrow").GetComponent<ButtonIV>();
|
|
dungeonName.text = LocalizationText.GetText("gold_dungeon_title");
|
|
|
|
autoProgressToggle = leftCanvasUI.transform.Find("txtCheckBox").transform.Find("CheckBox").GetComponent<Toggle>();
|
|
}
|
|
}
|
|
|
|
// 설정에서 언어 변경 시 처리.
|
|
public static void SReLocalize()
|
|
{
|
|
curMgr.Localize(true);
|
|
curMgr.bReLocalize = true;
|
|
curMgr.bReLocalizeDg = true;
|
|
}
|
|
|
|
private void Awake()
|
|
{
|
|
curMgr = this;
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
iLoading--;
|
|
}
|
|
|
|
public static bool SCloseMenu()
|
|
{
|
|
return curMgr.CloseMenu();
|
|
}
|
|
|
|
private bool CloseMenu()
|
|
{
|
|
// 게임 시작 후 열린적 없음.
|
|
if (iSelectedTab < 0)
|
|
return false;
|
|
|
|
if (canvasUI.enabled)
|
|
{
|
|
CloseDungeon();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
#endregion Base
|
|
|
|
#region UI
|
|
|
|
public static void SMoveDungeon(eEventMoveType content)//다른 곳에서 던전 컨텐츠를 열어야 할 때.
|
|
{
|
|
curMgr.OpenDungeon();
|
|
switch (content)
|
|
{
|
|
case eEventMoveType.DgGold:
|
|
curMgr.TabGoldDungeon();
|
|
break;
|
|
case eEventMoveType.DgStone:
|
|
curMgr.TabEnhanceStoneDungeon();
|
|
break;
|
|
case eEventMoveType.DgPet:
|
|
curMgr.TabPetDungeon();
|
|
break;
|
|
case eEventMoveType.DgAwaken:
|
|
curMgr.TabAwakenStoneDungeon();
|
|
break;
|
|
case eEventMoveType.DgRelic:
|
|
curMgr.TabRelicDungeon();
|
|
break;
|
|
}
|
|
}
|
|
public void OpenDungeon()//던전 버튼으로 던전을 열 때. 최초 열 때는 골드던전이 활성화된다.
|
|
{
|
|
if (mainLock.activeSelf)
|
|
{
|
|
GameUIMgr.SOpenToast(FormatString.TextOpenStageClear(DataHandler.GetDungeonTypeInfo(DungeonMgr.DungeonKind.GoldDG).openStage));//펫 던전 해금될때 해금됨
|
|
return;
|
|
}
|
|
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
if (bReLocalize)
|
|
Localize(false);
|
|
if (iSelectedTab < 0)
|
|
{
|
|
TabGoldDungeon();
|
|
}
|
|
|
|
canvasUI.enabled = true;
|
|
dungeonLeftPn.enabled = true;
|
|
|
|
GameUIMgr.SRightWindowClose();
|
|
GameUIMgr.SOpenLeftPanel(dggoldticket: true, dgenhanceticket: true, dgawakenticket: true, dgpetticket: true, dgrelicticket: true);
|
|
GameUIMgr.SSetMainUiOn(false);
|
|
|
|
objDungeonLock[0].SetActive(!DataHandler.IsClearStage(DataHandler.GetDungeonTypeInfo(DungeonKind.GoldDG).openStage));
|
|
objDungeonLock[1].SetActive(!DataHandler.IsClearStage(DataHandler.GetDungeonTypeInfo(DungeonKind.EnhanceStoneDG).openStage));
|
|
objDungeonLock[2].SetActive(!DataHandler.IsClearStage(DataHandler.GetDungeonTypeInfo(DungeonKind.PetDG).openStage));
|
|
objDungeonLock[3].SetActive(!DataHandler.IsClearStage(DataHandler.GetDungeonTypeInfo(DungeonKind.AwakenStoneDG).openStage));
|
|
objDungeonLock[4].SetActive(!DataHandler.IsClearStage(DataHandler.GetDungeonTypeInfo(DungeonKind.relicDG).openStage));
|
|
|
|
//objDungeonLock[0].SetActive(false);
|
|
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab) > 0 && DungeonLevel > 1);
|
|
|
|
if (isFirst)//처음 열어서 스크롤을 조정해야 할 때.
|
|
{
|
|
switch ((DungeonKind)iSelectedTab)
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
TabGoldDungeon();
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
TabEnhanceStoneDungeon();
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
TabPetDungeon();
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
TabAwakenStoneDungeon();
|
|
break;
|
|
case (DungeonKind)4:// DungeonKind.relicDG:
|
|
TabRelicDungeon();
|
|
break;
|
|
};
|
|
}
|
|
else
|
|
{
|
|
switch ((DungeonKind)iSelectedTab)//던전을 격파하고 나서 레벨이 오를때 오른 레벨을 반영해준다.
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.GoldDG).lv;
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.EnhanceStoneDG).lv;
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.PetDG).lv;
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.AwakenStoneDG).lv;
|
|
break;
|
|
case (DungeonKind)4:// DungeonKind.relicDG:
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.relicDG).lv;
|
|
break;
|
|
};
|
|
|
|
switch ((DungeonKind)iSelectedTab)//수호령이나 훈련을 들렀다가 던전에 재진입했을때 던전 종류 세팅을 다시 해준다.
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
dungeonKind = DungeonKind.GoldDG;
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
dungeonKind = DungeonKind.EnhanceStoneDG;
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
dungeonKind = DungeonKind.PetDG;
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
dungeonKind = DungeonKind.AwakenStoneDG;
|
|
break;
|
|
case DungeonKind.relicDG:// DungeonKind.relicDG:
|
|
dungeonKind = DungeonKind.relicDG;
|
|
break;
|
|
};
|
|
|
|
//재사용 스크롤뷰 새로고침
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
}
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
autoProgressToggle.isOn = autoProgress;
|
|
if (bReLocalizeDg)
|
|
{
|
|
bReLocalizeDg = false;
|
|
escrDungeonSelect.Localize();
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
}
|
|
|
|
//escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
|
|
autoScrollPos();
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
public static void CloseDungeon()//던전을 닫을때
|
|
{
|
|
if (curMgr.iLoading > 0)
|
|
return;
|
|
curMgr.iLoading++;
|
|
|
|
curMgr.canvasUI.enabled = false;
|
|
curMgr.dungeonLeftPn.enabled = false;
|
|
GameUIMgr.SRightWindowClose();
|
|
GameUIMgr.SCloseLeftPanel();
|
|
GameUIMgr.SSetMainUiOn(true);
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
curMgr.iLoading--;
|
|
}
|
|
#endregion
|
|
|
|
public static void IsUnlock()//메인창에서 던전이 해금되었는지의 여부를 분간한다. 해금되어있지 않으면 버튼색을 어둡게 하고 자물쇠를 건다.
|
|
{
|
|
if (curMgr.isUnlockDungeon)
|
|
{
|
|
return;
|
|
}
|
|
|
|
curMgr.mainLock = curMgr.mainDungeonButton.transform.Find("Image").gameObject;
|
|
|
|
curMgr.mainLock.SetActive(!DataHandler.IsClearStage(DataHandler.GetDungeonTypeInfo(DungeonMgr.DungeonKind.GoldDG).openStage));
|
|
|
|
ColorBlock colorBlock = curMgr.mainDungeonButton.colors;
|
|
|
|
if (curMgr.mainLock.activeSelf)
|
|
{
|
|
colorBlock.normalColor = new Color(0.5f, 0.5f, 0.5f);
|
|
colorBlock.highlightedColor = new Color(0.5f, 0.5f, 0.5f);
|
|
colorBlock.selectedColor = new Color(0.5f, 0.5f, 0.5f);
|
|
colorBlock.pressedColor = new Color(0.5f, 0.5f, 0.5f);
|
|
|
|
curMgr.mainDungeonButton.colors = colorBlock;
|
|
}
|
|
else
|
|
{
|
|
curMgr.isUnlockDungeon = true;
|
|
|
|
colorBlock.normalColor = new Color(1f, 1f, 1f);
|
|
colorBlock.highlightedColor = new Color(1f, 1f, 1f);
|
|
colorBlock.selectedColor = new Color(1f, 1f, 1f);
|
|
colorBlock.pressedColor = new Color(1f, 1f, 1f);
|
|
|
|
curMgr.mainDungeonButton.colors = colorBlock;
|
|
}
|
|
|
|
}
|
|
|
|
#region Tab
|
|
public void TabGoldDungeon()//던전 항목의 각 탭을 클릭하면 던전의 종류와 레벨을 세팅하고 왼쪽에 있는 스크롤뷰의 정보를 갱신해준다.
|
|
{
|
|
iSelectedTab = 0;
|
|
|
|
dungeonKind = DungeonKind.GoldDG;
|
|
DungeonLevel = DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv;
|
|
DungeonBonus = (BuffMgr.Instance.GetDgGoldBonus() - dConst.RateMaxFloat) / dConst.RateMaxFloat;
|
|
//dungeonImage.sprite = dungeonImageKind[(int)dungeonKind];
|
|
dungeonImage.sprite = AddressableMgr.GetDungeonPanel((int)curMgr.dungeonKind);
|
|
dungeonName.text = LocalizationText.GetText("gold_dungeon_title");
|
|
DungeonPetSet.SetActive(false);
|
|
|
|
EnhancedUI.SmallList<int> goldDungeon = new EnhancedUI.SmallList<int>();
|
|
|
|
for (int i = 0; i < DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length; i++)
|
|
{
|
|
goldDungeon.Add(i + 1);
|
|
}
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
AllSelectDisable();
|
|
objDungeonSelect[iSelectedTab].SetActive(true);
|
|
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab) > 0 && DungeonLevel > 1);
|
|
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).lv;
|
|
selectPetArea = 0;
|
|
escrDungeonSelect.LoadDatas(goldDungeon);
|
|
|
|
SetRewardList();
|
|
SelectedBtn(0);
|
|
autoScrollPos();
|
|
|
|
}
|
|
|
|
public void TabEnhanceStoneDungeon()//강화석 던전 탭 터치
|
|
{
|
|
if (objDungeonLock[1].activeSelf)
|
|
{
|
|
GameUIMgr.SOpenToast(FormatString.TextOpenStageClear(DataHandler.GetDungeonTypeInfo(DungeonKind.EnhanceStoneDG).openStage));
|
|
return;
|
|
}
|
|
|
|
iSelectedTab = 1;
|
|
dungeonKind = DungeonKind.EnhanceStoneDG;
|
|
DungeonLevel = DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv;
|
|
DungeonBonus = (BuffMgr.Instance.GetDgReinStoneBonus() - dConst.RateMaxFloat) / dConst.RateMaxFloat;
|
|
//dungeonImage.sprite = dungeonImageKind[(int)dungeonKind];
|
|
dungeonImage.sprite = AddressableMgr.GetDungeonPanel((int)curMgr.dungeonKind);
|
|
dungeonName.text = LocalizationText.GetText("enhance_stone_dungeon_title");
|
|
DungeonPetSet.SetActive(false);
|
|
|
|
EnhancedUI.SmallList<int> eStoneDungeon = new EnhancedUI.SmallList<int>();
|
|
|
|
for (int i = 0; i < DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length; i++)
|
|
{
|
|
eStoneDungeon.Add(i + 1);
|
|
}
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
AllSelectDisable();
|
|
objDungeonSelect[iSelectedTab].SetActive(true);
|
|
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).lv;
|
|
selectPetArea = 0;
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab) > 0 && DungeonLevel > 1);
|
|
escrDungeonSelect.LoadDatas(eStoneDungeon);
|
|
|
|
SetRewardList();
|
|
SelectedBtn(1);
|
|
autoScrollPos();
|
|
}
|
|
|
|
public void TabPetDungeon()//펫 던전 탭 터치
|
|
{
|
|
if (objDungeonLock[2].activeSelf)
|
|
{
|
|
GameUIMgr.SOpenToast(FormatString.TextOpenStageClear(DataHandler.GetDungeonTypeInfo(DungeonKind.PetDG).openStage));
|
|
return;
|
|
}
|
|
|
|
iSelectedTab = 2;
|
|
dungeonKind = DungeonKind.PetDG;
|
|
DungeonLevel = DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv;
|
|
DungeonBonus = (BuffMgr.Instance.GetDgPetBonus() - dConst.RateMaxFloat) / dConst.RateMaxFloat;
|
|
//dungeonImage.sprite = dungeonImageKind[(int)dungeonKind];
|
|
dungeonImage.sprite = AddressableMgr.GetDungeonPanel((int)curMgr.dungeonKind);
|
|
dungeonName.text = LocalizationText.GetText("pet_dungeon_title");
|
|
DungeonPetSet.SetActive(true);
|
|
|
|
SetPetArea(DungeonLevel);
|
|
//dungeonPetLevel.text = FormatString.StringFormat(LocalizationText.GetText("dungeon_pet_level"), (DungeonLevel + 1).ToString());
|
|
|
|
EnhancedUI.SmallList<int> petDungeon = new EnhancedUI.SmallList<int>();
|
|
|
|
//for (int i = 0; i < DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length; i++)
|
|
//{
|
|
// petDungeon.Add(i + 1);
|
|
//}
|
|
|
|
for (int i = 0; i < DataHandler.Const.dungeonPetStageMax; i++)
|
|
{
|
|
petDungeon.Add(i + 1);
|
|
}
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
if (DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv < DataHandler.GetDungeonTypeInfo(curMgr.dungeonKind).diffs.Length)
|
|
SetPetArea((DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv - 1) / DataHandler.Const.dungeonPetStageMax);
|
|
else
|
|
SetPetArea((DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv - 2) / DataHandler.Const.dungeonPetStageMax);
|
|
AllSelectDisable();
|
|
objDungeonSelect[iSelectedTab].SetActive(true);
|
|
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).lv;
|
|
selectPetArea = (Mathf.Min(DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).lv, DataHandler.GetDungeonTypeInfo(curMgr.dungeonKind).diffs.Length) - 1) / 10;
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab) > 0 && DungeonLevel > 1);
|
|
escrDungeonSelect.LoadDatas(petDungeon);
|
|
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
|
|
SetRewardList();
|
|
SelectedBtn(2);
|
|
autoScrollPos();
|
|
}
|
|
|
|
public void TabAwakenStoneDungeon()//각성석 던전 탭 터치
|
|
{
|
|
if (objDungeonLock[3].activeSelf)
|
|
{
|
|
GameUIMgr.SOpenToast(FormatString.TextOpenStageClear(DataHandler.GetDungeonTypeInfo(DungeonKind.AwakenStoneDG).openStage));
|
|
return;
|
|
}
|
|
|
|
iSelectedTab = 3;
|
|
dungeonKind = DungeonKind.AwakenStoneDG;
|
|
DungeonLevel = DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv;
|
|
DungeonBonus = (BuffMgr.Instance.GetDgAwakenStoneBonus() - dConst.RateMaxFloat) / dConst.RateMaxFloat;
|
|
//dungeonImage.sprite = dungeonImageKind[(int)dungeonKind];
|
|
dungeonImage.sprite = AddressableMgr.GetDungeonPanel((int)curMgr.dungeonKind);
|
|
dungeonName.text = LocalizationText.GetText("awaken_stone_dungeon_title");
|
|
DungeonPetSet.SetActive(false);
|
|
|
|
EnhancedUI.SmallList<int> aStoneDungeon = new EnhancedUI.SmallList<int>();
|
|
|
|
for (int i = 0; i < DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length; i++)
|
|
{
|
|
aStoneDungeon.Add(i + 1);
|
|
}
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
AllSelectDisable();
|
|
objDungeonSelect[iSelectedTab].SetActive(true);
|
|
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).lv;
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab) > 0 && DungeonLevel > 1);
|
|
escrDungeonSelect.LoadDatas(aStoneDungeon);
|
|
|
|
SetRewardList();
|
|
SelectedBtn(3);
|
|
autoScrollPos();
|
|
}
|
|
|
|
public void TabRelicDungeon()//유물석 던전 탭 터치
|
|
{
|
|
if (objDungeonLock[4].activeSelf)
|
|
{
|
|
GameUIMgr.SOpenToast(FormatString.TextOpenStageClear(DataHandler.GetDungeonTypeInfo(DungeonKind.relicDG).openStage));
|
|
return;
|
|
}
|
|
|
|
iSelectedTab = (int)DungeonKind.relicDG;
|
|
dungeonKind = DungeonKind.relicDG;
|
|
DungeonLevel = DataHandler.GetPlayerDungeonInfoKind(curMgr.dungeonKind).lv;
|
|
//DungeonBonus = (BuffMgr.Instance.GetDgAwakenStoneBonus() - dConst.RateMaxFloat) / dConst.RateMaxFloat;
|
|
//dungeonImage.sprite = dungeonImageKind[(int)dungeonKind];
|
|
dungeonImage.sprite = AddressableMgr.GetDungeonPanel((int)curMgr.dungeonKind);
|
|
dungeonName.text = LocalizationText.GetText("mask_dungeon_title");
|
|
DungeonPetSet.SetActive(false);
|
|
|
|
EnhancedUI.SmallList<int> aStoneDungeon = new EnhancedUI.SmallList<int>();
|
|
|
|
for (int i = 0; i < DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length; i++)
|
|
{
|
|
aStoneDungeon.Add(i + 1);
|
|
}
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
AllSelectDisable();
|
|
objDungeonSelect[4].SetActive(true);
|
|
|
|
selectDungeonLv = DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).lv;
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount(dungeonKind) > 0 && DungeonLevel > 1);
|
|
escrDungeonSelect.LoadDatas(aStoneDungeon);
|
|
|
|
SetRewardList();
|
|
SelectedBtn(6);
|
|
autoScrollPos();
|
|
}
|
|
|
|
public void autoScrollPos()//현재 던전 레벨에 맞춰서 자동으로 스크롤이 이뤄진다.
|
|
{
|
|
isFirst = false;
|
|
|
|
SetRewardList();
|
|
switch (dungeonKind)
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
escrDungeonSelect.scroller.ScrollPosition = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.GoldDG).lv < 2
|
|
? 0 : (DataHandler.GetPlayerDungeonInfoKind(DungeonKind.GoldDG).lv-1) * 80;
|
|
|
|
SelectedBtn(0);
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
escrDungeonSelect.scroller.ScrollPosition = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.EnhanceStoneDG).lv < 2
|
|
? 0 : (DataHandler.GetPlayerDungeonInfoKind(DungeonKind.EnhanceStoneDG).lv - 1) * 80;
|
|
|
|
SelectedBtn(1);
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
SetPetArea(DataHandler.GetPlayerDungeonInfoKind(DungeonKind.PetDG).lv / 10);
|
|
escrDungeonSelect.scroller.ScrollPosition = (DataHandler.GetPlayerDungeonInfoKind(DungeonKind.PetDG).lv - 1) % 10 + 1 < 2
|
|
? 0 : ((DataHandler.GetPlayerDungeonInfoKind(DungeonKind.PetDG).lv - 1) % 10 + 1) * 80 - 80;
|
|
|
|
SelectedBtn(2);
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
escrDungeonSelect.scroller.ScrollPosition = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.AwakenStoneDG).lv < 2
|
|
? 0 : (DataHandler.GetPlayerDungeonInfoKind(DungeonKind.AwakenStoneDG).lv - 1) * 80;
|
|
|
|
SelectedBtn(3);
|
|
break;
|
|
case DungeonKind.relicDG:
|
|
escrDungeonSelect.scroller.ScrollPosition = DataHandler.GetPlayerDungeonInfoKind(DungeonKind.relicDG).lv < 2
|
|
? 0 : (DataHandler.GetPlayerDungeonInfoKind(DungeonKind.relicDG).lv - 1) * 80;
|
|
|
|
SelectedBtn(6);
|
|
break;
|
|
}
|
|
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
}
|
|
|
|
public void SelectedBtn(int inum)//선택되어있는 항목 재선택을 막음(한 항목을 연속으로 터치하면 스크롤뷰 자동 옮기는 부분에서 문제가 발생함)
|
|
{
|
|
int select;
|
|
switch (inum)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
select = inum;
|
|
break;
|
|
case 6:
|
|
select = 4;
|
|
break;
|
|
default:
|
|
select = -1;
|
|
break;
|
|
}
|
|
if (select < 0)
|
|
return;
|
|
|
|
for(int i = 0; i<btnTabs.Length; i++)
|
|
{
|
|
if (i == select)
|
|
btnTabs[i].interactable = false;
|
|
else
|
|
btnTabs[i].interactable = true;
|
|
}
|
|
}
|
|
|
|
void AllSelectDisable()//던전 선택할때 나오는 하얀색 테두리 비활성화.
|
|
{
|
|
for (int i = 0; i < objDungeonSelect.Length; i++)
|
|
{
|
|
objDungeonSelect[i].SetActive(false);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Dungeon
|
|
public static void SetDungeonLevel(int DGLevel)
|
|
{
|
|
curMgr.DungeonLevel = DGLevel;
|
|
}
|
|
|
|
public static int GetDungeonLevel()
|
|
{
|
|
return curMgr.DungeonLevel;
|
|
}
|
|
|
|
public static void GetSuccessOrFail(bool success)//던전 성공과 실패여부를 서버에 통신함(주석은 먼 옛날 서버가 없었을 적 코드)
|
|
{
|
|
if (success)//성공했을때. 소탕시에는 여기를 거치지 않음
|
|
{
|
|
curMgr.ADungeonTrySv(curMgr.DungeonLevel, true, false, 1, curMgr.DungeonBonus);
|
|
}
|
|
else//실패했을때
|
|
{
|
|
curMgr.ADungeonTrySv(curMgr.DungeonLevel, false, false, 1, curMgr.DungeonBonus);
|
|
}
|
|
|
|
if (!curMgr.autoProgress || DataHandler.GetPlayerDungeonInfoKind(GetDungeonKind()).ticket <= 1) //자동진행중이 아닐때와 티켓 갯수가 1개 이하일때는 자동진행이 풀림
|
|
{
|
|
GameUIMgr.SCloseMenu();
|
|
GameUIMgr.SOnOffDungeonButton(true);
|
|
}
|
|
|
|
GameUIMgr.SReturnToPreservePreset();
|
|
MissionMgr.SOpenMission();
|
|
}
|
|
#endregion
|
|
|
|
public static void SPresetSetting()
|
|
{
|
|
curMgr.PresetSetting();
|
|
}
|
|
|
|
private void PresetSetting()//던전별 프리셋 저장.
|
|
{
|
|
int idgtype = (int)GetDungeonKind();
|
|
|
|
bool isDirty = false;
|
|
if (idgtype >= DataHandler.PlayDgPreset.dgPetPreset.Length)
|
|
{
|
|
Array.Resize(ref DataHandler.PlayDgPreset.dgPetPreset, (int)DungeonKind.total);
|
|
isDirty = true;
|
|
}
|
|
|
|
if (idgtype >= DataHandler.PlayDgPreset.dgSkillPreset.Length)
|
|
{
|
|
Array.Resize(ref DataHandler.PlayDgPreset.dgSkillPreset, (int)DungeonKind.total);
|
|
isDirty = true;
|
|
}
|
|
|
|
if (idgtype >= DataHandler.PlayDgPreset.dgAwakenPreset.Length)
|
|
{
|
|
Array.Resize(ref DataHandler.PlayDgPreset.dgAwakenPreset, (int)DungeonKind.total);
|
|
isDirty = true;
|
|
}
|
|
|
|
if(isDirty)
|
|
DataHandler.PlayDgPreset.Save();
|
|
|
|
dungeonSkillPreset = DataHandler.PlayDgPreset.dgSkillPreset;
|
|
dungeonPetPreset = DataHandler.PlayDgPreset.dgPetPreset;
|
|
dungeonAwakenPreset = DataHandler.PlayDgPreset.dgAwakenPreset;
|
|
|
|
GameUIMgr.SOpenPopupPreset(dungeonSkillPreset[idgtype], dungeonPetPreset[idgtype], dungeonAwakenPreset[idgtype], DungeonStart);
|
|
}
|
|
|
|
public void DungeonStart()//던전을 시작하면 프리셋이 던전 전용으로 맞춰진다. 그다음 레벨을 세팅하고 던전을 비활성화하고 던전을 시작한다.
|
|
{
|
|
GameUIMgr.SPreservePreset(DataHandler.PlayData.usePreset, DataHandler.PlayData.usePetPreset, DataHandler.PlayAwaken.usePreset);
|
|
GameUIMgr.SSetActiveHotTime(false);
|
|
int idgtype = (int)GetDungeonKind();
|
|
|
|
int iskillpreset = GameUIMgr.SGetSkillPreset();
|
|
dungeonSkillPreset[idgtype] = iskillpreset;
|
|
if (iskillpreset != DataHandler.PlayData.usePreset)
|
|
{
|
|
DataHandler.PlayData.usePreset = iskillpreset;
|
|
SkillMgr.SResetPreset();
|
|
}
|
|
|
|
int ipetpreset = GameUIMgr.SGetPetPreset();
|
|
dungeonPetPreset[idgtype] = ipetpreset;
|
|
if (ipetpreset != DataHandler.PlayData.usePetPreset)
|
|
{
|
|
DataHandler.PlayData.usePetPreset = ipetpreset;
|
|
BattleMgr.SSetPet(ipetpreset);
|
|
DataHandler.CalcPetEquipExtra(ipetpreset);
|
|
PetMgr.SResetPreset();
|
|
}
|
|
|
|
int iawakenpreset = GameUIMgr.SGetAwakenPreset();
|
|
dungeonAwakenPreset[idgtype] = iawakenpreset;
|
|
if (iawakenpreset != DataHandler.PlayAwaken.usePreset)
|
|
{
|
|
DataHandler.PlayAwaken.usePreset = iawakenpreset;
|
|
EnhanceMgr.StartSetAwakenPreset();
|
|
EnhanceMgr.SResetAwakenPreset();
|
|
}
|
|
|
|
DataHandler.PlayDgPreset.Save();
|
|
BattleMgr.SetBattleTypeDungeon(idgtype);
|
|
BattleMgr.NoRewardRepeatDungeon();
|
|
|
|
GameUIMgr.SCloseMenu();
|
|
GameUIMgr.SOnOffDungeonButton(false);
|
|
DungeonMgr.SetDungeonLevel(DungeonLevel);
|
|
BattleMgr.DungeonStart(DungeonLevel);
|
|
if (!autoProgress || canvasUI.isActiveAndEnabled)
|
|
{
|
|
DungeonMgr.CloseDungeon();
|
|
EnhanceMgr.CloseEnhance();
|
|
GuardianMgr.SGuardianWindowOff();
|
|
}
|
|
|
|
MissionMgr.SCloseMission();
|
|
}
|
|
|
|
public void AutoProgressOnOff()//자동진행 토글
|
|
{
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
if (autoProgress)
|
|
{
|
|
autoProgressToggle.isOn = false;
|
|
autoProgress = false;
|
|
}
|
|
else
|
|
{
|
|
|
|
autoProgressToggle.isOn = true;
|
|
autoProgress = true;
|
|
}
|
|
}
|
|
|
|
public void SetActiveAutoToggle(bool active)//자동진행 버튼의 활성화 여부를 결정한다. 수호령과 각성 던전은 자동진행이 없다.
|
|
{
|
|
if(autoProgressToggle != null)
|
|
autoProgressToggle.gameObject.SetActive(active);
|
|
}
|
|
|
|
//펫은 10 스테이지 단위로 던전이 끊긴다. 그걸 페이징하는 부분.
|
|
#region PetStage
|
|
|
|
private void SetPetArea(int iarea)
|
|
{
|
|
if (iarea == iSelectArea)
|
|
{
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
return;
|
|
}
|
|
iSelectArea = iarea;
|
|
escrDungeonSelect.SetType(iSelectArea);
|
|
btnPrevLevel.interactable = iSelectArea > 0;
|
|
btnNextLevel.interactable = iSelectArea < (DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length / DataHandler.Const.dungeonPetStageMax) - 1;
|
|
dungeonPetLevel.text = FormatString.StringFormat(LocalizationText.GetText("dungeon_pet_level"), (iSelectArea + 1).ToString());
|
|
}
|
|
|
|
// 이전 지역.
|
|
public void BtnPrevArea()
|
|
{
|
|
if (iLoading > 0 || iSelectArea <= 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
SetPetArea(iSelectArea - 1);
|
|
selectPetArea--;
|
|
dungeonPetLevel.text = FormatString.StringFormat(LocalizationText.GetText("dungeon_pet_level"), (iSelectArea + 1).ToString());
|
|
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
iLoading--;
|
|
}
|
|
|
|
// 다음 지역.
|
|
public void BtnNextArea()
|
|
{
|
|
if (iLoading > 0 || iSelectArea >= (DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length / DataHandler.Const.dungeonPetStageMax) - 1)
|
|
return;
|
|
iLoading++;
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
SetPetArea(iSelectArea + 1);
|
|
selectPetArea++;
|
|
dungeonPetLevel.text = FormatString.StringFormat(LocalizationText.GetText("dungeon_pet_level"), (iSelectArea + 1).ToString());
|
|
|
|
escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
iLoading--;
|
|
}
|
|
#endregion
|
|
|
|
//잠재능력이 해금될때 여기서 해금 통신을 한다.
|
|
#region LockOnOff
|
|
nIdLvInfo dataSlot = null;
|
|
|
|
public void AwakenSlotUnlock()
|
|
{
|
|
dataSlot = new nIdLvInfo();
|
|
|
|
dataSlot.awaken = DataHandler.GetServerAwakenSlots().awaken;
|
|
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, IVServerFormat.UrlApi.GetUrl(IVServerFormat.UrlApi.AwakenUp), typeof(nCharAwakenReturn), AAwakenUnlockSucc, AAwakenUnlockFail, DataHandler.GetServerAwakenSlots(), true);
|
|
}
|
|
|
|
//각성 슬롯 통신 실패
|
|
private void AAwakenUnlockFail(IVServerFormat.SvError error, object request)
|
|
{
|
|
DataHandler.GetServerAwakenSlots().awaken--;
|
|
}
|
|
|
|
// 각성 슬롯 통신 성공.
|
|
private void AAwakenUnlockSucc(object result, object request)
|
|
{
|
|
nCharAwakenReturn data = result as nCharAwakenReturn;
|
|
if (data == null)
|
|
{
|
|
AAwakenUnlockFail(new IVServerFormat.SvError(IVServerFormat.eErrorCode.NULL_OR_EMPTY), request);
|
|
return;
|
|
}
|
|
|
|
DataHandler.GetServerAwakenSlots().awaken = data.playAwaken.awaken;
|
|
|
|
EnhanceMgr.RecalculateRerollCost();
|
|
CoverCamera.Release();
|
|
}
|
|
|
|
#endregion
|
|
|
|
//던전 목록 아래쪽의 보상 세팅
|
|
public void SetRewardList()
|
|
{
|
|
for (int i = 0; i < rewardItem.Length; i++)
|
|
{
|
|
rewardItem[i].gameObject.SetActive(false);
|
|
}
|
|
|
|
nReward[] reward = DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[Mathf.Min(DungeonLevel - 1, DataHandler.GetDungeonTypeInfo(dungeonKind).diffs.Length - 1)].rewards;
|
|
|
|
for (int i = 0; i < reward.Length; i++)
|
|
{
|
|
rewardItem[i].gameObject.SetActive(true);
|
|
|
|
rewardItem[i].SetGoods(reward[i].rewardType, reward[i].rewardId, reward[i].rewardCount);
|
|
|
|
if (reward[i].rewardCount <= 0)
|
|
{
|
|
rewardItem[i].gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
int selectDungeonLv = 1;
|
|
int selectPetArea = 0;
|
|
public static int GetSelectDgLv()
|
|
{
|
|
return curMgr.selectDungeonLv;
|
|
}
|
|
public static int GetSelectPetArea()
|
|
{
|
|
return curMgr.selectPetArea;
|
|
}
|
|
|
|
//특정 레벨의 보상 목록. 왼쪽 던전 레벨을 누르면 사용된다.
|
|
public static void SetRewardList(int num)
|
|
{
|
|
curMgr.selectDungeonLv = num;
|
|
|
|
for (int i = 0; i < curMgr.rewardItem.Length; i++)
|
|
{
|
|
curMgr.rewardItem[i].gameObject.SetActive(false);
|
|
}
|
|
|
|
nReward[] reward = DataHandler.GetDungeonTypeInfo(curMgr.dungeonKind).diffs[num - 1].rewards;
|
|
|
|
for (int i = 0; i < reward.Length; i++)
|
|
{
|
|
curMgr.rewardItem[i].gameObject.SetActive(true);
|
|
|
|
curMgr.rewardItem[i].SetGoods(reward[i].rewardType, reward[i].rewardId, reward[i].rewardCount);
|
|
|
|
if (reward[i].rewardCount <= 0)
|
|
{
|
|
curMgr.rewardItem[i].gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
}
|
|
|
|
public static int GetDungeonBg()
|
|
{
|
|
return DataHandler.GetDungeonTypeInfo(curMgr.dungeonKind).bgId;
|
|
}
|
|
|
|
public static void OnOffBtnDungeonOut(bool onoff)
|
|
{
|
|
curMgr.btnDungeonOut.interactable = onoff;
|
|
}
|
|
|
|
public static bool isForceOut { get; set; } = false;
|
|
|
|
public void DungeonOutWindow()//던전 진행 도중 나가기 버튼을 누르면 물어보는 창이 뜬다.
|
|
{
|
|
isForceOut = true;
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
GameUIMgr.SOpenPopup2Button(LocalizationText.GetText("msg_dungeonout"), DungeonForceOut);
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
}
|
|
|
|
//던전 진행 도중에 나갈 때 사용된다.
|
|
public void DungeonForceOut()
|
|
{
|
|
if (BattleMgr.doNotInterupt)
|
|
{
|
|
GameUIMgr.SOpenToast(LocalizationText.GetText("donot_interupt"));
|
|
|
|
return;
|
|
}
|
|
if (GetDungeonKind() == DungeonKind.GuardianDG)
|
|
GuardianMgr.setActiveRobot(false);
|
|
|
|
isForceOut = false;
|
|
|
|
GameUIMgr.SOpenMenu();
|
|
GameUIMgr.SOnOffDungeonButton(true);
|
|
BattleMgr.SGoToStage(DataHandler.PlayData.curStage / 100, DataHandler.PlayData.curStage % 100);
|
|
GameUIMgr.SSetActiveHotTime(true);
|
|
BattleMgr.Instance.ResetSkillCooltime();
|
|
|
|
GameUIMgr.SReturnToPreservePreset();
|
|
//MissionMgr.SRefreshMission();
|
|
MissionMgr.SOpenMission();
|
|
}
|
|
|
|
//던전 소탕을 할 때 사용되는 부분. 주로 소탕 횟수를 지정하는 버튼 기능(+ - Max Min)이 있다.
|
|
#region Skip
|
|
public void WindowTicketConsume()
|
|
{
|
|
if (iSelectedTab < 0)
|
|
return;
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
iSelectedCount = 1;
|
|
|
|
SoundMgr.PlaySfx(SoundName.BtnPress);
|
|
|
|
switch (iSelectedTab)
|
|
{
|
|
case (int)DungeonKind.PetDG:
|
|
GameUIMgr.SOpenPopupItemUse(new nGoods(cGoods.TDgTicketGold + iSelectedTab - 1, 1, DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab)),
|
|
TicketConsumeSub, TicketConsumeAdd, TicketConsumeMin, TicketConsumeMax, TicketConsume, null,
|
|
FormatString.StringFormat(LocalizationText.GetText("dungeon_skip_level"), DungeonLevel - 1), LocalizationText.GetText("all_use"), LocalizationText.GetText(Global.STR_CANCEL));
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
break;
|
|
case (int)DungeonKind.EnhanceStoneDG:
|
|
GameUIMgr.SOpenPopupItemUse(new nGoods(cGoods.TDgTicketGold + iSelectedTab + 1, 1, DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab)),
|
|
TicketConsumeSub, TicketConsumeAdd, TicketConsumeMin, TicketConsumeMax, TicketConsume, null,
|
|
FormatString.StringFormat(LocalizationText.GetText("dungeon_skip_level"), DungeonLevel - 1), LocalizationText.GetText("all_use"), LocalizationText.GetText(Global.STR_CANCEL));
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
break;
|
|
case (int)DungeonKind.relicDG:
|
|
GameUIMgr.SOpenPopupItemUse(new nGoods(cGoods.TDgTicketGold + iSelectedTab - 2, 1, DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab)),
|
|
TicketConsumeSub, TicketConsumeAdd, TicketConsumeMin, TicketConsumeMax, TicketConsume, null,
|
|
FormatString.StringFormat(LocalizationText.GetText("dungeon_skip_level"), DungeonLevel - 1), LocalizationText.GetText("all_use"), LocalizationText.GetText(Global.STR_CANCEL));
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
break;
|
|
default:
|
|
GameUIMgr.SOpenPopupItemUse(new nGoods(cGoods.TDgTicketGold + iSelectedTab, 1, DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab)),
|
|
TicketConsumeSub, TicketConsumeAdd, TicketConsumeMin, TicketConsumeMax, TicketConsume, null,
|
|
FormatString.StringFormat(LocalizationText.GetText("dungeon_skip_level"), DungeonLevel - 1), LocalizationText.GetText("all_use"), LocalizationText.GetText(Global.STR_CANCEL));
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
break;
|
|
}
|
|
|
|
//GameUIMgr.SOpenPopupItemUse(new nGoods(cGoods.TDgTicketGold + iSelectedTab, 1, DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab)),
|
|
// TicketConsumeSub, TicketConsumeAdd, TicketConsumeMin, TicketConsumeMax, TicketConsume, null,
|
|
// FormatString.StringFormat(LocalizationText.GetText("dungeon_skip_level"), DungeonLevel - 1), LocalizationText.GetText("all_use"), LocalizationText.GetText(Global.STR_CANCEL));
|
|
//GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
//int iSelectedId = -1;
|
|
int iSelectedCount = 0;
|
|
|
|
// 소모품 사용 수 감소.
|
|
private void TicketConsumeSub()
|
|
{
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
if (iSelectedCount <= 1)
|
|
{
|
|
iLoading--;
|
|
return;
|
|
}
|
|
iSelectedCount--;
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
// 소모품 사용 수 증가.
|
|
private void TicketConsumeAdd()
|
|
{
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
int imaxcount = DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab);
|
|
if (iSelectedCount >= imaxcount)
|
|
{
|
|
iLoading--;
|
|
return;
|
|
}
|
|
iSelectedCount++;
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
// 소모품 사용 수 최소.
|
|
private void TicketConsumeMin()
|
|
{
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
if (iSelectedCount <= 1)
|
|
{
|
|
iLoading--;
|
|
return;
|
|
}
|
|
iSelectedCount = 1;
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
// 소모품 사용 수 최대.
|
|
private void TicketConsumeMax()
|
|
{
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
int imaxcount = DataHandler.GetDungeonTicketCount((DungeonKind)iSelectedTab);
|
|
if (iSelectedCount >= imaxcount)
|
|
{
|
|
iLoading--;
|
|
return;
|
|
}
|
|
iSelectedCount = imaxcount;
|
|
GameUIMgr.SSetPopupItemUseCount(iSelectedCount, iSelectedCount);
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
// 소모품 사용하기.
|
|
private void TicketConsume()
|
|
{
|
|
if (iLoading > 0)
|
|
return;
|
|
iLoading++;
|
|
|
|
ADungeonTrySv(curMgr.DungeonLevel - 1, true, true, iSelectedCount, curMgr.DungeonBonus);
|
|
}
|
|
#endregion
|
|
|
|
IVDataFormat.nDungeonTryInfo tryData = null;
|
|
|
|
//던전이 성공했는지 실패했는지 혹은 소탕한건지를 저장해서 서버통신을 한다.
|
|
#region Server
|
|
public void ADungeonTrySv(int lv, bool clear, bool isskip,int skipcnt,float ibonus)
|
|
{
|
|
CoverCamera.Hold();
|
|
int idgtype = (int)GetDungeonKind();
|
|
if (isskip == true)//소탕기능을 사용했다면 바로 서버와 통신한다.
|
|
{
|
|
tryData = new nDungeonTryInfo(lv, clear, isskip, skipcnt, dungeonSkillPreset[idgtype], dungeonPetPreset[idgtype], dungeonAwakenPreset[idgtype], ibonus);
|
|
}
|
|
else
|
|
{
|
|
switch (dungeonKind)//소탕기능을 사용하지 않았다면 종류별로 다르게 통신을 시도한다. 여기서는 통신에 사용할 데이터를 할당한다.
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
case DungeonKind.EnhanceStoneDG:
|
|
case DungeonKind.PetDG:
|
|
case DungeonKind.AwakenStoneDG:
|
|
case DungeonKind.relicDG:
|
|
tryData = new nDungeonTryInfo(lv, clear, isskip, skipcnt, dungeonSkillPreset[idgtype], dungeonPetPreset[idgtype], dungeonAwakenPreset[(int)DungeonMgr.GetDungeonKind()], ibonus);
|
|
break;
|
|
case DungeonKind.AwakenDG:
|
|
SetActiveAutoToggle(false);
|
|
tryData = new nDungeonTryInfo(lv, clear, dungeonSkillPreset[idgtype], dungeonPetPreset[idgtype], dungeonAwakenPreset[idgtype]);
|
|
break;
|
|
case DungeonKind.GuardianDG:
|
|
SetActiveAutoToggle(false);
|
|
tryData = new nDungeonTryInfo(lv, GuardianMgr.GetGuardianId(), clear, dungeonSkillPreset[idgtype], dungeonPetPreset[idgtype], dungeonAwakenPreset[idgtype]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (dungeonKind)//할당한 데이터를 통해 여기서 서버 통신을 시도한다.
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonGold), typeof(nDungeonResultReturn), ADungeonTrySucc, ADungeonTryFail, tryData, true);
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonReinStone), typeof(nDungeonResultReturn), ADungeonTrySucc, ADungeonTryFail, tryData, true);
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonPet), typeof(nDungeonResultReturn), ADungeonTrySucc, ADungeonTryFail, tryData, true);
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonAwakenStone), typeof(nDungeonResultReturn), ADungeonTrySucc, ADungeonTryFail, tryData, true);
|
|
break;
|
|
case DungeonKind.AwakenDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonAwaken), typeof(nDungeonResultReturn), ADungeonTrySucc, ADungeonTryFail, tryData, true);
|
|
break;
|
|
case DungeonKind.GuardianDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonGuardian), typeof(nDungeonResultReturn), AGuardianDungeonTrySucc, AGuardianDungeonTryFail, tryData, true);
|
|
break;
|
|
case DungeonKind.relicDG:
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonRelic), typeof(nDungeonResultReturn), ADungeonTrySucc, ADungeonTryFail, tryData, true);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
private void ADungeonTryFail(SvError error, object request)
|
|
{
|
|
BattleMgr.ChangeBattleTypeNormal();
|
|
CoverCamera.Release();
|
|
iLoading--;
|
|
}
|
|
|
|
// 던전 성패 통신 성공.
|
|
private void ADungeonTrySucc(object result, object request)
|
|
{
|
|
nDungeonResultReturn data = result as nDungeonResultReturn;
|
|
if (data == null)
|
|
{
|
|
ADungeonTryFail(new SvError(eErrorCode.NULL_OR_EMPTY), request);
|
|
return;
|
|
}
|
|
|
|
GuardianMgr.setActiveRobot(false);
|
|
|
|
if (tryData.clear)
|
|
{
|
|
if (!tryData.isSkip)//소탕하지 않았을때
|
|
{
|
|
switch (dungeonKind)
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
BattleMgr.GetClearDungeonReward(DataHandler.GetDungeonTypeInfo(DungeonKind.GoldDG).diffs[curMgr.DungeonLevel - 1].rewards);
|
|
DataHandler.PlayDgGold = data.playDgGold;
|
|
curMgr.SetRewardList();
|
|
DungeonLevel++;
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
BattleMgr.GetClearDungeonReward(DataHandler.GetDungeonTypeInfo(DungeonKind.EnhanceStoneDG).diffs[curMgr.DungeonLevel - 1].rewards);
|
|
DataHandler.SetEnhanceStone(data.playCurrency.gearReinStone);
|
|
DataHandler.PlayDgReinStone = data.playDgReinStone;
|
|
curMgr.SetRewardList();
|
|
DungeonLevel++;
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
BattleMgr.GetClearDungeonReward(DataHandler.GetDungeonTypeInfo(DungeonKind.PetDG).diffs[curMgr.DungeonLevel - 1].rewards);
|
|
DataHandler.SetPudding(data.playCurrency.pudding);
|
|
DataHandler.PlayDgPet = data.playDgPet;
|
|
curMgr.SetRewardList();
|
|
DungeonLevel++;
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
BattleMgr.GetClearDungeonReward(DataHandler.GetDungeonTypeInfo(DungeonKind.AwakenStoneDG).diffs[curMgr.DungeonLevel - 1].rewards);
|
|
DataHandler.SetAwakenStone(data.playCurrency.gearAwakenStone);
|
|
DataHandler.PlayDgAwakenStone = data.playDgAwakenStone;
|
|
curMgr.SetRewardList();
|
|
DungeonLevel++;
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.AwakenDG:
|
|
BattleMgr.AwakenSuccessWindowEnable();
|
|
DataHandler.PlayAwaken = data.playAwaken;
|
|
DataHandler.PlayDgAwaken = data.playDgAwaken;
|
|
SetActiveAutoToggle(true);
|
|
if (curMgr.DungeonLevel <= 6)
|
|
DataHandler.AwakenSlotUnlock(curMgr.DungeonLevel);
|
|
|
|
//curMgr.AwakenSlotUnlock();
|
|
EnhanceMgr.RecalculateRerollCost();
|
|
//GameUIMgr.SOpenPopup1Button(FormatString.StringFormat(LocalizationText.GetText("dungeon_clear"), curMgr.DungeonLevel.ToString()));
|
|
//if(GetDungeonLevel() != 1)
|
|
BuffMgr.Instance.ChangeAwakenDungeonStat(GetDungeonLevel());//
|
|
EnhanceMgr.SCalcMyInfoStat();
|
|
|
|
break;
|
|
case DungeonKind.relicDG:
|
|
BattleMgr.GetClearDungeonReward(DataHandler.GetDungeonTypeInfo(DungeonKind.relicDG).diffs[curMgr.DungeonLevel - 1].rewards);
|
|
DataHandler.SetGoods(data.playCurrency, false);
|
|
DataHandler.PlayDgRelic = data.playDgRelic;
|
|
curMgr.SetRewardList();
|
|
DungeonLevel++;
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (autoProgress && IsDungeonProgressOK(0) && dungeonKind != DungeonKind.AwakenDG)
|
|
{
|
|
DungeonStart();
|
|
}
|
|
else
|
|
{
|
|
BattleMgr.ChangeBattleTypeNormal();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int noreward = 0;
|
|
int norewardfront = 0;
|
|
for(int i=0;i< DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[curMgr.DungeonLevel - 2].rewards.Length; i++)
|
|
{
|
|
if(DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[curMgr.DungeonLevel - 2].rewards[i].rewardCount == 0)
|
|
{
|
|
noreward++;
|
|
}
|
|
}
|
|
|
|
nGoods[] reward = new nGoods[DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[curMgr.DungeonLevel - 2].rewards.Length - noreward];
|
|
|
|
for (int i = 0; i < DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[curMgr.DungeonLevel - 2].rewards.Length; i++)
|
|
{
|
|
if (DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[curMgr.DungeonLevel - 2].rewards[i].rewardCount != 0)
|
|
{
|
|
nReward rewarditem = DataHandler.GetDungeonTypeInfo(dungeonKind).diffs[curMgr.DungeonLevel - 2].rewards[i];
|
|
//rewarditem.rewardCount *= iSelectedCount;
|
|
reward[i - norewardfront] = new nGoods(rewarditem);
|
|
}
|
|
else
|
|
{
|
|
norewardfront++;
|
|
}
|
|
}
|
|
|
|
switch (dungeonKind)
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
BattleMgr.GetClearDungeonSkipReward(DataHandler.GetDungeonTypeInfo(DungeonKind.GoldDG).diffs[curMgr.DungeonLevel - 2].rewards, iSelectedCount,tryData.bonus);
|
|
DataHandler.PlayDgGold = data.playDgGold;
|
|
reward[0].propertyCount = reward[0].propertyCount * (int)((tryData.bonus + 1.0f) * dConst.RateMaxFloat) / dConst.RateMaxBi * iSelectedCount;
|
|
GameUIMgr.SOpenPopupGoods(reward);
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
BattleMgr.GetClearDungeonSkipReward(DataHandler.GetDungeonTypeInfo(DungeonKind.EnhanceStoneDG).diffs[curMgr.DungeonLevel - 2].rewards, iSelectedCount);
|
|
DataHandler.SetEnhanceStone(data.playCurrency.gearReinStone);
|
|
DataHandler.PlayDgReinStone = data.playDgReinStone;
|
|
reward[0].propertyCount = reward[0].propertyCount * (int)((tryData.bonus + 1.0f) * dConst.RateMaxFloat) / dConst.RateMaxBi * iSelectedCount;
|
|
GameUIMgr.SOpenPopupGoods(reward);
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
BattleMgr.GetClearDungeonSkipReward(DataHandler.GetDungeonTypeInfo(DungeonKind.PetDG).diffs[curMgr.DungeonLevel - 2].rewards, iSelectedCount);
|
|
DataHandler.SetPudding(data.playCurrency.pudding);
|
|
DataHandler.PlayDgPet = data.playDgPet;
|
|
reward[0].propertyCount = reward[0].propertyCount * (int)((tryData.bonus + 1.0f) * dConst.RateMaxFloat) / dConst.RateMaxBi * iSelectedCount;
|
|
GameUIMgr.SOpenPopupGoods(reward);
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
BattleMgr.GetClearDungeonSkipReward(DataHandler.GetDungeonTypeInfo(DungeonKind.AwakenStoneDG).diffs[curMgr.DungeonLevel - 2].rewards, iSelectedCount);
|
|
DataHandler.SetAwakenStone(data.playCurrency.gearAwakenStone);
|
|
DataHandler.PlayDgAwakenStone = data.playDgAwakenStone;
|
|
reward[0].propertyCount = reward[0].propertyCount * (int)((tryData.bonus + 1.0f) * dConst.RateMaxFloat) / dConst.RateMaxBi * iSelectedCount;
|
|
GameUIMgr.SOpenPopupGoods(reward);
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
case DungeonKind.relicDG:
|
|
BattleMgr.GetClearDungeonSkipReward(DataHandler.GetDungeonTypeInfo(DungeonKind.relicDG).diffs[curMgr.DungeonLevel - 2].rewards, iSelectedCount, tryData.bonus);
|
|
DataHandler.PlayDgRelic = data.playDgRelic;
|
|
reward[0].propertyCount = reward[0].propertyCount * (int)((tryData.bonus + 1.0f) * dConst.RateMaxFloat) / dConst.RateMaxBi * iSelectedCount;
|
|
GameUIMgr.SOpenPopupGoods(reward);
|
|
curMgr.escrDungeonSelect.scroller.RefreshActiveCellViews();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
autoProgress = false;
|
|
|
|
btnDungeonSkip.interactable = (DataHandler.GetDungeonTicketCount(dungeonKind) > 0 && DungeonLevel > 1);
|
|
|
|
BattleMgr.ChangeBattleTypeNormal();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (dungeonKind)
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
DataHandler.PlayDgGold = data.playDgGold;
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
DataHandler.PlayDgReinStone = data.playDgReinStone;
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
DataHandler.PlayDgPet = data.playDgPet;
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
DataHandler.PlayDgAwakenStone = data.playDgAwakenStone;
|
|
break;
|
|
case DungeonKind.AwakenDG:
|
|
DataHandler.PlayDgAwaken = data.playDgAwaken;
|
|
break;
|
|
case DungeonKind.GuardianDG:
|
|
DataHandler.PlayDgGuardian[1] = data.playDgGuardian;
|
|
break;
|
|
case DungeonKind.relicDG:
|
|
DataHandler.PlayDgRelic = data.playDgRelic;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
MissionMgr.SRefreshMission();
|
|
GameUIMgr.SSetGoods();
|
|
BattleMgr.Instance.ResetSkillCooltime();
|
|
tryData = null;
|
|
|
|
CoverCamera.Release();
|
|
iLoading--;
|
|
}
|
|
|
|
public static bool IsDungeonProgressOK(int isNotSV)
|
|
{
|
|
if (curMgr.DungeonLevel + isNotSV > DataHandler.GetDungeonTypeInfo(curMgr.dungeonKind).diffs.Length)
|
|
{
|
|
return false;
|
|
}
|
|
if (DataHandler.GetDungeonTicketCount(curMgr.dungeonKind) - isNotSV <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
#endregion
|
|
|
|
//구 수호령 던전 서버 통신. 역할은 서버와 동일.
|
|
#region Guardian
|
|
public void ADungeonGuardianTrySv(int lv, bool clear, bool isskip, int skipcnt, float ibonus)
|
|
{
|
|
CoverCamera.Hold();
|
|
int idgtype = (int)GetDungeonKind();
|
|
|
|
|
|
tryData = new nDungeonTryInfo(lv, clear, dungeonSkillPreset[idgtype], dungeonPetPreset[idgtype], dungeonAwakenPreset[idgtype]);
|
|
|
|
SvConnectManager.Instance.RequestSvPost(true, 0, UrlApi.GetUrl(UrlApi.DungeonGuardian), typeof(nDungeonResultReturn), AGuardianDungeonTrySucc, AGuardianDungeonTryFail, tryData, true);
|
|
|
|
}
|
|
private void AGuardianDungeonTryFail(SvError error, object request)
|
|
{
|
|
BattleMgr.ChangeBattleTypeNormal();
|
|
CoverCamera.Release();
|
|
tryData = null;
|
|
|
|
iLoading--;
|
|
}
|
|
|
|
// 던전 성패 통신 성공.
|
|
private void AGuardianDungeonTrySucc(object result, object request)
|
|
{
|
|
nDungeonResultReturn data = result as nDungeonResultReturn;
|
|
if (data == null)
|
|
{
|
|
ADungeonTryFail(new SvError(eErrorCode.NULL_OR_EMPTY), request);
|
|
return;
|
|
}
|
|
|
|
if (tryData.clear)
|
|
{
|
|
switch (dungeonKind)
|
|
{
|
|
case DungeonKind.GuardianDG:
|
|
DataHandler.PlayDgGuardian[GuardianMgr.GetGuardianId()] = data.playDgGuardian;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
BattleMgr.ChangeBattleTypeNormal();
|
|
}
|
|
else
|
|
{
|
|
switch (dungeonKind)
|
|
{
|
|
case DungeonKind.GoldDG:
|
|
DataHandler.PlayDgGold = data.playDgGold;
|
|
break;
|
|
case DungeonKind.EnhanceStoneDG:
|
|
DataHandler.PlayDgReinStone = data.playDgReinStone;
|
|
break;
|
|
case DungeonKind.PetDG:
|
|
DataHandler.PlayDgPet = data.playDgPet;
|
|
break;
|
|
case DungeonKind.AwakenStoneDG:
|
|
DataHandler.PlayDgAwakenStone = data.playDgAwakenStone;
|
|
break;
|
|
case DungeonKind.AwakenDG:
|
|
DataHandler.PlayDgAwaken = data.playDgAwaken;
|
|
break;
|
|
case DungeonKind.GuardianDG:
|
|
DataHandler.PlayDgGuardian[GuardianMgr.GetGuardianId()] = data.playDgGuardian;
|
|
break;
|
|
case DungeonKind.relicDG:
|
|
DataHandler.PlayDgRelic = data.playDgRelic;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
MissionMgr.SRefreshMission();
|
|
GameUIMgr.SSetGoods();
|
|
|
|
DataHandler.SetPlayGuardian(data.playGuardian.guardianType, data.playGuardian);
|
|
|
|
GuardianMgr.SCalcGuardian();
|
|
BattleMgr.SSetGuardian();
|
|
GuardianMgr.setActiveRobot(false);
|
|
tryData = null;
|
|
|
|
CoverCamera.Release();
|
|
iLoading--;
|
|
}
|
|
|
|
#endregion
|
|
}
|