Update - 1.13.0.124
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
This commit is contained in:
@@ -0,0 +1,251 @@
|
||||
local SoldierSandtableCharItemCtrl = class("SoldierSandtableCharItemCtrl", BaseCtrl)
|
||||
local SoldierAttrData = require("GameCore.Data.DataClass.Soldier.SoldierAttrData")
|
||||
local iconPath2 = "Icon/SoldierOtherIcon/"
|
||||
local chessAnimType = {
|
||||
PUTIN = 1,
|
||||
DRAGIN = 2,
|
||||
COMPOUND = 3,
|
||||
COMPOUND_OUT = 4,
|
||||
WARRIOR = 5
|
||||
}
|
||||
local chessAnimName = {
|
||||
[chessAnimType.PUTIN] = "SoldierSupportCard_putin",
|
||||
[chessAnimType.DRAGIN] = "SoldierSupportCard_dragin",
|
||||
[chessAnimType.COMPOUND] = "SoldierSupportCard_compound",
|
||||
[chessAnimType.COMPOUND_OUT] = "SoldierSupportCard_compoundout",
|
||||
[chessAnimType.WARRIOR] = "SoldierSupportCard_warrior"
|
||||
}
|
||||
SoldierSandtableCharItemCtrl._mapNodeConfig = {
|
||||
btn_char = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Char"
|
||||
},
|
||||
HaveStatus = {},
|
||||
drag = {
|
||||
sNodeName = "HaveStatus",
|
||||
sComponentName = "UIDrag",
|
||||
callback = "OnUIDrag_Drag"
|
||||
},
|
||||
trSortItem = {
|
||||
sNodeName = "HaveStatus",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
raySortItem = {
|
||||
sNodeName = "HaveStatus",
|
||||
sComponentName = "Empty4Raycast"
|
||||
},
|
||||
rayDragEvent = {
|
||||
sComponentName = "Empty4Raycast"
|
||||
},
|
||||
SoldierCharacterCardItem = {},
|
||||
AnimRoot = {},
|
||||
ImgPutLightADD = {}
|
||||
}
|
||||
SoldierSandtableCharItemCtrl._mapEventConfig = {
|
||||
SoldierSandtableCharItemDragStart = "OnSoldierSandtableCharItemDragStart",
|
||||
SoldierSandtableCharItemDragging = "OnSoldierSandtableCharItemDragging",
|
||||
SoldierSandtableCharItemDragEnd = "OnSoldierSandtableCharItemDragEnd",
|
||||
SoldierExtraPartnerTagChange = "OnSoldierExtraPartnerTagChange",
|
||||
SoldierChessCanPutIn = "OneEvent_SoldierChessCanPutIn"
|
||||
}
|
||||
SoldierSandtableCharItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierSandtableCharItemCtrl:Awake()
|
||||
self.chessData = nil
|
||||
self.itemCtrl = nil
|
||||
self.animRoot = self._mapNode.AnimRoot:GetComponent("Animator")
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnDisable()
|
||||
if self.itemCtrl ~= nil then
|
||||
self:UnbindCtrlByNode(self.itemCtrl)
|
||||
self.itemCtrl = nil
|
||||
end
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:SetData(chessData)
|
||||
self.levelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
self.chessData = chessData
|
||||
self._mapNode.trSortItem.localPosition = Vector3(0, 0, 0)
|
||||
self._mapNode.ImgPutLightADD.gameObject:SetActive(false)
|
||||
if self.chessData == nil or self.chessData.nId == 0 then
|
||||
self._mapNode.HaveStatus.gameObject:SetActive(false)
|
||||
else
|
||||
if self.itemCtrl == nil then
|
||||
if chessData.nPositionType == GameEnum.SoldierPositionType.FightPosition or chessData.nPositionType == GameEnum.SoldierPositionType.SupportPosition then
|
||||
self.itemCtrl = self:BindCtrlByNode(self._mapNode.SoldierCharacterCardItem, "Game.UI.Soldier.Template.Character.SoldierCharSupportCardItemCtrl")
|
||||
else
|
||||
self.itemCtrl = self:BindCtrlByNode(self._mapNode.SoldierCharacterCardItem, "Game.UI.Soldier.Template.Character.SoldierCharCardItemCtrl")
|
||||
end
|
||||
end
|
||||
self._mapNode.HaveStatus.gameObject:SetActive(true)
|
||||
if chessData.nPositionType == GameEnum.SoldierPositionType.FightPosition or chessData.nPositionType == GameEnum.SoldierPositionType.SupportPosition then
|
||||
self.itemCtrl:SetItemData(self.chessData.nId)
|
||||
else
|
||||
self.itemCtrl:SetItemData(self.chessData.nId, true)
|
||||
end
|
||||
self.itemCtrl:SetStar(self.chessData.nStar)
|
||||
if chessData.nPositionType == GameEnum.SoldierPositionType.FightPosition then
|
||||
self.itemCtrl:SetChessPosition(GameEnum.SoldierPositionType.FightPosition)
|
||||
elseif chessData.nPositionType == GameEnum.SoldierPositionType.SupportPosition then
|
||||
self.itemCtrl:SetChessPosition(GameEnum.SoldierPositionType.SupportPosition)
|
||||
end
|
||||
if chessData.nPositionType == GameEnum.SoldierPositionType.FightPosition or chessData.nPositionType == GameEnum.SoldierPositionType.SupportPosition then
|
||||
else
|
||||
end
|
||||
end
|
||||
self.itemCanvas = self.gameObject:GetComponent("Canvas")
|
||||
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
|
||||
self._mapNode.rayDragEvent.gameObject:SetActive(false)
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:GetItemBtnInstanceId()
|
||||
return self._mapNode.rayDragEvent.gameObject:GetInstanceID()
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:SetPositionIndex(nIndex)
|
||||
self.nPositionIndex = nIndex
|
||||
local img_pos = self.gameObject.transform:Find("btn_pos/AnimRoot/img_pos"):GetComponent("Image")
|
||||
local btn_pos = self.gameObject.transform:Find("btn_pos"):GetComponent("UIButton")
|
||||
local nCfgId = PlayerData.SoldierData:GetSoldierPositionEffectDataId(self.nPositionIndex)
|
||||
local cfg = ConfigTable.GetData("SoldierPositionEffect", nCfgId)
|
||||
if cfg then
|
||||
self:SetPngSprite(img_pos, iconPath2 .. cfg.Icon)
|
||||
end
|
||||
btn_pos.onClick:RemoveAllListeners()
|
||||
btn_pos.onClick:AddListener(function()
|
||||
EventManager.Hit("ShowSoldierPositionEffect", self.nPositionIndex)
|
||||
end)
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:SetDetailRoot(tr)
|
||||
self.trDetailRoot = tr
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:SetItemPos(dragPos)
|
||||
local localPos = GameUIUtils.ScreenPointToLocalPoint(dragPos, self.gameObject.transform)
|
||||
self._mapNode.trSortItem.localPosition = Vector3(localPos.x, localPos.y, 0)
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:InitSortingOrder(nSortOrder)
|
||||
self.nInitSortingOrder = nSortOrder
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:CheckLimitAction()
|
||||
return self.levelData:CheckSandTableDisable()
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:SetAnimator(nAnimType)
|
||||
if self.itemCtrl == nil then
|
||||
return
|
||||
end
|
||||
local anim = self.itemCtrl:GetAnimator()
|
||||
if anim == nil then
|
||||
return
|
||||
end
|
||||
anim:Play(chessAnimName[nAnimType])
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnUIDrag_Drag(mDrag)
|
||||
if self:CheckLimitAction() then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Soldier_Sandtable_TemporaryReturn_Tips"))
|
||||
return
|
||||
end
|
||||
if self.chessData.nId <= 0 then
|
||||
return
|
||||
end
|
||||
if mDrag.DragEventType == AllEnum.UIDragType.DragStart then
|
||||
self.nLastPointerInsId = nil
|
||||
self:SetItemPos(mDrag.EventData.position)
|
||||
self._mapNode.raySortItem.enabled = false
|
||||
self._mapNode.rayDragEvent.enabled = false
|
||||
self._mapNode.btn_char.gameObject:SetActive(false)
|
||||
EventManager.Hit("SoldierSandtableCharItemDragStart", self:GetItemBtnInstanceId())
|
||||
elseif mDrag.DragEventType == AllEnum.UIDragType.Drag then
|
||||
self:SetItemPos(mDrag.EventData.position)
|
||||
local pointerObj = mDrag.EventData.pointerCurrentRaycast
|
||||
if nil ~= pointerObj and nil ~= pointerObj.gameObject then
|
||||
local nPointerInsId = pointerObj.gameObject:GetInstanceID()
|
||||
if nPointerInsId ~= self.nLastPointerInsId then
|
||||
self.nLastPointerInsId = nPointerInsId
|
||||
EventManager.Hit("SoldierSandtableCharItemDragging", self:GetItemBtnInstanceId(), nPointerInsId)
|
||||
end
|
||||
end
|
||||
elseif mDrag.DragEventType == AllEnum.UIDragType.DragEnd then
|
||||
local pointerObj = mDrag.EventData.pointerCurrentRaycast
|
||||
if nil ~= pointerObj and nil ~= pointerObj.gameObject then
|
||||
local nPointerInsId = pointerObj.gameObject:GetInstanceID()
|
||||
if nPointerInsId ~= self.nLastPointerInsId then
|
||||
self.nLastPointerInsId = nPointerInsId
|
||||
EventManager.Hit("SoldierSandtableCharItemDragEnd", self:GetItemBtnInstanceId(), nPointerInsId)
|
||||
else
|
||||
EventManager.Hit("SoldierSandtableCharItemDragEnd", self:GetItemBtnInstanceId(), nPointerInsId)
|
||||
end
|
||||
else
|
||||
EventManager.Hit("SoldierSandtableCharItemDragEnd", self:GetItemBtnInstanceId(), 0)
|
||||
end
|
||||
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder)
|
||||
self._mapNode.raySortItem.enabled = true
|
||||
self._mapNode.rayDragEvent.enabled = true
|
||||
self._mapNode.btn_char.gameObject:SetActive(true)
|
||||
end
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnSoldierSandtableCharItemDragStart(objInsId)
|
||||
self._mapNode.rayDragEvent.gameObject:SetActive(true)
|
||||
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, true)
|
||||
NovaAPI.SetCanvasSortingName(self.itemCanvas, AllEnum.SortingLayerName.UI)
|
||||
if self:GetItemBtnInstanceId() ~= objInsId then
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
|
||||
else
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 2)
|
||||
end
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnSoldierSandtableCharItemDragging(objInsId, targetInsId)
|
||||
if targetInsId == self:GetItemBtnInstanceId() then
|
||||
self._mapNode.ImgPutLightADD.gameObject:SetActive(true)
|
||||
else
|
||||
self._mapNode.ImgPutLightADD.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnSoldierSandtableCharItemDragEnd()
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
|
||||
self._mapNode.rayDragEvent.gameObject:SetActive(false)
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnSoldierExtraPartnerTagChange()
|
||||
if self.chessData ~= nil and self.chessData.nId ~= 0 and self.animRoot ~= nil then
|
||||
local tbTags = PlayerData.SoldierData:GetCurLevelData():GetExtraPartnerTags(self.chessData.nId)
|
||||
if tbTags ~= nil then
|
||||
end
|
||||
end
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OnBtnClick_Char()
|
||||
if self.chessData.nId <= 0 then
|
||||
return
|
||||
end
|
||||
local nPositionType = self.chessData.nPositionType
|
||||
if nPositionType == 0 or nPositionType == nil then
|
||||
nPositionType = AllEnum.SoldierPositionType.Waiting
|
||||
end
|
||||
local tbDeploy, _, _ = self.levelData:GetDeploy()
|
||||
local tbPartner, tbUIData = SoldierAttrData.CalcActivePartners(tbDeploy)
|
||||
local chessData = {
|
||||
nId = self.chessData.nId,
|
||||
nStar = self.chessData.nStar,
|
||||
nPositionType = nPositionType
|
||||
}
|
||||
local tr = self.trDetailRoot
|
||||
if tr == nil then
|
||||
tr = self.gameObject.transform
|
||||
end
|
||||
if nPositionType == AllEnum.SoldierPositionType.Waiting then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, tr, chessData)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, tr, chessData, tbDeploy, tbPartner)
|
||||
end
|
||||
EventManager.Hit("OnSetTipsPosition", tr:GetChild(0).position, tr:GetChild(1).position, tr:GetChild(2).position)
|
||||
end
|
||||
function SoldierSandtableCharItemCtrl:OneEvent_SoldierChessCanPutIn(bCanPutIn)
|
||||
local img_input = self.gameObject.transform:Find("EmptyStatus/imgPut")
|
||||
local ImgPutLight = self.gameObject.transform:Find("EmptyStatus/ImgPutLight")
|
||||
if img_input == nil then
|
||||
return
|
||||
end
|
||||
if bCanPutIn then
|
||||
img_input.gameObject:SetActive(true)
|
||||
ImgPutLight.gameObject:SetActive(true)
|
||||
else
|
||||
img_input.gameObject:SetActive(false)
|
||||
ImgPutLight.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
return SoldierSandtableCharItemCtrl
|
||||
Reference in New Issue
Block a user