Files
SL1900 eafd8f4088 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
2026-05-14 16:00:00 +09:00

116 lines
4.2 KiB
Lua

local DatingLandmarkCtrl = class("DatingLandmarkCtrl", BaseCtrl)
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
local LocalSettingData = require("GameCore.Data.LocalSettingData")
DatingLandmarkCtrl._mapNodeConfig = {
goBlur = {},
canvasBlur = {sNodeName = "goBlur", sComponentName = "Canvas"},
trRoot = {
sNodeName = "----Actor2D_L2DInUI----",
sComponentName = "Transform"
},
trActor2D_PNG = {
sNodeName = "----Actor2D_PNG----",
sComponentName = "Transform"
},
SlipInOutAnim = {sComponentName = "Animator"},
goContent = {
sNodeName = "----SafeAreaRoot----"
},
txtTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Dating_Select_Landmark_Title"
},
goLandMarkItem = {nCount = 3},
btnGoto = {
nCount = 3,
sComponentName = "UIButton",
callback = "OnBtnClick_Goto"
},
txtBtnGoto = {
nCount = 3,
sComponentName = "TMP_Text",
sLanguageId = "Dating_Select_Landmark_Btn"
},
btnBack = {
sComponentName = "UIButton",
callback = "OnBtnClick_Back"
}
}
DatingLandmarkCtrl._mapEventConfig = {
[EventId.TransAnimInClear] = "OnEvent_TransAnimInClear"
}
function DatingLandmarkCtrl:SetLandmarkList()
self.tbLandmark = PlayerData.Dating:GetRandomLandmark()
for k, v in ipairs(self._mapNode.goLandMarkItem) do
v.gameObject:SetActive(self.tbLandmark[k] ~= nil)
if self.tbLandmark[k] ~= nil then
self:SetLandmarkItem(self.tbLandmark[k], v)
end
end
end
function DatingLandmarkCtrl:SetLandmarkItem(mapCfg, objItem)
local imgLandmark = objItem.transform:Find("mask/imgLandmark"):GetComponent("Image")
local txtName = objItem.transform:Find("txtName"):GetComponent("TMP_Text")
local txtDesc = objItem.transform:Find("txtDesc"):GetComponent("TMP_Text")
local imgTag = objItem.transform:Find("imgTag")
local txtTag = objItem.transform:Find("imgTag/txtTag"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txtTag, ConfigTable.GetUIText("Phone_Dating_Special_Event_Title"))
NovaAPI.SetTMPText(txtName, mapCfg.Name)
NovaAPI.SetTMPText(txtDesc, mapCfg.Desc)
self:SetPngSprite(imgLandmark, mapCfg.Icon)
local bHasNew = PlayerData.Dating:CheckHasNewEvent(self.nCharId, mapCfg.Id)
imgTag.gameObject:SetActive(bHasNew)
end
function DatingLandmarkCtrl:Awake()
end
function DatingLandmarkCtrl:OnEnable()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" then
self.nCharId = tbParam[1]
end
self._mapNode.goContent.gameObject:SetActive(false)
self._mapNode.goBlur.gameObject:SetActive(true)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self._mapNode.goContent.gameObject:SetActive(true)
local bL2d = LocalSettingData.mapData.UseLive2D
self._mapNode.trRoot.gameObject:SetActive(bL2d)
self._mapNode.trActor2D_PNG.gameObject:SetActive(not bL2d)
if bL2d then
Actor2DManager.SetActor2DInUI(self:GetPanelId(), self._mapNode.trRoot, self.nCharId, nil, true)
else
Actor2DManager.SetActor2D_PNG(self._mapNode.trActor2D_PNG, self:GetPanelId(), self.nCharId, nil)
end
self:SetLandmarkList()
EventManager.Hit("RefreshSortingOrder", -100)
NovaAPI.SetCanvasSortingName(self._mapNode.canvasBlur, self._panel._sSortingLayerName)
end
cs_coroutine.start(wait)
end
function DatingLandmarkCtrl:OnDisable()
end
function DatingLandmarkCtrl:OnDestroy()
end
function DatingLandmarkCtrl:OnBtnClick_Goto(btn, nIndex)
self.curAffinityInfo = PlayerData.Char:GetCharAffinityData(self.nCharId)
local callback = function(msgData)
self.datingData = msgData
EventManager.Hit(EventId.SetTransition, 11)
end
self.nLandmarkId = self.tbLandmark[nIndex].Id
PlayerData.Dating:SendDatingLandmarkSelectMsg(self.nCharId, self.nLandmarkId, callback)
for k, v in pairs(self._mapNode.btnGoto) do
v.interactable = false
end
end
function DatingLandmarkCtrl:OnBtnClick_Back()
EventManager.Hit(EventId.ClosePanel, PanelId.DatingLandmark)
EventManager.Hit("RefreshSortingOrder")
end
function DatingLandmarkCtrl:OnEvent_TransAnimInClear()
EventManager.Hit(EventId.ClosePanel, PanelId.DatingLandmark)
EventManager.Hit("RefreshSortingOrder")
EventManager.Hit(EventId.OpenPanel, PanelId.Dating, self.nLandmarkId, self.nCharId, self.datingData.BeforeBranchId, self.curAffinityInfo, self.datingData.BranchAOptionIds, self.datingData.Change)
end
return DatingLandmarkCtrl