129 lines
4.4 KiB
C#
129 lines
4.4 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
public class SkillUI : BotMenuBase
|
|
{
|
|
public SkillUI_SkillInfo m_SkillUI_SkillInfo;
|
|
public TabUIBase m_Tab, m_TabSkillType;
|
|
public BattleUI m_BattleUI;
|
|
public SkillEquipUI m_SkillEquipUI;
|
|
|
|
string m_SkillType = "JobPassive";
|
|
Dictionary<string, eSkillType> dic_skillType = new Dictionary<string, eSkillType>
|
|
{ { "Active", eSkillType.Active }, { "Passive", eSkillType.Passive }, { "JobPassive", eSkillType.JobPassive } };
|
|
|
|
List<TabUIData> list_tabData = new List<TabUIData> { new TabUIData{ }, new TabUIData{ }, new TabUIData{ } };
|
|
List<TabUIData> list_skilltabData = new List<TabUIData>
|
|
{ new TabUIData { n_btnName = 214 }, new TabUIData { n_btnName = 215 }, new TabUIData { n_btnName = 216 } };
|
|
|
|
int BeforePreset, AfterPreset;
|
|
Dictionary<bool, Dictionary<int, List<int>>> dic_EquipSkill = new Dictionary<bool, Dictionary<int, List<int>>>();
|
|
|
|
public override void Set()
|
|
{
|
|
m_SkillEquipUI.OnClick_Back();
|
|
base.Set();
|
|
|
|
if (dic_EquipSkill.Count == 0)
|
|
{
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
dic_EquipSkill.Add(i == 0, new Dictionary<int, List<int>>());
|
|
for (int j = 0; j < 3; j++)
|
|
dic_EquipSkill[i == 0].Add(j + 1, new List<int> { 0, 0, 0, 0, 0, 0 });
|
|
}
|
|
}
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
for (int i = 0; i < 3; i++)
|
|
for (int j = 0; j < sdata.Equip.Skill[i + 1].Count; j++)
|
|
{
|
|
dic_EquipSkill[true][i + 1][j] = sdata.Equip.Skill[i + 1][j];
|
|
dic_EquipSkill[false][i + 1][j] = sdata.Equip.Skill[i + 1][j];
|
|
}
|
|
|
|
BeforePreset = sdata.Equip.Preset;
|
|
|
|
Set_PresetTab();
|
|
Set_SkillTab();
|
|
Set_Money(table_skilllist.Ins.Get_MatIds());
|
|
}
|
|
void Set_PresetTab()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
for (int i = 0; i < list_tabData.Count; i++)
|
|
{
|
|
list_tabData[i].n_btnName = 219 + i;
|
|
list_tabData[i].onClick = OnClick_Preset;
|
|
}
|
|
m_Tab.Set_Index(sdata.Equip.Preset - 1);
|
|
m_Tab.Set(list_tabData);
|
|
OnClick_Preset();
|
|
}
|
|
void Set_SkillTab()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
for (int i = 0; i < list_skilltabData.Count; i++)
|
|
{
|
|
list_skilltabData[i].onClick = OnClick_SkillType;
|
|
}
|
|
m_TabSkillType.Set(list_skilltabData);
|
|
OnClick_SkillType();
|
|
}
|
|
|
|
public override void Set_UI()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
Set_ScrollView(table_skilllist.Ins.Get_DataList(dic_skillType[m_SkillType], sdata.Get_EqiupmentEquip(eItem.PC)));
|
|
list_CardBase.ForEach(f => f.Set_CardType(eUICardType.UI));
|
|
var data = m_SkillUI_SkillInfo.Get_Data();
|
|
m_SkillUI_SkillInfo.Set(DSUtil.CheckNull(data) ? list_CardBase[0].Get_Data() as SkillListTableData : data);
|
|
|
|
m_BattleUI.Set(eUICardType.UIEquip, sdata.Equip.Preset);
|
|
}
|
|
|
|
public void EquipSkill(int slot, int skillid)
|
|
{
|
|
var curPreset = m_Tab.Get_Index() + 1;
|
|
for (int i = 0; i < dic_EquipSkill[false][curPreset].Count; i++)
|
|
{
|
|
if (dic_EquipSkill[false][curPreset][i] == skillid)
|
|
dic_EquipSkill[false][curPreset][i] = 0;
|
|
}
|
|
dic_EquipSkill[false][curPreset][slot - 1] = skillid;
|
|
}
|
|
|
|
public void OnClick_SkillType()
|
|
{
|
|
var index = m_TabSkillType.Get_Index();
|
|
m_SkillType = index == 0 ? "JobPassive" : index == 1 ? "Active" : "Passive";
|
|
Set_UI();
|
|
}
|
|
|
|
public void OnClick_Preset()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
AfterPreset = sdata.Equip.Preset = m_Tab.Get_Index() + 1;
|
|
m_BattleUI.Set(eUICardType.UIEquip, sdata.Equip.Preset);
|
|
}
|
|
|
|
public override void OnClick_Back()
|
|
{
|
|
base.OnClick_Back();
|
|
|
|
bool save = BeforePreset != AfterPreset;
|
|
if (!save) save = !AreDictionariesEqual(dic_EquipSkill[true], dic_EquipSkill[false]);
|
|
if (save) ServerInfo.Ins.Save_Skill_MenuBack(AfterPreset, dic_EquipSkill[false], null);
|
|
}
|
|
|
|
bool AreDictionariesEqual(Dictionary<int, List<int>> a, Dictionary<int, List<int>> b)
|
|
{
|
|
if (a.Count != b.Count) return false;
|
|
|
|
foreach (var kv in a)
|
|
{
|
|
if (!b.TryGetValue(kv.Key, out var listB)) return false;
|
|
if (!kv.Value.SequenceEqual(listB)) return false;
|
|
}
|
|
return true;
|
|
}
|
|
} |