miduo_client/Assets/ManagedResources/~Lua/Modules/Battle/Test/BattleSetView.lua

402 lines
12 KiB
Lua

RoleSetView = {}
local MonsterConfig = ConfigManager.GetConfig(ConfigName.MonsterConfig)
-- 初始化角色设置界面
function RoleSetView:Init(root)
self.gameObject = root
self.monsterId = Util.GetGameObject(root, "configId/input"):GetComponent("InputField")
self.btnLoad = Util.GetGameObject(root, "configId/load")
self.roleId = Util.GetGameObject(root, "roleId/input"):GetComponent("InputField")
self.passivity = Util.GetGameObject(root, "passivity/input"):GetComponent("InputField")
self.skill = Util.GetGameObject(root, "skill/input"):GetComponent("InputField")
self.superSkill = Util.GetGameObject(root, "superSkill/input"):GetComponent("InputField")
self.props = Util.GetGameObject(root, "props")
self.propList = {}
for i = 1, self.props.transform.childCount do
self.propList[i] = Util.GetGameObject(self.props.transform:GetChild(i-1), "input"):GetComponent("InputField")
end
self.btnComfirm = Util.GetGameObject(root, "Root/confirm")
self.deletefirm = Util.GetGameObject(root, "Root/delete")
self.btnCancel = Util.GetGameObject(root, "Root/cancel")
self.content = Util.GetGameObject(root, "Root/cancel"):GetComponent("Text")
--
Util.AddOnceClick(self.btnComfirm, function()
self:ApplyData()
end)
--
Util.AddOnceClick(self.deletefirm, function()
self:RemoveData()
end)
--
Util.AddOnceClick(self.btnCancel, function()
self:Close()
end)
--
Util.AddOnceClick(self.btnLoad, function()
self:LoadFromConfig()
end)
end
-- 根据配置加载数据
function RoleSetView:LoadFromConfig()
local monsterId = tonumber(self.monsterId.text)
local config = MonsterConfig[monsterId]
if not config then
LogRed(Language[10240]..monsterId)
return
end
local passivity = config.PassiveSkillList and table.concat(config.PassiveSkillList, "#") or ""
local skill = config.SkillList[1] or ""
local superSkill = config.SkillList[2] or ""
self.localData = {
monsterId,
config.MonsterId, -- roleId
passivity,
skill,
superSkill,
config.Level,
config.Hp,
config.Hp,
config.Attack,
config.PhysicalDefence,
config.MagicDefence,
config.Speed,
config.DamageBocusFactor,
config.DamageReduceFactor,
config.Hit,
config.CritFactor,
config.CritDamageFactor,
config.AntiCritDamageFactor,
config.TreatFacter,
config.CureFacter,
}
-- 设置数据
self.roleId.text = self:GetLocalData(2)
self.passivity.text = self:GetLocalData(3)
self.skill.text = self:GetLocalData(4)
self.superSkill.text = self:GetLocalData(5)
for propIndex, prop in ipairs(self.propList) do
prop.text = self:GetLocalData(propIndex + 5)
end
end
-- 从本地加载数据
function RoleSetView:loadFromLocal()
local dataStr = PlayerPrefs.GetString("test_battle_role_"..self.camp..self.pos)
LogGreen(dataStr)
self.localData = string.split(dataStr, "|")
end
-- 保存数据到本地
function RoleSetView:saveToLocal()
local str = ""
str = str .. (self.data.monsterId or "")
str = str .. "|"..(self.data.roleId or "")
str = str .. "|"..(self.data.passivity or "")
str = str .. "|"..(self.data.skill or "")
str = str .. "|"..(self.data.superSkill or "")
for propIndex, prop in ipairs(self.data.props) do
str = str .. "|"..(prop or "")
end
LogGreen(str)
PlayerPrefs.SetString("test_battle_role_"..self.camp..self.pos, str)
end
function RoleSetView:GetLocalData(index)
local defaultData = {
"", -- monsterID
10001, -- roleID
"", -- 被动
1011, -- 普技
1012, -- 特殊
100, -- 等级
100000, -- hp
100000, -- maxhp
100, -- attack
0, -- 物抗
0, -- 魔抗
0, -- 速度(未使用)
0, -- 伤害加成系数
0, -- 伤害减免系数
1, -- 命中率(未使用)
0, -- 闪避率(未使用)
0.2, -- 暴击率
1.5, -- 爆伤系数
0, -- 抗暴率
1, -- 治疗系数
1, -- 治愈系数
}
if not self.localData[index] or self.localData[index] == "" then
return (defaultData[index] or 0)
end
return self.localData[index]
end
function RoleSetView:Show(camp, pos, data, func)
data = data or {props = {}}
self.gameObject:SetActive(true)
self.camp = camp
self.pos = pos
self.data = data
self.func = func
self:loadFromLocal() -- 加载本地资源
-- 设置数据
self.monsterId.text = data.monsterId or self:GetLocalData(1)
self.roleId.text = data.roleId or self:GetLocalData(2)
self.passivity.text = data.passivity or self:GetLocalData(3)
self.skill.text = data.skill or self:GetLocalData(4)
self.superSkill.text = data.superSkill or self:GetLocalData(5)
for propIndex, prop in ipairs(self.propList) do
prop.text = data.props[propIndex] or self:GetLocalData(propIndex + 5)
end
end
-- 应用数据
function RoleSetView:ApplyData()
self.data.monsterId = tonumber(self.monsterId.text)
self.data.roleId = tonumber(self.roleId.text)
self.data.passivity = self.passivity.text
self.data.skill = tonumber(self.skill.text)
self.data.superSkill = tonumber(self.superSkill.text)
for propIndex, prop in ipairs(self.propList) do
local value = prop.text == "" and 0 or tonumber(prop.text)
self.data.props[propIndex] = tonumber(value)
end
-- 保存数据到本地
self:saveToLocal()
-- 应用数据
if self.func then
self.func(self.camp, self.pos, self.data)
PopupTipPanel.ShowTip(Language[10241])
end
end
-- 应用数据
function RoleSetView:RemoveData()
-- 应用数据
if self.func then
self.func(self.camp, self.pos, nil)
PopupTipPanel.ShowTip(Language[10242])
end
end
-- 关闭界面
function RoleSetView:Close()
self.gameObject:SetActive(false)
end
-- 异妖设置界面
MonsterSetView = {}
-- 初始化角色设置界面
function MonsterSetView:Init(root)
self.gameObject = root
self.monster1 = Util.GetGameObject(root, "monster1/input"):GetComponent("InputField")
self.monster2 = Util.GetGameObject(root, "monster2/input"):GetComponent("InputField")
self.monster3 = Util.GetGameObject(root, "monster3/input"):GetComponent("InputField")
self.btnComfirm = Util.GetGameObject(root, "Root/confirm")
self.btnCancel = Util.GetGameObject(root, "Root/cancel")
self.content = Util.GetGameObject(root, "Root/cancel"):GetComponent("Text")
--
Util.AddOnceClick(self.btnComfirm, function()
self:ApplyData()
end)
--
Util.AddOnceClick(self.btnCancel, function()
self:Close()
end)
end
function MonsterSetView:Show(camp, data, func)
self.gameObject:SetActive(true)
self.camp = camp
self.data = data or {}
self.func = func
self.monster1.text = data.monster1
self.monster2.text = data.monster2
self.monster3.text = data.monster3
end
-- 应用数据
function MonsterSetView:ApplyData()
self.data.monster1 = self.monster1.text
self.data.monster2 = self.monster2.text
self.data.monster3 = self.monster3.text
-- 应用数据
if self.func then
if self.func(self.camp, self.data) then
PopupTipPanel.ShowTip(Language[10241])
return
end
end
PopupTipPanel.ShowTip(Language[10243])
end
-- 关闭界面
function MonsterSetView:Close()
self.gameObject:SetActive(false)
end
-- 全局设置界面
AllSetView = {}
-- 初始化角色设置界面
function AllSetView:Init(root)
self.gameObject = root
self.passivity = Util.GetGameObject(root, "passivity/input"):GetComponent("InputField")
self.btnComfirm = Util.GetGameObject(root, "Root/confirm")
self.btnCancel = Util.GetGameObject(root, "Root/cancel")
self.content = Util.GetGameObject(root, "Root/cancel"):GetComponent("Text")
--
Util.AddOnceClick(self.btnComfirm, function()
self:ApplyData()
end)
--
Util.AddOnceClick(self.btnCancel, function()
self:Close()
end)
end
function AllSetView:Show(camp, data, func)
self.gameObject:SetActive(true)
self.camp = camp
self.data = data or {}
self.func = func
self.passivity.text = data.passivity
end
-- 应用数据
function AllSetView:ApplyData()
self.data.passivity = self.passivity.text
-- 应用数据
if self.func then
if self.func(self.camp, self.data) then
PopupTipPanel.ShowTip(Language[10241])
return
end
end
PopupTipPanel.ShowTip(Language[10243])
end
-- 关闭界面
function AllSetView:Close()
self.gameObject:SetActive(false)
end
-- 全局设置界面
SkillSetView = {}
local MonsterViewConfig = ConfigManager.GetConfig(ConfigName.MonsterViewConfig)
local MonsterConfig = ConfigManager.GetConfig(ConfigName.MonsterConfig)
local RoleConfig = ConfigManager.GetConfig(ConfigName.RoleConfig)
local HeroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
local SkillLogicConfig = ConfigManager.GetConfig(ConfigName.SkillLogicConfig)
-- 初始化角色设置界面
function SkillSetView:Init(root)
self.gameObject = root
self.rt = Util.GetGameObject(root, "role/time1/input"):GetComponent("InputField")
self.rt2 = Util.GetGameObject(root, "role/time2/input"):GetComponent("InputField")
self.nt1 = Util.GetGameObject(root, "normal/time1/input"):GetComponent("InputField")
self.nt2 = Util.GetGameObject(root, "normal/time2/input"):GetComponent("InputField")
self.st1 = Util.GetGameObject(root, "special/time1/input"):GetComponent("InputField")
self.st2 = Util.GetGameObject(root, "special/time2/input"):GetComponent("InputField")
self.btnComfirm = Util.GetGameObject(root, "Root/confirm")
self.btnCancel = Util.GetGameObject(root, "Root/cancel")
--
Util.AddOnceClick(self.btnComfirm, function()
self:ApplyData()
end)
--
Util.AddOnceClick(self.btnCancel, function()
self:Close()
end)
end
function SkillSetView:Show(camp, pos, BattleView)
self.gameObject:SetActive(true)
self.camp = camp
self.pos = pos
self.role = RoleManager.GetRole(camp, pos)
self.roleView = BattleView.GetRoleView(self.role)
local nSkillId = self.role.roleData.skill[1]
local sSkillId = self.role.roleData.superSkill[1]
self.rt.text = self.roleView.spAtkTime*1000
self.rt2.text = self.roleView.atkSoundTime*1000
local nCombat = BattleManager.GetSkillCombat(SkillLogicConfig[nSkillId].SkillDisplay)
self.nt1.text = nCombat.BulletTime
self.nt2.text = nCombat.KeyFrame
local sCombat = BattleManager.GetSkillCombat(SkillLogicConfig[sSkillId].SkillDisplay)
self.st1.text = sCombat.BulletTime
self.st2.text = sCombat.KeyFrame
end
-- 应用数据
function SkillSetView:ApplyData()
local nSkillId = self.role.roleData.skill[1]
local sSkillId = self.role.roleData.superSkill[1]
self.roleView.spAtkTime = (tonumber(self.rt.text)or 0)/1000
self.roleView.atkSoundTime = (tonumber(self.rt2.text)or 0)/1000
local ncId = SkillLogicConfig[nSkillId].SkillDisplay
local nCombat = BattleManager.GetSkillCombat(ncId)
local nBulletTime = tonumber(self.nt1.text) or 0
local nKeyFrame = tonumber(self.nt2.text) or 0
nCombat.BulletTime = nBulletTime
nCombat.KeyFrame = nKeyFrame
BattleManager.SetSkillCombat(ncId, nCombat)
for i=2, #self.role.skill do
self.role.skill[2] = nKeyFrame/1000
end
local scId = SkillLogicConfig[sSkillId].SkillDisplay
local sCombat = BattleManager.GetSkillCombat(scId)
local sBulletTime = tonumber(self.st1.text) or 0
local sKeyFrame = tonumber(self.st2.text) or 0
sCombat.BulletTime = sBulletTime
sCombat.KeyFrame = sKeyFrame
BattleManager.SetSkillCombat(scId, sCombat)
for i=2, #self.role.superSkill do
self.role.superSkill[2] = sKeyFrame/1000
end
PopupTipPanel.ShowTip(Language[10241])
end
-- 关闭界面
function SkillSetView:Close()
self.gameObject:SetActive(false)
end