Files
StellaSora_DataLua/lua/game/ui/changegender/changegenderctrl.lua
T
SL1900 5e0d58cfad 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
2025-12-03 01:00:00 +09:00

190 lines
5.6 KiB
Lua

local GameResourceLoader = require("Game.Common.Resource.GameResourceLoader")
local ResTypeAny = GameResourceLoader.ResType.Any
local ChangeGenderCtrl = class("ChangeGenderCtrl", BaseCtrl)
local PlayerBaseData = PlayerData.Base
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
ChangeGenderCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
tbTrRole = {
nCount = 2,
sNodeName = "role_",
sComponentName = "Transform"
},
animSwitchPlayer = {sNodeName = "FG", sComponentName = "Animator"},
animChooseGender = {
sNodeName = "--choose_gender--",
sComponentName = "Animator"
},
tmp_notice = {
sComponentName = "TMP_Text",
sLanguageId = "ChangeGender_Title"
},
tmp_female = {
sComponentName = "TMP_Text",
sLanguageId = "ChangeGender_BtnFemale"
},
tmp_male = {
sComponentName = "TMP_Text",
sLanguageId = "ChangeGender_BtnMale"
},
tmp_Confirm = {
sComponentName = "TMP_Text",
sLanguageId = "MainLine_Select_Btn_Confirm"
},
imgSelectedBg1 = {sComponentName = "Image"},
imgSelectedBg2 = {sComponentName = "Image"},
btn_female = {
sComponentName = "UIButton",
callback = "OnBtn_Female"
},
btn_male = {sComponentName = "UIButton", callback = "OnBtn_Male"},
btn_confirm = {
sComponentName = "UIButton",
callback = "OnBtn_Confirm"
},
animConfirmGender = {
sNodeName = "--confirm_gender--",
sComponentName = "Animator"
},
txtTitle1 = {
sComponentName = "TMP_Text",
sLanguageId = "MainLine_Select_Btn_Confirm"
},
txtTitle2 = {
sComponentName = "TMP_Text",
sLanguageId = "MainLine_Select_Btn_Confirm"
},
txtConfirmInfo = {
sComponentName = "TMP_Text",
sLanguageId = "ChangeGender_ConfirmText"
},
txtConfirmTip = {
sComponentName = "TMP_Text",
sLanguageId = "ChangeGender_ConfirmTips"
},
tmpCancel = {
sComponentName = "TMP_Text",
sLanguageId = "MainLine_Select_Btn_Cancel"
},
tmpConfirm = {
sComponentName = "TMP_Text",
sLanguageId = "MainLine_Select_Btn_Confirm"
},
btnBgClose = {
sComponentName = "UIButton",
callback = "OnBtn_Close"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtn_Close"
},
btnCancel = {
sComponentName = "UIButton",
callback = "OnBtn_Close"
},
btnConfirm = {
sComponentName = "UIButton",
callback = "OnBtn_ConfirmAgain"
}
}
ChangeGenderCtrl._mapEventConfig = {}
function ChangeGenderCtrl:Awake()
self.v3Invisible = Vector3.zero
self.v3Visible = Vector3(100, 100, 100)
if PlayerBaseData:GetPlayerSex() == true then
self.bFemale = false
else
self.bFemale = true
end
Actor2DManager.PlayL2DAnim(self._mapNode.tbTrRole[1], "idle", true, true)
Actor2DManager.PlayL2DAnim(self._mapNode.tbTrRole[2], "idle", true, true)
self:_AnimChooseGender(true)
self:_AnimSwitchGender(true)
end
function ChangeGenderCtrl:_AnimChooseGender(bIn)
self._mapNode.animChooseGender:SetTrigger(bIn == true and "tIn" or "tOut")
end
function ChangeGenderCtrl:_AnimSwitchGender(bForce)
self._mapNode.imgSelectedBg1.transform.localScale = self.bFemale == true and Vector3.one or Vector3.zero
self._mapNode.imgSelectedBg2.transform.localScale = self.bFemale == true and Vector3.zero or Vector3.one
if bForce == true then
self:_DoSwitch()
else
WwiseAudioMgr:PlaySound("ui_charInfo_mirror")
self._mapNode.animSwitchPlayer:SetTrigger("tPlay")
self:AddTimer(1, 0.3, "_DoSwitch", true, true, true)
end
end
function ChangeGenderCtrl:_DoSwitch()
self._mapNode.tbTrRole[1].localScale = self.bFemale == true and self.v3Visible or self.v3Invisible
self._mapNode.tbTrRole[2].localScale = self.bFemale == true and self.v3Invisible or self.v3Visible
end
function ChangeGenderCtrl:_AnimConfirmAgain(bIn)
self._mapNode.animConfirmGender:SetTrigger(bIn == true and "tIn" or "tOut")
end
function ChangeGenderCtrl:OnBtn_Female(btn)
if self.bFemale == true then
return
end
EventManager.Hit(EventId.TemporaryBlockInput, 1.2)
self.bFemale = true
self:_AnimSwitchGender()
end
function ChangeGenderCtrl:OnBtn_Male(btn)
if self.bFemale == false then
return
end
EventManager.Hit(EventId.TemporaryBlockInput, 1.2)
self.bFemale = false
self:_AnimSwitchGender()
end
function ChangeGenderCtrl:OnBtn_Confirm(btn)
if PlayerBaseData:GetPlayerSex() ~= self.bFemale then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("ChangeGender_Same"))
return
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("ChangeGender_ConfirmText"),
sContentSub = ConfigTable.GetUIText("ChangeGender_ConfirmTips"),
callbackConfirm = function()
local func_cb = function()
if PlayerBaseData:GetPlayerSex() == true then
PlayerBaseData:SetPlayerSex(false)
self.bFemale = true
else
PlayerBaseData:SetPlayerSex(true)
self.bFemale = false
end
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("ChangeGender_Succ"))
end
HttpNetHandler.SendMsg(NetMsgId.Id.player_gender_edit_req, {}, nil, func_cb)
end
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
function ChangeGenderCtrl:OnBtn_Close(btn)
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
self:_AnimConfirmAgain(false)
end
function ChangeGenderCtrl:OnBtn_ConfirmAgain(btn)
EventManager.Hit(EventId.TemporaryBlockInput, 1)
self:_AnimConfirmAgain(false)
local func_cb = function()
if PlayerBaseData:GetPlayerSex() == true then
PlayerBaseData:SetPlayerSex(false)
self.bFemale = true
else
PlayerBaseData:SetPlayerSex(true)
self.bFemale = false
end
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("ChangeGender_Succ"))
end
HttpNetHandler.SendMsg(NetMsgId.Id.player_gender_edit_req, {}, nil, func_cb)
end
return ChangeGenderCtrl