Update - 1.9.0.107
EN: 1.9.0.107 CN: 1.9.0.108 JP: 1.9.0.112 KR: 1.9.0.112
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
local TowerDefenseSelectedCharCtrl = class("TowerDefenseSelectedCharCtrl", BaseCtrl)
|
||||
TowerDefenseSelectedCharCtrl._mapNodeConfig = {
|
||||
drag = {
|
||||
sNodeName = "go_char",
|
||||
sComponentName = "UIDrag",
|
||||
callback = "OnUIDrag_Drag"
|
||||
},
|
||||
trSortItem = {
|
||||
sNodeName = "go_char",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
raySortItem = {
|
||||
sNodeName = "go_char",
|
||||
sComponentName = "Empty4Raycast"
|
||||
},
|
||||
rayDragEvent = {
|
||||
sNodeName = "rayDragEvent",
|
||||
sComponentName = "Empty4Raycast"
|
||||
},
|
||||
btn_add = {
|
||||
sNodeName = "img_add",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_EditorTeam"
|
||||
},
|
||||
img_icon = {},
|
||||
icon_char = {sComponentName = "Image"},
|
||||
txt_name = {sComponentName = "TMP_Text"},
|
||||
img_add = {},
|
||||
img_none = {}
|
||||
}
|
||||
TowerDefenseSelectedCharCtrl._mapEventConfig = {
|
||||
TowerDefenseItemDragStart = "OnTowerDefenseItemDragStart",
|
||||
TowerDefenseItemDragEnd = "OnTowerDefenseItemDragEnd"
|
||||
}
|
||||
TowerDefenseSelectedCharCtrl._mapRedDotConfig = {}
|
||||
local item_Width = 198
|
||||
local item_spacing = 8.6
|
||||
function TowerDefenseSelectedCharCtrl:Awake()
|
||||
self.tweener = nil
|
||||
self.nGuideId = 0
|
||||
self.bCanChange = true
|
||||
self.nItemHeight = self.gameObject:GetComponent("RectTransform").rect.height
|
||||
self.nItemWidth = self.gameObject:GetComponent("RectTransform").rect.width
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnEnable()
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnDisable()
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnDestroy()
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:SetData(guideId, bCanChange, nIndex)
|
||||
self.nGuideId = guideId
|
||||
self.bCanChange = bCanChange
|
||||
self.nIndex = nIndex
|
||||
self._mapNode.btn_add.interactable = bCanChange
|
||||
self._mapNode.drag:SetDragEnable(bCanChange and self.nGuideId > 0)
|
||||
self._mapNode.img_none.gameObject:SetActive(self.nGuideId == -1)
|
||||
self._mapNode.img_add.gameObject:SetActive(self.nGuideId == 0)
|
||||
self._mapNode.img_icon.gameObject:SetActive(self.nGuideId > 0)
|
||||
if self.nGuideId > 0 then
|
||||
local guideConfig = ConfigTable.GetData("TowerDefenseGuide", self.nGuideId)
|
||||
local characterConfig = ConfigTable.GetData("TowerDefenseCharacter", guideConfig.ObjectId)
|
||||
if characterConfig ~= nil then
|
||||
self:SetPngSprite(self._mapNode.icon_char, characterConfig.Icon .. AllEnum.CharHeadIconSurfix.QM)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_name, characterConfig.Name)
|
||||
end
|
||||
end
|
||||
if nil ~= self.tweener then
|
||||
self.tweener:Kill()
|
||||
self.tweener = nil
|
||||
end
|
||||
self._mapNode.trSortItem.localPosition = Vector3(0, 0, 0)
|
||||
self.itemCanvas = self.gameObject:GetComponent("Canvas")
|
||||
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
|
||||
self._mapNode.rayDragEvent.gameObject:SetActive(false)
|
||||
end
|
||||
local clamp = function(x, min, max)
|
||||
return math.max(math.min(x, max), min)
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:InitSortingOrder(nSortOrder, goDragMin, goDragMax)
|
||||
self.nInitSortingOrder = nSortOrder
|
||||
self.goDragMin = goDragMin
|
||||
self.goDragMax = goDragMax
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:GetItemBtnInstanceId()
|
||||
return self._mapNode.rayDragEvent.gameObject:GetInstanceID()
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:PlayItemMoveAnim(nIndex)
|
||||
local nEndPosX = (self.nItemWidth + item_spacing) * (nIndex - self.nIndex)
|
||||
local endPos = Vector2(nEndPosX, 0)
|
||||
self.tweener = self._mapNode.trSortItem:DOAnchorPos(endPos, 0.1):SetUpdate(true)
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:SetItemPos(dragPos)
|
||||
local localPos = GameUIUtils.ScreenPointToLocalPoint(dragPos, self.gameObject.transform)
|
||||
localPos.x = clamp(localPos.x, self.nDragMinPosX, self.nDragMaxPosX)
|
||||
self._mapNode.trSortItem.localPosition = Vector3(localPos.x, self.nItemHeight * 0.25, 0)
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:CalDragRange()
|
||||
if nil == self.nDragMinPosX or nil == self.nDragMaxPosX then
|
||||
local transform = self.gameObject:GetComponent("Transform")
|
||||
self.nDragMinPosX = transform:InverseTransformPoint(self.goDragMin.position).x + item_Width / 2
|
||||
self.nDragMaxPosX = transform:InverseTransformPoint(self.goDragMax.position).x - item_Width / 2
|
||||
end
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnUIDrag_Drag(mDrag)
|
||||
if self.nGuideId <= 0 then
|
||||
return
|
||||
end
|
||||
if mDrag.DragEventType == AllEnum.UIDragType.DragStart then
|
||||
self.nLastPointerInsId = nil
|
||||
self:CalDragRange()
|
||||
self:SetItemPos(mDrag.EventData.position)
|
||||
self._mapNode.raySortItem.enabled = false
|
||||
self._mapNode.rayDragEvent.enabled = false
|
||||
EventManager.Hit("TowerDefenseItemDragStart", self.gameObject:GetInstanceID())
|
||||
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("TowerDefenseItemDragging", self:GetItemBtnInstanceId(), nPointerInsId)
|
||||
end
|
||||
end
|
||||
elseif mDrag.DragEventType == AllEnum.UIDragType.DragEnd then
|
||||
EventManager.Hit("TowerDefenseItemDragEnd")
|
||||
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder)
|
||||
self._mapNode.raySortItem.enabled = true
|
||||
self._mapNode.rayDragEvent.enabled = true
|
||||
end
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnBtnClick_EditorTeam()
|
||||
EventManager.Hit("TowerDefense_EditorTeam")
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnTowerDefenseItemDragStart(objInsId)
|
||||
self._mapNode.rayDragEvent.gameObject:SetActive(true)
|
||||
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, true)
|
||||
NovaAPI.SetCanvasSortingName(self.itemCanvas, AllEnum.SortingLayerName.UI)
|
||||
if self.gameObject:GetInstanceID() ~= objInsId then
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
|
||||
else
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 2)
|
||||
end
|
||||
end
|
||||
function TowerDefenseSelectedCharCtrl:OnTowerDefenseItemDragEnd()
|
||||
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
|
||||
self._mapNode.rayDragEvent.gameObject:SetActive(false)
|
||||
end
|
||||
return TowerDefenseSelectedCharCtrl
|
||||
Reference in New Issue
Block a user