91 lines
No EOL
2.6 KiB
Lua
91 lines
No EOL
2.6 KiB
Lua
local XUiGridDialogBox = XClass(XLuaBehaviour, "XUiGridDialogBox")
|
|
|
|
function XUiGridDialogBox:Ctor(rootUi, ui)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
|
|
XTool.InitUiObject(self)
|
|
end
|
|
|
|
function XUiGridDialogBox:RefreshContext(contextId)
|
|
self.DailogConfig = XDormConfig.GetCharacterDialogConfig(contextId)
|
|
if not self.DailogConfig or #self.DailogConfig.Content <= 0 then
|
|
return
|
|
end
|
|
|
|
self:PlayDialog(1)
|
|
end
|
|
|
|
function XUiGridDialogBox:PlayDialog(index)
|
|
-- 播放完对话
|
|
if index > #self.DailogConfig.Content then
|
|
if self.Cb then
|
|
self.Cb()
|
|
end
|
|
return
|
|
end
|
|
|
|
local context = self.DailogConfig.Content[index] or ""
|
|
if XDataCenter.DormManager.CheckInTouch() then
|
|
self.TxtTouchDesc.text = string.gsub(context, "\\n", "\n")
|
|
else
|
|
self.TxtDesc.text = string.gsub(context, "\\n", "\n")
|
|
end
|
|
local time = self.DailogConfig.Time[index] or 0
|
|
|
|
XScheduleManager.ScheduleOnce(function()
|
|
if XTool.UObjIsNil(self.Transform) or not self.GameObject.activeSelf then
|
|
return
|
|
end
|
|
|
|
index = index + 1
|
|
self:PlayDialog(index)
|
|
end, time)
|
|
end
|
|
|
|
function XUiGridDialogBox:UpdateTransform(transform)
|
|
local pos = transform.position + self.Offset
|
|
local viewPos = XHomeDormManager.GetWorldToViewPoint(self.CurRoomId, pos)
|
|
self.Transform.localPosition = viewPos
|
|
end
|
|
|
|
function XUiGridDialogBox:Show(curRoomId, characterId, contextId, transform, cb)
|
|
self.CurRoomId = curRoomId
|
|
self.Cb = cb
|
|
|
|
self.TargetTransform = transform
|
|
|
|
local styleConfig = XDormConfig.GetCharacterStyleConfigById(characterId)
|
|
if XDataCenter.DormManager.CheckInTouch() then
|
|
self.PanelBoxNamorl.gameObject:SetActive(false)
|
|
self.PanelBoxTouch.gameObject:SetActive(true)
|
|
self.Offset = CS.UnityEngine.Vector3(0, styleConfig.DailogTouchHight, 0)
|
|
else
|
|
self.PanelBoxNamorl.gameObject:SetActive(true)
|
|
self.PanelBoxTouch.gameObject:SetActive(false)
|
|
self.Offset = CS.UnityEngine.Vector3(0, styleConfig.DailogWidgetHight, 0)
|
|
end
|
|
|
|
self:RefreshContext(contextId)
|
|
self:UpdateTransform(self.TargetTransform)
|
|
self.GameObject:SetActive(true)
|
|
end
|
|
|
|
function XUiGridDialogBox:Hide()
|
|
self.TargetTransform = nil
|
|
self.GameObject:SetActive(false)
|
|
end
|
|
|
|
function XUiGridDialogBox:Update()
|
|
if XTool.UObjIsNil(self.Transform) or not self.GameObject.activeSelf then
|
|
return
|
|
end
|
|
|
|
if XTool.UObjIsNil(self.TargetTransform) then
|
|
return
|
|
end
|
|
|
|
self:UpdateTransform(self.TargetTransform)
|
|
end
|
|
|
|
return XUiGridDialogBox |