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:
@@ -0,0 +1,208 @@
|
||||
local BattleSettingsCtrl = class("BattleSettingsCtrl", BaseCtrl)
|
||||
local ClientManager = CS.ClientManager.Instance
|
||||
local InputManager = CS.InputManager
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
BattleSettingsCtrl._mapNodeConfig = {
|
||||
txtWeekDay = {sComponentName = "TMP_Text"},
|
||||
txtTime1 = {sComponentName = "TMP_Text"},
|
||||
txtTime2 = {sComponentName = "TMP_Text"},
|
||||
aniRoot = {
|
||||
sNodeName = "----Content----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnClose = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
Page2 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsGraphicCtrl"
|
||||
},
|
||||
Page3 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsSoundCtrl"
|
||||
},
|
||||
Page4 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsBattleCtrl"
|
||||
},
|
||||
Page7 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsKeyboardCtrl"
|
||||
},
|
||||
Page8 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsGamepadCtrl"
|
||||
},
|
||||
cgPage = {
|
||||
nCount = 8,
|
||||
sNodeName = "Page",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
trPage = {
|
||||
nCount = 8,
|
||||
sNodeName = "Page",
|
||||
sComponentName = "Transform"
|
||||
},
|
||||
btnPage = {
|
||||
nCount = 8,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Page"
|
||||
},
|
||||
imgOn = {nCount = 8},
|
||||
aniTab = {sNodeName = "---Tab---", sComponentName = "Animator"},
|
||||
scTab = {
|
||||
sNodeName = "scrollTab",
|
||||
sComponentName = "UIScrollToClick"
|
||||
},
|
||||
blurbg = {
|
||||
sNodeName = "t_fullscreen_blur_blue_bg"
|
||||
},
|
||||
aniBlurbg = {
|
||||
sNodeName = "t_fullscreen_blur_blue_bg",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
blur = {
|
||||
sNodeName = "t_fullscreen_blur_blue"
|
||||
},
|
||||
aniBlur = {
|
||||
sNodeName = "t_fullscreen_blur_blue",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnBlur = {
|
||||
sNodeName = "snapshot",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_ClosePop"
|
||||
},
|
||||
ActionBar = {
|
||||
sCtrlName = "Game.UI.ActionBar.ActionBarCtrl"
|
||||
},
|
||||
btnShortcutClose = {
|
||||
sComponentName = "NaviButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
Resolution = {
|
||||
sNodeName = "---Resolution---",
|
||||
sCtrlName = "Game.UI.Settings.SettingsResolutionCtrl"
|
||||
}
|
||||
}
|
||||
BattleSettingsCtrl._mapEventConfig = {
|
||||
SettingsResolution = "OnEvent_Resolution",
|
||||
SettingsClosePop = "OnBtnClick_ClosePop"
|
||||
}
|
||||
function BattleSettingsCtrl:InitPageState()
|
||||
local nState = ConfigTable.GetConfigNumber("CBTBlock")
|
||||
self.pageIndex = 2
|
||||
for i = 1, 8 do
|
||||
if i == self.pageIndex then
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[i], 1)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[i], true)
|
||||
self._mapNode.imgOn[i]:SetActive(true)
|
||||
self._mapNode["Page" .. i]:Init()
|
||||
else
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[i], 0)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[i], false)
|
||||
self._mapNode.imgOn[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
local bMobile = NovaAPI.IsMobilePlatform()
|
||||
self._mapNode.btnPage[7].gameObject:SetActive(not bMobile)
|
||||
if bMobile then
|
||||
local bAble = false
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(bAble)
|
||||
self._mapNode.btnPage[4].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(bAble)
|
||||
else
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(true)
|
||||
self._mapNode.btnPage[4].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(true)
|
||||
end
|
||||
self._mapNode.txtTime1.gameObject:SetActive(false)
|
||||
self._mapNode.txtTime2.gameObject:SetActive(false)
|
||||
self._mapNode.txtWeekDay.gameObject:SetActive(false)
|
||||
end
|
||||
function BattleSettingsCtrl:RefreshTime()
|
||||
local curTime = ClientManager.serverTimeStamp
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime1, (os.date("%I:%M", curTime)))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime2, (os.date("%p", curTime)))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtWeekDay, ConfigTable.GetUIText("Settings_Weekday" .. tonumber(os.date("%w")) + 1))
|
||||
end
|
||||
function BattleSettingsCtrl:Awake()
|
||||
local tbConfig = {
|
||||
{
|
||||
sAction = "Back",
|
||||
sLang = "ActionBar_Back"
|
||||
}
|
||||
}
|
||||
self._mapNode.ActionBar:InitActionBar(tbConfig)
|
||||
end
|
||||
function BattleSettingsCtrl:OnEnable()
|
||||
self._mapNode.blurbg:SetActive(true)
|
||||
self._mapNode.aniRoot:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
self:InitPageState()
|
||||
GamepadUIManager.EnableGamepadUI("BattleSettingsCtrl", self:GetGamepadUINode(), nil, true)
|
||||
end
|
||||
function BattleSettingsCtrl:OnDisable()
|
||||
local nUID = PlayerData.Base:GetPlayerId()
|
||||
CS.InputManager.Instance:SaveBindingOverrides(nUID)
|
||||
EventManager.Hit("BattleSettingsBindingOverride")
|
||||
GamepadUIManager.DisableGamepadUI("BattleSettingsCtrl")
|
||||
end
|
||||
function BattleSettingsCtrl:OnDestroy()
|
||||
end
|
||||
function BattleSettingsCtrl:OnBtnClick_Close()
|
||||
self._mapNode.aniRoot:Play("t_window_04_t_out")
|
||||
self._mapNode.aniBlurbg:SetTrigger("tOut")
|
||||
self:AddTimer(1, 0.2, function()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BattleSettings)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function BattleSettingsCtrl:OnBtnClick_Page(btn, index)
|
||||
if self.pageIndex == index then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[self.pageIndex], 0)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[self.pageIndex], false)
|
||||
self._mapNode.imgOn[self.pageIndex]:SetActive(false)
|
||||
self._mapNode["Page" .. self.pageIndex]:Quit()
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[index], 1)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[index], true)
|
||||
self._mapNode.imgOn[index]:SetActive(true)
|
||||
self._mapNode["Page" .. index]:Init()
|
||||
self._mapNode.aniTab:Play("Tab_btnPage" .. index)
|
||||
self.pageIndex = index
|
||||
self._mapNode.scTab:ScrollToClick(btn.gameObject, 0.1)
|
||||
local scrollRect = self._mapNode.trPage[index]:Find("sv"):GetComponent("ScrollRect")
|
||||
NovaAPI.SetVerticalNormalizedPosition(scrollRect, 1)
|
||||
end
|
||||
function BattleSettingsCtrl:OnBtnClick_ClosePop()
|
||||
if self.ctrlPop then
|
||||
self.ctrlPop:PlayOutAni()
|
||||
self.ctrlPop = nil
|
||||
end
|
||||
self._mapNode.aniBlur:SetTrigger("tOut")
|
||||
self:AddTimer(1, 0.2, function()
|
||||
self._mapNode.blur:SetActive(false)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function BattleSettingsCtrl:OnEvent_Resolution(nResolution, tbResolution)
|
||||
self.ctrlPop = self._mapNode.Resolution
|
||||
self._mapNode.Resolution:Open(nResolution, tbResolution)
|
||||
self._mapNode.blur:SetActive(true)
|
||||
end
|
||||
function BattleSettingsCtrl:OnEvent_DeviceChange(changeType)
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
return
|
||||
end
|
||||
if changeType.value__ == 0 then
|
||||
local nType = InputManager.Instance:CheckGamepadType()
|
||||
if nType == InputManager.GamepadType.PS or nType == InputManager.GamepadType.XBox then
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(true)
|
||||
self._mapNode.btnPage[4].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(true)
|
||||
end
|
||||
elseif changeType.value__ == 1 then
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(false)
|
||||
self._mapNode.btnPage[4].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(false)
|
||||
if self.pageIndex == 8 then
|
||||
self:OnBtnClick_Page(self._mapNode.btnPage[3], 3)
|
||||
end
|
||||
end
|
||||
end
|
||||
return BattleSettingsCtrl
|
||||
@@ -0,0 +1,43 @@
|
||||
local BattleSettingsPanel = class("BattleSettingsPanel", BasePanel)
|
||||
BattleSettingsPanel._bIsMainPanel = false
|
||||
local LocalSettingData = require("GameCore.Data.LocalSettingData")
|
||||
BattleSettingsPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "Settings/BattleSettingsPanel.prefab",
|
||||
sCtrlName = "Game.UI.Settings.BattleSettingsCtrl"
|
||||
}
|
||||
}
|
||||
function BattleSettingsPanel:LoadLocalData(key)
|
||||
return LocalSettingData.GetLocalSettingData(key)
|
||||
end
|
||||
function BattleSettingsPanel:SaveLocalData(subKey, value)
|
||||
LocalSettingData.SetLocalSettingData(subKey, value)
|
||||
end
|
||||
function BattleSettingsPanel:Awake()
|
||||
self.mapKeyboardBind = {}
|
||||
self.mapGamepadBind = {}
|
||||
self.Action = {
|
||||
"Fire1",
|
||||
"Fire2",
|
||||
"Fire4",
|
||||
"Interactive",
|
||||
"ActorSwitch1",
|
||||
"ActorSwitch2",
|
||||
"SwitchWithUltra1",
|
||||
"SwitchWithUltra2"
|
||||
}
|
||||
self.Move = {
|
||||
"Up",
|
||||
"Down",
|
||||
"Left",
|
||||
"Right"
|
||||
}
|
||||
self.ControlType = {Gamepad = 0, Keyboard = 1}
|
||||
end
|
||||
function BattleSettingsPanel:OnEnable()
|
||||
end
|
||||
function BattleSettingsPanel:OnDisable()
|
||||
end
|
||||
function BattleSettingsPanel:OnDestroy()
|
||||
end
|
||||
return BattleSettingsPanel
|
||||
@@ -0,0 +1,160 @@
|
||||
local LoginSettingsCtrl = class("LoginSettingsCtrl", BaseCtrl)
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
local ClientManager = CS.ClientManager.Instance
|
||||
local InputManager = CS.InputManager
|
||||
LoginSettingsCtrl._mapNodeConfig = {
|
||||
txtWeekDay = {sComponentName = "TMP_Text"},
|
||||
txtTime1 = {sComponentName = "TMP_Text"},
|
||||
txtTime2 = {sComponentName = "TMP_Text"},
|
||||
aniRoot = {
|
||||
sNodeName = "----Content----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnClose = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
Page1 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsAcountCtrl"
|
||||
},
|
||||
Page2 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsGraphicCtrl"
|
||||
},
|
||||
Page3 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsSoundCtrl"
|
||||
},
|
||||
Page5 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsLanguageCtrl"
|
||||
},
|
||||
cgPage = {
|
||||
nCount = 5,
|
||||
sNodeName = "Page",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
trPage = {
|
||||
nCount = 5,
|
||||
sNodeName = "Page",
|
||||
sComponentName = "Transform"
|
||||
},
|
||||
btnPage = {
|
||||
nCount = 5,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Page"
|
||||
},
|
||||
imgOn = {nCount = 5},
|
||||
aniTab = {sNodeName = "---Tab---", sComponentName = "Animator"},
|
||||
scTab = {
|
||||
sNodeName = "scrollTab",
|
||||
sComponentName = "UIScrollToClick"
|
||||
},
|
||||
blur = {
|
||||
sNodeName = "t_fullscreen_blur_blue"
|
||||
},
|
||||
aniBlur = {
|
||||
sNodeName = "t_fullscreen_blur_blue",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnBlur = {
|
||||
sNodeName = "snapshot",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_ClosePop"
|
||||
},
|
||||
Language = {
|
||||
sNodeName = "---Language---",
|
||||
sCtrlName = "Game.UI.Settings.SettingsLangPkgCtrl"
|
||||
},
|
||||
Resolution = {
|
||||
sNodeName = "---Resolution---",
|
||||
sCtrlName = "Game.UI.Settings.SettingsResolutionCtrl"
|
||||
}
|
||||
}
|
||||
LoginSettingsCtrl._mapEventConfig = {
|
||||
SettingsLanguage = "OnEvent_Language",
|
||||
SettingsResolution = "OnEvent_Resolution",
|
||||
SettingsClosePop = "OnBtnClick_ClosePop"
|
||||
}
|
||||
function LoginSettingsCtrl:InitPageState()
|
||||
self.pageIndex = 1
|
||||
for i = 1, 5 do
|
||||
if i == 1 then
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[i], 1)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[i], true)
|
||||
self._mapNode.imgOn[i]:SetActive(true)
|
||||
self._mapNode["Page" .. i]:Init()
|
||||
else
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[i], 0)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[i], false)
|
||||
self._mapNode.imgOn[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
self._mapNode.txtTime1.gameObject:SetActive(false)
|
||||
self._mapNode.txtTime2.gameObject:SetActive(false)
|
||||
self._mapNode.txtWeekDay.gameObject:SetActive(false)
|
||||
end
|
||||
function LoginSettingsCtrl:RefreshTime()
|
||||
local curTime = os.time()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime1, (os.date("%I:%M", curTime)))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime2, (os.date("%p", curTime)))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtWeekDay, ConfigTable.GetUIText("Settings_Weekday" .. tonumber(os.date("%w")) + 1))
|
||||
end
|
||||
function LoginSettingsCtrl:Awake()
|
||||
end
|
||||
function LoginSettingsCtrl:OnEnable()
|
||||
self._mapNode.aniRoot:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
self:InitPageState()
|
||||
end
|
||||
function LoginSettingsCtrl:OnDisable()
|
||||
local nUID = PlayerData.Base:GetPlayerId()
|
||||
CS.InputManager.Instance:SaveBindingOverrides(nUID)
|
||||
end
|
||||
function LoginSettingsCtrl:OnDestroy()
|
||||
end
|
||||
function LoginSettingsCtrl:OnBtnClick_Close()
|
||||
self._mapNode.aniRoot:Play("t_window_04_t_out")
|
||||
self:AddTimer(1, 0.2, function()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.LoginSetting)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function LoginSettingsCtrl:OnBtnClick_Page(btn, index)
|
||||
if self.pageIndex == index then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[self.pageIndex], 0)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[self.pageIndex], false)
|
||||
self._mapNode.imgOn[self.pageIndex]:SetActive(false)
|
||||
self._mapNode["Page" .. self.pageIndex]:Quit()
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[index], 1)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[index], true)
|
||||
self._mapNode.imgOn[index]:SetActive(true)
|
||||
self._mapNode["Page" .. index]:Init()
|
||||
self._mapNode.aniTab:Play("Tab_btnPage" .. index)
|
||||
self.pageIndex = index
|
||||
self._mapNode.scTab:ScrollToClick(btn.gameObject, 0.1)
|
||||
local scrollRect = self._mapNode.trPage[index]:Find("sv"):GetComponent("ScrollRect")
|
||||
NovaAPI.SetVerticalNormalizedPosition(scrollRect, 1)
|
||||
end
|
||||
function LoginSettingsCtrl:OnBtnClick_ClosePop()
|
||||
if self.ctrlPop then
|
||||
self.ctrlPop:PlayOutAni()
|
||||
self.ctrlPop = nil
|
||||
end
|
||||
self._mapNode.aniBlur:SetTrigger("tOut")
|
||||
self:AddTimer(1, 0.2, function()
|
||||
self._mapNode.blur:SetActive(false)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function LoginSettingsCtrl:OnEvent_Language(tbVoAvailable, tbDownload)
|
||||
self.ctrlPop = self._mapNode.Language
|
||||
self._mapNode.Language:Open(tbVoAvailable, tbDownload)
|
||||
self._mapNode.blur:SetActive(true)
|
||||
end
|
||||
function LoginSettingsCtrl:OnEvent_Resolution(nResolution, tbResolution)
|
||||
self.ctrlPop = self._mapNode.Resolution
|
||||
self._mapNode.Resolution:Open(nResolution, tbResolution)
|
||||
self._mapNode.blur:SetActive(true)
|
||||
end
|
||||
return LoginSettingsCtrl
|
||||
@@ -0,0 +1,46 @@
|
||||
local LoginSettingsPanel = class("LoginSettingsPanel", BasePanel)
|
||||
LoginSettingsPanel._bAddToBackHistory = false
|
||||
LoginSettingsPanel._nSnapshotPrePanel = 1
|
||||
LoginSettingsPanel._bIsMainPanel = false
|
||||
local LocalSettingData = require("GameCore.Data.LocalSettingData")
|
||||
LoginSettingsPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "Settings/LoginSettingsPanel.prefab",
|
||||
sCtrlName = "Game.UI.Settings.LoginSettingsCtrl"
|
||||
}
|
||||
}
|
||||
function LoginSettingsPanel:LoadLocalData(key)
|
||||
return LocalSettingData.GetLocalSettingData(key)
|
||||
end
|
||||
function LoginSettingsPanel:SaveLocalData(subKey, value)
|
||||
LocalSettingData.SetLocalSettingData(subKey, value)
|
||||
end
|
||||
function LoginSettingsPanel:Awake()
|
||||
self.mapKeyboardBind = {}
|
||||
self.mapGamepadBind = {}
|
||||
self.Action = {
|
||||
"Fire1",
|
||||
"Fire2",
|
||||
"Fire4",
|
||||
"Interactive",
|
||||
"ActorSwitch1",
|
||||
"ActorSwitch2",
|
||||
"SwitchWithUltra1",
|
||||
"SwitchWithUltra2"
|
||||
}
|
||||
self.Move = {
|
||||
"Up",
|
||||
"Down",
|
||||
"Left",
|
||||
"Right"
|
||||
}
|
||||
self.ControlType = {Gamepad = 0, Keyboard = 1}
|
||||
self.ShowUserCenter = false
|
||||
end
|
||||
function LoginSettingsPanel:OnEnable()
|
||||
end
|
||||
function LoginSettingsPanel:OnDisable()
|
||||
end
|
||||
function LoginSettingsPanel:OnDestroy()
|
||||
end
|
||||
return LoginSettingsPanel
|
||||
@@ -0,0 +1,284 @@
|
||||
local OptionBindingCtrl = class("OptionBindingCtrl", BaseCtrl)
|
||||
local InputManager = CS.InputManager
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
local BasicDevice = {
|
||||
Keyboard = 1,
|
||||
Mouse = 2,
|
||||
Gamepad = 3
|
||||
}
|
||||
local ImageKey = {backspace = 1, enter = 2}
|
||||
local IllegalKeyboardKey = {
|
||||
"Caps Lock",
|
||||
"Left Windows",
|
||||
"Right Windows",
|
||||
"Prnt Scrn",
|
||||
"Scroll Lock",
|
||||
"Break",
|
||||
"Num Lock",
|
||||
"Alt",
|
||||
"Left Alt",
|
||||
"Right Alt",
|
||||
"Esc",
|
||||
"Application",
|
||||
"B"
|
||||
}
|
||||
local LegalGamepadKey = {
|
||||
"buttonSouth",
|
||||
"buttonWest",
|
||||
"buttonEast",
|
||||
"buttonNorth",
|
||||
"leftShoulder",
|
||||
"rightShoulder",
|
||||
"leftTrigger",
|
||||
"rightTrigger"
|
||||
}
|
||||
OptionBindingCtrl._mapNodeConfig = {
|
||||
txtOptionTitle = {sComponentName = "TMP_Text"},
|
||||
btnBind = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Bind"
|
||||
},
|
||||
Placeholder = {},
|
||||
goBind = {},
|
||||
bindBg = {},
|
||||
holderBg = {},
|
||||
Keyboard = {},
|
||||
goKey = {},
|
||||
imgKeyboard = {sComponentName = "Image"},
|
||||
txtKeyboard = {sComponentName = "TMP_Text"},
|
||||
Mouse = {},
|
||||
imgMouse = {sComponentName = "Image"},
|
||||
Gamepad = {},
|
||||
imgGamepad = {sComponentName = "Image"}
|
||||
}
|
||||
OptionBindingCtrl._mapEventConfig = {
|
||||
LuaEventName_KeyboardButtonPress = "OnEvent_KeyboardButtonPress",
|
||||
LuaEventName_MouseButtonPress = "OnEvent_MouseButtonPress",
|
||||
LuaEventName_GamepadButtonPress = "OnEvent_GamepadButtonPress",
|
||||
SettingsSwitchBind = "OnEvent_SwitchBind"
|
||||
}
|
||||
function OptionBindingCtrl:SetText(sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
||||
end
|
||||
function OptionBindingCtrl:Init(nType, sAction, sName, sDisplayName, bPS)
|
||||
self.bActiveBinding = false
|
||||
self.nDeviceType = nType
|
||||
self.sAction = sAction
|
||||
self.sName = sName
|
||||
self.sDisplayName = sDisplayName
|
||||
self.bPS = bPS
|
||||
self:SwitchState(false)
|
||||
self:RefreshButton()
|
||||
end
|
||||
function OptionBindingCtrl:SwitchState(bholder)
|
||||
self._mapNode.Placeholder:SetActive(bholder)
|
||||
self._mapNode.holderBg:SetActive(bholder)
|
||||
self._mapNode.goBind:SetActive(not bholder)
|
||||
self._mapNode.bindBg:SetActive(not bholder)
|
||||
end
|
||||
function OptionBindingCtrl:ChangeGamepad(bPS)
|
||||
self.bPS = bPS
|
||||
if self.bActiveBinding then
|
||||
return
|
||||
end
|
||||
self:RefreshButton()
|
||||
end
|
||||
function OptionBindingCtrl:RefreshButton()
|
||||
self._mapNode.Keyboard:SetActive(self.nDeviceType == BasicDevice.Keyboard)
|
||||
self._mapNode.Mouse:SetActive(self.nDeviceType == BasicDevice.Mouse)
|
||||
self._mapNode.Gamepad:SetActive(self.nDeviceType == BasicDevice.Gamepad)
|
||||
if self.nDeviceType == BasicDevice.Keyboard then
|
||||
if ImageKey[self.sName] then
|
||||
self._mapNode.imgKeyboard.gameObject:SetActive(true)
|
||||
self._mapNode.goKey:SetActive(false)
|
||||
local sIcon = ConfigTable.GetField("GamepadButton", self.sName, "XboxIcon")
|
||||
self:SetPngSprite(self._mapNode.imgKeyboard, sIcon)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgKeyboard)
|
||||
else
|
||||
self._mapNode.imgKeyboard.gameObject:SetActive(false)
|
||||
self._mapNode.goKey:SetActive(true)
|
||||
local sName = GamepadUIManager.GetInputName({
|
||||
name = self.sName,
|
||||
displayName = self.sDisplayName
|
||||
})
|
||||
NovaAPI.SetTMPText(self._mapNode.txtKeyboard, sName)
|
||||
end
|
||||
elseif self.nDeviceType == BasicDevice.Mouse then
|
||||
local sIcon = ConfigTable.GetField("GamepadButton", self.sName, "XboxIcon")
|
||||
self:SetPngSprite(self._mapNode.imgMouse, sIcon)
|
||||
elseif self.nDeviceType == BasicDevice.Gamepad then
|
||||
local sIcon
|
||||
if self.bPS then
|
||||
sIcon = ConfigTable.GetField("GamepadButton", self.sName, "PlayStationIcon")
|
||||
else
|
||||
sIcon = ConfigTable.GetField("GamepadButton", self.sName, "XboxIcon")
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imgGamepad, sIcon)
|
||||
end
|
||||
end
|
||||
function OptionBindingCtrl:OpenDeviceWarning()
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Tip_IllegalDevice"))
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionBindingCtrl:OpenKeyWarning()
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Tip_IllegalInput"))
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionBindingCtrl:OpenConflictWarning(sBeforeAction, inputInfo, nType)
|
||||
local sActionName = ConfigTable.GetUIText("Action_" .. sBeforeAction)
|
||||
local sTip = ConfigTable.GetUIText("Settings_Tip_ConflictInput") or ""
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = orderedFormat(sTip, sActionName),
|
||||
callbackConfirm = function()
|
||||
EventManager.Hit("SettingsSwitchBind", self.nDeviceType, inputInfo, {
|
||||
name = self.sName,
|
||||
displayName = self.sDisplayName
|
||||
})
|
||||
self:SwitchState(false)
|
||||
self.nDeviceType = nType
|
||||
self.sName = inputInfo.name
|
||||
self.sDisplayName = inputInfo.displayName
|
||||
self:UpdateBindConfig(inputInfo, nType)
|
||||
self:RefreshButton()
|
||||
end,
|
||||
callbackCancel = function()
|
||||
self:SwitchState(false)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self.bActiveBinding = false
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
InputManager.Instance.IsVirtualMouseEnabled = true
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function OptionBindingCtrl:OnBindingSuccess(inputInfo, nType)
|
||||
self.nDeviceType = nType
|
||||
self.sName = inputInfo.name
|
||||
self.sDisplayName = inputInfo.displayName
|
||||
self:UpdateBindConfig(inputInfo, nType)
|
||||
self:RefreshButton()
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionBindingCtrl:UpdateBindConfig(inputInfo, nType)
|
||||
if nType == BasicDevice.Gamepad then
|
||||
self._panel.mapGamepadBind[self.sAction] = inputInfo.name
|
||||
EventManager.Hit("SettingsRefreshDisplay", self.sAction, inputInfo.name)
|
||||
else
|
||||
self._panel.mapKeyboardBind[self.sAction] = {
|
||||
name = inputInfo.name,
|
||||
displayName = inputInfo.displayName
|
||||
}
|
||||
end
|
||||
end
|
||||
function OptionBindingCtrl:QuitBinding()
|
||||
self.bActiveBinding = false
|
||||
self:SwitchState(false)
|
||||
InputManager.Instance.IsVirtualMouseEnabled = true
|
||||
self._mapNode.btnBind.interactable = false
|
||||
self:AddTimer(1, 0.4, function()
|
||||
self._mapNode.btnBind.interactable = true
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
end, true, true, true)
|
||||
end
|
||||
function OptionBindingCtrl:OnBtnClick_Bind()
|
||||
self.bActiveBinding = true
|
||||
self:SwitchState(true)
|
||||
EventManager.Hit(EventId.BlockInput, true)
|
||||
InputManager.Instance.IsVirtualMouseEnabled = false
|
||||
end
|
||||
function OptionBindingCtrl:OnEvent_KeyboardButtonPress(inputInfo)
|
||||
if not self.bActiveBinding then
|
||||
return
|
||||
end
|
||||
if self.nDeviceType == BasicDevice.Gamepad then
|
||||
self:OpenDeviceWarning()
|
||||
return
|
||||
end
|
||||
if table.indexof(IllegalKeyboardKey, inputInfo.displayName) ~= 0 then
|
||||
self:OpenKeyWarning()
|
||||
return
|
||||
end
|
||||
if inputInfo.name == self.sName then
|
||||
self:QuitBinding()
|
||||
return
|
||||
end
|
||||
local sBeforeAction
|
||||
for k, v in pairs(self._panel.mapKeyboardBind) do
|
||||
if v.name == inputInfo.name then
|
||||
sBeforeAction = k
|
||||
end
|
||||
end
|
||||
if sBeforeAction then
|
||||
self:OpenConflictWarning(sBeforeAction, inputInfo, BasicDevice.Keyboard)
|
||||
return
|
||||
end
|
||||
self:OnBindingSuccess(inputInfo, BasicDevice.Keyboard)
|
||||
end
|
||||
function OptionBindingCtrl:OnEvent_MouseButtonPress(inputInfo)
|
||||
if not self.bActiveBinding then
|
||||
return
|
||||
end
|
||||
if self.nDeviceType == BasicDevice.Gamepad then
|
||||
self:OpenDeviceWarning()
|
||||
return
|
||||
end
|
||||
if inputInfo.name == self.sName then
|
||||
self:QuitBinding()
|
||||
return
|
||||
end
|
||||
local sBeforeAction
|
||||
for k, v in pairs(self._panel.mapKeyboardBind) do
|
||||
if v.name == inputInfo.name then
|
||||
sBeforeAction = k
|
||||
end
|
||||
end
|
||||
if sBeforeAction then
|
||||
self:OpenConflictWarning(sBeforeAction, inputInfo, BasicDevice.Mouse)
|
||||
return
|
||||
end
|
||||
self:OnBindingSuccess(inputInfo, BasicDevice.Mouse)
|
||||
end
|
||||
function OptionBindingCtrl:OnEvent_GamepadButtonPress(inputInfo)
|
||||
if not self.bActiveBinding then
|
||||
return
|
||||
end
|
||||
if self.nDeviceType ~= BasicDevice.Gamepad then
|
||||
self:OpenDeviceWarning()
|
||||
return
|
||||
end
|
||||
if inputInfo.name == "leftTriggerButton" then
|
||||
inputInfo.name = "leftTrigger"
|
||||
elseif inputInfo.name == "rightTriggerButton" then
|
||||
inputInfo.name = "rightTrigger"
|
||||
end
|
||||
if table.indexof(LegalGamepadKey, inputInfo.name) == 0 then
|
||||
self:OpenKeyWarning()
|
||||
return
|
||||
end
|
||||
if inputInfo.name == self.sName then
|
||||
self:QuitBinding()
|
||||
return
|
||||
end
|
||||
local sBeforeAction = table.keyof(self._panel.mapGamepadBind, inputInfo.name)
|
||||
if sBeforeAction then
|
||||
self:OpenConflictWarning(sBeforeAction, inputInfo, BasicDevice.Gamepad)
|
||||
return
|
||||
end
|
||||
self:OnBindingSuccess(inputInfo, BasicDevice.Gamepad)
|
||||
end
|
||||
function OptionBindingCtrl:OnEvent_SwitchBind(nType, inputInfoBefore, inputInfo)
|
||||
if not self.sName or self.sName ~= inputInfoBefore.name then
|
||||
return
|
||||
end
|
||||
self.nDeviceType = nType
|
||||
self.sName = inputInfo.name
|
||||
self.sDisplayName = inputInfo.displayName
|
||||
self:UpdateBindConfig(inputInfo, nType)
|
||||
self:RefreshButton()
|
||||
end
|
||||
return OptionBindingCtrl
|
||||
@@ -0,0 +1,62 @@
|
||||
local OptionChooseCtrl = class("OptionChooseCtrl", BaseCtrl)
|
||||
OptionChooseCtrl._mapNodeConfig = {
|
||||
btnChoose = {
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Choose"
|
||||
},
|
||||
txtChoose = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
Checkmark = {nCount = 3, sComponentName = "Animator"},
|
||||
Mask = {nCount = 3},
|
||||
Choose = {nCount = 3},
|
||||
txtOptionTitle = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
OptionChooseCtrl._mapEventConfig = {}
|
||||
function OptionChooseCtrl:SetText(s1, s2, s3, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtChoose[1], s1)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtChoose[2], s2)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtChoose[3], s3)
|
||||
end
|
||||
function OptionChooseCtrl:Init(callback, nIndex, nCount)
|
||||
self.nIndex = nIndex
|
||||
self.callback = callback
|
||||
if nCount == nil then
|
||||
nCount = 3
|
||||
end
|
||||
for i = 1, 3 do
|
||||
if i > nCount then
|
||||
self._mapNode.Choose[i].gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.Choose[i].gameObject:SetActive(true)
|
||||
if i == self.nIndex then
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_in", -1, 1)
|
||||
else
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_out", -1, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function OptionChooseCtrl:SetGray(tbGrayIndex, sTip)
|
||||
self.tbGrayIndex = tbGrayIndex
|
||||
self.sTip = sTip
|
||||
for i = 1, 3 do
|
||||
self._mapNode.Mask[i]:SetActive(tbGrayIndex and tbGrayIndex[i])
|
||||
end
|
||||
end
|
||||
function OptionChooseCtrl:Awake()
|
||||
end
|
||||
function OptionChooseCtrl:OnBtnClick_Choose(btn, index)
|
||||
if self.nIndex == index then
|
||||
return
|
||||
end
|
||||
if self.tbGrayIndex and self.tbGrayIndex[index] then
|
||||
EventManager.Hit(EventId.OpenMessageBox, self.sTip or "")
|
||||
return
|
||||
end
|
||||
self._mapNode.Checkmark[self.nIndex]:SetTrigger("PlayCheckmarkHide")
|
||||
self._mapNode.Checkmark[index]:SetTrigger("PlayCheckmarkShow")
|
||||
self.nIndex = index
|
||||
self.callback(self.nIndex)
|
||||
end
|
||||
return OptionChooseCtrl
|
||||
@@ -0,0 +1,89 @@
|
||||
local OptionDynamicCtrl = class("OptionDynamicCtrl", BaseCtrl)
|
||||
OptionDynamicCtrl._mapNodeConfig = {
|
||||
Choose = {},
|
||||
trChoose = {sComponentName = "Transform"},
|
||||
txtOptionTitle = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
OptionDynamicCtrl._mapEventConfig = {}
|
||||
function OptionDynamicCtrl:SetText(sTitle, tbChoose)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
||||
for i = 1, self.nCount do
|
||||
NovaAPI.SetTMPText(self.txtChoose[i], tbChoose[i])
|
||||
end
|
||||
end
|
||||
function OptionDynamicCtrl:Init(callback, nIndex, nCount, sConfirm, bIsVoLan)
|
||||
self.nIndex = nIndex
|
||||
self.callback = callback
|
||||
self.nCount = nCount
|
||||
self.sConfirm = sConfirm
|
||||
self.txtChoose = {}
|
||||
self.Checkmark = {}
|
||||
self.Mask = {}
|
||||
self.bIsVoLan = bIsVoLan == true
|
||||
delChildren(self._mapNode.trChoose)
|
||||
for i = 1, nCount do
|
||||
local goItemObj = instantiate(self._mapNode.Choose, self._mapNode.trChoose)
|
||||
goItemObj:SetActive(true)
|
||||
local txtChoose = goItemObj.transform:Find("btnChoose/txtChoose"):GetComponent("TMP_Text")
|
||||
local Checkmark = goItemObj.transform:Find("btnChoose/Background/Checkmark"):GetComponent("Animator")
|
||||
local Mask = goItemObj.transform:Find("btnChoose/Mask").gameObject
|
||||
table.insert(self.txtChoose, txtChoose)
|
||||
table.insert(self.Checkmark, Checkmark)
|
||||
table.insert(self.Mask, Mask)
|
||||
local btn = goItemObj.transform:Find("btnChoose"):GetComponent("UIButton")
|
||||
local func_Handler = ui_handler(self, self.OnBtnClick_Choose, goItemObj, i)
|
||||
btn.onClick:AddListener(func_Handler)
|
||||
if i == self.nIndex then
|
||||
Checkmark:Play("checkmark_in", -1, 1)
|
||||
else
|
||||
Checkmark:Play("checkmark_out", -1, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
function OptionDynamicCtrl:SetGray(tbGrayIndex, sTip)
|
||||
self.tbGrayIndex = tbGrayIndex
|
||||
self.sTip = sTip
|
||||
for i = 1, self.nCount do
|
||||
self.Mask[i]:SetActive(tbGrayIndex and tbGrayIndex[i])
|
||||
end
|
||||
end
|
||||
function OptionDynamicCtrl:OnBtnClick_Choose(btn, index)
|
||||
if self.nIndex == index then
|
||||
return
|
||||
end
|
||||
if self.tbGrayIndex and self.tbGrayIndex[index] then
|
||||
EventManager.Hit(EventId.OpenMessageBox, self.sTip or "")
|
||||
return
|
||||
end
|
||||
local change = function()
|
||||
self.Checkmark[self.nIndex]:SetTrigger("PlayCheckmarkHide")
|
||||
self.Checkmark[index]:SetTrigger("PlayCheckmarkShow")
|
||||
self.nIndex = index
|
||||
self.callback(self.nIndex)
|
||||
end
|
||||
local checkConfirm = function()
|
||||
if self.sConfirm then
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = self.sConfirm,
|
||||
callbackConfirm = function()
|
||||
change()
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
else
|
||||
change()
|
||||
end
|
||||
end
|
||||
if self.bIsVoLan == true then
|
||||
if index == 2 then
|
||||
checkConfirm()
|
||||
else
|
||||
change()
|
||||
end
|
||||
else
|
||||
checkConfirm()
|
||||
end
|
||||
end
|
||||
return OptionDynamicCtrl
|
||||
@@ -0,0 +1,252 @@
|
||||
local OptionKeyboardBindingCtrl = class("OptionKeyboardBindingCtrl", BaseCtrl)
|
||||
local InputManager = CS.InputManager
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
local ImageKey = {backspace = 1, enter = 2}
|
||||
local MouseName = {
|
||||
leftButton = 1,
|
||||
rightButton = 2,
|
||||
middleButton = 3,
|
||||
backButton = 4,
|
||||
forwardButton = 5
|
||||
}
|
||||
local IllegalKeyboardKey = {
|
||||
"Caps Lock",
|
||||
"Left Windows",
|
||||
"Right Windows",
|
||||
"Prnt Scrn",
|
||||
"Scroll Lock",
|
||||
"Break",
|
||||
"Num Lock",
|
||||
"Alt",
|
||||
"Left Alt",
|
||||
"Right Alt",
|
||||
"Esc",
|
||||
"Application",
|
||||
"B"
|
||||
}
|
||||
OptionKeyboardBindingCtrl._mapNodeConfig = {
|
||||
txtOptionTitle = {sComponentName = "TMP_Text"},
|
||||
btnBind = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Bind"
|
||||
},
|
||||
Placeholder = {nCount = 2},
|
||||
goBind = {nCount = 2},
|
||||
bindBg = {nCount = 2},
|
||||
holderBg = {nCount = 2},
|
||||
keynone = {nCount = 2},
|
||||
Keyboard = {nCount = 2},
|
||||
goKey = {nCount = 2},
|
||||
imgKeyboard = {nCount = 2, sComponentName = "Image"},
|
||||
txtKeyboard = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
Mouse = {nCount = 2},
|
||||
imgMouse = {nCount = 2, sComponentName = "Image"}
|
||||
}
|
||||
OptionKeyboardBindingCtrl._mapEventConfig = {
|
||||
LuaEventName_KeyboardButtonPress = "OnEvent_KeyboardButtonPress",
|
||||
LuaEventName_MouseButtonPress = "OnEvent_MouseButtonPress",
|
||||
LuaEventName_GamepadButtonPress = "OnEvent_GamepadButtonPress",
|
||||
SettingsSwitchKeyboardBind = "OnEvent_SwitchBind"
|
||||
}
|
||||
function OptionKeyboardBindingCtrl:SetText(sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:Init(sAction)
|
||||
self.nActiveBindingIndex = 0
|
||||
self.sAction = sAction
|
||||
for i = 1, 2 do
|
||||
self:SwitchState(i, false)
|
||||
self:RefreshButton(i)
|
||||
end
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:SwitchState(nIndex, bholder)
|
||||
self._mapNode.Placeholder[nIndex]:SetActive(bholder)
|
||||
self._mapNode.holderBg[nIndex]:SetActive(bholder)
|
||||
self._mapNode.goBind[nIndex]:SetActive(not bholder)
|
||||
self._mapNode.bindBg[nIndex]:SetActive(not bholder)
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:RefreshButton(nIndex)
|
||||
local mapInput = self._panel.mapKeyboardBind[self.sAction][nIndex]
|
||||
if mapInput.name == "" then
|
||||
self._mapNode.Keyboard[nIndex]:SetActive(false)
|
||||
self._mapNode.Mouse[nIndex]:SetActive(false)
|
||||
self._mapNode.keynone[nIndex]:SetActive(true)
|
||||
return
|
||||
end
|
||||
self._mapNode.keynone[nIndex]:SetActive(false)
|
||||
local bMouse = MouseName[mapInput.name]
|
||||
self._mapNode.Keyboard[nIndex]:SetActive(not bMouse)
|
||||
self._mapNode.Mouse[nIndex]:SetActive(bMouse)
|
||||
if not bMouse then
|
||||
if ImageKey[mapInput.name] then
|
||||
self._mapNode.imgKeyboard[nIndex].gameObject:SetActive(true)
|
||||
self._mapNode.goKey[nIndex]:SetActive(false)
|
||||
local sIcon = ConfigTable.GetField("GamepadButton", mapInput.name, "XboxIcon")
|
||||
self:SetPngSprite(self._mapNode.imgKeyboard[nIndex], sIcon)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgKeyboard[nIndex])
|
||||
else
|
||||
self._mapNode.imgKeyboard[nIndex].gameObject:SetActive(false)
|
||||
self._mapNode.goKey[nIndex]:SetActive(true)
|
||||
local sName = GamepadUIManager.GetInputName(mapInput)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtKeyboard[nIndex], sName)
|
||||
end
|
||||
elseif bMouse then
|
||||
local sIcon = ConfigTable.GetField("GamepadButton", mapInput.name, "XboxIcon")
|
||||
self:SetPngSprite(self._mapNode.imgMouse[nIndex], sIcon)
|
||||
end
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OpenDeviceWarning()
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Tip_IllegalDevice"))
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OpenKeyWarning()
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Tip_IllegalInput"))
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:ChangeInGroup()
|
||||
local mapFirst = self._panel.mapKeyboardBind[self.sAction][1]
|
||||
self._panel.mapKeyboardBind[self.sAction][1] = self._panel.mapKeyboardBind[self.sAction][2]
|
||||
self._panel.mapKeyboardBind[self.sAction][2] = mapFirst
|
||||
for i = 1, 2 do
|
||||
self:RefreshButton(i)
|
||||
end
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OpenConflictWarning(sBeforeAction, nBeforIndex, inputInfo)
|
||||
local nSelectIndex = self.nActiveBindingIndex
|
||||
local mapInput = self._panel.mapKeyboardBind[self.sAction][nSelectIndex]
|
||||
local sActionName = ConfigTable.GetUIText("Action_" .. sBeforeAction)
|
||||
local sTip = ConfigTable.GetUIText("Settings_Tip_ConflictInput") or ""
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = orderedFormat(sTip, sActionName),
|
||||
callbackConfirm = function()
|
||||
EventManager.Hit("SettingsSwitchKeyboardBind", sBeforeAction, nBeforIndex, {
|
||||
name = mapInput.name,
|
||||
displayName = mapInput.displayName
|
||||
})
|
||||
self:SwitchState(nSelectIndex, false)
|
||||
self:UpdateBindConfig(inputInfo, nSelectIndex)
|
||||
self:RefreshButton(nSelectIndex)
|
||||
end,
|
||||
callbackCancel = function()
|
||||
self:SwitchState(nSelectIndex, false)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self.nActiveBindingIndex = 0
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
InputManager.Instance.IsVirtualMouseEnabled = true
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OnBindingSuccess(inputInfo)
|
||||
self:UpdateBindConfig(inputInfo, self.nActiveBindingIndex)
|
||||
self:RefreshButton(self.nActiveBindingIndex)
|
||||
self:QuitBinding()
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:UpdateBindConfig(inputInfo, nIndex)
|
||||
self._panel.mapKeyboardBind[self.sAction][nIndex] = {
|
||||
name = inputInfo.name,
|
||||
displayName = inputInfo.displayName
|
||||
}
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:QuitBinding()
|
||||
self:SwitchState(self.nActiveBindingIndex, false)
|
||||
self.nActiveBindingIndex = 0
|
||||
self:AddTimer(1, 0.1, function()
|
||||
EventManager.Hit(EventId.BlockInput, false)
|
||||
InputManager.Instance.IsVirtualMouseEnabled = true
|
||||
end, true, true, true)
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:Awake()
|
||||
self.nActiveBindingIndex = 0
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OnBtnClick_Bind(btn, nIndex)
|
||||
self.nActiveBindingIndex = nIndex
|
||||
self:SwitchState(nIndex, true)
|
||||
EventManager.Hit(EventId.BlockInput, true)
|
||||
InputManager.Instance.IsVirtualMouseEnabled = false
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OnEvent_KeyboardButtonPress(inputInfo)
|
||||
if self.nActiveBindingIndex == 0 then
|
||||
return
|
||||
end
|
||||
if table.indexof(IllegalKeyboardKey, inputInfo.displayName) ~= 0 then
|
||||
self:OpenKeyWarning()
|
||||
return
|
||||
end
|
||||
local mapInput = self._panel.mapKeyboardBind[self.sAction][self.nActiveBindingIndex]
|
||||
if inputInfo.name == mapInput.name then
|
||||
self:QuitBinding()
|
||||
return
|
||||
end
|
||||
local mapInputInGroup = self._panel.mapKeyboardBind[self.sAction][self.nActiveBindingIndex == 1 and 2 or 1]
|
||||
if inputInfo.name == mapInputInGroup.name then
|
||||
self:ChangeInGroup()
|
||||
return
|
||||
end
|
||||
local sBeforeAction, nBeforIndex = nil, 0
|
||||
for k, v in pairs(self._panel.mapKeyboardBind) do
|
||||
for i = 1, 2 do
|
||||
if v[i].name and inputInfo.name == v[i].name then
|
||||
sBeforeAction = k
|
||||
nBeforIndex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if sBeforeAction then
|
||||
self:OpenConflictWarning(sBeforeAction, nBeforIndex, inputInfo)
|
||||
return
|
||||
end
|
||||
self:OnBindingSuccess(inputInfo)
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OnEvent_MouseButtonPress(inputInfo)
|
||||
if self.nActiveBindingIndex == 0 then
|
||||
return
|
||||
end
|
||||
local mapInput = self._panel.mapKeyboardBind[self.sAction][self.nActiveBindingIndex]
|
||||
if inputInfo.name == mapInput.name then
|
||||
self:QuitBinding()
|
||||
return
|
||||
end
|
||||
local mapInputInGroup = self._panel.mapKeyboardBind[self.sAction][self.nActiveBindingIndex == 1 and 2 or 1]
|
||||
if inputInfo.name == mapInputInGroup.name then
|
||||
self:ChangeInGroup()
|
||||
return
|
||||
end
|
||||
local sBeforeAction, nBeforIndex = nil, 0
|
||||
for k, v in pairs(self._panel.mapKeyboardBind) do
|
||||
for i = 1, 2 do
|
||||
if v[i].name and inputInfo.name == v[i].name then
|
||||
sBeforeAction = k
|
||||
nBeforIndex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if sBeforeAction then
|
||||
self:OpenConflictWarning(sBeforeAction, nBeforIndex, inputInfo)
|
||||
return
|
||||
end
|
||||
self:OnBindingSuccess(inputInfo)
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OnEvent_GamepadButtonPress(inputInfo)
|
||||
if self.nActiveBindingIndex == 0 then
|
||||
return
|
||||
end
|
||||
self:OpenDeviceWarning()
|
||||
end
|
||||
function OptionKeyboardBindingCtrl:OnEvent_SwitchBind(nAction, nIndex, inputInfo)
|
||||
if self.sAction ~= nAction then
|
||||
return
|
||||
end
|
||||
self:UpdateBindConfig(inputInfo, nIndex)
|
||||
self:RefreshButton(nIndex)
|
||||
end
|
||||
return OptionKeyboardBindingCtrl
|
||||
@@ -0,0 +1,34 @@
|
||||
local OptionSwitchCtrl = class("OptionSwitchCtrl", BaseCtrl)
|
||||
OptionSwitchCtrl._mapNodeConfig = {
|
||||
txtOptionTitle = {sComponentName = "TMP_Text"},
|
||||
btnSwitch = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Switch"
|
||||
},
|
||||
SwitchOn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_ON_EN"
|
||||
},
|
||||
SwitchOff = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_OFF_EN"
|
||||
}
|
||||
}
|
||||
OptionSwitchCtrl._mapEventConfig = {}
|
||||
function OptionSwitchCtrl:SetText(sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
||||
end
|
||||
function OptionSwitchCtrl:Init(callback, bOn)
|
||||
self.bOn = bOn
|
||||
self.callback = callback
|
||||
self._mapNode.btnSwitch[1].gameObject:SetActive(not self.bOn)
|
||||
self._mapNode.btnSwitch[2].gameObject:SetActive(self.bOn)
|
||||
end
|
||||
function OptionSwitchCtrl:OnBtnClick_Switch(btn, nIndex)
|
||||
self.bOn = not self.bOn
|
||||
self.callback()
|
||||
self._mapNode.btnSwitch[1].gameObject:SetActive(nIndex == 2)
|
||||
self._mapNode.btnSwitch[2].gameObject:SetActive(nIndex == 1)
|
||||
end
|
||||
return OptionSwitchCtrl
|
||||
@@ -0,0 +1,64 @@
|
||||
local OptionUpdateChooseCtrl = class("OptionUpdateChooseCtrl", BaseCtrl)
|
||||
OptionUpdateChooseCtrl._mapNodeConfig = {
|
||||
btnChoose = {
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Choose"
|
||||
},
|
||||
txtChoose = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
Checkmark = {nCount = 3, sComponentName = "Animator"},
|
||||
Mask = {nCount = 3},
|
||||
Choose = {nCount = 3},
|
||||
txtOptionTitle = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
OptionUpdateChooseCtrl._mapEventConfig = {}
|
||||
function OptionUpdateChooseCtrl:SetText(s1, s2, s3, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtChoose[1], s1)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtChoose[2], s2)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtChoose[3], s3)
|
||||
end
|
||||
function OptionUpdateChooseCtrl:Init(callback, nIndex, nCount)
|
||||
self.nIndex = nIndex
|
||||
self.callback = callback
|
||||
if nCount == nil then
|
||||
nCount = 3
|
||||
end
|
||||
for i = 1, 3 do
|
||||
if i > nCount then
|
||||
self._mapNode.Choose[i].gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.Choose[i].gameObject:SetActive(true)
|
||||
if i == self.nIndex then
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_in", -1, 1)
|
||||
else
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_out", -1, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function OptionUpdateChooseCtrl:SetGray(tbGrayIndex, sTip)
|
||||
self.tbGrayIndex = tbGrayIndex
|
||||
self.sTip = sTip
|
||||
for i = 1, 3 do
|
||||
self._mapNode.Mask[i]:SetActive(tbGrayIndex and tbGrayIndex[i])
|
||||
end
|
||||
end
|
||||
function OptionUpdateChooseCtrl:Awake()
|
||||
end
|
||||
function OptionUpdateChooseCtrl:OnBtnClick_Choose(btn, index)
|
||||
if self.nIndex == index then
|
||||
return
|
||||
end
|
||||
if self.tbGrayIndex and self.tbGrayIndex[index] then
|
||||
EventManager.Hit(EventId.OpenMessageBox, self.sTip or "")
|
||||
return
|
||||
end
|
||||
local suc = function()
|
||||
self._mapNode.Checkmark[self.nIndex]:SetTrigger("PlayCheckmarkHide")
|
||||
self._mapNode.Checkmark[index]:SetTrigger("PlayCheckmarkShow")
|
||||
self.nIndex = index
|
||||
end
|
||||
self.callback(index, suc)
|
||||
end
|
||||
return OptionUpdateChooseCtrl
|
||||
@@ -0,0 +1,408 @@
|
||||
local PreviewMainViewCtrl = class("PreviewMainViewCtrl", BaseCtrl)
|
||||
local PlayerBoardData = PlayerData.Board
|
||||
local PlayerVoiceData = PlayerData.Voice
|
||||
local AvgData = PlayerData.Avg
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
|
||||
local TimerManager = require("GameCore.Timer.TimerManager")
|
||||
local BubbleVoiceManager = require("Game.Actor2D.BubbleVoiceManager")
|
||||
PreviewMainViewCtrl._mapNodeConfig = {
|
||||
btnSkipCGAnim = {sComponentName = "Button"},
|
||||
rawImgActor2D = {
|
||||
sNodeName = "----Actor2D----",
|
||||
sComponentName = "RawImage"
|
||||
},
|
||||
imgOutfit = {sComponentName = "Image"},
|
||||
HideRoot = {},
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
imgEnergyIcon = {sComponentName = "Image"},
|
||||
txtEnergyCount = {sComponentName = "TMP_Text"},
|
||||
btnAddEnergy = {sComponentName = "UIButton"},
|
||||
goCoin = {
|
||||
nCount = 2,
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateCoinCtrl"
|
||||
},
|
||||
imgBtn1 = {},
|
||||
btnAdd1 = {sComponentName = "UIButton"},
|
||||
imgBtn2 = {},
|
||||
btnAdd2 = {sComponentName = "UIButton"},
|
||||
imgExp = {sComponentName = "Image"},
|
||||
txtRank = {sComponentName = "TMP_Text"},
|
||||
txtRankEn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_RANK"
|
||||
},
|
||||
btnWorldClass = {sComponentName = "UIButton"},
|
||||
btnActivity = {sComponentName = "UIButton"},
|
||||
txtActivity1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Activity"
|
||||
},
|
||||
btnBattlePass = {sComponentName = "UIButton"},
|
||||
txtBattlePass = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_BattlePass"
|
||||
},
|
||||
btnMall = {sComponentName = "UIButton"},
|
||||
txtMall = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Mall"
|
||||
},
|
||||
btnNotice = {sComponentName = "UIButton"},
|
||||
btnMail = {sComponentName = "UIButton"},
|
||||
btnFriend = {sComponentName = "UIButton"},
|
||||
btnDepot = {sComponentName = "UIButton"},
|
||||
goEnergyTip = {},
|
||||
tmpEnergy = {sComponentName = "TMP_Text"},
|
||||
imgTime = {nCount = 3},
|
||||
goActivityBanner = {},
|
||||
goActBannerList = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
btnActBanner = {
|
||||
sNodeName = "goActBannerList",
|
||||
sComponentName = "UIButton"
|
||||
},
|
||||
eventActBannerDrag = {
|
||||
sNodeName = "goActBannerList",
|
||||
sComponentName = "UIDrag"
|
||||
},
|
||||
activityBannerItem = {
|
||||
nCount = 3,
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
imgActBanner = {nCount = 3, sComponentName = "Image"},
|
||||
goBannerDot = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
imgPointBg = {nCount = 8},
|
||||
btnSwitchActor2D = {sComponentName = "UIButton"},
|
||||
btnHideAllUI = {sComponentName = "UIButton", nCount = 2},
|
||||
btnMenu = {sComponentName = "UIButton"},
|
||||
btnBoardChange = {sComponentName = "UIButton"},
|
||||
btnBoardNext = {sComponentName = "UIButton"},
|
||||
btnTask = {sComponentName = "UIButton"},
|
||||
txtTask1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Task"
|
||||
},
|
||||
btnPhone = {sComponentName = "UIButton"},
|
||||
txtPhone1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Phone"
|
||||
},
|
||||
btnDispatch = {sComponentName = "UIButton"},
|
||||
txtDispatch1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Dispatch"
|
||||
},
|
||||
btnRecruit = {sComponentName = "UIButton"},
|
||||
txtRecruit1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Recruit"
|
||||
},
|
||||
btnRole = {sComponentName = "UIButton"},
|
||||
txtRole1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Role"
|
||||
},
|
||||
btnDisc = {sComponentName = "UIButton"},
|
||||
txtDisc1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Disc"
|
||||
},
|
||||
btnShop = {sComponentName = "UIButton"},
|
||||
txtShop1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Shop"
|
||||
},
|
||||
btnMap = {sComponentName = "UIButton"},
|
||||
txtGo = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_Go"
|
||||
},
|
||||
txtMainline1 = {sComponentName = "TMP_Text", sLanguageId = "Mainline"},
|
||||
goStarTowerHint = {},
|
||||
tmpStarTowerHint = {sComponentName = "TMP_Text"},
|
||||
btnStarTowerHint = {
|
||||
sNodeName = "goStarTowerHint",
|
||||
sComponentName = "UIButton"
|
||||
},
|
||||
goStoryHint = {},
|
||||
tmpStoryHint = {sComponentName = "TMP_Text"},
|
||||
btnStoryHint = {
|
||||
sNodeName = "goStoryHint",
|
||||
sComponentName = "UIButton"
|
||||
}
|
||||
}
|
||||
PreviewMainViewCtrl._mapEventConfig = {}
|
||||
function PreviewMainViewCtrl:Refresh()
|
||||
self:RefreshPlayerInfo()
|
||||
self:RefreshWorldClass()
|
||||
self:RefreshResources()
|
||||
self:RefreshEnergy()
|
||||
self:RefreshActor2D()
|
||||
self:RefreshComFuncState()
|
||||
self:SetBanner()
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshPlayerInfo()
|
||||
local sName = PlayerData.Base:GetPlayerNickName()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, sName)
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshWorldClass()
|
||||
local nWorldClass = PlayerData.Base:GetWorldClass()
|
||||
local nCurExp = PlayerData.Base:GetWorldExp()
|
||||
local mapCfg = ConfigTable.GetData("WorldClass", nWorldClass + 1, true)
|
||||
local nFullExp = 0
|
||||
if mapCfg then
|
||||
nFullExp = mapCfg.Exp
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRank, nWorldClass)
|
||||
NovaAPI.SetImageFillAmount(self._mapNode.imgExp, nFullExp == 0 and 1 or nCurExp / nFullExp)
|
||||
local nMaxEnergy = ConfigTable.GetConfigNumber("EnergyMaxLimit")
|
||||
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
NovaAPI.SetTMPText(self._mapNode.txtEnergyCount, nCurEnergy .. "/" .. nMaxEnergy)
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshResources()
|
||||
for nCoinId, index in pairs(self.tbRes) do
|
||||
if nCoinId == AllEnum.CoinItemId.FREESTONE then
|
||||
self._mapNode.goCoin[index]:SetCoin(nCoinId, PlayerData.Coin:GetCoinCount(AllEnum.CoinItemId.FREESTONE) + PlayerData.Coin:GetCoinCount(AllEnum.CoinItemId.STONE), true, 999999)
|
||||
else
|
||||
self._mapNode.goCoin[index]:SetCoin(nCoinId, PlayerData.Coin:GetCoinCount(nCoinId), true, 999999)
|
||||
end
|
||||
end
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshEnergy()
|
||||
local nMaxEnergy = ConfigTable.GetConfigNumber("EnergyMaxLimit")
|
||||
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
NovaAPI.SetTMPText(self._mapNode.txtEnergyCount, nCurEnergy .. "/" .. nMaxEnergy)
|
||||
self:SetSprite_Coin(self._mapNode.imgEnergyIcon, AllEnum.CoinItemId.Energy)
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshActor2D()
|
||||
self._mapNode.imgOutfit.gameObject:SetActive(false)
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(false)
|
||||
local curBoardData = PlayerBoardData:GetCurBoardData()
|
||||
if nil == curBoardData then
|
||||
curBoardData = PlayerBoardData:GetTempBoardData()
|
||||
end
|
||||
local nCGAnimTime = 0
|
||||
if nil ~= curBoardData then
|
||||
if curBoardData:GetType() == GameEnum.handbookType.SKIN then
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(true)
|
||||
local charId = curBoardData:GetCharId()
|
||||
local skinId = curBoardData:GetSkinId()
|
||||
local bSuc, nType, nAnimLen = Actor2DManager.SetActor2D(PanelId.MainView, self._mapNode.rawImgActor2D, charId, skinId)
|
||||
local nTargetType = PlayerData.Board:GetBoardPanelL2DType()
|
||||
local bChange = false
|
||||
if nTargetType ~= 0 and nTargetType ~= nType and (nTargetType == AllEnum.Actor2DType.FullScreen and curBoardData:CheckFavorCG() or nTargetType == AllEnum.Actor2DType.Normal) then
|
||||
bChange = true
|
||||
end
|
||||
if bChange then
|
||||
bSuc, nType, nAnimLen = Actor2DManager.SwitchActor2DType()
|
||||
end
|
||||
local nBoardPanelId = PlayerBoardData:GetBoardPanelSelectId()
|
||||
if nil ~= nBoardPanelId and 0 ~= nBoardPanelId and nType == AllEnum.Actor2DType.Normal and nBoardPanelId == curBoardData:GetId() then
|
||||
Actor2DManager.PlayActor2DAnim("Actor2D_left_middle")
|
||||
end
|
||||
self.nActorShowType = nType
|
||||
nCGAnimTime = nAnimLen or 0
|
||||
elseif curBoardData:GetType() == GameEnum.handbookType.OUTFIT then
|
||||
self.nActorShowType = 0
|
||||
self._mapNode.imgOutfit.gameObject:SetActive(true)
|
||||
self:SetPngSprite(self._mapNode.imgOutfit, curBoardData:GetDiscBg())
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgOutfit)
|
||||
end
|
||||
end
|
||||
Actor2DManager.SkipCGAnim()
|
||||
PlayerBoardData:SetBoardPanelSelectId(0)
|
||||
end
|
||||
function PreviewMainViewCtrl:SetBanner()
|
||||
self.tbBannerList = {}
|
||||
self:AddActivityBanner()
|
||||
self:AddOtherBanner()
|
||||
self:AddGachaBanner()
|
||||
if nil == self.tbBannerList or nil == next(self.tbBannerList) then
|
||||
self._mapNode.goActivityBanner.gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.goActivityBanner:SetActive(true)
|
||||
for _, v in ipairs(self._mapNode.imgPointBg) do
|
||||
v.gameObject:SetActive(false)
|
||||
end
|
||||
for k, v in ipairs(self.tbBannerList) do
|
||||
if nil ~= self._mapNode.imgPointBg[k] then
|
||||
self._mapNode.imgPointBg[k]:SetActive(true)
|
||||
self._mapNode.imgPointBg[k].transform:Find("imgPoint").gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
self.nActBannerIdx = 1
|
||||
self.nLastActBannerIdx = 1
|
||||
self:RefreshActivityBanner()
|
||||
end
|
||||
self:StartActBannerTimer()
|
||||
self._mapNode.eventActBannerDrag.enabled = #self.tbBannerList > 1
|
||||
end
|
||||
function PreviewMainViewCtrl:AddActivityBanner()
|
||||
local tb_activityBanner = PlayerData.Activity:GetActivityBannerList()
|
||||
for _, value in pairs(tb_activityBanner) do
|
||||
table.insert(self.tbBannerList, {
|
||||
nType = GameEnum.bannerType.Activity,
|
||||
actData = value,
|
||||
nFuncType = GameEnum.OpenFuncType.Activity
|
||||
})
|
||||
end
|
||||
end
|
||||
function PreviewMainViewCtrl:AddOtherBanner()
|
||||
local forEachMap = function(mapLineData)
|
||||
if mapLineData.BannerType == GameEnum.bannerType.OpenFunc then
|
||||
local funcNum = tonumber(mapLineData.Param1)
|
||||
if funcNum == nil then
|
||||
return
|
||||
end
|
||||
local bUnlock = PlayerData.Base:CheckFunctionUnlock(funcNum, false)
|
||||
if bUnlock then
|
||||
local jumpToNum = tonumber(mapLineData.Param2)
|
||||
if jumpToNum == nil then
|
||||
return
|
||||
end
|
||||
table.insert(self.tbBannerList, {
|
||||
nType = GameEnum.bannerType.OpenFunc,
|
||||
sBanner = mapLineData.bannerName,
|
||||
nJumpTo = jumpToNum,
|
||||
nFuncType = funcNum
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.Banner, forEachMap)
|
||||
end
|
||||
function PreviewMainViewCtrl:AddGachaBanner()
|
||||
local tbOpenedPool = PlayerData.Gacha:GetOpenedPool()
|
||||
for _, nPoolId in ipairs(tbOpenedPool) do
|
||||
local mapPoolCfgData = ConfigTable.GetData("Gacha", nPoolId)
|
||||
if mapPoolCfgData ~= nil and mapPoolCfgData.BannerRes ~= nil and mapPoolCfgData.BannerRes ~= "" then
|
||||
table.insert(self.tbBannerList, {
|
||||
nType = GameEnum.bannerType.Gacha,
|
||||
sBanner = mapPoolCfgData.BannerRes,
|
||||
nJumpTo = nPoolId,
|
||||
nFuncType = GameEnum.OpenFuncType.Gacha
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshActivityBanner()
|
||||
local lastIndex = self.nActBannerIdx - 1 <= 0 and #self.tbBannerList or self.nActBannerIdx - 1
|
||||
local nextIndex = self.nActBannerIdx + 1 > #self.tbBannerList and 1 or self.nActBannerIdx + 1
|
||||
local tbCurBannerList = {}
|
||||
table.insert(tbCurBannerList, self.tbBannerList[lastIndex])
|
||||
table.insert(tbCurBannerList, self.tbBannerList[self.nActBannerIdx])
|
||||
table.insert(tbCurBannerList, self.tbBannerList[nextIndex])
|
||||
for k, v in ipairs(self._mapNode.imgActBanner) do
|
||||
local bannerData = tbCurBannerList[k]
|
||||
if bannerData.nType == GameEnum.bannerType.Activity then
|
||||
if nil ~= bannerData.actData then
|
||||
self:SetPngSprite(v, "Icon/Banner/" .. bannerData.actData:GetBannerPng())
|
||||
end
|
||||
elseif bannerData.nType == GameEnum.bannerType.OpenFunc then
|
||||
self:SetPngSprite(v, "Icon/Banner/" .. bannerData.sBanner)
|
||||
elseif bannerData.nType == GameEnum.bannerType.Gacha then
|
||||
self:SetPngSprite(v, "Icon/Banner/" .. bannerData.sBanner)
|
||||
end
|
||||
end
|
||||
self._mapNode.imgPointBg[self.nLastActBannerIdx].transform:Find("imgPoint").gameObject:SetActive(false)
|
||||
self.nLastActBannerIdx = self.nActBannerIdx
|
||||
self._mapNode.imgPointBg[self.nActBannerIdx].transform:Find("imgPoint").gameObject:SetActive(true)
|
||||
end
|
||||
function PreviewMainViewCtrl:StartActBannerTimer()
|
||||
if nil == self.actBannerTimer and #self.tbBannerList > 1 then
|
||||
self.actBannerTimer = self:AddTimer(0, self.nBannerInterval, "PlayActBannerAnim", true, true, false)
|
||||
end
|
||||
end
|
||||
function PreviewMainViewCtrl:ResetActBannerTimer()
|
||||
if nil ~= self.actBannerTimer then
|
||||
TimerManager.Remove(self.actBannerTimer, false)
|
||||
end
|
||||
self.actBannerTimer = nil
|
||||
end
|
||||
function PreviewMainViewCtrl:PlayActBannerAnim()
|
||||
for k, v in ipairs(self._mapNode.activityBannerItem) do
|
||||
v:DOAnchorPosX(self.tbBannerInitPos[k].x - self.nBannerWidth, 0.5):SetUpdate(true)
|
||||
end
|
||||
self.actBannerRefreshTimer = self:AddTimer(1, 0.5, "BannerTweenerEnd", true, true, true)
|
||||
end
|
||||
function PreviewMainViewCtrl:BannerTweenerEnd()
|
||||
for k, v in ipairs(self._mapNode.activityBannerItem) do
|
||||
v.anchoredPosition = self.tbBannerInitPos[k]
|
||||
end
|
||||
self.nActBannerIdx = self.nActBannerIdx + 1
|
||||
if self.nActBannerIdx > #self.tbBannerList then
|
||||
self.nActBannerIdx = 1
|
||||
end
|
||||
self:RefreshActivityBanner()
|
||||
end
|
||||
function PreviewMainViewCtrl:InitData()
|
||||
self.tbRes = {
|
||||
[AllEnum.CoinItemId.Jade] = 1,
|
||||
[AllEnum.CoinItemId.FREESTONE] = 2
|
||||
}
|
||||
self.bannerList = {}
|
||||
end
|
||||
function PreviewMainViewCtrl:LoadCharacterIndex()
|
||||
local localData = LocalData.GetPlayerLocalData("MainMenuUICharIndex")
|
||||
self.nCurCharIdx = tonumber(localData) or 1
|
||||
end
|
||||
function PreviewMainViewCtrl:ResetTimer()
|
||||
if nil ~= self.actBannerTimer then
|
||||
self.actBannerTimer:Cancel(false)
|
||||
self.actBannerTimer = nil
|
||||
end
|
||||
if nil ~= self.actBannerRefreshTimer then
|
||||
self.actBannerRefreshTimer:Cancel(false)
|
||||
self.actBannerRefreshTimer = nil
|
||||
end
|
||||
end
|
||||
function PreviewMainViewCtrl:RefreshComFuncState()
|
||||
local nState = ConfigTable.GetConfigNumber("IsShowComBtn")
|
||||
local bActive = nState == 1
|
||||
self._mapNode.btnBattlePass.gameObject:SetActive(bActive)
|
||||
self._mapNode.btnMall.gameObject:SetActive(bActive)
|
||||
self._mapNode.imgBtn2.gameObject:SetActive(bActive)
|
||||
self._mapNode.btnAdd2.gameObject:SetActive(bActive)
|
||||
end
|
||||
function PreviewMainViewCtrl:Awake()
|
||||
self.bNewDay = false
|
||||
self.resourcesList = nil
|
||||
self.bannerList = nil
|
||||
self.tbCharId = nil
|
||||
self.nCurCharIdx = nil
|
||||
self.nActorShowType = nil
|
||||
self.bNeedCheckState = true
|
||||
self.nDragStartPosX = nil
|
||||
self.nDragThreshold = PlayerBoardData:GetBoardDragThreshold()
|
||||
self.nCurBubbleIndex = 0
|
||||
self.tbBubbleList = {}
|
||||
self.tbBannerInitPos = {}
|
||||
for _, v in ipairs(self._mapNode.activityBannerItem) do
|
||||
self.nBannerWidth = v.sizeDelta.x
|
||||
table.insert(self.tbBannerInitPos, v.anchoredPosition)
|
||||
end
|
||||
self:GetAtlasSprite("06_btn", "btn_agent_tab_1")
|
||||
self:InitData()
|
||||
end
|
||||
function PreviewMainViewCtrl:OnEnable()
|
||||
self.tbCharId = PlayerData.Char:GetCharIdList()
|
||||
self:LoadCharacterIndex()
|
||||
self._mapNode.eventActBannerDrag:SetStrictDrag(true)
|
||||
self.nBannerInterval = ConfigTable.GetConfigNumber("Activity_Banner_Interval_Time")
|
||||
for k, v in ipairs(self._mapNode.activityBannerItem) do
|
||||
v.anchoredPosition = self.tbBannerInitPos[k]
|
||||
end
|
||||
end
|
||||
function PreviewMainViewCtrl:OnDisable()
|
||||
self.tbCharId = nil
|
||||
self.nCurCharIdx = nil
|
||||
self:ResetTimer()
|
||||
Actor2DManager.UnsetActor2D()
|
||||
end
|
||||
function PreviewMainViewCtrl:OnDestroy()
|
||||
end
|
||||
return PreviewMainViewCtrl
|
||||
@@ -0,0 +1,393 @@
|
||||
local SettingsAcountCtrl = class("SettingsAcountCtrl", BaseCtrl)
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
local SDKManager = CS.SDKManager.Instance
|
||||
SettingsAcountCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Account"
|
||||
},
|
||||
btnLogout = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Logout"
|
||||
},
|
||||
txtBtnLogout = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Logout"
|
||||
},
|
||||
txtSecurity = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Account_Security"
|
||||
},
|
||||
txtCenter = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Account_Center"
|
||||
},
|
||||
btnCenter = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Center"
|
||||
},
|
||||
txtBtnCenter = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Go"
|
||||
},
|
||||
userCenter = {
|
||||
sNodeName = "Option_UserCenter"
|
||||
},
|
||||
txtGem = {sComponentName = "TMP_Text"},
|
||||
btnGem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_GemDetail"
|
||||
},
|
||||
txtBtnGem = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Detail"
|
||||
},
|
||||
option_gem = {sNodeName = "Option_Gem"},
|
||||
List_PlayerAcc = {
|
||||
sComponentName = "LayoutElement"
|
||||
},
|
||||
txtUserAgreement = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Account_UserAgreement"
|
||||
},
|
||||
Agreement = {nCount = 4},
|
||||
txtBtnAgreement = {
|
||||
nCount = 4,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Read"
|
||||
},
|
||||
List_Agreement = {
|
||||
sComponentName = "LayoutElement"
|
||||
}
|
||||
}
|
||||
SettingsAcountCtrl._mapEventConfig = {
|
||||
SDKNotAvailable = "OnEvent_SDKNotAvailable"
|
||||
}
|
||||
function SettingsAcountCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
self:InitStone()
|
||||
self:InitAgreement()
|
||||
end
|
||||
function SettingsAcountCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsAcountCtrl:InitStone()
|
||||
local clientPublishRegion = CS.ClientConfig.ClientPublishRegion
|
||||
local channelName = CS.ClientConfig.ClientPublishChannelName
|
||||
local line = self._mapNode.userCenter.transform:Find("line")
|
||||
local bShowUserCenter = self._panel.ShowUserCenter
|
||||
if bShowUserCenter == nil then
|
||||
bShowUserCenter = true
|
||||
end
|
||||
if bShowUserCenter == false then
|
||||
self._mapNode.List_PlayerAcc.gameObject:SetActive(false)
|
||||
elseif clientPublishRegion == CS.ClientPublishRegion.CN then
|
||||
if channelName == "Bilibili" then
|
||||
self._mapNode.List_PlayerAcc.gameObject:SetActive(false)
|
||||
else
|
||||
line.gameObject:SetActive(false)
|
||||
self._mapNode.option_gem:SetActive(false)
|
||||
self._mapNode.List_PlayerAcc.preferredHeight = 163.9
|
||||
self._mapNode.List_PlayerAcc.gameObject:SetActive(true)
|
||||
end
|
||||
else
|
||||
line.gameObject:SetActive(true)
|
||||
self._mapNode.option_gem:SetActive(true)
|
||||
self._mapNode.List_PlayerAcc.preferredHeight = 264
|
||||
end
|
||||
local stoneConfig = ConfigTable.GetData_Item(AllEnum.CoinItemId.STONE)
|
||||
local str = orderedFormat(ConfigTable.GetUIText("Settings_Account_Gem"), stoneConfig.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtGem, str)
|
||||
end
|
||||
function SettingsAcountCtrl:InitAgreement()
|
||||
for i = 1, 4 do
|
||||
self._mapNode.Agreement[i]:SetActive(false)
|
||||
end
|
||||
local clientPublishRegion = CS.ClientConfig.ClientPublishRegion
|
||||
if clientPublishRegion == CS.ClientPublishRegion.CN then
|
||||
self:InitAgreement_CN()
|
||||
elseif clientPublishRegion == CS.ClientPublishRegion.TW then
|
||||
self:InitAgreement_TW()
|
||||
elseif clientPublishRegion == CS.ClientPublishRegion.JP then
|
||||
self:InitAgreement_JP()
|
||||
elseif clientPublishRegion == CS.ClientPublishRegion.US then
|
||||
self:InitAgreement_US()
|
||||
elseif clientPublishRegion == CS.ClientPublishRegion.KR then
|
||||
self:InitAgreement_KR()
|
||||
else
|
||||
self:InitAgreement_CN()
|
||||
end
|
||||
end
|
||||
function SettingsAcountCtrl:InitAgreement_CN()
|
||||
local agreement1 = self._mapNode.Agreement[1]
|
||||
local txtAgreement1 = agreement1.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement1:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_PrivacyAgreement"))
|
||||
local btnAgreement1 = agreement1.transform:Find("btnAgreement")
|
||||
local btn1 = btnAgreement1:GetComponent("UIButton")
|
||||
btn1.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"privacy_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement1:SetActive(true)
|
||||
local agreement2 = self._mapNode.Agreement[2]
|
||||
local txtAgreement2 = agreement2.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement2:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_InfoAgreement"))
|
||||
local btnAgreement2 = agreement2.transform:Find("btnAgreement")
|
||||
local btn2 = btnAgreement2:GetComponent("UIButton")
|
||||
btn2.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowWebView(false, ConfigTable.GetUIText("Settings_Account_InfoAgreement"), "https://account.yostar.cn/cn-nova/collect", 1, 0, false, "CN-YOSTAR")
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement2:SetActive(true)
|
||||
local agreement3 = self._mapNode.Agreement[3]
|
||||
local txtAgreement3 = agreement3.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement3:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_CooperationAgreement"))
|
||||
local btnAgreement3 = agreement3.transform:Find("btnAgreement")
|
||||
local btn3 = btnAgreement3:GetComponent("UIButton")
|
||||
btn3.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowWebView(false, ConfigTable.GetUIText("Settings_Account_CooperationAgreement"), "https://account.yostar.cn/cn-nova/shared_list")
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement3:SetActive(true)
|
||||
local agreement4 = self._mapNode.Agreement[4]
|
||||
local txtAgreement4 = agreement4.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement4:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_GameRegistrationNumber"))
|
||||
local btnAgreement4 = agreement4.transform:Find("btnAgreement")
|
||||
local btn4 = btnAgreement4:GetComponent("UIButton")
|
||||
btn4.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowWebView(false, ConfigTable.GetUIText("Settings_Account_GameRegistrationNumber"), "https://beian.miit.gov.cn/#/Integrated/index")
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
local line = agreement4.transform:Find("line")
|
||||
line.gameObject:SetActive(false)
|
||||
agreement4:SetActive(true)
|
||||
self._mapNode.List_Agreement.preferredHeight = 489.16
|
||||
end
|
||||
function SettingsAcountCtrl:InitAgreement_TW()
|
||||
local agreement1 = self._mapNode.Agreement[1]
|
||||
local txtAgreement1 = agreement1.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement1:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_UserTerms"))
|
||||
local btnAgreement1 = agreement1.transform:Find("btnAgreement")
|
||||
local btn1 = btnAgreement1:GetComponent("UIButton")
|
||||
btn1.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"user_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement1:SetActive(true)
|
||||
local agreement2 = self._mapNode.Agreement[2]
|
||||
local txtAgreement2 = agreement2.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement2:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_PrivacyPolicy"))
|
||||
local btnAgreement2 = agreement2.transform:Find("btnAgreement")
|
||||
local btn2 = btnAgreement2:GetComponent("UIButton")
|
||||
btn2.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"privacy_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
local line = agreement2.transform:Find("line")
|
||||
line.gameObject:SetActive(false)
|
||||
agreement2:SetActive(true)
|
||||
self._mapNode.List_Agreement.preferredHeight = 244.58
|
||||
end
|
||||
function SettingsAcountCtrl:InitAgreement_JP()
|
||||
local agreement1 = self._mapNode.Agreement[1]
|
||||
local txtAgreement1 = agreement1.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement1:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_UseAgreement"))
|
||||
local btnAgreement1 = agreement1.transform:Find("btnAgreement")
|
||||
local btn1 = btnAgreement1:GetComponent("UIButton")
|
||||
btn1.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"user_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement1:SetActive(true)
|
||||
local agreement2 = self._mapNode.Agreement[2]
|
||||
local txtAgreement2 = agreement2.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement2:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_PrivacyPolicy"))
|
||||
local btnAgreement2 = agreement2.transform:Find("btnAgreement")
|
||||
local btn2 = btnAgreement2:GetComponent("UIButton")
|
||||
btn2.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"privacy_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement2:SetActive(true)
|
||||
local agreement3 = self._mapNode.Agreement[3]
|
||||
local txtAgreement3 = agreement3.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement3:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_SCTL"))
|
||||
local btnAgreement3 = agreement3.transform:Find("btnAgreement")
|
||||
local btn3 = btnAgreement3:GetComponent("UIButton")
|
||||
btn3.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"specific_commercial_transaction_act"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement3:SetActive(true)
|
||||
local agreement4 = self._mapNode.Agreement[4]
|
||||
local txtAgreement4 = agreement4.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement4:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_PaymentServicesAct"))
|
||||
local btnAgreement4 = agreement4.transform:Find("btnAgreement")
|
||||
local btn4 = btnAgreement4:GetComponent("UIButton")
|
||||
btn4.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"fund_settlement_algorithm"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
local line = agreement4.transform:Find("line")
|
||||
line.gameObject:SetActive(false)
|
||||
agreement4:SetActive(true)
|
||||
self._mapNode.List_Agreement.preferredHeight = 489.16
|
||||
end
|
||||
function SettingsAcountCtrl:InitAgreement_US()
|
||||
local agreement1 = self._mapNode.Agreement[1]
|
||||
local txtAgreement1 = agreement1.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement1:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_UserTerms"))
|
||||
local btnAgreement1 = agreement1.transform:Find("btnAgreement")
|
||||
local btn1 = btnAgreement1:GetComponent("UIButton")
|
||||
btn1.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"user_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement1:SetActive(true)
|
||||
local agreement2 = self._mapNode.Agreement[2]
|
||||
local txtAgreement2 = agreement2.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement2:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_PrivacyPolicy"))
|
||||
local btnAgreement2 = agreement2.transform:Find("btnAgreement")
|
||||
local btn2 = btnAgreement2:GetComponent("UIButton")
|
||||
btn2.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"privacy_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
local line = agreement2.transform:Find("line")
|
||||
line.gameObject:SetActive(false)
|
||||
agreement2:SetActive(true)
|
||||
self._mapNode.List_Agreement.preferredHeight = 244.58
|
||||
end
|
||||
function SettingsAcountCtrl:InitAgreement_KR()
|
||||
local agreement1 = self._mapNode.Agreement[1]
|
||||
local txtAgreement1 = agreement1.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement1:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_UserTerms"))
|
||||
local btnAgreement1 = agreement1.transform:Find("btnAgreement")
|
||||
local btn1 = btnAgreement1:GetComponent("UIButton")
|
||||
btn1.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"user_agreement"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
agreement1:SetActive(true)
|
||||
local agreement2 = self._mapNode.Agreement[2]
|
||||
local txtAgreement2 = agreement2.transform:Find("txtAgreement")
|
||||
NovaAPI.SetTMPText(txtAgreement2:GetComponent("TMP_Text"), ConfigTable.GetUIText("Settings_Account_PrivacyPolicy"))
|
||||
local btnAgreement2 = agreement2.transform:Find("btnAgreement")
|
||||
local btn2 = btnAgreement2:GetComponent("UIButton")
|
||||
btn2.onClick:AddListener(function()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager:ShowAgreement({
|
||||
"credit_investigation"
|
||||
})
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end)
|
||||
local line = agreement2.transform:Find("line")
|
||||
line.gameObject:SetActive(false)
|
||||
agreement2:SetActive(true)
|
||||
self._mapNode.List_Agreement.preferredHeight = 244.58
|
||||
end
|
||||
function SettingsAcountCtrl:LoadSetting()
|
||||
end
|
||||
function SettingsAcountCtrl:SaveSetting()
|
||||
end
|
||||
function SettingsAcountCtrl:Awake()
|
||||
self.bInit = false
|
||||
end
|
||||
function SettingsAcountCtrl:OnEnable()
|
||||
end
|
||||
function SettingsAcountCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
end
|
||||
function SettingsAcountCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsAcountCtrl:OnBtnClick_Center()
|
||||
if SDKManager:IsSDKInit() then
|
||||
SDKManager.SDK:ShowUserCenter()
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
end
|
||||
function SettingsAcountCtrl:OnBtnClick_Logout()
|
||||
if SDKManager:IsSDKInit() then
|
||||
UTILS.SDK_Logout()
|
||||
else
|
||||
PanelManager.OnConfirmBackToLogIn()
|
||||
end
|
||||
end
|
||||
function SettingsAcountCtrl:OnBtnClick_GemDetail()
|
||||
EventManager.Hit("Setting_GemDetail")
|
||||
end
|
||||
function SettingsAcountCtrl:OnEvent_SDKNotAvailable()
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Function_NotAvailable"))
|
||||
end
|
||||
return SettingsAcountCtrl
|
||||
@@ -0,0 +1,161 @@
|
||||
local SettingsBattleCtrl = class("SettingsBattleCtrl", BaseCtrl)
|
||||
local ModuleManager = require("GameCore.Module.ModuleManager")
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
local BattleAnimTypeEnum = {
|
||||
UIGameSystemSetup.TimeLinePlayType.dayOnce,
|
||||
UIGameSystemSetup.TimeLinePlayType.everyTime,
|
||||
UIGameSystemSetup.TimeLinePlayType.none
|
||||
}
|
||||
SettingsBattleCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Game"
|
||||
},
|
||||
txtAnim1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Animation"
|
||||
},
|
||||
txtAnim2 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_AnimationSub"
|
||||
},
|
||||
txtBattleHUD = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_BattleHUD_Title"
|
||||
},
|
||||
Anim1 = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
Anim2 = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
Anim3 = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
JoyStick = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
Gizmos = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
Mouse = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
AutoUlt = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
BattleHudList = {}
|
||||
}
|
||||
SettingsBattleCtrl._mapEventConfig = {
|
||||
SettingsChangeL2d = "OnEvent_ChangeL2d"
|
||||
}
|
||||
function SettingsBattleCtrl:RefreshText()
|
||||
self._mapNode.Anim1:SetText(ConfigTable.GetUIText("Settings_Animation_One"), ConfigTable.GetUIText("Settings_Animation_Open"), ConfigTable.GetUIText("Settings_Animation_Close"))
|
||||
self._mapNode.Anim2:SetText(ConfigTable.GetUIText("Settings_Animation_One"), ConfigTable.GetUIText("Settings_Animation_Open"), ConfigTable.GetUIText("Settings_Animation_Close"))
|
||||
self._mapNode.Anim3:SetText(ConfigTable.GetUIText("Settings_BattleHUD_Type1"), ConfigTable.GetUIText("Settings_BattleHUD_Type2"), "")
|
||||
self._mapNode.JoyStick:SetText(ConfigTable.GetUIText("Settings_JoyStick"))
|
||||
self._mapNode.Gizmos:SetText(ConfigTable.GetUIText("Settings_Gizmos"))
|
||||
self._mapNode.Mouse:SetText(ConfigTable.GetUIText("Settings_Mouse"))
|
||||
self._mapNode.AutoUlt:SetText(ConfigTable.GetUIText("Settings_AutoBattle_Ultra"))
|
||||
end
|
||||
function SettingsBattleCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
end
|
||||
function SettingsBattleCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsBattleCtrl:LoadSetting()
|
||||
self.battleAnim = self._panel:LoadLocalData("Animation")
|
||||
self._mapNode.Anim1:Init(function(index)
|
||||
UIGameSystemSetup.Instance.PlayType = BattleAnimTypeEnum[index]
|
||||
self.battleAnim = index
|
||||
end, self.battleAnim)
|
||||
self.battleAnim2 = self._panel:LoadLocalData("AnimationSub")
|
||||
local bUseLive2D = self._panel:LoadLocalData("UseLive2D")
|
||||
if bUseLive2D == false then
|
||||
self._mapNode.Anim2:SetGray({
|
||||
[1] = true,
|
||||
[2] = true
|
||||
}, ConfigTable.GetUIText("Settings_SubSkillDisable"))
|
||||
self.battleAnim2 = 3
|
||||
else
|
||||
self._mapNode.Anim2:SetGray()
|
||||
end
|
||||
self._mapNode.Anim2:Init(function(index)
|
||||
self.battleAnim2 = index
|
||||
end, self.battleAnim2)
|
||||
self.battleHud = self._panel:LoadLocalData("BattleHUD")
|
||||
self._mapNode.Anim3:Init(function(index)
|
||||
self.battleHud = index
|
||||
end, self.battleHud, 2)
|
||||
self._mapNode.Mouse.gameObject:SetActive(false)
|
||||
self.floatingJoyStick = self._panel:LoadLocalData("JoyStick")
|
||||
self._mapNode.JoyStick:Init(function()
|
||||
self.floatingJoyStick = not self.floatingJoyStick
|
||||
UIGameSystemSetup.Instance.EnableFloatingJoyStick = self.floatingJoyStick
|
||||
EventManager.Hit("SetVariableJoystickMode")
|
||||
end, self.floatingJoyStick)
|
||||
self.gizmos = self._panel:LoadLocalData("Gizmos")
|
||||
self._mapNode.Gizmos:Init(function()
|
||||
self.gizmos = not self.gizmos
|
||||
UIGameSystemSetup.Instance.EnableAttackGizmos = self.gizmos
|
||||
if ModuleManager.GetIsAdventure() then
|
||||
CS.AdventureModuleHelper.Lua2CSharp_ChangeVisionAttackRange(self.gizmos)
|
||||
end
|
||||
end, self.gizmos)
|
||||
self.autoUlt = self._panel:LoadLocalData("AutoUlt")
|
||||
self._mapNode.AutoUlt:Init(function()
|
||||
self.autoUlt = not self.autoUlt
|
||||
UIGameSystemSetup.Instance.EnableAutoUlt = self.autoUlt
|
||||
end, self.autoUlt)
|
||||
end
|
||||
function SettingsBattleCtrl:SaveSetting()
|
||||
self._panel:SaveLocalData("Animation", self.battleAnim)
|
||||
self._panel:SaveLocalData("AnimationSub", self.battleAnim2)
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
self._panel:SaveLocalData("Mouse", self.openMouse)
|
||||
end
|
||||
self._panel:SaveLocalData("JoyStick", self.floatingJoyStick)
|
||||
self._panel:SaveLocalData("Gizmos", self.gizmos)
|
||||
self._panel:SaveLocalData("AutoUlt", self.autoUlt)
|
||||
self._panel:SaveLocalData("BattleHUD", self.battleHud)
|
||||
end
|
||||
function SettingsBattleCtrl:Awake()
|
||||
self.bInit = false
|
||||
local bMobile = NovaAPI.IsMobilePlatform()
|
||||
self._mapNode.JoyStick.gameObject:SetActive(bMobile)
|
||||
self:RefreshText()
|
||||
end
|
||||
function SettingsBattleCtrl:OnEnable()
|
||||
end
|
||||
function SettingsBattleCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
EventManager.Hit(EventId.SettingsBattleClose)
|
||||
end
|
||||
function SettingsBattleCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsBattleCtrl:OnEvent_ChangeL2d(bUseLive2D)
|
||||
self:Init()
|
||||
if bUseLive2D == false then
|
||||
self._mapNode.Anim2:SetGray({
|
||||
[1] = true,
|
||||
[2] = true
|
||||
}, ConfigTable.GetUIText("Settings_SubSkillDisable"))
|
||||
self.battleAnim2 = 3
|
||||
else
|
||||
self._mapNode.Anim2:SetGray()
|
||||
end
|
||||
self._mapNode.Anim2:Init(function(index)
|
||||
self.battleAnim2 = index
|
||||
end, self.battleAnim2)
|
||||
end
|
||||
return SettingsBattleCtrl
|
||||
@@ -0,0 +1,216 @@
|
||||
local SettingsCtrl = class("SettingsCtrl", BaseCtrl)
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
local ClientManager = CS.ClientManager.Instance
|
||||
local InputManager = CS.InputManager
|
||||
SettingsCtrl._mapNodeConfig = {
|
||||
txtWeekDay = {sComponentName = "TMP_Text"},
|
||||
txtTime1 = {sComponentName = "TMP_Text"},
|
||||
txtTime2 = {sComponentName = "TMP_Text"},
|
||||
aniRoot = {
|
||||
sNodeName = "----Content----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnClose = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
Page1 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsAcountCtrl"
|
||||
},
|
||||
Page2 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsGraphicCtrl"
|
||||
},
|
||||
Page3 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsSoundCtrl"
|
||||
},
|
||||
Page4 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsBattleCtrl"
|
||||
},
|
||||
Page5 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsLanguageCtrl"
|
||||
},
|
||||
Page6 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsNotificationCtrl"
|
||||
},
|
||||
Page7 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsKeyboardCtrl"
|
||||
},
|
||||
Page8 = {
|
||||
sCtrlName = "Game.UI.Settings.SettingsGamepadCtrl"
|
||||
},
|
||||
cgPage = {
|
||||
nCount = 8,
|
||||
sNodeName = "Page",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
trPage = {
|
||||
nCount = 8,
|
||||
sNodeName = "Page",
|
||||
sComponentName = "Transform"
|
||||
},
|
||||
btnPage = {
|
||||
nCount = 8,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Page"
|
||||
},
|
||||
imgOn = {nCount = 8},
|
||||
aniTab = {sNodeName = "---Tab---", sComponentName = "Animator"},
|
||||
scTab = {
|
||||
sNodeName = "scrollTab",
|
||||
sComponentName = "UIScrollToClick"
|
||||
},
|
||||
blur = {
|
||||
sNodeName = "t_fullscreen_blur_blue"
|
||||
},
|
||||
aniBlur = {
|
||||
sNodeName = "t_fullscreen_blur_blue",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnBlur = {
|
||||
sNodeName = "snapshot",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_ClosePop"
|
||||
},
|
||||
Language = {
|
||||
sNodeName = "---Language---",
|
||||
sCtrlName = "Game.UI.Settings.SettingsLangPkgCtrl"
|
||||
},
|
||||
Resolution = {
|
||||
sNodeName = "---Resolution---",
|
||||
sCtrlName = "Game.UI.Settings.SettingsResolutionCtrl"
|
||||
},
|
||||
GemPop = {
|
||||
sNodeName = "---Gem---",
|
||||
sCtrlName = "Game.UI.Settings.SettingsGemCtrl"
|
||||
},
|
||||
LogBtn = {sComponentName = "Button"},
|
||||
ShowBtn = {sComponentName = "Button"}
|
||||
}
|
||||
SettingsCtrl._mapEventConfig = {
|
||||
SettingsLanguage = "OnEvent_Language",
|
||||
SettingsResolution = "OnEvent_Resolution",
|
||||
SettingsClosePop = "OnBtnClick_ClosePop",
|
||||
Setting_GemDetail = "OnEvent_Stone"
|
||||
}
|
||||
function SettingsCtrl:InitPageState()
|
||||
self.pageIndex = 1
|
||||
for i = 1, 8 do
|
||||
if i == 1 then
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[i], 1)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[i], true)
|
||||
self._mapNode.imgOn[i]:SetActive(true)
|
||||
self._mapNode["Page" .. i]:Init()
|
||||
else
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[i], 0)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[i], false)
|
||||
self._mapNode.imgOn[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
local bMobile = NovaAPI.IsMobilePlatform()
|
||||
self._mapNode.btnPage[7].gameObject:SetActive(not bMobile)
|
||||
if bMobile then
|
||||
local bAble = false
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(bAble)
|
||||
self._mapNode.btnPage[5].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(bAble)
|
||||
else
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(true)
|
||||
self._mapNode.btnPage[5].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(true)
|
||||
end
|
||||
self._mapNode.txtTime1.gameObject:SetActive(false)
|
||||
self._mapNode.txtTime2.gameObject:SetActive(false)
|
||||
self._mapNode.txtWeekDay.gameObject:SetActive(false)
|
||||
end
|
||||
function SettingsCtrl:RefreshTime()
|
||||
local curTime = ClientManager.serverTimeStamp
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime1, (os.date("%I:%M", curTime)))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTime2, (os.date("%p", curTime)))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtWeekDay, ConfigTable.GetUIText("Settings_Weekday" .. tonumber(os.date("%w")) + 1))
|
||||
end
|
||||
function SettingsCtrl:Awake()
|
||||
end
|
||||
function SettingsCtrl:OnEnable()
|
||||
self._mapNode.aniRoot:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
self:InitPageState()
|
||||
self._mapNode.ShowBtn.gameObject:SetActive(false)
|
||||
self._mapNode.LogBtn.gameObject:SetActive(false)
|
||||
EventManager.Hit("PlayerLog", self._mapNode.LogBtn)
|
||||
EventManager.Hit("ShowSettingsG", self._mapNode.ShowBtn)
|
||||
end
|
||||
function SettingsCtrl:OnDisable()
|
||||
local nUID = PlayerData.Base:GetPlayerId()
|
||||
CS.InputManager.Instance:SaveBindingOverrides(nUID)
|
||||
end
|
||||
function SettingsCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsCtrl:OnBtnClick_Close()
|
||||
self._mapNode.aniRoot:Play("t_window_04_t_out")
|
||||
self:AddTimer(1, 0.2, function()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.Settings)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function SettingsCtrl:OnBtnClick_Page(btn, index)
|
||||
if self.pageIndex == index then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[self.pageIndex], 0)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[self.pageIndex], false)
|
||||
self._mapNode.imgOn[self.pageIndex]:SetActive(false)
|
||||
self._mapNode["Page" .. self.pageIndex]:Quit()
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgPage[index], 1)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgPage[index], true)
|
||||
self._mapNode.imgOn[index]:SetActive(true)
|
||||
self._mapNode["Page" .. index]:Init()
|
||||
self._mapNode.aniTab:Play("Tab_btnPage" .. index)
|
||||
self.pageIndex = index
|
||||
self._mapNode.scTab:ScrollToClick(btn.gameObject, 0.1)
|
||||
local scrollRect = self._mapNode.trPage[index]:Find("sv"):GetComponent("ScrollRect")
|
||||
NovaAPI.SetVerticalNormalizedPosition(scrollRect, 1)
|
||||
end
|
||||
function SettingsCtrl:OnBtnClick_ClosePop()
|
||||
if self.ctrlPop then
|
||||
self.ctrlPop:PlayOutAni()
|
||||
self.ctrlPop = nil
|
||||
end
|
||||
self._mapNode.aniBlur:SetTrigger("tOut")
|
||||
self:AddTimer(1, 0.2, function()
|
||||
self._mapNode.blur:SetActive(false)
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function SettingsCtrl:OnEvent_Language(tbVoAvailable, tbDownload)
|
||||
self.ctrlPop = self._mapNode.Language
|
||||
self._mapNode.Language:Open(tbVoAvailable, tbDownload)
|
||||
self._mapNode.blur:SetActive(true)
|
||||
end
|
||||
function SettingsCtrl:OnEvent_Resolution(nResolution, tbResolution)
|
||||
self.ctrlPop = self._mapNode.Resolution
|
||||
self._mapNode.Resolution:Open(nResolution, tbResolution)
|
||||
self._mapNode.blur:SetActive(true)
|
||||
end
|
||||
function SettingsCtrl:OnEvent_Stone()
|
||||
self.ctrlPop = self._mapNode.GemPop
|
||||
self._mapNode.GemPop:Open()
|
||||
self._mapNode.blur:SetActive(true)
|
||||
end
|
||||
function SettingsCtrl:OnEvent_DeviceChange(changeType)
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
return
|
||||
end
|
||||
if changeType.value__ == 0 then
|
||||
local nType = InputManager.Instance:CheckGamepadType()
|
||||
if nType == InputManager.GamepadType.PS or nType == InputManager.GamepadType.XBox then
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(true)
|
||||
self._mapNode.btnPage[5].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(true)
|
||||
end
|
||||
elseif changeType.value__ == 1 then
|
||||
self._mapNode.btnPage[8].gameObject:SetActive(false)
|
||||
self._mapNode.btnPage[5].gameObject.transform:Find("AnimRoot/line").gameObject:SetActive(false)
|
||||
if self.pageIndex == 8 then
|
||||
self:OnBtnClick_Page(self._mapNode.btnPage[1], 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
return SettingsCtrl
|
||||
@@ -0,0 +1,241 @@
|
||||
local SettingsGamepadCtrl = class("SettingsGamepadCtrl", BaseCtrl)
|
||||
local InputManager = CS.InputManager
|
||||
SettingsGamepadCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Gamepad"
|
||||
},
|
||||
txtBindingTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Gamepad_Binding"
|
||||
},
|
||||
OptionBinding = {
|
||||
nCount = 8,
|
||||
sCtrlName = "Game.UI.Settings.OptionBindingCtrl"
|
||||
},
|
||||
txtBtnReset = {sComponentName = "TMP_Text", sLanguageId = "Reset"},
|
||||
btnReset = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Reset"
|
||||
},
|
||||
Xbox = {},
|
||||
txtXbox_LT = {sComponentName = "TMP_Text"},
|
||||
txtXbox_LB = {sComponentName = "TMP_Text"},
|
||||
txtXbox_Left_Stick = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_Move"
|
||||
},
|
||||
txtXbox_Menu = {sComponentName = "TMP_Text", sLanguageId = "Action_Map"},
|
||||
txtXbox_Windows = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_Depot"
|
||||
},
|
||||
txtXbox_AutoBattle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_AutoBattle"
|
||||
},
|
||||
txtXbox_RT = {sComponentName = "TMP_Text"},
|
||||
txtXbox_RB = {sComponentName = "TMP_Text"},
|
||||
txtXbox_Y = {sComponentName = "TMP_Text"},
|
||||
txtXbox_B = {sComponentName = "TMP_Text"},
|
||||
txtXbox_A = {sComponentName = "TMP_Text"},
|
||||
txtXbox_X = {sComponentName = "TMP_Text"},
|
||||
PlayStation = {},
|
||||
txtPS_L2 = {sComponentName = "TMP_Text"},
|
||||
txtPS_L1 = {sComponentName = "TMP_Text"},
|
||||
txtPS_Left_Stick = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_Move"
|
||||
},
|
||||
txtPS_Share = {sComponentName = "TMP_Text", sLanguageId = "Action_Map"},
|
||||
txtPS_Options = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_Depot"
|
||||
},
|
||||
txtPS_AutoBattle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_AutoBattle"
|
||||
},
|
||||
txtPS_R2 = {sComponentName = "TMP_Text"},
|
||||
txtPS_R1 = {sComponentName = "TMP_Text"},
|
||||
txtPS_Triangle = {sComponentName = "TMP_Text"},
|
||||
txtPS_Circle = {sComponentName = "TMP_Text"},
|
||||
txtPS_Cross = {sComponentName = "TMP_Text"},
|
||||
txtPS_Square = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
SettingsGamepadCtrl._mapEventConfig = {
|
||||
LuaEventName_LastInputDeviceChange = "OnEvent_LastInputDeviceChange",
|
||||
LuaEventName_OnDeviceChange = "OnEvent_DeviceChange",
|
||||
SettingsRefreshDisplay = "OnEvent_RefreshDisplay"
|
||||
}
|
||||
function SettingsGamepadCtrl:RefreshText()
|
||||
for i = 1, 8 do
|
||||
self._mapNode.OptionBinding[i]:SetText(ConfigTable.GetUIText("Action_" .. self._panel.Action[i]))
|
||||
end
|
||||
end
|
||||
function SettingsGamepadCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
end
|
||||
function SettingsGamepadCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsGamepadCtrl:LoadSetting()
|
||||
self._panel.mapGamepadBind = {}
|
||||
for _, v in ipairs(self._panel.Action) do
|
||||
local bHas, tbControl = InputManager.Instance:GetInputActionConfig(v)
|
||||
if bHas then
|
||||
for i = 0, tbControl.Count - 1 do
|
||||
local mapControl = tbControl[i]
|
||||
if mapControl.isGamepad then
|
||||
self._panel.mapGamepadBind[v] = mapControl.name
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
self:InitGamepadType()
|
||||
end
|
||||
function SettingsGamepadCtrl:SaveSetting()
|
||||
for _, v in ipairs(self._panel.Action) do
|
||||
InputManager.Instance:OverrideButtonBinding(v, self._panel.ControlType.Gamepad, "<Gamepad>/" .. self._panel.mapGamepadBind[v])
|
||||
if v == "Fire1" then
|
||||
InputManager.Instance:OverrideButtonBinding("Fire3", self._panel.ControlType.Gamepad, "<Gamepad>/" .. self._panel.mapGamepadBind[v])
|
||||
end
|
||||
end
|
||||
end
|
||||
function SettingsGamepadCtrl:InitGamepadType()
|
||||
self._mapNode.PlayStation:SetActive(self.bPS)
|
||||
self._mapNode.Xbox:SetActive(not self.bPS)
|
||||
for i = 1, 8 do
|
||||
local sAction = self._panel.Action[i]
|
||||
self._mapNode.OptionBinding[i]:Init(3, sAction, self._panel.mapGamepadBind[sAction], nil, self.bPS)
|
||||
end
|
||||
self:RefreshDisplay()
|
||||
end
|
||||
function SettingsGamepadCtrl:ChangeGamepadType(bPS)
|
||||
self.bPS = bPS
|
||||
self._mapNode.PlayStation:SetActive(self.bPS)
|
||||
self._mapNode.Xbox:SetActive(not self.bPS)
|
||||
for i = 1, 8 do
|
||||
self._mapNode.OptionBinding[i]:ChangeGamepad(bPS)
|
||||
end
|
||||
self:RefreshDisplay()
|
||||
end
|
||||
function SettingsGamepadCtrl:RefreshDisplay()
|
||||
local sLTAction = table.keyof(self._panel.mapGamepadBind, "leftTrigger")
|
||||
local sLBAction = table.keyof(self._panel.mapGamepadBind, "leftShoulder")
|
||||
local sRTAction = table.keyof(self._panel.mapGamepadBind, "rightTrigger")
|
||||
local sRBAction = table.keyof(self._panel.mapGamepadBind, "rightShoulder")
|
||||
local sYAction = table.keyof(self._panel.mapGamepadBind, "buttonNorth")
|
||||
local sBAction = table.keyof(self._panel.mapGamepadBind, "buttonEast")
|
||||
local sAAction = table.keyof(self._panel.mapGamepadBind, "buttonSouth")
|
||||
local sXAction = table.keyof(self._panel.mapGamepadBind, "buttonWest")
|
||||
if self.bPS then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_L2, ConfigTable.GetUIText("Action_" .. sLTAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_L1, ConfigTable.GetUIText("Action_" .. sLBAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_R2, ConfigTable.GetUIText("Action_" .. sRTAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_R1, ConfigTable.GetUIText("Action_" .. sRBAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Triangle, ConfigTable.GetUIText("Action_" .. sYAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Circle, ConfigTable.GetUIText("Action_" .. sBAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Cross, ConfigTable.GetUIText("Action_" .. sAAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Square, ConfigTable.GetUIText("Action_" .. sXAction))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_LT, ConfigTable.GetUIText("Action_" .. sLTAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_LB, ConfigTable.GetUIText("Action_" .. sLBAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_RT, ConfigTable.GetUIText("Action_" .. sRTAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_RB, ConfigTable.GetUIText("Action_" .. sRBAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_Y, ConfigTable.GetUIText("Action_" .. sYAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_B, ConfigTable.GetUIText("Action_" .. sBAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_A, ConfigTable.GetUIText("Action_" .. sAAction))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_X, ConfigTable.GetUIText("Action_" .. sXAction))
|
||||
end
|
||||
end
|
||||
function SettingsGamepadCtrl:Awake()
|
||||
self.bInit = false
|
||||
self:RefreshText()
|
||||
local nType = InputManager.Instance:CheckGamepadType()
|
||||
self.bPS = nType == InputManager.GamepadType.PS
|
||||
end
|
||||
function SettingsGamepadCtrl:OnEnable()
|
||||
end
|
||||
function SettingsGamepadCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
end
|
||||
function SettingsGamepadCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsGamepadCtrl:OnBtnClick_Reset()
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Settings_Tip_Reset"),
|
||||
callbackConfirm = function()
|
||||
local nUID = PlayerData.Base:GetPlayerId()
|
||||
InputManager.Instance:ResetBindingOverrides(nUID)
|
||||
self:LoadSetting()
|
||||
local mapMsg = {
|
||||
nType = AllEnum.MessageBox.Tips,
|
||||
bPositive = true,
|
||||
sContent = ConfigTable.GetUIText("Settings_KeyReset")
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, mapMsg)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
function SettingsGamepadCtrl:OnEvent_LastInputDeviceChange(nType)
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
if nType == InputManager.InputDeviceType.PSGamepad then
|
||||
self:ChangeGamepadType(true)
|
||||
elseif nType == InputManager.InputDeviceType.XBoxGamepad or nType == InputManager.InputDeviceType.Other then
|
||||
self:ChangeGamepadType(false)
|
||||
end
|
||||
end
|
||||
function SettingsGamepadCtrl:OnEvent_DeviceChange(changeType)
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
if changeType.value__ == 0 or changeType.value__ == 1 then
|
||||
local nType = InputManager.Instance:CheckGamepadType()
|
||||
self:ChangeGamepadType(nType == InputManager.GamepadType.PS)
|
||||
end
|
||||
end
|
||||
function SettingsGamepadCtrl:OnEvent_RefreshDisplay(sAction, sName)
|
||||
local sTitle = ConfigTable.GetUIText("Action_" .. sAction)
|
||||
if sName == "leftTrigger" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_L2, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_LT, sTitle)
|
||||
elseif sName == "leftShoulder" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_L1, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_LB, sTitle)
|
||||
elseif sName == "rightTrigger" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_R2, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_RT, sTitle)
|
||||
elseif sName == "rightShoulder" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_R1, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_RB, sTitle)
|
||||
elseif sName == "buttonNorth" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Triangle, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_Y, sTitle)
|
||||
elseif sName == "buttonEast" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Circle, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_B, sTitle)
|
||||
elseif sName == "buttonSouth" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Cross, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_A, sTitle)
|
||||
elseif sName == "buttonWest" then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPS_Square, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtXbox_X, sTitle)
|
||||
end
|
||||
end
|
||||
return SettingsGamepadCtrl
|
||||
@@ -0,0 +1,66 @@
|
||||
local SettingsGemCtrl = class("SettingsGemCtrl", BaseCtrl)
|
||||
SettingsGemCtrl._mapNodeConfig = {
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnConfirm2 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
txtBtnConfirm = {sComponentName = "TMP_Text", sLanguageId = "BtnConfirm"},
|
||||
txtWindowTitle = {sComponentName = "TMP_Text"},
|
||||
txt_allStoneTitle = {sComponentName = "TMP_Text"},
|
||||
txt_StoneTitle = {sComponentName = "TMP_Text"},
|
||||
txt_freeStoneTitle = {sComponentName = "TMP_Text"},
|
||||
txt_allStoneCount = {sComponentName = "TMP_Text"},
|
||||
txt_StoneCount = {sComponentName = "TMP_Text"},
|
||||
txt_freeStoneCount = {sComponentName = "TMP_Text"},
|
||||
txt_tips = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
SettingsGemCtrl._mapEventConfig = {}
|
||||
function SettingsGemCtrl:Open()
|
||||
self:Refresh()
|
||||
self:PlayInAni()
|
||||
end
|
||||
function SettingsGemCtrl:Refresh()
|
||||
local nSTONE = PlayerData.Coin:GetCoinCount(AllEnum.CoinItemId.STONE)
|
||||
local nFREESTONE = PlayerData.Coin:GetCoinCount(AllEnum.CoinItemId.FREESTONE)
|
||||
local stoneConfig = ConfigTable.GetData_Item(AllEnum.CoinItemId.STONE)
|
||||
local freestoneConfig = ConfigTable.GetData_Item(AllEnum.CoinItemId.FREESTONE)
|
||||
local sTitle = orderedFormat(ConfigTable.GetUIText("Settings_Account_Gem"), stoneConfig.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtWindowTitle, sTitle)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_allStoneTitle, ConfigTable.GetUIText("Settings_Gem_Detai_AllStone") .. stoneConfig.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_StoneTitle, ConfigTable.GetUIText("Settings_Gem_Detai_Stone") .. stoneConfig.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_freeStoneTitle, ConfigTable.GetUIText("Settings_Gem_Detai_FreeStone") .. freestoneConfig.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_allStoneCount, nSTONE + nFREESTONE)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_StoneCount, nSTONE)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_freeStoneCount, nFREESTONE)
|
||||
local sTips = orderedFormat(ConfigTable.GetUIText("Settings_Gem_Detai_Tips"), stoneConfig.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_tips, sTips)
|
||||
end
|
||||
function SettingsGemCtrl:PlayInAni()
|
||||
self.gameObject:SetActive(true)
|
||||
self.ani:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
end
|
||||
function SettingsGemCtrl:PlayOutAni()
|
||||
self.ani:Play("t_window_04_t_out")
|
||||
self:AddTimer(1, 0.2, "Close", true, true, true)
|
||||
end
|
||||
function SettingsGemCtrl:Close()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function SettingsGemCtrl:Awake()
|
||||
self.ani = self.gameObject.transform:GetComponent("Animator")
|
||||
end
|
||||
function SettingsGemCtrl:OnEnable()
|
||||
end
|
||||
function SettingsGemCtrl:OnDisable()
|
||||
end
|
||||
function SettingsGemCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsGemCtrl:OnBtnClick_Close()
|
||||
EventManager.Hit("SettingsClosePop")
|
||||
end
|
||||
return SettingsGemCtrl
|
||||
@@ -0,0 +1,272 @@
|
||||
local SettingsGraphicCtrl = class("SettingsGraphicCtrl", BaseCtrl)
|
||||
local ModuleManager = require("GameCore.Module.ModuleManager")
|
||||
local GameRenderingSettingManager = CS.GameRenderingSettingManager
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
local GraphicQualityLevelEnum = {
|
||||
GameRenderingSettingManager.QualityLevel.Low,
|
||||
GameRenderingSettingManager.QualityLevel.Medium,
|
||||
GameRenderingSettingManager.QualityLevel.High
|
||||
}
|
||||
local GraphicOptionIndex = {
|
||||
ResolutionRatio = 1,
|
||||
FrameRate = 2,
|
||||
ShadingQuality = 3,
|
||||
LightShadow = 4,
|
||||
AntAliasing = 5
|
||||
}
|
||||
SettingsGraphicCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Display"
|
||||
},
|
||||
txtShadingQuality = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Display_ShadingQuality"
|
||||
},
|
||||
txtWindowResolution = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Display_WindowResolution"
|
||||
},
|
||||
btnWindowResolution = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_WindowResolution"
|
||||
},
|
||||
imgResolutionGray = {},
|
||||
txtResolutionValue = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
Screen = {
|
||||
sCtrlName = "Game.UI.Settings.OptionUpdateChooseCtrl"
|
||||
},
|
||||
WindowResolution = {},
|
||||
L2dSwitch = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
VsyncSwitch = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
ShadingQuality = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
ResolutionRatio = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
FrameRate = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
Shadow = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
AntAliasing = {
|
||||
sCtrlName = "Game.UI.Settings.OptionChooseCtrl"
|
||||
},
|
||||
txtWidescreen = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Display_Widescreen"
|
||||
},
|
||||
txtBtnWidescreen = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Go"
|
||||
},
|
||||
btnWidescreen = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Widescreen"
|
||||
}
|
||||
}
|
||||
SettingsGraphicCtrl._mapEventConfig = {
|
||||
SettingsSetResolution = "OnEvent_SetResolution"
|
||||
}
|
||||
function SettingsGraphicCtrl:RefreshText()
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
self._mapNode.Screen:SetText(ConfigTable.GetUIText("Settings_Display_Screen_Full"), ConfigTable.GetUIText("Settings_Display_Screen_Window"), nil, ConfigTable.GetUIText("Settings_Display_Screen"))
|
||||
end
|
||||
self._mapNode.L2dSwitch:SetText(ConfigTable.GetUIText("Settings_L2d"))
|
||||
self._mapNode.ShadingQuality:SetText(ConfigTable.GetUIText("Settings_Display_ShadingQuality_Low"), ConfigTable.GetUIText("Settings_Display_ShadingQuality_Medium"), ConfigTable.GetUIText("Settings_Display_ShadingQuality_High"), ConfigTable.GetUIText("Settings_Display_ShadingQuality"))
|
||||
if NovaAPI.IsMobilePlatform() then
|
||||
self._mapNode.ResolutionRatio:SetText(ConfigTable.GetUIText("Settings_Display_ResolutionRatio_Low"), ConfigTable.GetUIText("Settings_Display_ResolutionRatio_Medium"), ConfigTable.GetUIText("Settings_Display_ResolutionRatio_High"), ConfigTable.GetUIText("Settings_Display_ResolutionRatio"))
|
||||
end
|
||||
self._mapNode.FrameRate:SetText(ConfigTable.GetUIText("Settings_Display_FrameRate_Low"), ConfigTable.GetUIText("Settings_Display_FrameRate_Medium"), ConfigTable.GetUIText("Settings_Display_FrameRate_High"), ConfigTable.GetUIText("Settings_Display_FrameRate"))
|
||||
self._mapNode.Shadow:SetText(ConfigTable.GetUIText("Settings_Display_Shadow_Low"), ConfigTable.GetUIText("Settings_Display_Shadow_Medium"), ConfigTable.GetUIText("Settings_Display_Shadow_High"), ConfigTable.GetUIText("Settings_Display_Shadow"))
|
||||
self._mapNode.AntAliasing:SetText(ConfigTable.GetUIText("Settings_Display_AntAliasing_Low"), ConfigTable.GetUIText("Settings_Display_AntAliasing_Medium"), ConfigTable.GetUIText("Settings_Display_AntAliasing_High"), ConfigTable.GetUIText("Settings_Display_AntAliasing"))
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
self._mapNode.VsyncSwitch:SetText(ConfigTable.GetUIText("Settings_Vsync"))
|
||||
end
|
||||
end
|
||||
function SettingsGraphicCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
end
|
||||
function SettingsGraphicCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsGraphicCtrl:LoadSetting()
|
||||
self.optionLevelIndex = {}
|
||||
if NovaAPI.IsMobilePlatform() then
|
||||
self.optionLevelIndex[GraphicOptionIndex.ResolutionRatio] = 1
|
||||
end
|
||||
self.optionLevelIndex[GraphicOptionIndex.FrameRate] = 1
|
||||
self.optionLevelIndex[GraphicOptionIndex.ShadingQuality] = 1
|
||||
self.optionLevelIndex[GraphicOptionIndex.LightShadow] = 1
|
||||
self.optionLevelIndex[GraphicOptionIndex.AntAliasing] = 1
|
||||
for i = 1, #GraphicQualityLevelEnum do
|
||||
if NovaAPI.IsMobilePlatform() and GameRenderingSettingManager.Instance.resolutionScaleQualityTier == GraphicQualityLevelEnum[i] then
|
||||
self.optionLevelIndex[GraphicOptionIndex.ResolutionRatio] = i
|
||||
self._mapNode.ResolutionRatio:Init(function(index)
|
||||
GameRenderingSettingManager.Instance.resolutionScaleQualityTier = GraphicQualityLevelEnum[index]
|
||||
self.optionLevelIndex[GraphicOptionIndex.ResolutionRatio] = index
|
||||
EventManager.Hit(EventId.MarkFullRectWH)
|
||||
end, i)
|
||||
end
|
||||
if GameRenderingSettingManager.Instance.frameRateQualityTier == GraphicQualityLevelEnum[i] then
|
||||
self.optionLevelIndex[GraphicOptionIndex.FrameRate] = i
|
||||
self._mapNode.FrameRate:Init(function(index)
|
||||
GameRenderingSettingManager.Instance.frameRateQualityTier = GraphicQualityLevelEnum[index]
|
||||
self.optionLevelIndex[GraphicOptionIndex.FrameRate] = index
|
||||
end, i)
|
||||
end
|
||||
if GameRenderingSettingManager.Instance.shadingQualityTier == GraphicQualityLevelEnum[i] then
|
||||
self.optionLevelIndex[GraphicOptionIndex.ShadingQuality] = i
|
||||
self._mapNode.ShadingQuality:Init(function(index)
|
||||
GameRenderingSettingManager.Instance.shadingQualityTier = GraphicQualityLevelEnum[index]
|
||||
self.optionLevelIndex[GraphicOptionIndex.ShadingQuality] = index
|
||||
end, i)
|
||||
end
|
||||
if GameRenderingSettingManager.Instance.lightShadowQualityTier == GraphicQualityLevelEnum[i] then
|
||||
self.optionLevelIndex[GraphicOptionIndex.LightShadow] = i
|
||||
self._mapNode.Shadow:Init(function(index)
|
||||
GameRenderingSettingManager.Instance.lightShadowQualityTier = GraphicQualityLevelEnum[index]
|
||||
self.optionLevelIndex[GraphicOptionIndex.LightShadow] = index
|
||||
end, i)
|
||||
end
|
||||
if GameRenderingSettingManager.Instance.antialiasingQualityTier == GraphicQualityLevelEnum[i] then
|
||||
self.optionLevelIndex[GraphicOptionIndex.AntAliasing] = i
|
||||
self._mapNode.AntAliasing:Init(function(index)
|
||||
GameRenderingSettingManager.Instance.antialiasingQualityTier = GraphicQualityLevelEnum[index]
|
||||
self.optionLevelIndex[GraphicOptionIndex.AntAliasing] = index
|
||||
end, i)
|
||||
end
|
||||
end
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
self.nScreen = GameRenderingSettingManager.Instance:IsFullScreen() and 1 or 2
|
||||
self:RefreshScreen()
|
||||
self.timer = self:AddTimer(0, 0.034, function()
|
||||
self.nScreen = GameRenderingSettingManager.Instance:IsFullScreen() and 1 or 2
|
||||
if self.nBeforeScreen ~= self.nScreen then
|
||||
self:ForceChange1080p(self.nBeforeScreen, self.nScreen)
|
||||
self:RefreshScreen()
|
||||
end
|
||||
end, true, true, true)
|
||||
self.nResolution = GameRenderingSettingManager.Instance:GetCurrentResolutionIndex() + 1
|
||||
self:ChangeWindowResolution(self.nResolution)
|
||||
end
|
||||
self.bUseLive2D = self._panel:LoadLocalData("UseLive2D")
|
||||
self._mapNode.L2dSwitch:Init(function()
|
||||
self.bUseLive2D = not self.bUseLive2D
|
||||
EventManager.Hit("SettingsChangeL2d", self.bUseLive2D)
|
||||
self._panel:SaveLocalData("UseLive2D", self.bUseLive2D)
|
||||
end, self.bUseLive2D)
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
self.bVsync = GameRenderingSettingManager.Instance.vSyncEnabled
|
||||
self._mapNode.VsyncSwitch:Init(function()
|
||||
self.bVsync = not self.bVsync
|
||||
GameRenderingSettingManager.Instance.vSyncEnabled = self.bVsync
|
||||
end, self.bVsync)
|
||||
end
|
||||
end
|
||||
function SettingsGraphicCtrl:SaveSetting()
|
||||
GameRenderingSettingManager.Instance:SaveSetting()
|
||||
end
|
||||
function SettingsGraphicCtrl:ChangeWindowResolution(nIndex)
|
||||
if nIndex then
|
||||
for i = 1, 2 do
|
||||
NovaAPI.SetTMPText(self._mapNode.txtResolutionValue[i], self.tbResolution[nIndex])
|
||||
end
|
||||
end
|
||||
end
|
||||
function SettingsGraphicCtrl:RefreshScreen()
|
||||
self._mapNode.Screen:Init(function(index, callback)
|
||||
GameRenderingSettingManager.Instance:SetScreenResolution(self.nResolution - 1, index == 1)
|
||||
local nCur = GameRenderingSettingManager.Instance:IsFullScreen() and 1 or 2
|
||||
if nCur == index then
|
||||
callback()
|
||||
self.nBeforeScreen = self.nScreen
|
||||
self.nScreen = index
|
||||
self:ForceChange1080p(self.nBeforeScreen, index)
|
||||
end
|
||||
end, self.nScreen, 2)
|
||||
self.nBeforeScreen = self.nScreen
|
||||
end
|
||||
function SettingsGraphicCtrl:ForceChange1080p(nBefore, nAfter)
|
||||
if nBefore == 1 and nAfter == 2 then
|
||||
local nCount = #self.tbResolution
|
||||
local nMax = 4 <= nCount and 4 or nCount
|
||||
for i = 1, nMax do
|
||||
if string.find(self.tbResolution[i], "1920") then
|
||||
EventManager.Hit("SettingsSetResolution", i)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function SettingsGraphicCtrl:Awake()
|
||||
self.bInit = false
|
||||
local bMobile = NovaAPI.IsMobilePlatform()
|
||||
self._mapNode.Screen.gameObject:SetActive(not bMobile)
|
||||
self._mapNode.WindowResolution.gameObject:SetActive(not bMobile)
|
||||
self._mapNode.ResolutionRatio.gameObject:SetActive(bMobile)
|
||||
self._mapNode.VsyncSwitch.gameObject:SetActive(not bMobile)
|
||||
if not bMobile then
|
||||
local tbSupport = GameRenderingSettingManager.Instance:GetSupportScreenResolutions()
|
||||
self.tbResolution = {}
|
||||
for i = 0, tbSupport.Length - 1 do
|
||||
table.insert(self.tbResolution, tbSupport[i].x .. "×" .. tbSupport[i].y)
|
||||
end
|
||||
end
|
||||
self:RefreshText()
|
||||
end
|
||||
function SettingsGraphicCtrl:OnEnable()
|
||||
end
|
||||
function SettingsGraphicCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
if self.timer ~= nil then
|
||||
self.timer:Cancel()
|
||||
self.timer = nil
|
||||
end
|
||||
end
|
||||
function SettingsGraphicCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsGraphicCtrl:OnBtnClick_WindowResolution()
|
||||
if next(self.tbResolution) == nil then
|
||||
return
|
||||
end
|
||||
EventManager.Hit("SettingsResolution", self.nResolution, self.tbResolution)
|
||||
end
|
||||
function SettingsGraphicCtrl:OnEvent_SetResolution(nIndex)
|
||||
self.nResolution = nIndex
|
||||
GameRenderingSettingManager.Instance:SetScreenResolution(self.nResolution - 1, self.nScreen == 1)
|
||||
self:ChangeWindowResolution(self.nResolution)
|
||||
end
|
||||
function SettingsGraphicCtrl:OnBtnClick_Widescreen()
|
||||
if ModuleManager.GetIsAdventure() then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Widescreen_BattleUnable"))
|
||||
elseif Settings.CURRENT_CANVAS_FULL_RECT_WIDTH / Settings.CURRENT_CANVAS_FULL_RECT_HEIGHT <= 2 then
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Settings_Widescreen_ScreenUnable"),
|
||||
callbackConfirm = function()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SettingsPreview)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SettingsPreview)
|
||||
end
|
||||
end
|
||||
return SettingsGraphicCtrl
|
||||
@@ -0,0 +1,218 @@
|
||||
local SettingsKeyboardCtrl = class("SettingsKeyboardCtrl", BaseCtrl)
|
||||
local InputManager = CS.InputManager
|
||||
local MouseName = {
|
||||
leftButton = 1,
|
||||
rightButton = 2,
|
||||
middleButton = 3,
|
||||
backButton = 4,
|
||||
forwardButton = 5
|
||||
}
|
||||
SettingsKeyboardCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Keyboard"
|
||||
},
|
||||
txtBindingTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Keyboard_Binding"
|
||||
},
|
||||
OptionBinding = {
|
||||
nCount = 8,
|
||||
sCtrlName = "Game.UI.Settings.OptionKeyboardBindingCtrl"
|
||||
},
|
||||
OptionBindingMove = {
|
||||
nCount = 4,
|
||||
sCtrlName = "Game.UI.Settings.OptionKeyboardBindingCtrl"
|
||||
},
|
||||
txtBtnReset = {sComponentName = "TMP_Text", sLanguageId = "Reset"},
|
||||
btnReset = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Reset"
|
||||
},
|
||||
txtBindTitle1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Keyboard_BindingGroup1"
|
||||
},
|
||||
txtBindTitle2 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Keyboard_BindingGroup2"
|
||||
},
|
||||
txtOptionTitleBack = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Action_Back"
|
||||
},
|
||||
txtKeyboardBack = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
SettingsKeyboardCtrl._mapEventConfig = {}
|
||||
function SettingsKeyboardCtrl:RefreshText()
|
||||
for i = 1, 4 do
|
||||
self._mapNode.OptionBindingMove[i]:SetText(ConfigTable.GetUIText("Action_" .. self._panel.Move[i]))
|
||||
end
|
||||
for i = 1, 8 do
|
||||
self._mapNode.OptionBinding[i]:SetText(ConfigTable.GetUIText("Action_" .. self._panel.Action[i]))
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtKeyboardBack, "Esc")
|
||||
end
|
||||
function SettingsKeyboardCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
end
|
||||
function SettingsKeyboardCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsKeyboardCtrl:LoadSetting()
|
||||
self._panel.mapKeyboardBind = {}
|
||||
for _, v in ipairs(self._panel.Action) do
|
||||
local bHas, tbControl = InputManager.Instance:GetInputActionConfig(v)
|
||||
if bHas then
|
||||
if tbControl.Count ~= 3 then
|
||||
printError("input config数量不为3,缺失配置")
|
||||
return
|
||||
end
|
||||
self._panel.mapKeyboardBind[v] = {}
|
||||
for i = 0, tbControl.Count - 1 do
|
||||
local mapControl = tbControl[i]
|
||||
local bEmpty = not mapControl.isKeyboard and not mapControl.isMouse and not mapControl.isGamepad
|
||||
if mapControl.isKeyboard or mapControl.isMouse or bEmpty then
|
||||
self._panel.mapKeyboardBind[v][i] = {
|
||||
name = mapControl.name,
|
||||
displayName = mapControl.displayName
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local bHorizontal, tbHorizontal = InputManager.Instance:GetInputActionConfig("Horizontal")
|
||||
if bHorizontal then
|
||||
if tbHorizontal.Count ~= 7 then
|
||||
printError("input config数量不为7,缺失配置")
|
||||
return
|
||||
end
|
||||
self._panel.mapKeyboardBind.Right = {}
|
||||
self._panel.mapKeyboardBind.Left = {}
|
||||
local nPositiveIndex, nNegativeIndex = 1, 1
|
||||
for i = 0, tbHorizontal.Count - 1 do
|
||||
local mapControl = tbHorizontal[i]
|
||||
local bEmpty = not mapControl.isKeyboard and not mapControl.isMouse and not mapControl.isGamepad
|
||||
if mapControl.isKeyboard or mapControl.isMouse or bEmpty then
|
||||
if mapControl.isPositive then
|
||||
self._panel.mapKeyboardBind.Right[nPositiveIndex] = {
|
||||
name = mapControl.name,
|
||||
displayName = mapControl.displayName
|
||||
}
|
||||
nPositiveIndex = nPositiveIndex + 1
|
||||
elseif mapControl.isNegative then
|
||||
self._panel.mapKeyboardBind.Left[nNegativeIndex] = {
|
||||
name = mapControl.name,
|
||||
displayName = mapControl.displayName
|
||||
}
|
||||
nNegativeIndex = nNegativeIndex + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local bVertical, tbVertical = InputManager.Instance:GetInputActionConfig("Vertical")
|
||||
if bVertical then
|
||||
if tbVertical.Count ~= 7 then
|
||||
printError("input config数量不为7,缺失配置")
|
||||
return
|
||||
end
|
||||
self._panel.mapKeyboardBind.Up = {}
|
||||
self._panel.mapKeyboardBind.Down = {}
|
||||
local nPositiveIndex, nNegativeIndex = 1, 1
|
||||
for i = 0, tbVertical.Count - 1 do
|
||||
local mapControl = tbVertical[i]
|
||||
local bEmpty = not mapControl.isKeyboard and not mapControl.isMouse and not mapControl.isGamepad
|
||||
if mapControl.isKeyboard or mapControl.isMouse or bEmpty then
|
||||
if mapControl.isPositive then
|
||||
self._panel.mapKeyboardBind.Up[nPositiveIndex] = {
|
||||
name = mapControl.name,
|
||||
displayName = mapControl.displayName
|
||||
}
|
||||
nPositiveIndex = nPositiveIndex + 1
|
||||
elseif mapControl.isNegative then
|
||||
self._panel.mapKeyboardBind.Down[nNegativeIndex] = {
|
||||
name = mapControl.name,
|
||||
displayName = mapControl.displayName
|
||||
}
|
||||
nNegativeIndex = nNegativeIndex + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
self:RefreshOption()
|
||||
end
|
||||
function SettingsKeyboardCtrl:RefreshOption()
|
||||
for i = 1, 4 do
|
||||
local sAction = self._panel.Move[i]
|
||||
self._mapNode.OptionBindingMove[i]:Init(sAction)
|
||||
end
|
||||
for i = 1, 8 do
|
||||
local sAction = self._panel.Action[i]
|
||||
self._mapNode.OptionBinding[i]:Init(sAction)
|
||||
end
|
||||
end
|
||||
function SettingsKeyboardCtrl:SaveSetting()
|
||||
local device = function(sAction, nIndex)
|
||||
local mapInput = self._panel.mapKeyboardBind[sAction][nIndex]
|
||||
if mapInput.name == "" then
|
||||
return ""
|
||||
end
|
||||
local bMouse = MouseName[mapInput.name] ~= nil
|
||||
local sPre = bMouse and "<Mouse>/" or "<Keyboard>/"
|
||||
return sPre .. mapInput.name
|
||||
end
|
||||
for _, v in ipairs(self._panel.Action) do
|
||||
for i = 1, 2 do
|
||||
InputManager.Instance:OverrideButtonBinding(v, i, device(v, i))
|
||||
if v == "Fire1" then
|
||||
InputManager.Instance:OverrideButtonBinding("Fire3", i, device(v, i))
|
||||
end
|
||||
end
|
||||
end
|
||||
for i = 1, 2 do
|
||||
InputManager.Instance:OverrideButtonBinding("Horizontal", i * 3, device("Right", i))
|
||||
InputManager.Instance:OverrideButtonBinding("Horizontal", i * 3 - 1, device("Left", i))
|
||||
InputManager.Instance:OverrideButtonBinding("Vertical", i * 3, device("Up", i))
|
||||
InputManager.Instance:OverrideButtonBinding("Vertical", i * 3 - 1, device("Down", i))
|
||||
end
|
||||
end
|
||||
function SettingsKeyboardCtrl:Awake()
|
||||
self.bInit = false
|
||||
self:RefreshText()
|
||||
end
|
||||
function SettingsKeyboardCtrl:OnEnable()
|
||||
end
|
||||
function SettingsKeyboardCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
end
|
||||
function SettingsKeyboardCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsKeyboardCtrl:OnBtnClick_Reset()
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Settings_Tip_Reset"),
|
||||
callbackConfirm = function()
|
||||
local nUID = PlayerData.Base:GetPlayerId()
|
||||
InputManager.Instance:ResetBindingOverrides(nUID)
|
||||
self:LoadSetting()
|
||||
local mapMsg = {
|
||||
nType = AllEnum.MessageBox.Tips,
|
||||
bPositive = true,
|
||||
sContent = ConfigTable.GetUIText("Settings_KeyReset")
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, mapMsg)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
return SettingsKeyboardCtrl
|
||||
@@ -0,0 +1,168 @@
|
||||
local SettingsLangPkgCtrl = class("SettingsLangPkgCtrl", BaseCtrl)
|
||||
SettingsLangPkgCtrl._mapNodeConfig = {
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Language_Package"
|
||||
},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Cancel"
|
||||
},
|
||||
btnConfirm1 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Confirm"
|
||||
},
|
||||
btnCancel = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Cancel"
|
||||
},
|
||||
txtBtnConfirm = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Download"
|
||||
},
|
||||
txtBtnCancel = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Back"
|
||||
},
|
||||
Option = {nCount = 2},
|
||||
txtOptionTitle = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
txtState = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
btnDownload = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Download"
|
||||
},
|
||||
Checkmark = {nCount = 2, sComponentName = "Animator"},
|
||||
txtBackTip = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_LangPkg_BackTip"
|
||||
},
|
||||
txtVoJpTip = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "SwitchToJPLanTips2"
|
||||
}
|
||||
}
|
||||
SettingsLangPkgCtrl._mapEventConfig = {}
|
||||
function SettingsLangPkgCtrl:Open(tbVoAvailable, tbDownload)
|
||||
self.tbVoAvailable = tbVoAvailable
|
||||
self.tbDownload = tbDownload
|
||||
self.tbEnableState = {}
|
||||
self:Refresh()
|
||||
self:PlayInAni()
|
||||
end
|
||||
function SettingsLangPkgCtrl:Refresh()
|
||||
local nCount = #self.tbVoAvailable
|
||||
for i = 1, 2 do
|
||||
if i > nCount then
|
||||
self._mapNode.Option[i]:SetActive(false)
|
||||
else
|
||||
self._mapNode.Option[i]:SetActive(true)
|
||||
do
|
||||
local mapDownloadData = self.tbDownload[self.tbVoAvailable[i]]
|
||||
if mapDownloadData.nTotalSize == 0 then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle[i], self.tbLang[self.tbVoAvailable[i]])
|
||||
else
|
||||
local nSize = math.ceil(mapDownloadData.nTotalSize / 1048576)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle[i], self.tbLang[self.tbVoAvailable[i]] .. " (" .. nSize .. "MB)")
|
||||
end
|
||||
local bDownload = mapDownloadData.bDownloaded
|
||||
self._mapNode.btnDownload[i].gameObject:SetActive(not bDownload)
|
||||
self._mapNode.txtState[i].gameObject:SetActive(bDownload)
|
||||
if bDownload then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtState[i], ConfigTable.GetUIText("Settings_LangPkg_Downloaded"))
|
||||
else
|
||||
self.tbEnableState[self.tbVoAvailable[i]] = false
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_out", -1, 1)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function SettingsLangPkgCtrl:PlayInAni()
|
||||
self.gameObject:SetActive(true)
|
||||
self.ani:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
end
|
||||
function SettingsLangPkgCtrl:PlayOutAni()
|
||||
self.ani:Play("t_window_04_t_out")
|
||||
self:AddTimer(1, 0.2, "Close", true, true, true)
|
||||
end
|
||||
function SettingsLangPkgCtrl:Close()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function SettingsLangPkgCtrl:Awake()
|
||||
self.ani = self.gameObject.transform:GetComponent("Animator")
|
||||
self.tbLang = {}
|
||||
self.tbLang[AllEnum.Language.CN] = ConfigTable.GetUIText("Settings_Language_Voice_Chinese")
|
||||
self.tbLang[AllEnum.Language.JP] = ConfigTable.GetUIText("Settings_Language_Voice_Japanese")
|
||||
self.tbLang[AllEnum.Language.EN] = ConfigTable.GetUIText("Settings_Language_Voice_English")
|
||||
self.tbLang[AllEnum.Language.KR] = ConfigTable.GetUIText("Settings_Language_Voice_Korean")
|
||||
self.tbLang[AllEnum.Language.TW] = ConfigTable.GetUIText("Settings_Language_Voice_TraditionalChinese")
|
||||
end
|
||||
function SettingsLangPkgCtrl:OnEnable()
|
||||
end
|
||||
function SettingsLangPkgCtrl:OnDisable()
|
||||
end
|
||||
function SettingsLangPkgCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsLangPkgCtrl:OnBtnClick_Cancel(btn)
|
||||
EventManager.Hit("SettingsClosePop")
|
||||
end
|
||||
function SettingsLangPkgCtrl:OnBtnClick_Confirm(btn)
|
||||
if next(self.tbEnableState) == nil then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Download_None"))
|
||||
return
|
||||
end
|
||||
local bAllfalse = true
|
||||
for _, v in pairs(self.tbEnableState) do
|
||||
if v == true then
|
||||
bAllfalse = false
|
||||
break
|
||||
end
|
||||
end
|
||||
if bAllfalse then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Settings_Download_NeedSelect"))
|
||||
return
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Settings_LangPkg_BackConfirm"),
|
||||
callbackConfirm = function()
|
||||
for language, bEnable in pairs(self.tbEnableState) do
|
||||
if bEnable then
|
||||
NovaAPI.Enable_VoLanguage(language)
|
||||
local tab = {}
|
||||
table.insert(tab, {
|
||||
"role_id",
|
||||
tostring(PlayerData.Base._nPlayerId)
|
||||
})
|
||||
table.insert(tab, {
|
||||
"set",
|
||||
"language_manage"
|
||||
})
|
||||
table.insert(tab, {
|
||||
"arg",
|
||||
tostring(language)
|
||||
})
|
||||
NovaAPI.UserEventUpload("setting_choice", tab)
|
||||
end
|
||||
end
|
||||
PanelManager.OnConfirmBackToLogIn()
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
function SettingsLangPkgCtrl:OnBtnClick_Download(btn, nIndex)
|
||||
self.tbEnableState[self.tbVoAvailable[nIndex]] = not self.tbEnableState[self.tbVoAvailable[nIndex]]
|
||||
if self.tbEnableState[self.tbVoAvailable[nIndex]] then
|
||||
self._mapNode.Checkmark[nIndex]:SetTrigger("PlayCheckmarkShow")
|
||||
else
|
||||
self._mapNode.Checkmark[nIndex]:SetTrigger("PlayCheckmarkHide")
|
||||
end
|
||||
end
|
||||
return SettingsLangPkgCtrl
|
||||
@@ -0,0 +1,179 @@
|
||||
local SettingsLanguageCtrl = class("SettingsLanguageCtrl", BaseCtrl)
|
||||
SettingsLanguageCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Language"
|
||||
},
|
||||
txtVoiceTittle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Language_Settings"
|
||||
},
|
||||
Option = {},
|
||||
btnPackage = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Package"
|
||||
},
|
||||
txtPackage = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Language_Package"
|
||||
},
|
||||
txtBtnPackage = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Btn_Go"
|
||||
},
|
||||
Voice = {
|
||||
sCtrlName = "Game.UI.Settings.OptionDynamicCtrl"
|
||||
},
|
||||
Language = {
|
||||
sCtrlName = "Game.UI.Settings.OptionDynamicCtrl"
|
||||
}
|
||||
}
|
||||
SettingsLanguageCtrl._mapEventConfig = {
|
||||
SettingsDownloadLanguage = "OnEvent_DownloadLanguage"
|
||||
}
|
||||
function SettingsLanguageCtrl:RefreshText()
|
||||
local lan_voc = ConfigTable.GetUIText("Settings_Language_Voice")
|
||||
local lan_txt = ConfigTable.GetUIText("Settings_Language_Text")
|
||||
local lan_needDownload = ConfigTable.GetUIText("Settings_Language_NeedDownload")
|
||||
local lan_downloaded = ConfigTable.GetUIText("Settings_Language_Downloaded")
|
||||
local tbText = {}
|
||||
tbText[AllEnum.Language.CN] = ConfigTable.GetUIText("Settings_Language_Text_Chinese")
|
||||
tbText[AllEnum.Language.JP] = ConfigTable.GetUIText("Settings_Language_Text_Japanese")
|
||||
tbText[AllEnum.Language.EN] = ConfigTable.GetUIText("Settings_Language_Text_English")
|
||||
tbText[AllEnum.Language.KR] = ConfigTable.GetUIText("Settings_Language_Text_Korean")
|
||||
tbText[AllEnum.Language.TW] = ConfigTable.GetUIText("Settings_Language_Text_TraditionalChinese")
|
||||
local nTextCount = table.nums(tbText)
|
||||
local tbLang = {}
|
||||
tbLang[AllEnum.Language.CN] = ConfigTable.GetUIText("Settings_Language_Voice_Chinese")
|
||||
tbLang[AllEnum.Language.JP] = ConfigTable.GetUIText("Settings_Language_Voice_Japanese")
|
||||
tbLang[AllEnum.Language.EN] = ConfigTable.GetUIText("Settings_Language_Voice_English")
|
||||
tbLang[AllEnum.Language.KR] = ConfigTable.GetUIText("Settings_Language_Voice_Korean")
|
||||
tbLang[AllEnum.Language.TW] = ConfigTable.GetUIText("Settings_Language_Voice_TraditionalChinese")
|
||||
local nLangCount = table.nums(tbLang)
|
||||
local textLang = {}
|
||||
for i = 1, nTextCount do
|
||||
textLang[i] = tbText[self.tbTextAvailable[i]]
|
||||
end
|
||||
local voLang = {}
|
||||
for i = 1, nLangCount do
|
||||
voLang[i] = ""
|
||||
if self.tbVoAvailable[i] then
|
||||
local sPre = tbLang[self.tbVoAvailable[i]]
|
||||
local sSuf = self.tbDownload[self.tbVoAvailable[i]].bDownloaded and lan_downloaded or lan_needDownload
|
||||
voLang[i] = sPre .. sSuf
|
||||
end
|
||||
end
|
||||
self._mapNode.Voice:SetText(lan_voc, voLang)
|
||||
self._mapNode.Language:SetText(lan_txt, textLang)
|
||||
end
|
||||
function SettingsLanguageCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
self:RefreshText()
|
||||
end
|
||||
function SettingsLanguageCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsLanguageCtrl:LoadSetting()
|
||||
local tbTextAvailable = NovaAPI.GetAvailable_TextLanguage()
|
||||
local tbVoAvailable = NovaAPI.GetAvailable_VoLanguage()
|
||||
self.tbTextAvailable, self.tbVoAvailable, self.tbDownload = {}, {}, {}
|
||||
for i = 0, tbTextAvailable.Length - 1 do
|
||||
table.insert(self.tbTextAvailable, tbTextAvailable[i])
|
||||
end
|
||||
for i = 0, tbVoAvailable.Length - 1 do
|
||||
local sVoLan = tbVoAvailable[i]
|
||||
table.insert(self.tbVoAvailable, sVoLan)
|
||||
local bDownloaded, nTotalSize, nNeedDownloadSize = NovaAPI.HasDownload_VoLanguage(sVoLan)
|
||||
self.tbDownload[sVoLan] = {
|
||||
bDownloaded = bDownloaded,
|
||||
nTotalSize = nTotalSize,
|
||||
nNeedDownloadSize = nNeedDownloadSize
|
||||
}
|
||||
end
|
||||
local sCurrentTxtLanguage = NovaAPI.GetCur_TextLanguage()
|
||||
local sCurrentVoLanguage = NovaAPI.GetCur_VoiceLanguage()
|
||||
self.nVoLang = table.indexof(self.tbVoAvailable, sCurrentVoLanguage)
|
||||
self.nTextLang = table.indexof(self.tbTextAvailable, sCurrentTxtLanguage)
|
||||
self._mapNode.Voice:Init(function(index)
|
||||
NovaAPI.SetCur_VoiceLanguage(self.tbVoAvailable[index])
|
||||
Settings.sCurrentVoLanguage = self.tbVoAvailable[index]
|
||||
self.nVoLang = index
|
||||
local tab = {}
|
||||
table.insert(tab, {
|
||||
"role_id",
|
||||
tostring(PlayerData.Base._nPlayerId)
|
||||
})
|
||||
table.insert(tab, {
|
||||
"set",
|
||||
"vocie_language"
|
||||
})
|
||||
table.insert(tab, {
|
||||
"arg",
|
||||
tostring(index)
|
||||
})
|
||||
NovaAPI.UserEventUpload("setting_choice", tab)
|
||||
end, self.nVoLang, #self.tbVoAvailable, nil, true)
|
||||
self._mapNode.Language:Init(function(index)
|
||||
NovaAPI.SetCur_TextLanguage(self.tbTextAvailable[index])
|
||||
Settings.sCurrentTxtLanguage = self.tbTextAvailable[index]
|
||||
self.nTextLang = index
|
||||
local tab = {}
|
||||
table.insert(tab, {
|
||||
"role_id",
|
||||
tostring(PlayerData.Base._nPlayerId)
|
||||
})
|
||||
table.insert(tab, {
|
||||
"set",
|
||||
"game_language"
|
||||
})
|
||||
table.insert(tab, {
|
||||
"arg",
|
||||
tostring(index)
|
||||
})
|
||||
NovaAPI.UserEventUpload("setting_choice", tab)
|
||||
PanelManager.OnConfirmBackToLogIn()
|
||||
end, self.nTextLang, #self.tbTextAvailable, ConfigTable.GetUIText("Settings_Language_BackConfirm"))
|
||||
local gray = function(tbAvailable)
|
||||
local tbGray = {}
|
||||
for k, v in ipairs(tbAvailable) do
|
||||
if not self.tbDownload[v].bDownloaded then
|
||||
tbGray[k] = true
|
||||
end
|
||||
end
|
||||
return tbGray
|
||||
end
|
||||
self._mapNode.Voice:SetGray(gray(self.tbVoAvailable), ConfigTable.GetUIText("Settings_VoiceGrayTips"))
|
||||
if self.tbVoAvailable ~= nil and 1 >= #self.tbVoAvailable then
|
||||
self._mapNode.Option:SetActive(false)
|
||||
local languageTra = self._mapNode.Language.gameObject.transform
|
||||
local goLanLine = languageTra:Find("line").gameObject
|
||||
goLanLine:SetActive(false)
|
||||
end
|
||||
end
|
||||
function SettingsLanguageCtrl:SaveSetting()
|
||||
end
|
||||
function SettingsLanguageCtrl:Awake()
|
||||
self.bInit = false
|
||||
end
|
||||
function SettingsLanguageCtrl:OnEnable()
|
||||
end
|
||||
function SettingsLanguageCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
end
|
||||
function SettingsLanguageCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsLanguageCtrl:OnBtnClick_Package()
|
||||
EventManager.Hit("SettingsLanguage", self.tbVoAvailable, self.tbDownload)
|
||||
end
|
||||
function SettingsLanguageCtrl:OnEvent_DownloadLanguage()
|
||||
end
|
||||
return SettingsLanguageCtrl
|
||||
@@ -0,0 +1,58 @@
|
||||
local SettingsNotificationCtrl = class("SettingsNotificationCtrl", BaseCtrl)
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
SettingsNotificationCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Notification"
|
||||
},
|
||||
txtForwardNews = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Notification_ForwardNews"
|
||||
},
|
||||
Energy = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
Dispatch = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
}
|
||||
}
|
||||
SettingsNotificationCtrl._mapEventConfig = {}
|
||||
function SettingsNotificationCtrl:RefreshText()
|
||||
self._mapNode.Energy:SetText(ConfigTable.GetUIText("Settings_Notification_Energy"))
|
||||
self._mapNode.Dispatch:SetText(ConfigTable.GetUIText("Settings_Notification_Dispatch"))
|
||||
end
|
||||
function SettingsNotificationCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
end
|
||||
function SettingsNotificationCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsNotificationCtrl:LoadSetting()
|
||||
self._mapNode.Energy:Init(function()
|
||||
end, true)
|
||||
self._mapNode.Dispatch:Init(function()
|
||||
end, true)
|
||||
end
|
||||
function SettingsNotificationCtrl:SaveSetting()
|
||||
end
|
||||
function SettingsNotificationCtrl:Awake()
|
||||
self.bInit = false
|
||||
self:RefreshText()
|
||||
end
|
||||
function SettingsNotificationCtrl:OnEnable()
|
||||
end
|
||||
function SettingsNotificationCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
end
|
||||
function SettingsNotificationCtrl:OnDestroy()
|
||||
end
|
||||
return SettingsNotificationCtrl
|
||||
@@ -0,0 +1,44 @@
|
||||
local SettingsPanel = class("SettingsPanel", BasePanel)
|
||||
SettingsPanel._bAddToBackHistory = false
|
||||
SettingsPanel._nSnapshotPrePanel = 1
|
||||
local LocalSettingData = require("GameCore.Data.LocalSettingData")
|
||||
SettingsPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "Settings/SettingsPanel.prefab",
|
||||
sCtrlName = "Game.UI.Settings.SettingsCtrl"
|
||||
}
|
||||
}
|
||||
function SettingsPanel:LoadLocalData(key)
|
||||
return LocalSettingData.GetLocalSettingData(key)
|
||||
end
|
||||
function SettingsPanel:SaveLocalData(subKey, value)
|
||||
LocalSettingData.SetLocalSettingData(subKey, value)
|
||||
end
|
||||
function SettingsPanel:Awake()
|
||||
self.mapKeyboardBind = {}
|
||||
self.mapGamepadBind = {}
|
||||
self.Action = {
|
||||
"Fire1",
|
||||
"Fire2",
|
||||
"Fire4",
|
||||
"Interactive",
|
||||
"ActorSwitch1",
|
||||
"ActorSwitch2",
|
||||
"SwitchWithUltra1",
|
||||
"SwitchWithUltra2"
|
||||
}
|
||||
self.Move = {
|
||||
"Up",
|
||||
"Down",
|
||||
"Left",
|
||||
"Right"
|
||||
}
|
||||
self.ControlType = {Gamepad = 0, Keyboard = 1}
|
||||
end
|
||||
function SettingsPanel:OnEnable()
|
||||
end
|
||||
function SettingsPanel:OnDisable()
|
||||
end
|
||||
function SettingsPanel:OnDestroy()
|
||||
end
|
||||
return SettingsPanel
|
||||
@@ -0,0 +1,61 @@
|
||||
local SettingsPreviewCtrl = class("SettingsPreviewCtrl", BaseCtrl)
|
||||
SettingsPreviewCtrl._mapNodeConfig = {
|
||||
MainView = {
|
||||
sCtrlName = "Game.UI.Settings.PreviewMainViewCtrl"
|
||||
},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnConfirm = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Confirm"
|
||||
},
|
||||
txtBtnCancel = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Cancel"
|
||||
},
|
||||
txtBtnConfirm = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Confirm"
|
||||
},
|
||||
txtSliderTip = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Widescreen_Tips"
|
||||
},
|
||||
txtSliderCount = {sComponentName = "TMP_Text"},
|
||||
Slider = {
|
||||
sComponentName = "Slider",
|
||||
callback = "OnValueChange_Widescreen"
|
||||
}
|
||||
}
|
||||
SettingsPreviewCtrl._mapEventConfig = {}
|
||||
function SettingsPreviewCtrl:Open(nType)
|
||||
self._mapNode.MainView:Refresh()
|
||||
self.nValue = NovaAPI.GetAdaptedAreaCustomWidth()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSliderCount, self.nValue)
|
||||
end
|
||||
function SettingsPreviewCtrl:Awake()
|
||||
end
|
||||
function SettingsPreviewCtrl:OnEnable()
|
||||
local tbParam = self:GetPanelParam()
|
||||
if type(tbParam) == "table" then
|
||||
self:Open()
|
||||
end
|
||||
end
|
||||
function SettingsPreviewCtrl:OnDisable()
|
||||
end
|
||||
function SettingsPreviewCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsPreviewCtrl:OnBtnClick_Close()
|
||||
NovaAPI.SetSliderValue(self._mapNode.Slider, self.nValue)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.SettingsPreview)
|
||||
end
|
||||
function SettingsPreviewCtrl:OnBtnClick_Confirm()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.SettingsPreview)
|
||||
end
|
||||
function SettingsPreviewCtrl:OnValueChange_Widescreen(_, value)
|
||||
local curValue, _ = math.modf(value)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSliderCount, curValue)
|
||||
end
|
||||
return SettingsPreviewCtrl
|
||||
@@ -0,0 +1,24 @@
|
||||
local SettingsPreviewPanel = class("SettingsPreviewPanel", BasePanel)
|
||||
SettingsPreviewPanel._bIsMainPanel = false
|
||||
local LocalSettingData = require("GameCore.Data.LocalSettingData")
|
||||
SettingsPreviewPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "Settings/SettingsPreviewPanel.prefab",
|
||||
sCtrlName = "Game.UI.Settings.SettingsPreviewCtrl"
|
||||
}
|
||||
}
|
||||
function SettingsPreviewPanel:LoadLocalData(key)
|
||||
return LocalSettingData.GetLocalSettingData(key)
|
||||
end
|
||||
function SettingsPreviewPanel:SaveLocalData(subKey, value)
|
||||
LocalSettingData.SetLocalSettingData(subKey, value)
|
||||
end
|
||||
function SettingsPreviewPanel:Awake()
|
||||
end
|
||||
function SettingsPreviewPanel:OnEnable()
|
||||
end
|
||||
function SettingsPreviewPanel:OnDisable()
|
||||
end
|
||||
function SettingsPreviewPanel:OnDestroy()
|
||||
end
|
||||
return SettingsPreviewPanel
|
||||
@@ -0,0 +1,104 @@
|
||||
local SettingsResolutionCtrl = class("SettingsResolutionCtrl", BaseCtrl)
|
||||
SettingsResolutionCtrl._mapNodeConfig = {
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Display_ResolutionTitle"
|
||||
},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Cancel"
|
||||
},
|
||||
btnCancel = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Cancel"
|
||||
},
|
||||
btnConfirm1 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Confirm"
|
||||
},
|
||||
txtBtnConfirm1 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Confirm"
|
||||
},
|
||||
txtBtnCancel = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Cancel"
|
||||
},
|
||||
txtOptionTitle = {nCount = 4, sComponentName = "TMP_Text"},
|
||||
btnChoose = {
|
||||
nCount = 4,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Choose"
|
||||
},
|
||||
Checkmark = {nCount = 4, sComponentName = "Animator"},
|
||||
Option = {nCount = 4},
|
||||
line = {nCount = 4}
|
||||
}
|
||||
SettingsResolutionCtrl._mapEventConfig = {}
|
||||
function SettingsResolutionCtrl:Open(nResolution, tbResolution)
|
||||
self.nIndex = nResolution
|
||||
self.tbResolution = tbResolution
|
||||
self:PlayInAni()
|
||||
self:Refresh()
|
||||
end
|
||||
function SettingsResolutionCtrl:Refresh()
|
||||
local nCount = #self.tbResolution
|
||||
if 4 <= nCount then
|
||||
self._mapNode.line[4]:SetActive(false)
|
||||
else
|
||||
self._mapNode.line[nCount]:SetActive(false)
|
||||
end
|
||||
for i = 1, 4 do
|
||||
local sText = self.tbResolution[i]
|
||||
if sText then
|
||||
self._mapNode.Option[i].gameObject:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle[i], sText)
|
||||
else
|
||||
self._mapNode.Option[i].gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
for i = 1, 4 do
|
||||
if i == self.nIndex then
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_in", -1, 1)
|
||||
else
|
||||
self._mapNode.Checkmark[i]:Play("checkmark_out", -1, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
function SettingsResolutionCtrl:PlayInAni()
|
||||
self.gameObject:SetActive(true)
|
||||
self.ani:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
end
|
||||
function SettingsResolutionCtrl:PlayOutAni()
|
||||
self.ani:Play("t_window_04_t_out")
|
||||
self:AddTimer(1, 0.2, "Close", true, true, true)
|
||||
end
|
||||
function SettingsResolutionCtrl:Close()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function SettingsResolutionCtrl:Awake()
|
||||
self.ani = self.gameObject.transform:GetComponent("Animator")
|
||||
end
|
||||
function SettingsResolutionCtrl:OnEnable()
|
||||
end
|
||||
function SettingsResolutionCtrl:OnDisable()
|
||||
end
|
||||
function SettingsResolutionCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsResolutionCtrl:OnBtnClick_Cancel(btn)
|
||||
EventManager.Hit("SettingsClosePop")
|
||||
end
|
||||
function SettingsResolutionCtrl:OnBtnClick_Confirm(btn)
|
||||
EventManager.Hit("SettingsClosePop")
|
||||
EventManager.Hit("SettingsSetResolution", self.nIndex)
|
||||
end
|
||||
function SettingsResolutionCtrl:OnBtnClick_Choose(btn, index)
|
||||
if self.nIndex == index then
|
||||
return
|
||||
end
|
||||
self._mapNode.Checkmark[self.nIndex]:SetTrigger("PlayCheckmarkHide")
|
||||
self._mapNode.Checkmark[index]:SetTrigger("PlayCheckmarkShow")
|
||||
self.nIndex = index
|
||||
end
|
||||
return SettingsResolutionCtrl
|
||||
@@ -0,0 +1,166 @@
|
||||
local SettingsSoundCtrl = class("SettingsSoundCtrl", BaseCtrl)
|
||||
local UIGameSystemSetup = CS.UIGameSystemSetup
|
||||
local WwiseManger = CS.WwiseAudioManager
|
||||
SettingsSoundCtrl._mapNodeConfig = {
|
||||
txtPageTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Sound"
|
||||
},
|
||||
txtSound = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Settings_Sound_Title"
|
||||
},
|
||||
Music_Btn = {sNodeName = "Music_Btn", sComponentName = "Button"},
|
||||
Music_Slider = {
|
||||
sComponentName = "Slider",
|
||||
callback = "OnMusicSliderValueChange"
|
||||
},
|
||||
MusicFill = {sComponentName = "Image"},
|
||||
MusicHandle = {sComponentName = "Image"},
|
||||
Music_Value = {sComponentName = "TMP_Text"},
|
||||
Effect_Btn = {sNodeName = "Effect_Btn", sComponentName = "Button"},
|
||||
Effect_Slider = {
|
||||
sComponentName = "Slider",
|
||||
callback = "OnEffectSliderValueChange"
|
||||
},
|
||||
EffectFill = {sComponentName = "Image"},
|
||||
EffectHandle = {sComponentName = "Image"},
|
||||
Effect_Value = {sComponentName = "TMP_Text"},
|
||||
Voice_Btn = {sNodeName = "Voice_Btn", sComponentName = "Button"},
|
||||
Voice_Slider = {
|
||||
sComponentName = "Slider",
|
||||
callback = "OnVoiceSliderValueChange"
|
||||
},
|
||||
VoiceFill = {sComponentName = "Image"},
|
||||
VoiceHandle = {sComponentName = "Image"},
|
||||
Voice_Value = {sComponentName = "TMP_Text"},
|
||||
Music = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
Effect = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
Voice = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
},
|
||||
MuteInBackground = {
|
||||
sCtrlName = "Game.UI.Settings.OptionSwitchCtrl"
|
||||
}
|
||||
}
|
||||
SettingsSoundCtrl._mapEventConfig = {}
|
||||
function SettingsSoundCtrl:RefreshText()
|
||||
self._mapNode.Music:SetText(ConfigTable.GetUIText("Settings_Sound_Music"))
|
||||
self._mapNode.Effect:SetText(ConfigTable.GetUIText("Settings_Sound_Sfx"))
|
||||
self._mapNode.Voice:SetText(ConfigTable.GetUIText("Settings_Sound_Voice"))
|
||||
self._mapNode.MuteInBackground:SetText(ConfigTable.GetUIText("Settings_Sound_MuteOnMinimize"))
|
||||
end
|
||||
function SettingsSoundCtrl:Init()
|
||||
if self.bInit then
|
||||
return
|
||||
end
|
||||
self.bInit = true
|
||||
self:LoadSetting()
|
||||
end
|
||||
function SettingsSoundCtrl:Quit()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
end
|
||||
function SettingsSoundCtrl:LoadSetting()
|
||||
self.musicValue = self._panel:LoadLocalData("NumMusic")
|
||||
self.openMusic = self._panel:LoadLocalData("OpenMusic")
|
||||
self._mapNode.Music:Init(function()
|
||||
self.openMusic = not self.openMusic
|
||||
self:RefreshMusicSlider()
|
||||
WwiseManger.Instance.m_playMusic = self.openMusic
|
||||
end, self.openMusic)
|
||||
self:RefreshMusicSlider()
|
||||
self.effectValue = self._panel:LoadLocalData("NumSfx")
|
||||
self.openEffect = self._panel:LoadLocalData("OpenSfx")
|
||||
self._mapNode.Effect:Init(function()
|
||||
self.openEffect = not self.openEffect
|
||||
self:RefreshEffectSlider()
|
||||
WwiseManger.Instance.m_playSfx = self.openEffect
|
||||
end, self.openEffect)
|
||||
self:RefreshEffectSlider()
|
||||
self.voiceValue = self._panel:LoadLocalData("NumChar")
|
||||
self.openVoice = self._panel:LoadLocalData("OpenChar")
|
||||
self._mapNode.Voice:Init(function()
|
||||
self.openVoice = not self.openVoice
|
||||
self:RefreshVoiceSlider()
|
||||
WwiseManger.Instance.m_voice = self.openVoice
|
||||
end, self.openVoice)
|
||||
self.bMuteInBackground = self._panel:LoadLocalData("WwiseMuteInBackground")
|
||||
local curPlatform = CS.ClientManager.Instance.Platform
|
||||
local bIsPC = curPlatform == "windows" or curPlatform == "mac"
|
||||
local goVoiceLine = self._mapNode.Voice.gameObject.transform:Find("line")
|
||||
goVoiceLine.gameObject:SetActive(bIsPC)
|
||||
self._mapNode.MuteInBackground.gameObject:SetActive(bIsPC)
|
||||
self._mapNode.MuteInBackground:Init(function()
|
||||
self.bMuteInBackground = not self.bMuteInBackground
|
||||
WwiseManger.Instance.bMuteInBackground = self.bMuteInBackground
|
||||
end, self.bMuteInBackground)
|
||||
self:RefreshVoiceSlider()
|
||||
end
|
||||
function SettingsSoundCtrl:SaveSetting()
|
||||
self._panel:SaveLocalData("OpenMusic", self.openMusic)
|
||||
self._panel:SaveLocalData("NumMusic", self.musicValue)
|
||||
self._panel:SaveLocalData("OpenSfx", self.openEffect)
|
||||
self._panel:SaveLocalData("NumSfx", self.effectValue)
|
||||
self._panel:SaveLocalData("OpenChar", self.openVoice)
|
||||
self._panel:SaveLocalData("NumChar", self.voiceValue)
|
||||
if not NovaAPI.IsMobilePlatform() then
|
||||
self._panel:SaveLocalData("WwiseMuteInBackground", self.bMuteInBackground)
|
||||
end
|
||||
end
|
||||
function SettingsSoundCtrl:Awake()
|
||||
self.bInit = false
|
||||
self:RefreshText()
|
||||
end
|
||||
function SettingsSoundCtrl:OnEnable()
|
||||
end
|
||||
function SettingsSoundCtrl:OnDisable()
|
||||
if not self.bInit then
|
||||
return
|
||||
end
|
||||
self:SaveSetting()
|
||||
end
|
||||
function SettingsSoundCtrl:OnDestroy()
|
||||
end
|
||||
function SettingsSoundCtrl:RefreshMusicSlider()
|
||||
self._mapNode.Music_Btn.interactable = self.openMusic
|
||||
NovaAPI.SetSliderInteractable(self._mapNode.Music_Slider, self.openMusic)
|
||||
NovaAPI.SetSliderValue(self._mapNode.Music_Slider, self.musicValue)
|
||||
NovaAPI.SetTMPText(self._mapNode.Music_Value, self.musicValue)
|
||||
end
|
||||
function SettingsSoundCtrl:OnMusicSliderValueChange(_, value)
|
||||
local curValue, _ = math.modf(value)
|
||||
self.musicValue = curValue
|
||||
NovaAPI.SetTMPText(self._mapNode.Music_Value, self.musicValue)
|
||||
WwiseManger.Instance.MusicVolume = curValue / 10
|
||||
end
|
||||
function SettingsSoundCtrl:RefreshEffectSlider()
|
||||
self._mapNode.Effect_Btn.interactable = self.openEffect
|
||||
NovaAPI.SetSliderInteractable(self._mapNode.Effect_Slider, self.openEffect)
|
||||
NovaAPI.SetSliderValue(self._mapNode.Effect_Slider, self.effectValue)
|
||||
NovaAPI.SetTMPText(self._mapNode.Effect_Value, self.effectValue)
|
||||
end
|
||||
function SettingsSoundCtrl:OnEffectSliderValueChange(_, value)
|
||||
local curValue, _ = math.modf(value)
|
||||
self.effectValue = curValue
|
||||
NovaAPI.SetTMPText(self._mapNode.Effect_Value, self.effectValue)
|
||||
WwiseManger.Instance.SfxVolume = curValue / 10
|
||||
end
|
||||
function SettingsSoundCtrl:RefreshVoiceSlider()
|
||||
self._mapNode.Voice_Btn.interactable = self.openVoice
|
||||
NovaAPI.SetSliderInteractable(self._mapNode.Voice_Slider, self.openVoice)
|
||||
NovaAPI.SetSliderValue(self._mapNode.Voice_Slider, self.voiceValue)
|
||||
NovaAPI.SetTMPText(self._mapNode.Voice_Value, self.voiceValue)
|
||||
end
|
||||
function SettingsSoundCtrl:OnVoiceSliderValueChange(_, value)
|
||||
local curValue, _ = math.modf(value)
|
||||
self.voiceValue = curValue
|
||||
NovaAPI.SetTMPText(self._mapNode.Voice_Value, self.voiceValue)
|
||||
WwiseManger.Instance.VoiceVolume = curValue / 10
|
||||
end
|
||||
return SettingsSoundCtrl
|
||||
Reference in New Issue
Block a user