Initial version - 1.2.0.60

EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
This commit is contained in:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
@@ -0,0 +1,461 @@
local CreatePlayerCtrl = class("CreatePlayerCtrl", BaseCtrl)
local PlayerBaseData = PlayerData.Base
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
CreatePlayerCtrl._mapNodeConfig = {
cgStart = {
sNodeName = "--start--",
sComponentName = "CanvasGroup"
},
btn_LeftStart = {
sComponentName = "NaviButton",
callback = "OnBtn_LeftStart",
sAction = "LeftPage"
},
btn_RightStart = {
sComponentName = "NaviButton",
callback = "OnBtn_RightStart",
sAction = "RightPage"
},
StartTip = {
sNodeName = "InfoStart",
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_Start"
},
cgSelect = {
sNodeName = "--select--",
sComponentName = "CanvasGroup"
},
animator_select = {sNodeName = "--select--", sComponentName = "Animator"},
btn_LeftSelect = {
sComponentName = "NaviButton",
callback = "OnBtn_LeftSelect",
sAction = "LeftPage"
},
btn_RightSelect = {
sComponentName = "NaviButton",
callback = "OnBtn_RightSelect",
sAction = "RightPage"
},
SelectTip = {
sNodeName = "InfoSelect",
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_Select"
},
btn_Select = {
sComponentName = "NaviButton",
callback = "OnBtn_Select",
sAction = "CreatePlayerConfirm"
},
tbRawImg = {
sNodeName = "CreatePlayerBG",
sComponentName = "RawImage"
},
tbOffscreenRenderer = {
sNodeName = "offscreen_renderer_1",
sComponentName = "Transform"
},
tbCamera = {sNodeName = "Camera_1", sComponentName = "Camera"},
trL2D_Root_1 = {sComponentName = "Transform"},
cgSetName = {
sNodeName = "--set_name--",
sComponentName = "CanvasGroup"
},
btn_Back = {sComponentName = "UIButton", callback = "OnBtn_Back"},
txtPlsInputName = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_InputName"
},
txtNameTips = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_NameTips"
},
input_PlayerName = {
sComponentName = "TMP_InputField"
},
ChangeNameTip = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_ChangeNameTips"
},
btn_ConfirmName = {
sComponentName = "UIButton",
callback = "OnBtn_ConfirmName"
},
txtBtnConfirmName = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_BtnConfim"
},
cgConfirmName = {
sNodeName = "--confirm_name--",
sComponentName = "CanvasGroup"
},
goSnapshot = {sNodeName = "snapshot"},
btnBgClose = {
sComponentName = "UIButton",
callback = "OnBtn_CloseConfirmWin"
},
goConfirmWindow = {sNodeName = "t_window"},
animator_ConfirmWindow = {sNodeName = "t_window", sComponentName = "Animator"},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_WinTitle"
},
txtWinContent = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_WinContent"
},
txtWinTips = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_WinTip"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtn_CloseConfirmWin"
},
btnCancel = {
sComponentName = "UIButton",
callback = "OnBtn_CloseConfirmWin"
},
txtCancelBtn = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_WinBtnCancel"
},
btnConfirm1 = {
sComponentName = "UIButton",
callback = "OnBtn_ConfirmNameSendMsg"
},
txtConfirmBtn = {
sComponentName = "TMP_Text",
sLanguageId = "CreatePlayer_WinBtnConfirm"
}
}
CreatePlayerCtrl._mapEventConfig = {}
local MALE = 1
local FEMALE = 2
local START = 1
local SELECT = 2
local SET_NAME = 3
function CreatePlayerCtrl:Awake()
self._animator = self.gameObject:GetComponent("Animator")
local _nScale = 1 / Settings.CANVAS_SCALE
local _v3Scale = Vector3(_nScale, _nScale, _nScale)
self._mapNode.tbOffscreenRenderer.localScale = _v3Scale
local n = math.floor(2048 * Settings.RENDERTEXTURE_SIZE_FACTOR)
self.tbRT = GameUIUtils.GenerateRenderTextureFor2D(n, n)
self.tbRT.name = "CreatePlayer"
self._mapNode.tbCamera.targetTexture = self.tbRT
NovaAPI.SetTexture(self._mapNode.tbRawImg, self.tbRT)
self:CreateL2DInstance()
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim1, "createplayer1_F_idle", true, true)
NovaAPI.PlayL2DAnim(self.goInsMaleAnim1, "createplayer1_M_idle", true, true)
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_ready", true, true)
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_ready", true, true)
self._mapNode.tbCamera.enabled = false
self.bIdCreateCharacter = false
self.sex = 0
self.selected = false
self.state = 0
end
function CreatePlayerCtrl:OnEnable()
EventManager.Add("OnEscCallback", self, self.OnEvent_OnEscCallback)
self._mapNode.tbCamera.enabled = true
self:SetCanvasGroup(self._mapNode.cgStart, true)
self:SetCanvasGroup(self._mapNode.cgSelect, false)
self:SetCanvasGroup(self._mapNode.cgSetName, false)
self:SetCanvasGroup(self._mapNode.cgConfirmName, false)
self:AddTimer(1, 0.5, "timerCallback_enable_DONE", true, true, true)
self.tbGamepadUINode = self:GetGamepadUINode()
GamepadUIManager.EnterAdventure(true)
GamepadUIManager.EnableGamepadUI("CreatePlayerCtrl", self.tbGamepadUINode)
end
function CreatePlayerCtrl:timerCallback_enable_DONE()
self.goInsFemaleAnim2.localScale = Vector3(1, 1, 1)
self.goInsMaleAnim2.localScale = Vector3(1, 1, 1)
self.state = START
end
function CreatePlayerCtrl:OnDisable()
if not self.bSkipGamepadDisable then
GamepadUIManager.DisableGamepadUI("CreatePlayerCtrl")
GamepadUIManager.QuitAdventure()
end
EventManager.Remove("OnEscCallback", self, self.OnEvent_OnEscCallback)
self._mapNode.tbCamera.targetTexture = nil
NovaAPI.SetTexture(self._mapNode.tbRawImg, nil)
GameUIUtils.ReleaseRenderTexture(self.tbRT)
self.tbRT = nil
end
function CreatePlayerCtrl:OnDestroy()
end
function CreatePlayerCtrl:OnBtn_LeftStart(btn)
if self.state ~= START then
return
end
self:SetCanvasGroup(self._mapNode.cgStart, false)
self.goInsAnim1Ctrl:Play("createplayer_L_in")
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_in", false, true)
self.sex = MALE
self:AddTimer(1, 0.7, "timerCallback_start_DONE", true, true, true)
CS.WwiseAudioManager.Instance:PostEvent("ui_creation_enter")
end
function CreatePlayerCtrl:OnBtn_RightStart(btn)
if self.state ~= START then
return
end
self:SetCanvasGroup(self._mapNode.cgStart, false)
self.goInsAnim1Ctrl:Play("createplayer_R_in")
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_in", false, true)
self.sex = FEMALE
self:AddTimer(1, 1, "timerCallback_start_DONE", true, true, true)
CS.WwiseAudioManager.Instance:PostEvent("ui_creation_enter")
end
function CreatePlayerCtrl:timerCallback_start_DONE()
self.state = SELECT
self:SetCanvasGroup(self._mapNode.cgSelect, true)
self._mapNode.animator_select:Play("CreatePlayerUI_select")
end
function CreatePlayerCtrl:OnBtn_LeftSelect(btn)
if self.state ~= SELECT or self.selecting or self.selected then
return
end
self.selecting = true
self.goInsAnim1Ctrl:Play("createplayer_L_switch")
if self.sex == MALE then
self.sex = FEMALE
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_leftin", false, true)
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_leftout", false, true)
elseif self.sex == FEMALE then
self.sex = MALE
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_leftout", false, true)
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_leftin", false, true)
end
self:SetCanvasGroup(self._mapNode.cgSelect, false)
self:AddTimer(1, 1, "timerCallback_selecting_DONE", true, true, true)
CS.WwiseAudioManager.Instance:PostEvent("ui_creation_switch")
end
function CreatePlayerCtrl:OnBtn_RightSelect(btn)
if self.state ~= SELECT or self.selecting or self.selected then
return
end
self.selecting = true
self.goInsAnim1Ctrl:Play("createplayer_R_switch")
if self.sex == MALE then
self.sex = FEMALE
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_rightin", false, true)
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_rightout", false, true)
elseif self.sex == FEMALE then
self.sex = MALE
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_rightout", false, true)
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_rightin", false, true)
end
self:SetCanvasGroup(self._mapNode.cgSelect, false)
self:AddTimer(1, 1, "timerCallback_selecting_DONE", true, true, true)
CS.WwiseAudioManager.Instance:PostEvent("ui_creation_switch")
end
function CreatePlayerCtrl:timerCallback_selecting_DONE()
self.selecting = false
self:SetCanvasGroup(self._mapNode.cgSelect, true)
self._mapNode.animator_select:Play("CreatePlayerUI_select")
end
function CreatePlayerCtrl:OnBtn_Select(btn)
if self.state ~= SELECT or self.selecting or self.selected then
return
end
self.selected = true
NovaAPI.SetTMPInputFieldInteractable(self._mapNode.input_PlayerName, false)
self:SetCanvasGroup(self._mapNode.cgSetName, true)
self:SetCanvasGroup(self._mapNode.cgSelect, false)
self.goInsAnim1Ctrl:Play("createplayer_oe")
self._animator:Play("CreatePlayerUI_name_in")
if self.sex == MALE then
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_t", false, true)
elseif self.sex == FEMALE then
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_t", false, true)
end
self:AddTimer(1, 1, "timerCallback_selected_DONE", true, true, true)
CS.WwiseAudioManager.Instance:PostEvent("ui_creation_confrim")
end
function CreatePlayerCtrl:timerCallback_selected_DONE()
self.state = SET_NAME
NovaAPI.SetTMPInputFieldInteractable(self._mapNode.input_PlayerName, true)
GamepadUIManager.EnableGamepadUI("CreatePlayerCtrl1", {}, nil, true)
end
function CreatePlayerCtrl:OnBtn_Back(btn)
if self.state ~= SET_NAME or self.selected == false then
return
end
self.selected = false
self:SetCanvasGroup(self._mapNode.cgSetName, false)
self.goInsAnim1Ctrl:Play("createplayer_oe_out")
self._animator:Play("CreatePlayerUI_name_out")
if self.sex == MALE then
NovaAPI.PlayL2DAnim(self.goInsMaleAnim2, "createplayer2_M_out", false, true)
elseif self.sex == FEMALE then
NovaAPI.PlayL2DAnim(self.goInsFemaleAnim2, "createplayer2_F_out", false, true)
end
self:AddTimer(1, 0.6, "timerCallback_selectback_DONE", true, true, true)
end
function CreatePlayerCtrl:timerCallback_selectback_DONE()
self.state = SELECT
GamepadUIManager.DisableGamepadUI("CreatePlayerCtrl1")
self:SetCanvasGroup(self._mapNode.cgSelect, true)
self._mapNode.animator_select:Play("CreatePlayerUI_select")
end
function CreatePlayerCtrl:OnBtn_ConfirmName(btn)
if self:CheckName(NovaAPI.GetTMPInputFieldText(self._mapNode.input_PlayerName)) == true then
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
self._mapNode.goSnapshot:SetActive(true)
self:AddTimer(1, 0.1, "timerCallback_ShowConfirmName", true, true, true)
end
end
function CreatePlayerCtrl:timerCallback_ShowConfirmName()
self:SetCanvasGroup(self._mapNode.cgConfirmName, true)
self._mapNode.btnBgClose.gameObject:SetActive(true)
self._mapNode.goConfirmWindow:SetActive(true)
NovaAPI.SetTMPText(self._mapNode.txtWinContent, orderedFormat(ConfigTable.GetUIText("CreatePlayer_WinContent"), NovaAPI.GetTMPInputFieldText(self._mapNode.input_PlayerName)))
self._mapNode.animator_ConfirmWindow:Play("t_window_04_t_in")
end
function CreatePlayerCtrl:OnBtn_CloseConfirmWin(btn)
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
self:SetCanvasGroup(self._mapNode.cgConfirmName, false)
self._mapNode.animator_ConfirmWindow:Play("t_window_04_t_out")
self:AddTimer(1, 0.2, "timerCallback_HideConfirmName", true, true, true)
end
function CreatePlayerCtrl:timerCallback_HideConfirmName()
self._mapNode.goSnapshot:SetActive(false)
self._mapNode.btnBgClose.gameObject:SetActive(false)
self._mapNode.goConfirmWindow:SetActive(false)
end
function CreatePlayerCtrl:OnBtn_ConfirmNameSendMsg(btn)
local sName = NovaAPI.GetTMPInputFieldText(self._mapNode.input_PlayerName)
if self:CheckName(sName) == true then
self:SendMsgLogin(sName)
end
end
function CreatePlayerCtrl:CheckName(sName)
local nMaxlen = 14
local nMinlen = 1
local nMaxuftlen = 21
local nMinuftlen = 1
local nUtf8Len = string.utf8len(sName)
local nLen = string.len(sName)
if sName == "" then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_04"))
return
end
if nMaxlen < nUtf8Len or nMaxuftlen < nLen then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_02"))
return
end
if nMinlen > nUtf8Len or nMinuftlen > nLen then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_06"))
return
end
if not NovaAPI.IsChannelString(sName) then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_00"))
return
end
local bInit = NovaAPI.IsDirtyWordsInit()
if not bInit then
NovaAPI.InitDirtyWords()
end
if NovaAPI.IsDirtyString(sName) then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_01"))
return
end
if string.find(sName, "%d") == 1 then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_05"))
return
end
local isFullWidthDigit = function(s)
local firstChar = string.sub(s, 1)
local code = UFT8ToUnicode(firstChar)
return 65296 <= code and code <= 65305
end
if isFullWidthDigit(sName) then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("PLAYER_05"))
return
end
return true
end
function CreatePlayerCtrl:SetCanvasGroup(cg, b, anim)
if not anim then
if b == true then
NovaAPI.SetCanvasGroupAlpha(cg, 1)
else
NovaAPI.SetCanvasGroupAlpha(cg, 0)
end
end
NovaAPI.SetCanvasGroupInteractable(cg, b == true)
NovaAPI.SetCanvasGroupBlocksRaycasts(cg, b == true)
end
function CreatePlayerCtrl:CreateL2DInstance()
self.goIns1 = self:CreatePrefabInstance("UI/CreatePlayer/L2D/createplayer_bg.prefab", self._mapNode.trL2D_Root_1)
local nLayerIndex = CS.UnityEngine.LayerMask.NameToLayer("Cam_Layer_4")
self.goIns1.transform:SetLayerRecursively(nLayerIndex)
local goInsAnim1 = self.goIns1.transform:Find("AnimRoot")
self.goInsAnim1Ctrl = goInsAnim1:GetComponent("Animator")
self.goInsFemaleAnim1 = goInsAnim1:Find("--3--/createplayer_F")
self.goInsMaleAnim1 = goInsAnim1:Find("--3--/createplayer_M")
self.goInsFemaleAnim2 = goInsAnim1:Find("--3--/createplayer2_F")
self.goInsMaleAnim2 = goInsAnim1:Find("--3--/createplayer2_M")
end
function CreatePlayerCtrl:SendMsgLogin(sName)
self.bFemale = false
if self.sex == FEMALE then
self.bFemale = true
end
local mapSendData = {}
mapSendData.Nickname = sName
mapSendData.Gender = self.bFemale ~= true
local func_Callback = function()
HttpNetHandler.SetPingPong()
self:OnServerReturn()
end
if AVG_EDITOR == true then
self:OnServerReturn(sName)
else
HttpNetHandler.SendMsg(NetMsgId.Id.player_reg_req, mapSendData, nil, func_Callback)
end
end
function CreatePlayerCtrl:OnServerReturn(sName)
EventManager.Hit(EventId.UserEvent_CreateRole)
EventManager.Hit("PrologueBattleArchive", nil, nil, nil, -1)
if sName ~= nil and AVG_EDITOR == true then
PlayerBaseData:SetPlayerSex(self.bFemale == false)
PlayerBaseData:SetPlayerNickName(sName)
end
self:SetCanvasGroup(self._mapNode.cgConfirmName, false)
self._mapNode.animator_ConfirmWindow:Play("t_window_04_t_out")
self:AddTimer(1, 0.5, "timerCallback_DONE", true, true, true)
end
function CreatePlayerCtrl:timerCallback_DONE()
GamepadUIManager.DisableGamepadUI("CreatePlayerCtrl")
GamepadUIManager.QuitAdventure()
self.bSkipGamepadDisable = true
self._mapNode.goSnapshot:SetActive(false)
self._mapNode.btnBgClose.gameObject:SetActive(false)
self._mapNode.goConfirmWindow:SetActive(false)
self:SetCanvasGroup(self._mapNode.cgSetName, false)
self.gameObject:SetActive(false)
self._mapNode.tbCamera.enabled = false
self.bCheckModule = true
EventManager.Hit("CreatePlayerNextModule", self)
if self.bCheckModule then
PlayerData.StarTower:EnterTowerPrologue()
end
NovaAPI.SetBuglyPlayerUid(tostring(PlayerData.Base._nPlayerId))
end
function CreatePlayerCtrl:OnEvent_OnEscCallback()
if not self.bIdCreateCharacter then
return
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("Login_QuitTips"),
callbackConfirm = function()
local UIGameSystemSetup = CS.UIGameSystemSetup
UIGameSystemSetup.Instance:KillApplication()
end
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
return CreatePlayerCtrl