8c4bd41668
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
132 lines
5.1 KiB
Lua
132 lines
5.1 KiB
Lua
local SoldierSandtableOtherCharItemCtrl = class("SoldierSandtableOtherCharItemCtrl", BaseCtrl)
|
|
SoldierSandtableOtherCharItemCtrl._mapNodeConfig = {
|
|
btn_char = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Char"
|
|
},
|
|
drag = {
|
|
sNodeName = "char",
|
|
sComponentName = "UIDrag",
|
|
callback = "OnUIDrag_Drag"
|
|
},
|
|
trSortItem = {
|
|
sNodeName = "char",
|
|
sComponentName = "RectTransform"
|
|
},
|
|
raySortItem = {
|
|
sNodeName = "char",
|
|
sComponentName = "Empty4Raycast"
|
|
},
|
|
rayDragEvent = {
|
|
sComponentName = "Empty4Raycast"
|
|
},
|
|
charCtrl = {
|
|
sNodeName = "tc_char_small",
|
|
sCtrlName = "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl"
|
|
}
|
|
}
|
|
SoldierSandtableOtherCharItemCtrl._mapEventConfig = {
|
|
SoldierSandtableOtherCharItemDragStart = "OnSoldierSandtableOtherCharItemDragStart",
|
|
SoldierSandtableOtherCharItemDragEnd = "OnSoldierSandtableOtherCharItemDragEnd"
|
|
}
|
|
SoldierSandtableOtherCharItemCtrl._mapRedDotConfig = {}
|
|
function SoldierSandtableOtherCharItemCtrl:Awake()
|
|
self.otherChessData = nil
|
|
self.itemCtrl = nil
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:OnDisable()
|
|
if self.itemCtrl ~= nil then
|
|
self:UnbindCtrlByNode(self.itemCtrl)
|
|
self.itemCtrl = nil
|
|
end
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:SetData(otherChessData, nIndex)
|
|
self.levelData = PlayerData.SoldierData:GetCurLevelData()
|
|
self.otherChessData = otherChessData
|
|
self.nIndex = nIndex
|
|
self._mapNode.trSortItem.localPosition = Vector3(0, 0, 0)
|
|
self._mapNode.charCtrl:SetItemData(self.otherChessData.nId)
|
|
self._mapNode.charCtrl:SetCharLevel(self.otherChessData.nStar or 1)
|
|
self.itemCanvas = self.gameObject:GetComponent("Canvas")
|
|
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
|
|
self._mapNode.rayDragEvent.gameObject:SetActive(false)
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:GetItemBtnInstanceId()
|
|
return self._mapNode.rayDragEvent.gameObject:GetInstanceID()
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:SetAnimator()
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:SetItemPos(dragPos)
|
|
local localPos = GameUIUtils.ScreenPointToLocalPoint(dragPos, self.gameObject.transform)
|
|
self._mapNode.trSortItem.localPosition = Vector3(localPos.x, localPos.y, 0)
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:InitSortingOrder(nSortOrder)
|
|
self.nInitSortingOrder = nSortOrder
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:CheckLimitAction()
|
|
return self.levelData:CheckSandTableDisable()
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:OnUIDrag_Drag(mDrag)
|
|
if self:CheckLimitAction() then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Soldier_Sandtable_TemporaryReturn_Tips"))
|
|
return
|
|
end
|
|
if self.otherChessData.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("SoldierSandtableOtherCharItemDragStart", self:GetItemBtnInstanceId(), self.otherChessData, self.nIndex)
|
|
elseif mDrag.DragEventType == AllEnum.UIDragType.Drag then
|
|
self:SetItemPos(mDrag.EventData.position)
|
|
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("SoldierSandtableOtherCharItemDragEnd", self.otherChessData, nPointerInsId)
|
|
else
|
|
EventManager.Hit("SoldierSandtableOtherCharItemDragEnd", self.otherChessData, nPointerInsId)
|
|
end
|
|
else
|
|
EventManager.Hit("SoldierSandtableOtherCharItemDragEnd", self.otherChessData, 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 SoldierSandtableOtherCharItemCtrl:OnSoldierSandtableOtherCharItemDragStart(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 SoldierSandtableOtherCharItemCtrl:OnSoldierSandtableOtherCharItemDragEnd()
|
|
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
|
|
self._mapNode.rayDragEvent.gameObject:SetActive(false)
|
|
end
|
|
function SoldierSandtableOtherCharItemCtrl:OnBtnClick_Char()
|
|
if self.otherChessData.nId <= 0 then
|
|
return
|
|
end
|
|
local chessData = {
|
|
nId = self.otherChessData.nId,
|
|
nStar = self.otherChessData.nStar,
|
|
nPositionType = AllEnum.SoldierPositionType.Other
|
|
}
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, self.gameObject.transform, chessData)
|
|
end
|
|
return SoldierSandtableOtherCharItemCtrl
|