320 lines
9.5 KiB
C#
320 lines
9.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.Remoting.Lifetime;
|
|
using Games.GlobeDefine;
|
|
using Games.LogicObj;
|
|
using Games.SkillModle;
|
|
using GCGame;
|
|
using GCGame.Table;
|
|
using Module.Log;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using System.Collections;
|
|
using Games.Item;
|
|
|
|
public class FactionSkillChangeRootCtr : MonoBehaviour {
|
|
|
|
public static FactionSkillChangeRootCtr Instance;
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
private void OnDestroy()
|
|
{
|
|
Instance = null;
|
|
}
|
|
|
|
private int[] SkillIdx = new int[4]; //五个ID的下标
|
|
|
|
public FactionSkillBarItem _DragSkillBar { get; set; }
|
|
public int _DragSkillOwnIdx { get; set; }
|
|
|
|
public FactionSkillBarItem[] _SkillBarItems;
|
|
|
|
public UISubScollMenu _SkillClasses;
|
|
public Image _DragIcon;
|
|
public SkillRootPage _SkillInfoPage;
|
|
|
|
//private UserConfigData.FactionSkillSavePage _CurSkillPage;
|
|
|
|
private void OnEnable()
|
|
{
|
|
InitSkillItems(); //初始化技能按钮
|
|
|
|
LoadFactionSkillSavePage();
|
|
|
|
_SkillClasses.Clear();
|
|
foreach (var skillClass in _MySkillInfos)
|
|
{
|
|
_SkillClasses.PushMenu(skillClass.Key);
|
|
}
|
|
_SkillClasses.ShowDefaultFirst();
|
|
|
|
OnSkillClassPage(_SkillClasses.SelectedSub1);
|
|
|
|
}
|
|
|
|
private int[] settingSkillIdx;
|
|
private void LoadFactionSkillSavePage()
|
|
{
|
|
var mainPlayer = Singleton<ObjManager>.GetInstance().MainPlayer;
|
|
if (mainPlayer == null)
|
|
return;
|
|
|
|
settingSkillIdx = new int[4];
|
|
for (int index = 0; index < 4; index++)
|
|
{
|
|
bool hasFind = false;
|
|
for (int _Index = 0; _Index < mainPlayer.OwnSkillInfo.Length; _Index++)
|
|
{
|
|
if (mainPlayer.OwnSkillInfo[_Index].SkillId == FactionChallengeCtr.Instace.curSkillIdx[index]
|
|
&& mainPlayer.OwnSkillInfo[_Index].SkillId != -1)
|
|
{
|
|
hasFind = true;
|
|
settingSkillIdx[index] = _Index;
|
|
}
|
|
}
|
|
if (!hasFind)
|
|
{
|
|
settingSkillIdx[index] = -1;
|
|
}
|
|
}
|
|
|
|
|
|
for (int i = 0; i < settingSkillIdx.Length; ++i)
|
|
{
|
|
if (i < _SkillBarItems.Length)
|
|
{
|
|
_SkillBarItems[i].InitSkillBar(settingSkillIdx[i], i);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private Dictionary<string, List<SkillRootItem.SkillShowInfo>> _MySkillInfos;
|
|
private SkillRootItem.SkillShowInfo _SelectedSkillShow;
|
|
private void InitSkillItems()
|
|
{
|
|
var totleList = new List<SkillRootItem.SkillShowInfo>();
|
|
_MySkillInfos = new Dictionary<string, List<SkillRootItem.SkillShowInfo>>();
|
|
foreach (var skillInfo in Singleton<ObjManager>.GetInstance().MainPlayer.OwnSkillInfo)
|
|
{
|
|
if (skillInfo.SkillLevelTable == null)
|
|
continue;
|
|
|
|
SkillRootItem.SkillShowInfo showInfo = new SkillRootItem.SkillShowInfo();
|
|
showInfo.SkillExTab = skillInfo.SkillExTable;
|
|
if (showInfo.SkillExTab == null)
|
|
continue;
|
|
|
|
showInfo.SkillBase = skillInfo.SkillBaseTable;
|
|
Tab_SkillLevelUp skillnext = TableManager.GetSkillLevelUpByID(skillInfo.SkillLevelTable.NextSkillId, 0);
|
|
showInfo.SkillLevelUp = skillnext;
|
|
totleList.Add(showInfo);
|
|
}
|
|
|
|
var learnList = TableManager.GetSkillLearn().Values;
|
|
foreach (var tabAct in learnList)
|
|
{
|
|
if (tabAct.Profession != GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession)
|
|
continue;
|
|
|
|
Tab_SkillEx skillEx = TableManager.GetSkillExByID(tabAct.SkillId, 0);
|
|
Tab_SkillBase skillBase = TableManager.GetSkillBaseByID(skillEx.BaseId, 0);
|
|
|
|
var skillInfo = totleList.Find((showInfo) =>
|
|
{
|
|
if (showInfo.SkillBase.Id == skillEx.BaseId)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
|
|
if (skillInfo != null)
|
|
{
|
|
skillInfo.SkillLearn = tabAct;
|
|
}
|
|
else
|
|
{
|
|
SkillRootItem.SkillShowInfo showInfo = new SkillRootItem.SkillShowInfo();
|
|
showInfo.SkillLearn = tabAct;
|
|
showInfo.SkillBase = skillBase;
|
|
showInfo.SkillLevelUp = TableManager.GetSkillLevelUpByID(skillEx.SkillExID, 0); ;
|
|
totleList.Add(showInfo);
|
|
}
|
|
}
|
|
|
|
foreach (var showInfo in totleList)
|
|
{
|
|
if (showInfo.SkillLearn == null)
|
|
continue;
|
|
|
|
if (_MySkillInfos.ContainsKey(showInfo.SkillLearn.Class))
|
|
{
|
|
_MySkillInfos[showInfo.SkillLearn.Class].Add(showInfo);
|
|
}
|
|
else
|
|
{
|
|
List<SkillRootItem.SkillShowInfo> showList = new List<SkillRootItem.SkillShowInfo>();
|
|
showList.Add(showInfo);
|
|
_MySkillInfos.Add(showInfo.SkillLearn.Class, showList);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void OnSkillClassPage(object paramObj)
|
|
{
|
|
string skillClass = paramObj as string;
|
|
if (_MySkillInfos.ContainsKey(skillClass))
|
|
{
|
|
_SkillInfoPage.InitContainer(_MySkillInfos[skillClass], OnSkillItemClick);
|
|
}
|
|
}
|
|
|
|
|
|
public void OnSkillItemClick(object skillItem)
|
|
{
|
|
SkillRootItem.SkillShowInfo skillShowInfo = skillItem as SkillRootItem.SkillShowInfo;
|
|
if (skillShowInfo == null)
|
|
return;
|
|
|
|
_SelectedSkillShow = skillShowInfo;
|
|
|
|
{
|
|
if (skillShowInfo.SkillExTab != null)
|
|
{
|
|
SkillTooltipsLogic.ShowSkillToolTips(skillShowInfo.SkillExTab.SkillExID, new Vector3(114, -35, 0));
|
|
}
|
|
else
|
|
{
|
|
SkillTooltipsLogic.ShowSkillToolTips(skillShowInfo.SkillLearn.SkillId, new Vector3(114, -35, 0));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void ChangeSkillBar(int skillItemIdx)
|
|
{
|
|
if (_DragSkillOwnIdx < 0)
|
|
return;
|
|
|
|
for (int index = 0; index < settingSkillIdx.Length; index++)
|
|
{
|
|
//技能已经存在的情况
|
|
if (settingSkillIdx[index] == _DragSkillOwnIdx)
|
|
{
|
|
//目标位置ID与拖拽过来的技能ID相同
|
|
if (settingSkillIdx[skillItemIdx] == _DragSkillOwnIdx)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
//目标位置技能ID置为拖拽过来的ID
|
|
settingSkillIdx[skillItemIdx] = _DragSkillOwnIdx;
|
|
|
|
//将存在技能的ID置为-1
|
|
settingSkillIdx[index] = -1;
|
|
}
|
|
|
|
//刷新界面
|
|
UpdateSkillBarInfo();
|
|
return;
|
|
}
|
|
}
|
|
settingSkillIdx[skillItemIdx] = _DragSkillOwnIdx;
|
|
}
|
|
|
|
|
|
public void SaveSkillPage()
|
|
{
|
|
//发送技能ID
|
|
CG_USER_CHALLENGE_EQUIP_SKILL packet = (CG_USER_CHALLENGE_EQUIP_SKILL)PacketDistributed.CreatePacket(MessageID.PACKET_CG_USER_CHALLENGE_EQUIP_SKILL);
|
|
var mainPlayer = Singleton<ObjManager>.GetInstance().MainPlayer;
|
|
if (mainPlayer == null)
|
|
return;
|
|
|
|
for (int index = 0; index < _SkillBarItems.Length; index++)
|
|
{
|
|
if(_SkillBarItems[index].OwnSkillIdx == -1)
|
|
{
|
|
packet.AddSkillId(-1);
|
|
}
|
|
else
|
|
{
|
|
packet.AddSkillId(mainPlayer.OwnSkillInfo[_SkillBarItems[index].OwnSkillIdx].SkillId);
|
|
}
|
|
}
|
|
packet.SendPacket();
|
|
|
|
//请求一次当前的页面的配置信息包括技能配置信息
|
|
CG_REQ_USER_CHALLENGE_INFO ask = (CG_REQ_USER_CHALLENGE_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_USER_CHALLENGE_INFO);
|
|
ask.SetFlag(1);
|
|
ask.SendPacket();
|
|
}
|
|
|
|
public void UpdateSkillBarInfo()
|
|
{
|
|
for (int i = 0; i < settingSkillIdx.Length; ++i)
|
|
{
|
|
if (i < _SkillBarItems.Length)
|
|
{
|
|
_SkillBarItems[i].InitSkillBar(settingSkillIdx[i], i);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ExChangeSkillBar(int skillItemIdx)
|
|
{
|
|
if (_DragSkillOwnIdx < 0)
|
|
return;
|
|
|
|
if (_DragSkillBar != null)
|
|
{
|
|
int tempIdx = settingSkillIdx[skillItemIdx];
|
|
settingSkillIdx[skillItemIdx] = _DragSkillBar.OwnSkillIdx;
|
|
settingSkillIdx[_DragSkillBar.SkillItemIdx] = tempIdx;
|
|
}
|
|
}
|
|
|
|
public void ClearSkillBar(int skillItemIdx)
|
|
{
|
|
if (skillItemIdx >= settingSkillIdx.Length)
|
|
return;
|
|
|
|
settingSkillIdx[skillItemIdx] = -1;
|
|
}
|
|
|
|
|
|
public void SetDragSkillIdx(SkillRootItem.SkillShowInfo showInfo)
|
|
{
|
|
if (showInfo == null || showInfo.SkillExTab == null)
|
|
{
|
|
_DragSkillOwnIdx = -1;
|
|
return;
|
|
}
|
|
|
|
if (Singleton<ObjManager>.GetInstance().MainPlayer == null)
|
|
return;
|
|
|
|
for (int i = 0; i < Singleton<ObjManager>.GetInstance().MainPlayer.OwnSkillInfo.Length; ++i)
|
|
{
|
|
if (showInfo.SkillExTab.SkillExID == Singleton<ObjManager>.GetInstance().MainPlayer.OwnSkillInfo[i].SkillId)
|
|
{
|
|
_DragSkillOwnIdx = i;
|
|
|
|
return;
|
|
}
|
|
}
|
|
_DragSkillOwnIdx = -1;
|
|
}
|
|
public void CloseWindow()
|
|
{
|
|
SaveSkillPage(); //把当前的技能配置存储在XML文件内
|
|
UIManager.CloseUI(UIInfo.FactionSkillChangeRoot);
|
|
}
|
|
|
|
}
|