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,79 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local SoldierBuffCtrl = class("SoldierBuffCtrl", BaseCtrl)
|
||||
SoldierBuffCtrl._mapNodeConfig = {
|
||||
BigBuffItem = {
|
||||
sNodeName = "BigBuff",
|
||||
sCtrlName = "Game.UI.Soldier.Sandtable.Items.SoldierBuffItemCtrl"
|
||||
},
|
||||
sv_buff = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
smallBuff = {
|
||||
sNodeName = "buff",
|
||||
nCount = 20,
|
||||
sCtrlName = "Game.UI.Soldier.Sandtable.Items.SoldierBuffItemCtrl"
|
||||
},
|
||||
imgLineRoot = {},
|
||||
goBuffRoot = {
|
||||
sComponentName = "RectTransform"
|
||||
}
|
||||
}
|
||||
SoldierBuffCtrl._mapEventConfig = {}
|
||||
SoldierBuffCtrl._mapRedDotConfig = {}
|
||||
function SoldierBuffCtrl:Awake()
|
||||
end
|
||||
function SoldierBuffCtrl:OnEnable()
|
||||
end
|
||||
function SoldierBuffCtrl:OnDisable()
|
||||
end
|
||||
function SoldierBuffCtrl:OnDestroy()
|
||||
end
|
||||
function SoldierBuffCtrl:RefreshBuff()
|
||||
self._nStarterCardId = 0
|
||||
self._tbStrategyCardIds = {}
|
||||
self.tbBuffCfgs = {}
|
||||
if self.btn_detail == nil then
|
||||
self.btn_detail = self.gameObject:GetComponent("UIButton")
|
||||
end
|
||||
local levelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
local tbStarterCard, tbStrategyCard = levelData:GetCardData()
|
||||
if tbStarterCard == nil or #tbStarterCard == 0 then
|
||||
self._mapNode.goBuffRoot.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
self._mapNode.goBuffRoot.gameObject:SetActive(true)
|
||||
self._nStarterCardId = tbStarterCard[1].nId
|
||||
self._tbStrategyCardIds = tbStrategyCard
|
||||
local cfg = ConfigTable.GetData("SoldierStarterCard", self._nStarterCardId)
|
||||
table.insert(self.tbBuffCfgs, cfg)
|
||||
for k, v in ipairs(self._tbStrategyCardIds) do
|
||||
local cfg = ConfigTable.GetData("SoldierStrategyCard", v.nId)
|
||||
table.insert(self.tbBuffCfgs, cfg)
|
||||
end
|
||||
self.btn_detail.onClick:RemoveAllListeners()
|
||||
self.btn_detail.onClick:AddListener(function()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierBuffTipsPanel, self.tbBuffCfgs)
|
||||
end)
|
||||
self:_RefreshBuffItems()
|
||||
end
|
||||
function SoldierBuffCtrl:_RefreshBuffItems()
|
||||
self._mapNode.imgLineRoot.gameObject:SetActive(#self._tbStrategyCardIds > 0)
|
||||
if self._mapNode.BigBuffItem ~= nil then
|
||||
local cfg = ConfigTable.GetData("SoldierStarterCard", self._nStarterCardId)
|
||||
self._mapNode.BigBuffItem:SetData(cfg)
|
||||
end
|
||||
for k, v in ipairs(self._mapNode.smallBuff) do
|
||||
v.gameObject:SetActive(false)
|
||||
end
|
||||
for k, v in ipairs(self._tbStrategyCardIds) do
|
||||
if self._mapNode.smallBuff[k] ~= nil then
|
||||
local cfg = ConfigTable.GetData("SoldierStrategyCard", v.nId)
|
||||
self._mapNode.smallBuff[k]:SetData(cfg)
|
||||
self._mapNode.smallBuff[k].gameObject:SetActive(true)
|
||||
end
|
||||
end
|
||||
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.goBuffRoot)
|
||||
end
|
||||
function SoldierBuffCtrl:RefreshBuffItem(goGrid, gridIndex)
|
||||
end
|
||||
return SoldierBuffCtrl
|
||||
@@ -0,0 +1,72 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local SoldierBuffTipsCtrl = class("SoldierBuffTipsCtrl", BaseCtrl)
|
||||
SoldierBuffTipsCtrl._mapNodeConfig = {
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
loopTips = {
|
||||
sComponentName = "LoopScrollView",
|
||||
sNodeName = "sv"
|
||||
},
|
||||
grid = {
|
||||
sComponentName = "RectTransform"
|
||||
}
|
||||
}
|
||||
SoldierBuffTipsCtrl._mapEventConfig = {}
|
||||
local RootPath = "Icon/SoldierBuffCard/"
|
||||
local bgPath = "Icon/SoldierOtherIcon/"
|
||||
local initHeight = 90.85
|
||||
local gridHeight = 224
|
||||
function SoldierBuffTipsCtrl:Awake()
|
||||
local param = self:GetPanelParam()
|
||||
if type(param) == "table" then
|
||||
self.tbBuffCfgs = param[1] or {}
|
||||
end
|
||||
end
|
||||
function SoldierBuffTipsCtrl:OnEnable()
|
||||
self:RefreshBuffTips()
|
||||
end
|
||||
function SoldierBuffTipsCtrl:RefreshBuffTips()
|
||||
self:CalBuffHeight()
|
||||
self._mapNode.loopTips:InitEx(self.tbBuffHeight, self, self.RefreshBuffTipsItem)
|
||||
end
|
||||
function SoldierBuffTipsCtrl:CalBuffHeight()
|
||||
self.tbBuffHeight = {}
|
||||
for i, cfg in ipairs(self.tbBuffCfgs) do
|
||||
local buffItem = self._mapNode.grid.transform:Find("btnGrid/AnimRoot/BuffItem")
|
||||
local TextName = buffItem.transform:Find("imgItemBg/TextName"):GetComponent("TMP_Text")
|
||||
local imgItemBg = buffItem.transform:Find("imgItemBg"):GetComponent("RectTransform")
|
||||
NovaAPI.SetTMPText(TextName, cfg.Desc)
|
||||
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(imgItemBg)
|
||||
local nHeight = imgItemBg.sizeDelta.y - initHeight
|
||||
table.insert(self.tbBuffHeight, nHeight + gridHeight)
|
||||
end
|
||||
end
|
||||
function SoldierBuffTipsCtrl:RefreshBuffTipsItem(grid, gridIndex)
|
||||
gridIndex = gridIndex + 1
|
||||
local cfg = self.tbBuffCfgs[gridIndex]
|
||||
if cfg then
|
||||
local buffItem = grid.transform:Find("btnGrid/AnimRoot/BuffItem")
|
||||
local txtTitle = buffItem.transform:Find("txtTitle"):GetComponent("TMP_Text")
|
||||
local ImageIcon = buffItem.transform:Find("ImageIcon"):GetComponent("Image")
|
||||
local TextName = buffItem.transform:Find("imgItemBg/TextName"):GetComponent("TMP_Text")
|
||||
local ImageIconBg = buffItem.transform:Find("ImageIconBg"):GetComponent("Image")
|
||||
NovaAPI.SetTMPText(txtTitle, cfg.Name)
|
||||
self:SetPngSprite(ImageIcon, RootPath .. cfg.Icon)
|
||||
NovaAPI.SetTMPText(TextName, cfg.Desc)
|
||||
if cfg.Rarity ~= 0 then
|
||||
self:SetPngSprite(ImageIconBg, bgPath .. AllEnum.SoldierStrategyCardRarityIcon[cfg.Rarity] .. AllEnum.SoldierChessIconSurfix.S)
|
||||
end
|
||||
local ImageLine = buffItem.transform:Find("imgItemBg/imgLine").gameObject
|
||||
ImageLine:SetActive(gridIndex == 1 and 1 < #self.tbBuffCfgs)
|
||||
end
|
||||
end
|
||||
function SoldierBuffTipsCtrl:OnDisable()
|
||||
end
|
||||
function SoldierBuffTipsCtrl:OnDestroy()
|
||||
end
|
||||
function SoldierBuffTipsCtrl:OnBtnClick_Close()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBuffTipsPanel)
|
||||
end
|
||||
return SoldierBuffTipsCtrl
|
||||
@@ -0,0 +1,20 @@
|
||||
local BasePanel = require("GameCore.UI.BasePanel")
|
||||
local SoldierBuffTipsPanel = class("SoldierBuffTipsPanel", BasePanel)
|
||||
SoldierBuffTipsPanel._bIsMainPanel = false
|
||||
SoldierBuffTipsPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "Soldier/Tips/SoldierBuffTips.prefab",
|
||||
sCtrlName = "Game.UI.Soldier.Sandtable.Components.SoldierBuffTipsCtrl"
|
||||
}
|
||||
}
|
||||
function SoldierBuffTipsPanel:Awake()
|
||||
end
|
||||
function SoldierBuffTipsPanel:OnEnable()
|
||||
end
|
||||
function SoldierBuffTipsPanel:OnDisable()
|
||||
end
|
||||
function SoldierBuffTipsPanel:OnDestroy()
|
||||
end
|
||||
function SoldierBuffTipsPanel:OnRelease()
|
||||
end
|
||||
return SoldierBuffTipsPanel
|
||||
@@ -0,0 +1,32 @@
|
||||
local iconPath2 = "Icon/SoldierOtherIcon/"
|
||||
local SoldierEffectDesCtrl = class("SoldierEffectDesCtrl", BaseCtrl)
|
||||
SoldierEffectDesCtrl._mapNodeConfig = {
|
||||
txtTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Soldier_Sandtable_PositionEffect"
|
||||
},
|
||||
ImageIcon = {sComponentName = "Image"},
|
||||
TextDes = {sComponentName = "TMP_Text"},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
}
|
||||
}
|
||||
SoldierEffectDesCtrl._mapEventConfig = {}
|
||||
SoldierEffectDesCtrl._mapRedDotConfig = {}
|
||||
function SoldierEffectDesCtrl:HideTips()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function SoldierEffectDesCtrl:ShowTips(nPositionIndex)
|
||||
self.gameObject:SetActive(true)
|
||||
local nCfgId = PlayerData.SoldierData:GetSoldierPositionEffectDataId(nPositionIndex)
|
||||
local cfg = ConfigTable.GetData("SoldierPositionEffect", nCfgId)
|
||||
if cfg then
|
||||
self:SetPngSprite(self._mapNode.ImageIcon, iconPath2 .. cfg.Icon)
|
||||
NovaAPI.SetTMPText(self._mapNode.TextDes, cfg.KeyEffectDes)
|
||||
end
|
||||
end
|
||||
function SoldierEffectDesCtrl:OnBtnClick_Close()
|
||||
self:HideTips()
|
||||
end
|
||||
return SoldierEffectDesCtrl
|
||||
@@ -0,0 +1,37 @@
|
||||
local SoldierNodeTipsCtrl = class("SoldierNodeTipsCtrl", BaseCtrl)
|
||||
local AssetRoot = "Icon/SoldierOtherIcon/"
|
||||
SoldierNodeTipsCtrl._mapNodeConfig = {
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
txtTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "SoldierNodeTips_Title"
|
||||
},
|
||||
Item = {nCount = 4}
|
||||
}
|
||||
SoldierNodeTipsCtrl._mapEventConfig = {}
|
||||
SoldierNodeTipsCtrl._mapRedDotConfig = {}
|
||||
function SoldierNodeTipsCtrl:Awake()
|
||||
for i = 1, 4 do
|
||||
local item = self._mapNode.Item[i]
|
||||
local imageIcon = item.transform:Find("ImageIcon"):GetComponent("Image")
|
||||
local textName = item.transform:Find("TextName"):GetComponent("TMP_Text")
|
||||
local nodeConfig = AllEnum.SoliderNoteTypeCfg[i]
|
||||
if nodeConfig then
|
||||
self:SetPngSprite(imageIcon, AssetRoot .. nodeConfig.Icon)
|
||||
NovaAPI.SetTMPText(textName, ConfigTable.GetUIText(nodeConfig.Language))
|
||||
end
|
||||
end
|
||||
end
|
||||
function SoldierNodeTipsCtrl:OpenNodeTips(nodeInfo)
|
||||
self.gameObject:SetActive(true)
|
||||
end
|
||||
function SoldierNodeTipsCtrl:HideNodeTips()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function SoldierNodeTipsCtrl:OnBtnClick_Close()
|
||||
self:HideNodeTips()
|
||||
end
|
||||
return SoldierNodeTipsCtrl
|
||||
@@ -0,0 +1,226 @@
|
||||
local SoldierShopCtrl = class("SoldierShopCtrl", BaseCtrl)
|
||||
SoldierShopCtrl._mapNodeConfig = {
|
||||
btn_CloseShop = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_CloseShop"
|
||||
},
|
||||
SoldierCharCardShopItem = {
|
||||
nCount = 5,
|
||||
sCtrlName = "Game.UI.Soldier.Sandtable.Items.SoldierCharCardShopItemCtrl"
|
||||
},
|
||||
btnRefreshShop = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_RefreshShop"
|
||||
},
|
||||
txtBtnRefreshShop = {sComponentName = "TMP_Text"},
|
||||
imgBtnRefreshShopMask = {},
|
||||
goCoinRaidUnlock = {},
|
||||
txtRefreshCount = {sComponentName = "TMP_Text"},
|
||||
goCoinRaidFree = {},
|
||||
txtRefreshFreeCount = {sComponentName = "TMP_Text"},
|
||||
btnLock = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Lock"
|
||||
},
|
||||
imgLocked = {},
|
||||
imgUnlocked = {},
|
||||
goProbabilityBarItem = {nCount = 5},
|
||||
imgTickets = {},
|
||||
btn_Probability = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Probability"
|
||||
}
|
||||
}
|
||||
SoldierShopCtrl._mapEventConfig = {
|
||||
SoldierItemChange = "OnEvent_SoldierItemChange"
|
||||
}
|
||||
SoldierShopCtrl._mapRedDotConfig = {}
|
||||
function SoldierShopCtrl:OnEnable()
|
||||
self.nFreeCount = 0
|
||||
self.nReRollPrice = 0
|
||||
self.levelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
self.timer = nil
|
||||
end
|
||||
function SoldierShopCtrl:OnDisable()
|
||||
if self.timer ~= nil then
|
||||
self.timer:_Stop()
|
||||
self.timer = nil
|
||||
end
|
||||
end
|
||||
function SoldierShopCtrl:ShowShopPanel()
|
||||
if self.levelData == nil then
|
||||
self.levelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
end
|
||||
self:RefreshShopData()
|
||||
self.gameObject:SetActive(true)
|
||||
end
|
||||
function SoldierShopCtrl:RefreshShopData()
|
||||
local shopData = self.levelData:GetShopData()
|
||||
if shopData == nil then
|
||||
return
|
||||
end
|
||||
self.tbChessData = shopData.tbGoods
|
||||
self.tbProbability = shopData.tbWeightList
|
||||
self.bLock = shopData.bLock
|
||||
self.nFreeCount = shopData.nFreeCount
|
||||
self.nReRollPrice = shopData.nReRollPrice
|
||||
self.bDisablePurchase = shopData.bDisablePurchase
|
||||
self.bDisableRefresh = shopData.bDisableRefresh
|
||||
self:RefreshRefreshBtnState()
|
||||
self:RefreshGoodsData()
|
||||
self:RefreshProbabilityData()
|
||||
self:RefreshTicketsData()
|
||||
self._mapNode.imgLocked:SetActive(self.bLock)
|
||||
self._mapNode.imgUnlocked:SetActive(not self.bLock)
|
||||
EventManager.Hit("RefreshPurchaseExpPrice")
|
||||
end
|
||||
function SoldierShopCtrl:HideShopPanel()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function SoldierShopCtrl:RefreshRefreshBtnState()
|
||||
self._mapNode.imgBtnRefreshShopMask.gameObject:SetActive(self.bDisableRefresh)
|
||||
self._mapNode.goCoinRaidUnlock.gameObject:SetActive(self.nFreeCount <= 0 and not self.bDisableRefresh)
|
||||
self._mapNode.goCoinRaidFree.gameObject:SetActive(self.nFreeCount > 0 and not self.bDisableRefresh)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRefreshFreeCount, self.nFreeCount)
|
||||
local sBtn = ConfigTable.GetUIText("Soldier_Shop_Refresh")
|
||||
if self.bDisableRefresh then
|
||||
sBtn = ConfigTable.GetUIText("Soldier_Shop_Refresh_Disable")
|
||||
elseif self.nFreeCount > 0 then
|
||||
sBtn = ConfigTable.GetUIText("Soldier_Shop_Refresh_Free")
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBtnRefreshShop, sBtn)
|
||||
end
|
||||
function SoldierShopCtrl:RefreshGoodsData()
|
||||
local tbGoodsData = {
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
nil
|
||||
}
|
||||
for i = 1, 5 do
|
||||
if self.tbChessData[i] ~= nil then
|
||||
local bCombine = false
|
||||
local nNextStar = 0
|
||||
if self.tbChessData[i].Id ~= 0 then
|
||||
bCombine, nNextStar = self.levelData:CheckSoldierCombine(self.tbChessData[i].Id, self.tbChessData[i].Star)
|
||||
end
|
||||
if nNextStar == 0 and 1 < self.tbChessData[i].Star then
|
||||
nNextStar = self.tbChessData[i].Star
|
||||
end
|
||||
tbGoodsData[i] = {
|
||||
nCharId = self.tbChessData[i].Id,
|
||||
nStar = nNextStar,
|
||||
nCost = self.tbChessData[i].Price
|
||||
}
|
||||
end
|
||||
end
|
||||
for i = 1, 5 do
|
||||
self._mapNode.SoldierCharCardShopItem[i]:SetData(tbGoodsData[i].nCharId, tbGoodsData[i].nCost, tbGoodsData[i].nStar, self.bDisablePurchase)
|
||||
self._mapNode.SoldierCharCardShopItem[i]:SetClickCallback(_, function()
|
||||
self:OnBtnClick_Char(i)
|
||||
end)
|
||||
end
|
||||
end
|
||||
function SoldierShopCtrl:RefreshProbabilityData()
|
||||
for i = 1, 5 do
|
||||
local TextRatio = self._mapNode.goProbabilityBarItem[i].transform:Find("TextRatio"):GetComponent("TMP_Text")
|
||||
local goFx = self._mapNode.goProbabilityBarItem[i].transform:Find("Fx_Upgrade")
|
||||
local nWeight = self.tbProbability[i].nWeight
|
||||
local bDouble = self.tbProbability[i].bDouble
|
||||
NovaAPI.SetTMPText(TextRatio, tostring(nWeight) .. "%")
|
||||
goFx.gameObject:SetActive(bDouble)
|
||||
end
|
||||
end
|
||||
function SoldierShopCtrl:RefreshTicketsData()
|
||||
self._mapNode.imgTickets:SetActive(self.nFreeCount <= 0)
|
||||
if self.nFreeCount > 0 then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRefreshCount, tostring(self.nFreeCount))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRefreshCount, tostring(self.nReRollPrice))
|
||||
end
|
||||
local coinCount = self.levelData:GetItem(AllEnum.CoinItemId.SoldierCurrency)
|
||||
if coinCount < self.nReRollPrice then
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtRefreshCount, Color(0.8431372549019608, 0.3568627450980392, 0.4392156862745098, 1))
|
||||
else
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtRefreshCount, Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764, 1))
|
||||
end
|
||||
end
|
||||
function SoldierShopCtrl:OnBtnClick_CloseShop()
|
||||
self:HideShopPanel()
|
||||
EventManager.Hit("SoldierShopClose")
|
||||
end
|
||||
function SoldierShopCtrl:OnBtnClick_Lock()
|
||||
self.levelData:SendShopLock(not self.bLock, function()
|
||||
self.bLock = not self.bLock
|
||||
self._mapNode.imgLocked:SetActive(self.bLock)
|
||||
self._mapNode.imgUnlocked:SetActive(not self.bLock)
|
||||
end)
|
||||
end
|
||||
function SoldierShopCtrl:OnBtnClick_RefreshShop()
|
||||
if self.bDisableRefresh then
|
||||
return
|
||||
end
|
||||
local coinCount = self.levelData:GetItem(AllEnum.CoinItemId.SoldierCurrency)
|
||||
if coinCount < self.nReRollPrice and self.nFreeCount <= 0 then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Soldier_BuyExp_Tips2"))
|
||||
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_shop_refresh_poor")
|
||||
return
|
||||
end
|
||||
self.levelData:SendShopRefresh(function(callbackData)
|
||||
EventManager.Hit("SoldierShopRefresh")
|
||||
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_shop_refresh")
|
||||
if self.timer ~= nil then
|
||||
self.timer:_Stop()
|
||||
self.timer = nil
|
||||
end
|
||||
local data = callbackData.shopBecomeAnother
|
||||
if callbackData.shopBecomeAnother ~= nil then
|
||||
self._mapNode.SoldierCharCardShopItem[data.nGoodsIndex]:PlayRandomRefreshOneShot()
|
||||
end
|
||||
EventManager.Hit("SoldierSandtableRefreshStep", callbackData.tbChessChangeStep)
|
||||
self.timer = self:AddTimer(1, 0.23, function()
|
||||
self:RefreshShopData()
|
||||
end, true, true, true)
|
||||
end)
|
||||
end
|
||||
function SoldierShopCtrl:OnBtnClick_Char(nIndex)
|
||||
local chessData = self.tbChessData[nIndex]
|
||||
if chessData == nil then
|
||||
return
|
||||
end
|
||||
if chessData.Id == 0 then
|
||||
return
|
||||
end
|
||||
local coinCount = self.levelData:GetItem(AllEnum.CoinItemId.SoldierCurrency)
|
||||
if coinCount < chessData.Price then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Soldier_InsufficientCoin_Tips"))
|
||||
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_shop_buy_poor")
|
||||
return
|
||||
end
|
||||
local _, tbWaiting, _ = self.levelData:GetDeploy()
|
||||
local bWaitingMax = true
|
||||
for _, v in ipairs(tbWaiting) do
|
||||
if v.nId == 0 then
|
||||
bWaitingMax = false
|
||||
break
|
||||
end
|
||||
end
|
||||
local bCombine, _ = self.levelData:CheckSoldierCombine(chessData.Id, chessData.Star)
|
||||
if bWaitingMax and not bCombine then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Soldier_OverBench_Tips"))
|
||||
return
|
||||
end
|
||||
self.levelData:SendShopPurchase(nIndex, function(tbChange)
|
||||
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_shop_buy")
|
||||
self:RefreshShopData()
|
||||
EventManager.Hit("SoldierCharItemChange", tbChange.tbChessChangeStep, self._mapNode.SoldierCharCardShopItem[nIndex].gameObject.transform)
|
||||
end)
|
||||
end
|
||||
function SoldierShopCtrl:OnBtnClick_Probability()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierShopProbabilityPanel)
|
||||
end
|
||||
function SoldierShopCtrl:OnEvent_SoldierItemChange()
|
||||
self:RefreshTicketsData()
|
||||
end
|
||||
return SoldierShopCtrl
|
||||
@@ -0,0 +1,29 @@
|
||||
local SoldierBuffItemCtrl = class("SoldierBuffItemCtrl", BaseCtrl)
|
||||
local RootPath = "Icon/SoldierBuffCard/"
|
||||
local bgPath = "Icon/SoldierOtherIcon/"
|
||||
SoldierBuffItemCtrl._mapNodeConfig = {
|
||||
imgIcon = {sComponentName = "Image"},
|
||||
imgBg = {sComponentName = "Image"}
|
||||
}
|
||||
SoldierBuffItemCtrl._mapEventConfig = {}
|
||||
SoldierBuffItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierBuffItemCtrl:Awake()
|
||||
end
|
||||
function SoldierBuffItemCtrl:OnEnable()
|
||||
end
|
||||
function SoldierBuffItemCtrl:OnDisable()
|
||||
end
|
||||
function SoldierBuffItemCtrl:OnDestroy()
|
||||
end
|
||||
function SoldierBuffItemCtrl:SetData(mapCfg)
|
||||
if mapCfg == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imgIcon, RootPath .. mapCfg.Icon)
|
||||
if mapCfg.Rarity ~= 0 then
|
||||
self:SetPngSprite(self._mapNode.imgBg, bgPath .. AllEnum.SoldierStrategyCardRarityIcon[mapCfg.Rarity] .. AllEnum.SoldierChessIconSurfix.S)
|
||||
end
|
||||
end
|
||||
function SoldierBuffItemCtrl:OnRefresh()
|
||||
end
|
||||
return SoldierBuffItemCtrl
|
||||
@@ -0,0 +1,13 @@
|
||||
local SoldierBuffTipsItemCtrl = class("SoldierBuffTipsItemCtrl", BaseCtrl)
|
||||
SoldierBuffTipsItemCtrl._mapEventConfig = {}
|
||||
SoldierBuffTipsItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierBuffTipsItemCtrl:OnRefresh(mapCfg)
|
||||
if mapCfg == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.ImageIcon, mapCfg.Icon)
|
||||
NovaAPI.SetTMPText(self._mapNode.TextName, mapCfg.Name or "")
|
||||
local sDes = mapCfg.Desc or mapCfg.Des or ""
|
||||
NovaAPI.SetTMPText(self._mapNode.TextDes, sDes)
|
||||
end
|
||||
return SoldierBuffTipsItemCtrl
|
||||
@@ -0,0 +1,323 @@
|
||||
local SoldierAttrData = require("GameCore.Data.DataClass.Soldier.SoldierAttrData")
|
||||
local SoldierCharCardShopItemCtrl = class("SoldierCharCardShopItemCtrl", BaseCtrl)
|
||||
local SYNERGY_TEMPLATE_PATH = "Game.UI.Soldier.Sandtable.Items.SoldierCharCardShopPartnerItemCtrl"
|
||||
local _DestroyNode = function(node)
|
||||
if node == nil then
|
||||
return
|
||||
end
|
||||
if node.IsNull ~= nil and node:IsNull() == true then
|
||||
return
|
||||
end
|
||||
destroy(node.gameObject or node)
|
||||
end
|
||||
SoldierCharCardShopItemCtrl._mapNodeConfig = {
|
||||
imgUpgradeStar = {nCount = 5},
|
||||
imgUpgrade = {},
|
||||
btnItem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnItemClick"
|
||||
},
|
||||
imgSelect = {},
|
||||
imageRarity = {sComponentName = "Image"},
|
||||
imgEmpty = {},
|
||||
Container = {},
|
||||
txtShopName = {sComponentName = "TMP_Text"},
|
||||
txtCharName = {sComponentName = "TMP_Text"},
|
||||
ImageIcon = {sComponentName = "Image"},
|
||||
imgPosition = {},
|
||||
img_Position = {sComponentName = "Image"},
|
||||
imgRecommend = {sComponentName = "Image"},
|
||||
imgUnavailable = {},
|
||||
imgInHand = {},
|
||||
txtCost = {sComponentName = "TMP_Text"},
|
||||
goSynergyRoot = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
SynergyTemplate = {},
|
||||
animRoot = {sNodeName = "AnimRoot", sComponentName = "Animator"},
|
||||
FxCard_Random = {sComponentName = "Animator"}
|
||||
}
|
||||
SoldierCharCardShopItemCtrl._mapEventConfig = {
|
||||
SoldierCharCardShopItemClicked = "OnEvent_SoldierCharCardShopItemClicked",
|
||||
SoldierRecommend_Update = "SetTrackAndRecommend",
|
||||
SoldierPartnerTrace = "SetTrackAndRecommend",
|
||||
SoldierShopRefresh = "OnShopRefresh"
|
||||
}
|
||||
SoldierCharCardShopItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierCharCardShopItemCtrl:Awake()
|
||||
self.nSlotIndex = 0
|
||||
self.fnClickHost = nil
|
||||
self.fnClickFunc = nil
|
||||
self._tbSynergyItemCtrl = {}
|
||||
self._tbSynergyItemGo = {}
|
||||
self._mapNode.FxCard_Random.gameObject:SetActive(false)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:OnEnable()
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:OnDisable()
|
||||
self:SetEmpty()
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:OnDestroy()
|
||||
self._objClickCallback = nil
|
||||
self._fnClickCallback = nil
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetSlotIndex(nIndex)
|
||||
self.nSlotIndex = nIndex
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetClickCallback(host, func)
|
||||
self._objClickCallback = host
|
||||
self._fnClickCallback = func
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetData(nCharId, nCost, nStar, bDisablePurchase)
|
||||
self.nCharId = nCharId
|
||||
if nCharId == nil or nCharId <= 0 then
|
||||
self:SetEmpty()
|
||||
return
|
||||
end
|
||||
local mapChar = ConfigTable.GetData("SoldierCharacter", nCharId)
|
||||
if mapChar == nil then
|
||||
self:SetEmpty()
|
||||
return
|
||||
end
|
||||
self:SetNodeActive(self._mapNode.imgEmpty, false)
|
||||
self:SetNodeActive(self._mapNode.Container, true)
|
||||
self:RefreshBaseCard(mapChar)
|
||||
self:SetInHand(nStar)
|
||||
if nStar ~= nil then
|
||||
self:SetUpgradeHint(nStar or 0)
|
||||
end
|
||||
local mapShopData
|
||||
ForEachTableLine(DataTable.SoldierShopPool, function(mapData)
|
||||
if mapData.ChessCharacterId == nCharId then
|
||||
mapShopData = mapData
|
||||
end
|
||||
end)
|
||||
if mapShopData ~= nil then
|
||||
local nHasMoney = PlayerData.SoldierData:GetCurLevelData():GetItem(AllEnum.CoinItemId.SoldierCurrency)
|
||||
self:SetAvailable(nHasMoney >= (nCost or 0) and not bDisablePurchase)
|
||||
local sCost = tostring(nCost or 0)
|
||||
if nHasMoney < (nCost or 0) then
|
||||
sCost = "<color=#E15C73>" .. sCost .. "</color>"
|
||||
end
|
||||
self:SetCost(sCost)
|
||||
end
|
||||
self:RefreshSynergy()
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetEmpty()
|
||||
self.nCharId = nil
|
||||
self:SetNodeActive(self._mapNode.imgEmpty or self._mapNode.EmptyContainer or self._mapNode.imgEmpty, true)
|
||||
self:SetNodeActive(self._mapNode.Container, false)
|
||||
self:ResetAllStates()
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:ResetAllStates()
|
||||
self:SetNodeActive(self._mapNode.imgRecommend, false)
|
||||
self:SetNodeActive(self._mapNode.imgUnavailable, false)
|
||||
self:SetNodeActive(self._mapNode.imgInHand, false)
|
||||
self:SetNodeActive(self._mapNode.imgPosition, false)
|
||||
self:SetUpgradeHint(0)
|
||||
self:_ClearSynergyItems()
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:RefreshBaseCard(mapChar)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtShopName, mapChar.Name or "")
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCharName, mapChar.Name or "")
|
||||
local mapSkin = ConfigTable.GetData("SoldierSkin", mapChar.Skin)
|
||||
if mapSkin ~= nil then
|
||||
self:SetPngSprite(self._mapNode.ImageIcon, mapSkin.Icon .. AllEnum.SoldierChessIconSurfix.L)
|
||||
end
|
||||
self:SetChessPosition(mapChar.Type)
|
||||
self:SetRarity(mapChar.Rarity)
|
||||
self:SetTrackAndRecommend()
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetRarity(nRarity)
|
||||
if nRarity == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imageRarity, "Icon/SoldierOtherIcon/" .. AllEnum.SoldierChessRarityIcon[nRarity] .. AllEnum.SoldierChessIconSurfix.L)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetChessPosition(nType)
|
||||
self._mapNode.imgPosition.gameObject:SetActive(true)
|
||||
if nType == nil then
|
||||
return
|
||||
end
|
||||
local tbChessTypeConfig = CacheTable.GetData("_SoldierChessType", nType)
|
||||
local sIcon = ""
|
||||
if tbChessTypeConfig ~= nil then
|
||||
sIcon = tbChessTypeConfig.Icon
|
||||
end
|
||||
local sPath = "Icon/SoldierOtherIcon/" .. sIcon
|
||||
self:SetPngSprite(self._mapNode.img_Position, sPath)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetTrackAndRecommend()
|
||||
if self.nCharId == nil then
|
||||
return
|
||||
end
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(true)
|
||||
local levelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
if levelData == nil then
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
local bTrack = levelData:CheckChessTrace(self.nCharId)
|
||||
local bRecommend = PlayerData.SoldierData:CheckChessRecommendState(self.nCharId)
|
||||
local sIcon = ""
|
||||
if bRecommend and bTrack then
|
||||
sIcon = "Icon/SoldierOtherIcon/SoldierPartnerBuilds_03"
|
||||
elseif bTrack then
|
||||
sIcon = "Icon/SoldierOtherIcon/SoldierPartnerBuilds_02"
|
||||
elseif bRecommend then
|
||||
sIcon = "Icon/SoldierOtherIcon/SoldierPartnerBuilds_01"
|
||||
else
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(false)
|
||||
end
|
||||
if sIcon ~= "" then
|
||||
self:SetPngSprite(self._mapNode.imgRecommend, sIcon)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetInHand(nStar)
|
||||
if nStar ~= nil and 2 <= nStar then
|
||||
self:SetNodeActive(self._mapNode.imgInHand, true)
|
||||
return
|
||||
end
|
||||
local tbDeploy, tbWaiting, _ = PlayerData.SoldierData:GetCurLevelData():GetDeploy()
|
||||
local bInHand = false
|
||||
for k, v in pairs(tbDeploy) do
|
||||
if v.nId == self.nCharId then
|
||||
bInHand = true
|
||||
break
|
||||
end
|
||||
end
|
||||
if bInHand == false then
|
||||
for k, v in pairs(tbWaiting) do
|
||||
if v.nId == self.nCharId then
|
||||
bInHand = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
self:SetNodeActive(self._mapNode.imgInHand, bInHand)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetUpgradeHint(nStar)
|
||||
nStar = nStar or 0
|
||||
if nStar < 2 then
|
||||
nStar = 0
|
||||
end
|
||||
if nStar == 0 then
|
||||
self:SetNodeActive(self._mapNode.imgUpgrade, false)
|
||||
return
|
||||
else
|
||||
self:SetNodeActive(self._mapNode.imgUpgrade, true)
|
||||
end
|
||||
for i = 1, 5 do
|
||||
self:SetNodeActive(self._mapNode.imgUpgradeStar and self._mapNode.imgUpgradeStar[i], nStar >= i)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetAvailable(bAvailable)
|
||||
self:SetNodeActive(self._mapNode.imgUnavailable, not bAvailable)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetCost(sCost)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCost, sCost)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetSelect(bSelect)
|
||||
self:SetNodeActive(self._mapNode.imgSelect, bSelect)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:GetAnimator()
|
||||
if self._mapNode.animRoot == nil then
|
||||
self._mapNode.animRoot = self.gameObejct.transform:GetChild(0):GetChild(0):GetComponent("Animator")
|
||||
if self._mapNode.animRoot == nil then
|
||||
return nil
|
||||
end
|
||||
end
|
||||
return self._mapNode.animRoot
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:PlayRandomRefreshOneShot()
|
||||
if self.timerRandomRefresh ~= nil then
|
||||
self.timerRandomRefresh:Cancel()
|
||||
self.timerRandomRefresh = nil
|
||||
self._mapNode.FxCard_Random.gameObject:SetActive(false)
|
||||
end
|
||||
self._mapNode.FxCard_Random.gameObject:SetActive(true)
|
||||
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.FxCard_Random, {
|
||||
"ShopCardItem_random"
|
||||
})
|
||||
self.timerRandomRefresh = self:AddTimer(1, nAnimLength, function()
|
||||
self._mapNode.FxCard_Random.gameObject:SetActive(false)
|
||||
end, true, true, true)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:RefreshSynergy()
|
||||
self:_ClearSynergyItems()
|
||||
self:SetNodeActive(self._mapNode.SynergyTemplate, false)
|
||||
local tbPartnerTypes = SoldierAttrData.GetPartnerGroupsByChessId(self.nCharId)
|
||||
if tbPartnerTypes == nil or #tbPartnerTypes == 0 then
|
||||
self:SetNodeActive(self._mapNode.goSynergyRoot, false)
|
||||
return
|
||||
end
|
||||
local goTemplate = self._mapNode.SynergyTemplate
|
||||
local goRoot = self._mapNode.goSynergyRoot
|
||||
if goTemplate == nil or goRoot == nil then
|
||||
return
|
||||
end
|
||||
self:SetNodeActive(goRoot, true)
|
||||
local trParent = goRoot.transform or goRoot
|
||||
local nItemCount = 0
|
||||
for _, nPartnerType in ipairs(tbPartnerTypes) do
|
||||
local mapGroup = CacheTable.GetData("_SoldierPartnerGroup", nPartnerType)
|
||||
if mapGroup ~= nil then
|
||||
local goItem = instantiate(goTemplate, trParent)
|
||||
self:SetNodeActive(goItem, true)
|
||||
local ctrl = self:BindCtrlByNode(goItem, SYNERGY_TEMPLATE_PATH)
|
||||
if ctrl ~= nil then
|
||||
ctrl:OnRefresh(mapGroup)
|
||||
nItemCount = nItemCount + 1
|
||||
self._tbSynergyItemCtrl = self._tbSynergyItemCtrl or {}
|
||||
self._tbSynergyItemGo = self._tbSynergyItemGo or {}
|
||||
table.insert(self._tbSynergyItemCtrl, ctrl)
|
||||
table.insert(self._tbSynergyItemGo, goItem)
|
||||
else
|
||||
_DestroyNode(goItem)
|
||||
end
|
||||
end
|
||||
end
|
||||
self:SetNodeActive(goRoot, 0 < nItemCount)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:_ClearSynergyItems()
|
||||
local tbSynergyItemCtrl = self._tbSynergyItemCtrl or {}
|
||||
for _, ctrl in ipairs(tbSynergyItemCtrl) do
|
||||
self:UnbindCtrlByNode(ctrl)
|
||||
end
|
||||
local tbSynergyItemGo = self._tbSynergyItemGo or {}
|
||||
for _, goItem in ipairs(tbSynergyItemGo) do
|
||||
_DestroyNode(goItem)
|
||||
end
|
||||
self._tbSynergyItemCtrl = {}
|
||||
self._tbSynergyItemGo = {}
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:SetNodeActive(node, bActive)
|
||||
if node == nil then
|
||||
return
|
||||
end
|
||||
if node.gameObject ~= nil then
|
||||
node.gameObject:SetActive(bActive)
|
||||
else
|
||||
node:SetActive(bActive)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:OnBtnItemClick()
|
||||
if self._fnClickCallback ~= nil and self.nCharId ~= nil then
|
||||
self._fnClickCallback(self._objClickCallback, self.nCharId)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:OnEvent_SoldierCharCardShopItemClicked(nCharId)
|
||||
if nCharId == nil then
|
||||
self:SetSelect(false)
|
||||
return
|
||||
end
|
||||
self:SetSelect(nCharId == self.nCharId)
|
||||
end
|
||||
function SoldierCharCardShopItemCtrl:OnShopRefresh(bRandomRefresh)
|
||||
if bRandomRefresh then
|
||||
self:PlayRandomRefreshOneShot()
|
||||
else
|
||||
self:GetAnimator():Play("ShopCardItem_refresh")
|
||||
end
|
||||
end
|
||||
return SoldierCharCardShopItemCtrl
|
||||
@@ -0,0 +1,18 @@
|
||||
local SoldierCharCardShopPartnerItemCtrl = class("SoldierCharCardShopPartnerItemCtrl", BaseCtrl)
|
||||
SoldierCharCardShopPartnerItemCtrl._mapNodeConfig = {
|
||||
txtPartnerName = {sComponentName = "TMP_Text"},
|
||||
imgPartnerIcon = {sComponentName = "Image"}
|
||||
}
|
||||
SoldierCharCardShopPartnerItemCtrl._mapEventConfig = {}
|
||||
SoldierCharCardShopPartnerItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierCharCardShopPartnerItemCtrl:Awake()
|
||||
self._tbTimer = {}
|
||||
end
|
||||
function SoldierCharCardShopPartnerItemCtrl:OnRefresh(mapGroup)
|
||||
if mapGroup == nil then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPartnerName, mapGroup.Name or "")
|
||||
self:SetPngSprite(self._mapNode.imgPartnerIcon, "Icon/SoldierPartner/" .. mapGroup.Icon .. AllEnum.SoldierChessIconSurfix.M)
|
||||
end
|
||||
return SoldierCharCardShopPartnerItemCtrl
|
||||
@@ -0,0 +1,13 @@
|
||||
local SoldierEffectDesItemCtrl = class("SoldierEffectDesItemCtrl", BaseCtrl)
|
||||
SoldierEffectDesItemCtrl._mapNodeConfig = {}
|
||||
SoldierEffectDesItemCtrl._mapEventConfig = {}
|
||||
SoldierEffectDesItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierEffectDesItemCtrl:OnRefresh(tbData, nCardId)
|
||||
if self._mapNode.TextName ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.TextName, tbData and tbData.sName or "")
|
||||
end
|
||||
if self._mapNode.TextDes ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.TextDes, tbData and tbData.sDes or "")
|
||||
end
|
||||
end
|
||||
return SoldierEffectDesItemCtrl
|
||||
@@ -0,0 +1,19 @@
|
||||
local SoldierNodeItemCtrl = class("SoldierNodeItemCtrl", BaseCtrl)
|
||||
function SoldierNodeItemCtrl:Awake()
|
||||
self.serverData = PlayerData.SoldierData.ServerData
|
||||
end
|
||||
function SoldierNodeItemCtrl:OnEnable()
|
||||
end
|
||||
function SoldierNodeItemCtrl:OnDisable()
|
||||
end
|
||||
function SoldierNodeItemCtrl:OnDestroy()
|
||||
end
|
||||
function SoldierNodeItemCtrl:OnRefresh(nodeId)
|
||||
local config = ConfigTable.GetData("SoldierNodePlan", nodeId)
|
||||
if config then
|
||||
self:SetPngSprite(self._mapNode.imgIcon, config.NodeIcon)
|
||||
end
|
||||
local curNodeId = self.serverData:GetNodeId()
|
||||
self._mapNode.imgStatus:SetActive(curNodeId == nodeId)
|
||||
end
|
||||
return SoldierNodeItemCtrl
|
||||
@@ -0,0 +1,98 @@
|
||||
local SoldierPartnerListCtrl = class("SoldierPartnerListCtrl", BaseCtrl)
|
||||
local iconPath = "Icon/SoldierOtherIcon/"
|
||||
local partnerPath = "Icon/SoldierPartner/"
|
||||
SoldierPartnerListCtrl._mapNodeConfig = {
|
||||
sv_partner = {
|
||||
sNodeName = "PartnerContainer",
|
||||
sComponentName = "LoopScrollView"
|
||||
}
|
||||
}
|
||||
SoldierPartnerListCtrl._mapEventConfig = {
|
||||
SoldierPartnerTrace = "OnEvent_SoldierPartnerTrace",
|
||||
SoldierPartnerNewActive = "OnEvent_SoldierPartnerNewActive"
|
||||
}
|
||||
SoldierPartnerListCtrl._mapRedDotConfig = {}
|
||||
function SoldierPartnerListCtrl:SetData(tbPartner)
|
||||
self.tbPartner = tbPartner
|
||||
self:RefreshPartnerList()
|
||||
end
|
||||
function SoldierPartnerListCtrl:SetTipsRoot(tr)
|
||||
self.trTipsRoot = tr
|
||||
end
|
||||
function SoldierPartnerListCtrl:RefreshPartnerList()
|
||||
if self.tbPartner == nil or #self.tbPartner == 0 then
|
||||
self._mapNode.sv_partner.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
self._mapNode.sv_partner.gameObject:SetActive(true)
|
||||
self._mapNode.sv_partner:Init(#self.tbPartner, self, self.OnPartnerRefreshGrid, self.OnPartnerGridBtnClick, false)
|
||||
self.tbNewPartner = {}
|
||||
end
|
||||
function SoldierPartnerListCtrl:OnPartnerRefreshGrid(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local partner = self.tbPartner[nIndex]
|
||||
local partnerGroupCfg = CacheTable.GetData("_SoldierPartnerGroup", partner.nType)
|
||||
if partnerGroupCfg == nil then
|
||||
return
|
||||
end
|
||||
local nIndex = table.indexof(partner.tbNumList, partner.nActiveNum)
|
||||
local partnerCfgList = CacheTable.GetData("_SoldierPartner", partner.nType)
|
||||
if partnerCfgList == nil then
|
||||
return
|
||||
end
|
||||
local partnerCfg = partnerCfgList[partner.nActiveLevel]
|
||||
if partnerCfg == nil then
|
||||
partnerCfg = partnerCfgList[1]
|
||||
end
|
||||
local img_bg = goGrid.transform:Find("Common/ImageIcon"):GetComponent("Image")
|
||||
local img_icon = goGrid.transform:Find("Common/imgPartnericon"):GetComponent("Image")
|
||||
local txt_name = goGrid.transform:Find("Common/TextName"):GetComponent("TMP_Text")
|
||||
local txtPartner = goGrid.transform:Find("Common/imgPartnerbg/txtPartner"):GetComponent("TMP_Text")
|
||||
local txtPartner2 = goGrid.transform:Find("Common/txtPartner2"):GetComponent("TMP_Text")
|
||||
local img_Trace = goGrid.transform:Find("Common/imgBuildsIcon")
|
||||
if partner.nActiveLevel == 0 then
|
||||
self:SetPngSprite(img_bg, iconPath .. AllEnum.SoldierPartnerLevelIcon[GameEnum.PartnerLevelQuality.None].bg)
|
||||
else
|
||||
self:SetPngSprite(img_bg, iconPath .. AllEnum.SoldierPartnerLevelIcon[partnerCfg.PartnerLevelQuality].bg)
|
||||
end
|
||||
self:SetPngSprite(img_icon, partnerPath .. partnerGroupCfg.Icon .. AllEnum.SoldierChessIconSurfix.M)
|
||||
NovaAPI.SetTMPText(txt_name, partnerCfg.Name)
|
||||
NovaAPI.SetTMPText(txtPartner2, partner.nCurNum)
|
||||
local bTrace = PlayerData.SoldierData:GetCurLevelData():CheckPartnerTrace(partner.nType)
|
||||
local bRecommend = PlayerData.SoldierData:CheckPartnerRecommendState(partner.nType)
|
||||
img_Trace.gameObject:SetActive(bTrace or bRecommend)
|
||||
local strLevel = ""
|
||||
for i = 1, #partner.tbNumList do
|
||||
if 1 < i then
|
||||
strLevel = strLevel .. "/"
|
||||
end
|
||||
if i ~= partner.nActiveLevel then
|
||||
strLevel = strLevel .. partner.tbNumList[i]
|
||||
else
|
||||
strLevel = strLevel .. "<color=#EED9BD>" .. partner.tbNumList[i] .. "</color>"
|
||||
end
|
||||
end
|
||||
NovaAPI.SetTMPText(txtPartner, strLevel)
|
||||
local animator = goGrid.transform:GetComponent("Animator")
|
||||
if animator ~= nil and self.tbNewPartner ~= nil and 0 < table.indexof(self.tbNewPartner, partner.nType) then
|
||||
animator:Play("PartnerActive")
|
||||
end
|
||||
end
|
||||
function SoldierPartnerListCtrl:OnPartnerGridBtnClick(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local partner = self.tbPartner[nIndex]
|
||||
local bTrace = PlayerData.SoldierData:GetCurLevelData():CheckPartnerTrace(partner.nType)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierPartnerTips, self.trTipsRoot, partner.nType, partner.nActiveLevel, bTrace)
|
||||
local tr = self.trTipsRoot
|
||||
EventManager.Hit("OnSetParnterTipsPosition", tr:GetChild(0).position, tr:GetChild(1).position, tr:GetChild(2).position, tr:GetChild(3).position)
|
||||
end
|
||||
function SoldierPartnerListCtrl:OnEvent_SoldierPartnerTrace()
|
||||
self:RefreshPartnerList()
|
||||
end
|
||||
function SoldierPartnerListCtrl:OnEvent_SoldierPartnerNewActive(tbActivePartner)
|
||||
self.tbNewPartner = {}
|
||||
for k, v in pairs(tbActivePartner) do
|
||||
table.insert(self.tbNewPartner, k)
|
||||
end
|
||||
end
|
||||
return SoldierPartnerListCtrl
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,163 @@
|
||||
local SoldierSandtableFxCtrl = class("SoldierSandtableFxCtrl", BaseCtrl)
|
||||
local nTime = 0.5
|
||||
local fxType = {
|
||||
Gray = 1,
|
||||
Green = 2,
|
||||
Blue = 3,
|
||||
Purple = 4,
|
||||
Gold = 5,
|
||||
Coin = 99
|
||||
}
|
||||
SoldierSandtableFxCtrl._mapNodeConfig = {
|
||||
RoleSlide_Coin = {},
|
||||
RoleSlide_Blue = {nCount = 5},
|
||||
RoleSlide_Gold = {nCount = 5},
|
||||
RoleSlide_Gray = {nCount = 6},
|
||||
RoleSlide_Green = {nCount = 5},
|
||||
RoleSlide_Purple = {nCount = 5}
|
||||
}
|
||||
SoldierSandtableFxCtrl._mapEventConfig = {}
|
||||
SoldierSandtableFxCtrl._mapRedDotConfig = {}
|
||||
function SoldierSandtableFxCtrl:Awake()
|
||||
end
|
||||
function SoldierSandtableFxCtrl:OnEnable()
|
||||
self:InitFx()
|
||||
end
|
||||
function SoldierSandtableFxCtrl:InitFx()
|
||||
self._mapNode.RoleSlide_Coin:SetActive(false)
|
||||
self.tbUnUseNode = {
|
||||
[fxType.Coin] = {},
|
||||
[fxType.Blue] = {},
|
||||
[fxType.Gold] = {},
|
||||
[fxType.Gray] = {},
|
||||
[fxType.Green] = {},
|
||||
[fxType.Purple] = {}
|
||||
}
|
||||
self.tbUseNode = {
|
||||
[fxType.Coin] = {},
|
||||
[fxType.Blue] = {},
|
||||
[fxType.Gold] = {},
|
||||
[fxType.Gray] = {},
|
||||
[fxType.Green] = {},
|
||||
[fxType.Purple] = {}
|
||||
}
|
||||
table.insert(self.tbUnUseNode[fxType.Coin], self._mapNode.RoleSlide_Coin)
|
||||
for _, v in ipairs(self._mapNode.RoleSlide_Blue) do
|
||||
v:SetActive(false)
|
||||
table.insert(self.tbUnUseNode[fxType.Blue], v)
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.RoleSlide_Gold) do
|
||||
v:SetActive(false)
|
||||
table.insert(self.tbUnUseNode[fxType.Gold], v)
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.RoleSlide_Gray) do
|
||||
v:SetActive(false)
|
||||
table.insert(self.tbUnUseNode[fxType.Gray], v)
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.RoleSlide_Green) do
|
||||
v:SetActive(false)
|
||||
table.insert(self.tbUnUseNode[fxType.Green], v)
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.RoleSlide_Purple) do
|
||||
v:SetActive(false)
|
||||
table.insert(self.tbUnUseNode[fxType.Purple], v)
|
||||
end
|
||||
end
|
||||
function SoldierSandtableFxCtrl:PlayFx(tbfx, callback)
|
||||
for nType, v in pairs(tbfx) do
|
||||
if nType == fxType.Coin then
|
||||
local go = self:GetUnUseNode(nType)
|
||||
self:PlayFxItem(go, v[1].from, v[1].to, nType)
|
||||
elseif nType == fxType.Blue then
|
||||
for i = 1, #v do
|
||||
local go = self:GetUnUseNode(nType)
|
||||
self:PlayFxItem(go, v[i].from, v[i].to, nType)
|
||||
end
|
||||
elseif nType == fxType.Gold then
|
||||
for i = 1, #v do
|
||||
local go = self:GetUnUseNode(nType)
|
||||
self:PlayFxItem(go, v[i].from, v[i].to, nType)
|
||||
end
|
||||
elseif nType == fxType.Gray then
|
||||
for i = 1, #v do
|
||||
local go = self:GetUnUseNode(nType)
|
||||
self:PlayFxItem(go, v[i].from, v[i].to, nType)
|
||||
end
|
||||
elseif nType == fxType.Green then
|
||||
for i = 1, #v do
|
||||
local go = self:GetUnUseNode(nType)
|
||||
self:PlayFxItem(go, v[i].from, v[i].to, nType)
|
||||
end
|
||||
elseif nType == fxType.Purple then
|
||||
for i = 1, #v do
|
||||
local go = self:GetUnUseNode(nType)
|
||||
self:PlayFxItem(go, v[i].from, v[i].to, nType)
|
||||
end
|
||||
end
|
||||
end
|
||||
self:AddTimer(1, nTime - 0.2, function()
|
||||
if callback ~= nil then
|
||||
callback()
|
||||
end
|
||||
end, true, true, true)
|
||||
end
|
||||
function SoldierSandtableFxCtrl:PlayFxItem(go, from, to, nType)
|
||||
if go == nil then
|
||||
return
|
||||
end
|
||||
go:SetActive(true)
|
||||
go.transform.position = from.position
|
||||
local boomfx = go.transform:Find("P_Ecplor_Cbess")
|
||||
boomfx.gameObject:SetActive(true)
|
||||
local trail = go.transform:Find("P_Slide_Cbess")
|
||||
local animaFunc = function()
|
||||
local beginPos = from.position
|
||||
local endPos = to.position
|
||||
local controlPos = Vector3((beginPos.x + endPos.x) / 2.0, (beginPos.y + endPos.y) / 2.0, 0)
|
||||
local wait = function()
|
||||
local totalMoveTime = nTime - 0.2
|
||||
local moveTime = 0
|
||||
local normalizedTime = 0
|
||||
while normalizedTime < 1 do
|
||||
moveTime = moveTime + CS.UnityEngine.Time.unscaledDeltaTime
|
||||
normalizedTime = moveTime / totalMoveTime
|
||||
normalizedTime = normalizedTime <= 1 and normalizedTime or 1
|
||||
local x, y, z = UTILS.GetBezierPointByT(beginPos, controlPos, endPos, normalizedTime)
|
||||
local angleZ = 100 * normalizedTime * 2
|
||||
angleZ = angleZ <= 100 and angleZ or 100
|
||||
go.transform.localEulerAngles = Vector3(0, 0, angleZ)
|
||||
go.transform.position = Vector3(x, y, z)
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
end
|
||||
go:SetActive(false)
|
||||
self:BackUseNode(nType, go)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
self:AddTimer(1, 0.2, function()
|
||||
boomfx.gameObject:SetActive(false)
|
||||
animaFunc()
|
||||
end, true, true, true)
|
||||
end
|
||||
function SoldierSandtableFxCtrl:GetUnUseNode(nType)
|
||||
if self.tbUnUseNode[nType] == nil then
|
||||
return nil
|
||||
end
|
||||
local go = table.remove(self.tbUnUseNode[nType], 1)
|
||||
if go == nil then
|
||||
return nil
|
||||
end
|
||||
table.insert(self.tbUseNode[nType], go)
|
||||
return go
|
||||
end
|
||||
function SoldierSandtableFxCtrl:BackUseNode(nType, go)
|
||||
if self.tbUseNode[nType] == nil then
|
||||
return nil
|
||||
end
|
||||
local index = table.indexof(self.tbUseNode[nType], go)
|
||||
table.remove(self.tbUseNode[nType], index)
|
||||
table.insert(self.tbUnUseNode[nType], go)
|
||||
end
|
||||
function SoldierSandtableFxCtrl:OnEvent_AAA()
|
||||
end
|
||||
return SoldierSandtableFxCtrl
|
||||
@@ -0,0 +1,131 @@
|
||||
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
|
||||
@@ -0,0 +1,48 @@
|
||||
local SoldierSandtablePanel = class("SoldierSandtablePanel", BasePanel)
|
||||
SoldierSandtablePanel._bIsMainPanel = true
|
||||
SoldierSandtablePanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "Soldier/Level/SoldierSandtablePanel.prefab",
|
||||
sCtrlName = "Game.UI.Soldier.Sandtable.SoldierSandtableCtrl"
|
||||
}
|
||||
}
|
||||
function SoldierSandtablePanel:Awake()
|
||||
self.MainChessList = {}
|
||||
self.SupportChessList = {}
|
||||
self.WaitingChessList = {}
|
||||
self.OtherChessList = {}
|
||||
self.bFirstRefreshed = false
|
||||
end
|
||||
function SoldierSandtablePanel:InitChessList()
|
||||
for i = 1, 3 do
|
||||
self.MainChessList[i] = {
|
||||
nId = 0,
|
||||
nStar = 0,
|
||||
nPositionType = GameEnum.SoldierPositionType.FightPosition,
|
||||
nIndex = i
|
||||
}
|
||||
end
|
||||
for i = 1, 6 do
|
||||
self.SupportChessList[i] = {
|
||||
nId = 0,
|
||||
nStar = 0,
|
||||
nPositionType = GameEnum.SoldierPositionType.SupportPosition,
|
||||
nIndex = i
|
||||
}
|
||||
end
|
||||
for i = 1, 9 do
|
||||
self.WaitingChessList[i] = {
|
||||
nId = 0,
|
||||
nStar = 0,
|
||||
nPositionType = 3,
|
||||
nIndex = i
|
||||
}
|
||||
end
|
||||
end
|
||||
function SoldierSandtablePanel:OnEnable()
|
||||
end
|
||||
function SoldierSandtablePanel:OnDisable()
|
||||
end
|
||||
function SoldierSandtablePanel:OnDestroy()
|
||||
end
|
||||
return SoldierSandtablePanel
|
||||
Reference in New Issue
Block a user