Files
StellaSora_DataLua/lua/game/ui/soldier/sandtable/soldiersandtableothercharitemctrl.lua
T
SL1900 8c4bd41668 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
2026-07-21 12:30:00 +09:00

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