源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

1217 行
39 KiB

require("game.proto.146.Require146")
require("game.foster.FosterConst")
require("game.foster.FosterModel")
require("game.foster.view.FosterBaseView")
require("game.foster.view.FosterSubView")
require("game.foster.view.FosterSubViewNew")
require("game.foster.view.FosterSkinView")
require("game.foster.view.FosterAttrItem")
require("game.foster.view.FosterTabItem")
require("game.foster.view.FosterSubTabItem")
require("game.foster.view.FosterSkinTabItem")
require("game.foster.view.FosterSkillItem")
require("game.foster.view.FosterBlessView")
require("game.foster.view.FosterSkillTips")
require("game.foster.view.FosterEquipItem")
require("game.foster.view.FosterEquipBaseView")
require("game.foster.view.FosterEquipTipView")
require("game.foster.view.FosterAttrItemTwo")
require("game.foster.view.FosterAttrItemThree")
require("game.foster.view.FosterUpEquipView")
require("game.foster.view.FosterKernelView")
require("game.foster.view.FosterKernelItem")
require("game.foster.view.FosterKernelTips")
require("game.foster.view.FosterEquipingView")
require("game.foster.view.FosterEquipingTabItem")
-- require("game.foster.view.FosterBagView")--逻辑修改已弃用
FosterController = FosterController or BaseClass(BaseController, true)
local FosterController = FosterController
function FosterController:__init()
FosterController.Instance = self
self.model = FosterModel:GetInstance()
self:AddEvents()
self:RegisterAllProtocal()
end
function FosterController:__delete()
self:StopShowUpCostTimer()
end
function FosterController:RegisterAllProtocal( )
self:RegisterProtocal(14600, "on14600")--基础系统信息
self:RegisterProtocal(14601, "on14601")--普通系统培养
self:RegisterProtocal(14602, "on14602")--使用核心
self:RegisterProtocal(14603, "on14603")--幻化协议
self:RegisterProtocal(14604, "on14604")--技能升级
self:RegisterProtocal(14605, "on14605")--技能激活通知
self:RegisterProtocal(14606, "on14606")--装备升级
self:RegisterProtocal(14607, "on14607")--装备穿戴
self:RegisterProtocal(14608, "on14608")--装备更新
self:RegisterProtocal(14609, "on14609")--骑乘状态修改
self:RegisterProtocal(14613, "on14613")--新手激活推送
self:RegisterProtocal(14614, "on14614")--进阶装备助战状态查询 - 全量数据
self:RegisterProtocal(14615, "on14615")--进阶装备助战状态查询 - 单个查询
self:RegisterProtocal(14616, "on14616")--手动激活进阶装备助战状态
self:RegisterProtocal(14617, "on14617")--弱进阶系统皮肤信息
self:RegisterProtocal(14618, "on14618")--弱进阶系统皮肤激活或者升星
self:RegisterProtocal(14619, "on14619")--弱进阶系统皮肤幻化
self:RegisterProtocal(14620, "on14620")--弱进阶系统升级
self:RegisterProtocal(14621, "on14621")--助战变更后推送
end
function FosterController:AddEvents()
local function init_open_day()
self.model:Reset()
local function delay( )
for k,v in pairs(FosterConst.ModuleId) do
if GetModuleIsOpen(146,v) then
self.model:Fire(FosterConst.ReqBasicInfo, v)
if v>=5 then
self.model:Fire(FosterConst.ReqSubSkinInfo, v)
end
-- 请求装备协助相关
if v == FosterConst.ModuleId.FHorse or v == FosterConst.ModuleId.FJarvis then
self.model:Fire(FosterConst.ReqEquipAssistInfo, v)
end
end
end
end
setTimeout(delay,2)
end
GlobalEventSystem:Bind(EventName.OPEN_DAY_INIT, init_open_day)
local function loadComplete()
--在不显示坐骑的场景,要下坐骑噢!
local is_ride = RoleManager:getInstance():GetMainRoleVo() and (RoleManager:getInstance():GetMainRoleVo().is_ride ~= 0)
if is_ride and (not SceneManager:getInstance():IsShowHorseScene()) then
GlobalEventSystem:Fire(EventName.HIDE_HORSE)
end
end
GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, loadComplete)
local function onLevelChange( level )
for k,v in pairs(FosterConst.ModuleId) do
if Config.Modulesub["146@" .. v] and (Config.Modulesub["146@" .. v].open_lv == level or Config.Modulesub["146@" .. v].icon_lv == level) then
-- 幻化初始外观
-- self.model:Fire(FosterConst.ReqChangeSkin, v, 1)
self.model:Fire(FosterConst.ReqBasicInfo, v)
-- 请求装备协助相关
if v == FosterConst.ModuleId.FHorse or v == FosterConst.ModuleId.FJarvis then
self.model:Fire(FosterConst.ReqEquipAssistInfo, v)
end
end
end
end
RoleManager:getInstance().mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelChange)
local function ANS_FINISHED_TASK_LIST( task_id )
if task_id == Config.Modulesub["146@5"].task_id then
--ai娘后端会提早开出来,所以要前端先不显示场景对象,任务完成的时候再更新显示
local main_role = Scene.Instance:GetMainRole()
if main_role then
main_role:ChangePet()
end
end
end
GlobalEventSystem:Bind(TaskEvent.ANS_FINISHED_TASK_LIST,ANS_FINISHED_TASK_LIST)
--基础系统信息
local function ReqBasicInfo( type_id )
if type_id then
self:SendFmtToGame(14600, "c", type_id)
end
end
self.model:Bind(FosterConst.ReqBasicInfo, ReqBasicInfo)
--普通系统培养
local function ReqStrengthen( type_id, is_auto_up, is_auto_buy, auto_bgold )
is_auto_up = is_auto_up and 1 or 0
is_auto_buy = is_auto_buy and 1 or 0
auto_bgold = auto_bgold or 0-- 0 红钻不足后停止,1 会消耗彩钻
if type_id then
self:SendFmtToGame(14601, "cccc", type_id, is_auto_up, is_auto_buy, auto_bgold)
end
end
self.model:Bind(FosterConst.ReqStrengthen, ReqStrengthen)
--弱进阶系统皮肤信息
local function ReqSubSkinInfo(type_id)
if type_id then
self:SendFmtToGame(14617, "c", type_id)
end
end
self.model:Bind(FosterConst.ReqSubSkinInfo, ReqSubSkinInfo)
-- 弱进阶皮肤请求激活或升星
local function req_sub_skin_act_or_up(type_id, skin_id, option)
if type_id and skin_id and option then
self:SendFmtToGame(14618, "chc", type_id, skin_id, option)
end
end
self.model:Bind(FosterConst.ReqSubSkinActiveOrUpGrade, req_sub_skin_act_or_up)
local function req_sub_skin_change(type_id, skin_id, star)
if type_id and skin_id and star then
self:SendFmtToGame(14619, "chh", type_id, skin_id, star)
end
end
self.model:Bind(FosterConst.ReqSubSkinChange, req_sub_skin_change)
--弱进阶系统使用升级材料
local function ReqSubUpgrade( type_id, material_type, is_auto_up)
material_type = material_type or 1
is_auto_up = is_auto_up and 1 or 0
if type_id then
self:SendFmtToGame(14620, "ccc", type_id, material_type, is_auto_up)
end
end
self.model:Bind(FosterConst.ReqSubUpgrade, ReqSubUpgrade)
--使用核心
local function ReqUseKernel( type_id, op_type, num )
op_type = op_type or 0
num = num or 1
if type_id then
self:SendFmtToGame(14602, "ccc", type_id, op_type, num)
end
end
self.model:Bind(FosterConst.ReqUseKernel, ReqUseKernel)
--幻化协议
local function ReqChangeSkin( type_id, diaplay_id )
if type_id and diaplay_id then
self:SendFmtToGame(14603, "ch", type_id, diaplay_id)
end
end
self.model:Bind(FosterConst.ReqChangeSkin, ReqChangeSkin)
--技能升级
local function ReqSkillUpgrade( type_id, pos )
if type_id and pos then
self:SendFmtToGame(14604, "cc", type_id, pos)
end
end
self.model:Bind(FosterConst.ReqSkillUpgrade, ReqSkillUpgrade)
--装备升级
local function ReqEquipUpGrade( type_id, grade, pos, eats )
if type_id and grade and pos and eats then
self:WriteBegin(14606)
self:WriteFMT("c", type_id)
self:WriteFMT("h", grade)
self:WriteFMT("c", pos)
self:WriteFMT("h", TableSize(eats))
for k, v in pairs(eats) do
self:WriteFMT("l", k)
end
self:SendToGame()
end
end
self.model:Bind(FosterConst.ReqEquipUpGrade, ReqEquipUpGrade)
--装备穿戴
local function ReqEquipDress( opty, type_id, grade, goods_id )
if opty and type_id and grade and goods_id then
self:SendFmtToGame(14607, "cchl", opty, type_id, grade, goods_id )
end
end
self.model:Bind(FosterConst.ReqEquipDress, ReqEquipDress)
local function OPEN_SUCCESS_VIEW( type_id,id,star )
print('----LZR ShapeController.lua 92-- type_id,id,star=',type_id,id,star)
if not self.shapesuccessview then
self.shapesuccessview = ShapeSuccessView.New()
self.shapesuccessview:Open(type_id,id,star, true)
end
end
self.model:Bind(FosterConst.OPEN_SUCCESS_VIEW,OPEN_SUCCESS_VIEW)
local function ReqEquipDressInfo( type_id,grade )
if not type_id or not grade then return end
self:SendFmtToGame(14608, "ch", type_id,grade )
end
self.model:Bind(FosterConst.ReqEquipDressInfo, ReqEquipDressInfo)
--骑乘状态修改
local function Change_Ride_Status( op_type )
--非显示坐骑场景,不给上坐骑
if op_type == 1 and not SceneManager:getInstance():IsShowHorseScene() then
Message.show("该场景不能上坐骑哦")
return
end
op_type = op_type or 0
-------------------------
--要筛选不能转换状态的情况,下坐骑就不限制了
local main_role = Scene:getInstance():GetMainRole()
if main_role then
if op_type == 1 then
--在部分不能上坐骑的地方,不要让它上坐骑
if not main_role:CanOperateHorse() then
Message.show("当前状态不能上坐骑哦")
return
end
end
end
-------------------------
if GetModuleIsOpen(146,1) then
self:SendFmtToGame(14609, "c", op_type )
end
end
self.model:Bind(FosterConst.Change_Ride_Status, Change_Ride_Status)
local function require_equip_assist_info(type)
if not type then return end
self:SendFmtToGame(14614, "c", type)
end
self.model:Bind(FosterConst.ReqEquipAssistInfo, require_equip_assist_info)
local function check_equip_assist_info(type, grade)
if not type or not grade then return end
self:SendFmtToGame(14615, "ch", type, grade)
end
self.model:Bind(FosterConst.CheckEquipAssistInfo, check_equip_assist_info)
local function require_activate_equip_assist(type, grade)
if not type or not grade then return end
self:SendFmtToGame(14616, "ch", type, grade)
end
self.model:Bind(FosterConst.ReqActivateEquipAssist, require_activate_equip_assist)
local function HIDE_HORSE( )
--下坐骑
Change_Ride_Status(0)
end
GlobalEventSystem:Bind(EventName.HIDE_HORSE,HIDE_HORSE)
local function RIDE_HORSE( )
if EscortModel:getInstance():IsEscortState() then--护送不给上坐骑
return
end
--上坐骑
Change_Ride_Status(1)
end
GlobalEventSystem:Bind(EventName.RIDE_HORSE,RIDE_HORSE)
local function OpenBaseView( type_id, right_show_type,is_skin)
-- print("Lizhijian:FosterController [start:298] ")
-- print(type_id, right_show_type,is_skin)
-- print("Lizhijian:FosterController [end:298] ")
if not self.FosterBaseView then
self.FosterBaseView = FosterBaseView.New(nil, nil, nil,type_id,right_show_type,is_skin)
self.FosterBaseView:Open()
else
self.FosterBaseView:ReOpen(type_id,right_show_type,is_skin)
end
end
GlobalEventSystem:Bind(FosterConst.OpenBaseView, OpenBaseView)
local function OpenKernelView( type_id )
if not type_id then
if self.FosterKernelView then
self.FosterKernelView:Close()
end
return
end
if not self.FosterKernelView then
self.FosterKernelView = FosterKernelView.New()
self.FosterKernelView:Open(type_id)
end
end
self.model:Bind(FosterConst.OpenKernelView,OpenKernelView)
local function OpenSkinView( type_id, sub_type_id)
if self.FosterBaseView then
self.FosterBaseView:Close()
local function delay_method()
local is_skin = true
GlobalEventSystem:Fire(FosterConst.OpenBaseView, type_id, sub_type_id, is_skin)
end
self.delay_method_id = setTimeout(delay_method, 0.5)
end
end
self.model:Bind(FosterConst.OpenSkinView,OpenSkinView)
local function OpenEquipingView( type_id,grade,equip_pos,equip_color)
if not type_id then
if self.FosterEquipingView then
self.FosterEquipingView:Close()
end
return
end
if not self.FosterEquipingView then
self.FosterEquipingView = FosterEquipingView.New()
self.FosterEquipingView:Open(type_id,grade,equip_pos,equip_color)
end
end
self.model:Bind(FosterConst.OpenEquipingView,OpenEquipingView)
local function OpenBlessView( type_id )
if not type_id then
self.model:Fire(FosterConst.CloseBaseView)
return
end
if not self.FosterBlessView then
self.FosterBlessView = FosterBlessView.New()
self.FosterBlessView:Open(type_id)
end
end
self.model:Bind(FosterConst.OpenBlessView, OpenBlessView)
local function OpenSkillTips( type_id, pos, skill_id )
if not type_id or not pos or not skill_id then
return
end
if not self.FosterSkillTips then
self.FosterSkillTips = FosterSkillTips.New()
self.FosterSkillTips:Open(type_id, pos, skill_id)
end
end
self.model:Bind(FosterConst.OpenSkillTips,OpenSkillTips)
--技能tips界面里跳转到商店时,关闭这个tips
local function CloseSkillTips()
if self.FosterSkillTips and self.FosterSkillTips.isPop then
self.FosterSkillTips:Close()
end
end
self.model:Bind(FosterConst.CloseSkillTips,CloseSkillTips)
-- local function OpenFosterBagView( type_id,grade,pos )
-- if not grade then return Message.show("进阶背包参数错误") end
-- if not self.FosterBagView then
-- self.model:SetDressAction(type_id,grade,pos)
-- -------------------------
-- self.FosterBagView = FosterBagView.New()
-- self.FosterBagView:Open(type_id,grade,pos)
-- end
-- end
-- self.model:Bind(FosterConst.OpenFosterBagView,OpenFosterBagView)
local function OpenFosterEquipTipView( data_1,data_2,tag,open_show_get_way,hide_base_con )
--要传入背包的信息!!!!
if not data_1 and not data_2 then return end
if not self.FosterEquipBaseView then
self.FosterEquipBaseView = FosterEquipBaseView.New()
self.FosterEquipBaseView:Open(data_1,data_2,tag,open_show_get_way,hide_base_con)
end
end
self.model:Bind(FosterConst.OpenFosterEquipTipView,OpenFosterEquipTipView)
local function OpenFosterUpEquipView( bag_data )
if not bag_data then return end
--要传入背包的信息!!!!
if not self.FosterUpEquipView then
self.FosterUpEquipView = FosterUpEquipView.New()
self.FosterUpEquipView:Open(bag_data)
end
end
self.model:Bind(FosterConst.OpenFosterUpEquipView,OpenFosterUpEquipView)
local function BOARD_CLOSE_FUNC_OPEN_VIEW( )
if self.wait_show_up_success_call then
self.wait_show_up_success_call()
self.wait_show_up_success_call = false
end
end
GlobalEventSystem:Bind(EventName.BOARD_CLOSE_FUNC_OPEN_VIEW, BOARD_CLOSE_FUNC_OPEN_VIEW)
end
--基础系统信息
function FosterController:on14600( )
local scmd = SCMD14600.New(true)
scmd.end_time = scmd.retime + TimeUtil:getServerTime()
self.model:SetBasicInfo(scmd.type, scmd)
local basic = self.model:GetBasicInfo(scmd.type)
self.model:CheckRedDot( true,scmd.type )
self:CheckRedDot()
self.model:Fire(FosterConst.AnsBasicInfo,scmd.type)
end
--系统培养
function FosterController:on14601( )
local scmd = SCMD14601.New(true)
if scmd.result == 1 then
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
local star_change,grade_change = self.model:StrengthenCheckIsUpgrade(scmd)
if star_change or grade_change then
if grade_change then
self:ShowUpSuccess(scmd.type,scmd.grade)
end
--升级重新请求
local function delay( )
self.model:Fire(FosterConst.ReqBasicInfo, scmd.type)
end
setTimeout(delay,0)
-------------------------
-- 升阶成功后需要检测是否弹出活动引导
local temp = {
[1] = scmd.type,
[2] = scmd.grade,
[3] = scmd.star,
}
KfActivityModel:getInstance():CheckNeedShowActGuide("foster", temp)
elseif not self.model:RefreshStrengthenExp( scmd ) then
--非升级就直接修改,未成功修改就请求数据
self.model:Fire(FosterConst.ReqBasicInfo, scmd.type)
end
-- if not (star_change or grade_change) then
-- Message.show(string.format( "升阶成功,祝福值+%d",scmd.exp ))
-- else
Message.show("升阶成功")
-- end
self.model:CanUpgrade(true,scmd.type)
self.model:Fire(FosterConst.AnsStrengthen,(star_change or grade_change) and true or false)
self:CheckRedDot()
self.model:ResetPetFightSkillState()
if ((not (star_change or grade_change)) and (scmd.auto_up == 1 and scmd.auto_buy == 0)) or
--自动进阶且非自动购买的时候,还没升级说明资源耗尽
(self.model:IsFirstForsterAdvance() and KfActivityModel:getInstance():CheckFosterRechargeAdsShow( scmd.type, scmd.grade)) then
self:ShowUpCostGoodsTips( scmd.type, scmd.grade, scmd.auto_up, true )
end
else
self.model:Fire(FosterConst.AnsStrengthen,"fail")
--[[if then
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.FAULT)
lua_soundM:PlayEffect(self, "fault", false, LuaSoundManager.SOUND_TYPE.UI)
GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true)
ErrorCodeShow(scmd.result)
else--]]
if scmd.result == 1003 or scmd.result == 1006 or scmd.result == 1001 then
if scmd.result == 1006 and scmd.auto_up == 1 and scmd.auto_buy == 1 then
local function call_yes( )
local function delay( )
self.model:Fire(FosterConst.ReqStrengthen, scmd.type, true,true, 1)
end
setTimeout(delay,0.3)
end
Alert.show('您的红钻已用完,需要开始消耗彩钻进阶,确认继续吗?', Alert.Type.Two, call_yes, nil, '确定', '取消')
return
end
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.FAULT)
lua_soundM:PlayEffect(self, "fault", false, LuaSoundManager.SOUND_TYPE.UI)
self:ShowUpCostGoodsTips( scmd.type, scmd.grade, scmd.auto_up, false)
else
ErrorCodeShow(scmd.result)
end
end
end
function FosterController:ShowUpCostGoodsTips( type_id, grade, auto_up, is_success )
local cost_data = self.model:GetGradeCost(type_id)
if cost_data then
local parm_list = {}
--如果是成功,并且是第一次弹提示窗,才需要延时
local is_delay_show = self.model:IsFirstForsterAdvance() and is_success
-- 进阶抢购和进阶首充不同时出现 进阶首充的显示优先级高
if KfActivityModel:getInstance():CheckFosterRechargeAdsShow( type_id, grade) then
parm_list.foster_recharge_show = true
else
parm_list.show_limit_shop = true
end
for k,v in pairs(ShopModel:getInstance():GetGoodsListInfo( ShopType.BindGold )) do
for a,b in pairs(v) do
if b.goods_id == tonumber(cost_data[1][2]) then
parm_list.shop_data = DeepCopy(b)
-------------------------
--填入一个缺少值
parm_list.shop_data.first_buy_num = self.model:GetUpgradeNeedMoreCostNum(type_id, auto_up)
-------------------------
end
end
end
self:StopShowUpCostTimer()
if is_delay_show then
local function delay_call_back( ... )
self:StopShowUpCostTimer()
local main_role = Scene.Instance:GetMainRole()
if not main_role then
return
end
self.model:SetFirstForsterAdvanceCookie()
-- 传入当前类型和阶数
parm_list.foster_data = {type = type_id, grade = grade}
UIToolTipMgr:getInstance():AppendGoodsTips(cost_data[1][2], nil, nil,nil,nil,parm_list,nil,nil)
end
self.show_up_cost_timer = GlobalTimerQuest:AddDelayQuest(delay_call_back,1.5)
else
self.model:SetFirstForsterAdvanceCookie()
-- 传入当前类型和阶数
parm_list.foster_data = {type = type_id, grade = grade}
UIToolTipMgr:getInstance():AppendGoodsTips(cost_data[1][2], nil, nil,nil,nil,parm_list,nil,nil)
end
end
end
function FosterController:StopShowUpCostTimer()
if self.show_up_cost_timer then
GlobalTimerQuest:CancelQuest(self.show_up_cost_timer)
self.show_up_cost_timer = nil
end
end
--使用核心
function FosterController:on14602( )
local scmd = SCMD14602.New(true)
if scmd.result == 1 then
Message.show("使用成功")
-- 每次使用成功后请求基础数据更新
self.model:Fire(FosterConst.ReqBasicInfo, scmd.type)
self.model:Fire(FosterConst.AnsUseKernel,scmd.opty, scmd.result)
self.model:CanKernel(true,scmd.type)
self:CheckRedDot()
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
else
self.model:Fire(FosterConst.AnsUseKernel,scmd.opty, scmd.result)
ErrorCodeShow(scmd.result)
end
end
--幻化协议
function FosterController:on14603( )
local scmd = SCMD14603.New(true)
if scmd.result == 1 then
Message.show("幻化成功")
if not self.model:RefreshSkinUseInfo( scmd.type, scmd.display ) then
self.model:Fire(FosterConst.ReqBasicInfo, scmd.type)
end
self.model:Fire(FosterConst.AnsChangeSkin, scmd.type)
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
else
ErrorCodeShow(scmd.result)
end
end
--技能升级
function FosterController:on14604( )
local scmd = SCMD14604.New(true)
if scmd.result == 1 then
Message.show("升级成功")
self.model:RefreshSkillInfo(scmd.type, scmd)
-------------------------
self.model:CanSkillUpgradeByType( true,scmd.type )
self:CheckRedDot()
self.model:Fire(FosterConst.AnsSkillUpgrade)
self.model:Fire(FosterConst.ReqBasicInfo, scmd.type)
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
else
ErrorCodeShow(scmd.result)
end
end
--技能激活通知
function FosterController:on14605( )
local scmd = SCMD14605.New(true)
self.model:RefreshSkillInfo(scmd.type, scmd)
self.model:Fire(FosterConst.BoardSkillActive)
if scmd.skill > 0 then
local skill_data = {skill_id = scmd.skill, show_time = 15, ignore_auto_task = true}
FuncOpenController.Instance:ShowSkill(skill_data)
end
-------------------------
self.model:CanSkillUpgradeByType( true,scmd.type )
self:CheckRedDot()
end
--装备升级
function FosterController:on14606( )
local scmd = SCMD14606.New(true)
if scmd.res == 1 then
Message.show("升级成功")
self.model:ResetSwallowSelect()
self.model:Fire(FosterConst.SwallowStatusChange)
-------------------------
self.model:Fire(FosterConst.AnsEquipUpGrade, scmd.type, scmd.grade)
self.model:Fire(FosterConst.ReqEquipDressInfo,scmd.type,scmd.grade)
-------------------------
self.model:RefreshEquipRedData( scmd.type )
self:CheckRedDot()
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
else
ErrorCodeShow(scmd.res)
end
end
--装备穿戴
function FosterController:on14607( )
local scmd = SCMD14607.New(true)
if scmd.res == 1 then
if scmd.opty == 1 then
Message.show("穿戴成功")
else
Message.show("卸下成功")
end
self.model:Fire(FosterConst.CloseFosterEquipTipView)
self.model:Fire(FosterConst.CloseFosterBagView)
self.model:Fire(FosterConst.AnsEquipDress, scmd.type, scmd.grade, scmd.opty, scmd.pos)
self.model:Fire(FosterConst.ReqEquipDressInfo,scmd.type,scmd.grade)
-------------------------
self.model:RefreshEquipRedData( scmd.type )
self:CheckRedDot()
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
else
ErrorCodeShow(scmd.res)
end
end
--装备更新
function FosterController:on14608( )
local scmd = SCMD14608.New(true)
self.model:RefreshEquipList( scmd.type,scmd.grade,scmd.equips )
self.model:Fire(FosterConst.AnsEquipDressInfo)
-------------------------
self.model:RefreshEquipRedData( scmd.type )
self:CheckRedDot()
end
--骑乘状态修改
function FosterController:on14609( )
local scmd = SCMD14609.New(true)
if scmd.res==1 then
else
ErrorCodeShow(scmd.res)
end
end
--新手激活推送
function FosterController:on14613( )
local scmd = SCMD14613.New(true)
local reward_data = {show_name = "", show_list = {}}
for k,v in pairs(scmd.awards) do
table.insert(reward_data.show_list, {0, v.kdata, v.vdata})
end
self:ShowUpSuccess( scmd.type, scmd.grade, reward_data )
end
-- 进阶装备助战状态查询 - 全量数据
function FosterController:on14614( )
local vo = SCMD14614.New(true)
self.model:SetFosterSuitAssistFlagData(vo)
self:CheckRedDot()
self.model:Fire(FosterConst.UPDATE_FOSTER_ASSIST_FLAG)
end
function FosterController:on14615( )
local vo = SCMD14615.New(true)
self.model:UpdateFosterSuitAssistFlagData(vo)
self.model:CanActivateFosterAssist(true, vo.type)
self:CheckRedDot()
self.model:Fire(FosterConst.UPDATE_FOSTER_ASSIST_FLAG, vo.type, vo.grade)
end
function FosterController:on14616( )
local vo = SCMD14616.New(true)
if vo.errcode == 1 then -- 激活成功
vo.state = 2 -- 成功写死2
self.model:UpdateFosterSuitAssistFlagData(vo)
self.model:CanActivateFosterAssist(true, vo.type)
self:CheckRedDot()
self.model:Fire(FosterConst.UPDATE_FOSTER_ASSIST_FLAG, vo.type, vo.grade)
else
ErrorCodeShow(vo.errcode)
end
end
function FosterController:on14617()
local vo = SCMD14617.New(true)
self.model:SetFosterSubSkinData(vo.type, vo.skins)
self.model:Fire(FosterConst.AnsSubSkinInfo, vo.type, vo.skins)
self:CheckRedDot()
end
function FosterController:on14618()
local vo = SCMD14618.New(true)
if vo.result == 1 then -- 操作成功
self:CheckRedDot()
--激活成功
if vo.star == 1 then
self.model:Fire(FosterConst.ReqSubSkinChange, vo.type, vo.id, vo.star)
end
self.model:Fire(FosterConst.ReqSubSkinInfo, vo.type)
self.model:Fire(FosterConst.OPEN_SUCCESS_VIEW, vo.type, vo.id, vo.star)
else
ErrorCodeShow(vo.result)
end
self.model:Fire(FosterConst.AnsSubSkinActiveOrUpGrade, vo)
end
function FosterController:on14619()
local vo = SCMD14619.New(true)
if vo.result == 1 then -- 操作成功
-- self:CheckRedDot()
self.model:Fire(FosterConst.ReqSubSkinInfo, vo.type)
else
ErrorCodeShow(vo.result)
end
self.model:Fire(FosterConst.AnsSubSkinChange, vo)
end
function FosterController:on14620()
local vo = SCMD14620.New(true)
if vo.result == 1 then -- 使用材料成功
self:CheckRedDot()
elseif vo.result ~= 1003 then
ErrorCodeShow(vo.result)
end
self.model:Fire(FosterConst.AnsSubUpgrade, vo.result, vo.type, vo.material_type, vo.lv, vo.exp)
end
function FosterController:on14621()
local vo = SCMD14621.New(true)
self.model:Fire(FosterConst.ReqBasicInfo, vo.type)
end
-------------------------
--进阶消耗材料变更
function FosterController:UpGradeGoodsChange( )
for k,v in pairs(FosterConst.ModuleId) do
if GetModuleIsOpen(146,v) then
self.model:CanUpgrade(true,v)
end
end
self:CheckRedDot()
--贵族培养丹兑换需要检测材料数量变化
SupremeVipModel:getInstance():Fire(SupremeVipConst.UPDATE_TRAIN_DRUG_NUM)
end
--属性丹消耗材料变更
function FosterController:UpKernelGoodsChange( )
for k,v in pairs(FosterConst.ModuleId) do
if GetModuleIsOpen(146,v) then
self.model:CanKernel( true, v )
end
end
self:CheckRedDot()
end
function FosterController:UpHorseEquipChange( )
if GetModuleIsOpen(146,FosterConst.ModuleId.FHorse) then
local bool_i = self.model:CanDressNewEquipWithType(true,FosterConst.ModuleId.FHorse)
local bool_i = self.model:CanDressUpEquipWithType(true,FosterConst.ModuleId.FHorse)
local bool_i = self.model:CanUpEquipWithType( true,FosterConst.ModuleId.FHorse )
self:CheckRedDot()
end
end
function FosterController:SkillGoodsChange( )
for k,v in pairs(FosterConst.ModuleId) do
if GetModuleIsOpen(146,v) then
self.model:CanSkillUpgradeByType( true, v )
end
end
self:CheckRedDot()
end
function FosterController:UpAIEquipChange( )
if GetModuleIsOpen(146,FosterConst.ModuleId.FJarvis) then
self.model:CanDressUpEquipWithType(true,FosterConst.ModuleId.FJarvis)
self.model:CanDressUpEquipWithType(true,FosterConst.ModuleId.FJarvis)
self.model:CanUpEquipWithType( true,FosterConst.ModuleId.FJarvis )
self:CheckRedDot()
end
end
--刷新AI娘SKin红点
function FosterController:UpAISkinChange( )
if GetModuleIsOpen(146,FosterConst.ModuleId.FJarvis) then
self.model:CanSkinActOrUp( true,FosterConst.ModuleId.FJarvis )
self:CheckRedDot()
end
end
--刷新磁炮皮肤红点
function FosterController:UpFGunChange( )
if GetModuleIsOpen(146,FosterConst.ModuleId.FJarvis) then
self.model:CanSkinActOrUp( true,FosterConst.ModuleId.FGun )
self:CheckRedDot()
end
end
--刷新星翼皮肤红点
function FosterController:UpFcloudChange( )
if GetModuleIsOpen(146,FosterConst.ModuleId.FJarvis) then
self.model:CanSkinActOrUp( true,FosterConst.ModuleId.FCloud )
self:CheckRedDot()
end
end
--刷新幻甲SKin红点
function FosterController:UpFArmourChange( )
if GetModuleIsOpen(146,FosterConst.ModuleId.FJarvis) then
self.model:CanSkinActOrUp( true,FosterConst.ModuleId.FArmour )
self:CheckRedDot()
end
end
function FosterController:CheckRedDot( )
local function call_backack( )
local list = {
[1] = {
FosterConst.ModuleId.FHorse, FosterConst.ModuleId.FWing,
FosterConst.ModuleId.FPearl, FosterConst.ModuleId.FWeapon,
},
[2] = {
FosterConst.ModuleId.FJarvis, FosterConst.ModuleId.FGun,
FosterConst.ModuleId.FCloud, FosterConst.ModuleId.FArmour,
}
}
local bool_1,bool_2 = false,false
for k,v in pairs(list[1]) do
if GetModuleIsOpen(146,v) then
bool_1 = bool_1 or self.model:CheckRedDot( false,v )
end
end
for k,v in pairs(list[2]) do
if GetModuleIsOpen(146,v) then
bool_2 = bool_2 or self.model:CheckRedDot( false,v )
end
end
GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 146, bool_1)
GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 146555, bool_2)
-------------------------
self.model:Fire(FosterConst.RedDotRefresh)
self.model:CheckBlessClock( )--祝福值清空提示机制
end
TimeManager.GetInstance():StartTime("FosterController_CheckRedDot", 0.5, call_backack)
end
function FosterController:ShowUpSuccess( type_id, grade, reward_data )
local function call_up_success( )
if (not type_id) or (not grade) then return end
local cur_data = self.model:GetBaseConfOne( type_id, grade, 0 )
if not cur_data then return end
local attr_new = stringtotable(cur_data.attrs)
local data = {}
data.extra_type_id = type_id
data.extra_grade = grade
data.close_time = 10
data.big_title_effect = {
{res = "ui_jinjiechenggong01"},
{res = "ui_jinjiechenggong02"},
}
data.grade_change = {
old_grade = string.format("%s阶",grade-1),
new_grade = string.format("%s阶",grade),
old_star = grade - 1,
new_star = grade,
max_star_old = 0,--self.model:GetCurMaxStar( type_id,grade - 1 ),
max_star_new = 0,--self.model:GetCurMaxStar( type_id,grade ),
}
data.model_info = {
model_type = FosterConst.ModelMatch[type_id],
model_id = cur_data.resource,
name = Trim(cur_data.name),
name_des = string.format("%s阶",grade)
}
-------------------------
data.special_attr = {}
for i=#attr_new,1,-1 do
if WordManager:GetAttrIsSpecial(attr_new[i][1]) then
table.insert(data.special_attr, table.remove(attr_new,i))
end
end
-------------------------
if grade == 1 then
data.power_data = {
new_power = GetFighting(attr_new),
change_power = 0,
}
data.attr_data = {
title_name = string.format("%s属性",FosterConst.ModelName[type_id]),
attr_old = attr_new,
attr_new = {},
}
else
local attr_old = stringtotable(self.model:GetBaseConfOne( type_id, grade-1, self.model:GetCurMaxStar( type_id,grade-1 ) ).attrs)
-------------------------
--把特殊属性删掉
for i=#attr_old,1,-1 do
if WordManager:GetAttrIsSpecial(attr_old[i][1]) then
table.remove(attr_old,i)
end
end
-------------------------
data.power_data = {
new_power = GetFighting(attr_new),
change_power = GetFighting(attr_new) - GetFighting(attr_old),
}
data.attr_data = {
title_name = string.format("%s属性",FosterConst.ModelName[type_id]),
attr_old = attr_old,
attr_new = attr_new,
}
--特殊指定的奖励数据
if reward_data then
data.reward_data = reward_data
data.reward_data.show_name = Trim(cur_data.name)
else
data.reward_data = {
show_list = stringtotable(cur_data.award)
}
end
end
-------------------------
data.attr_data.pos_type = #data.special_attr == 0 and "default" or "foster"
-------------------------
if self.FosterSkillTips then
self.FosterSkillTips:Close()
end
GlobalEventSystem:Fire(EventName.OPEN_UPGRADE_SHOW_VIEW,data)
end
if self.model.wait_new_func_open then
self.wait_show_up_success_call = call_up_success
else
call_up_success()
self.wait_show_up_success_call = false
end
end
--时装(这里就不触发更改,只调整数据)
function FosterController:ChangeRoleFashionInfo(scmd, role_id)
local role_vo = SceneManager.Instance:GetRoleVo(role_id)
local role = Scene.Instance:GetRole(role_id)
if not role_vo then return end
local exchange_type_id = scmd.type_id
--如果不是武器或者翅膀就不处理
if not (FashionModel.FashionType.WING == exchange_type_id or FashionModel.FashionType.WEAPON == exchange_type_id) then return end
--时装的类型和进阶的类型进行转换
if exchange_type_id == FashionModel.FashionType.WING then
exchange_type_id = FosterConst.ModuleId.FWing
elseif exchange_type_id == FashionModel.FashionType.WEAPON then
exchange_type_id = FosterConst.ModuleId.FWeapon
end
--这里要把别的系统的数据清理掉 开始
for k,v in pairs(role_vo.foster_sub_skin_list) do
if v.type_id == exchange_type_id then
v.skin_id = 0
v.star = 0
break
end
end
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == exchange_type_id then
v.sub_id = 0
v.star = 0
v.skin_id = 0
break
end
end
--这里要把别的系统的数据清理掉 结束
end
--皮肤变更
function FosterController:ChangeRoleForsterSunSkinInfo(scmd, role_id)
local role_vo = SceneManager.Instance:GetRoleVo(role_id)
local role = Scene.Instance:GetRole(role_id)
if not role_vo then return end
role_vo.foster_sub_skin_list = role_vo.foster_sub_skin_list or {}
local is_have = false
for k,v in pairs(role_vo.foster_sub_skin_list) do
if v.type_id == scmd.type_id then
v.skin_id = scmd.skin_id
v.star = scmd.star
is_have = true
break
end
end
if not is_have then
table.insert(role_vo.foster_sub_skin_list, {type_id = scmd.type_id, skin_id = scmd.skin_id, star=scmd.star})
end
--这里要把别的系统的数据清理掉 开始
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == scmd.type_id then
v.sub_id = 0
v.star = 0
v.skin_id = 0
break
end
end
--这里要把别的系统的数据清理掉 结束
local exchange_type_id = scmd.type_id
local foster_res_id = false
for k,v in pairs(role_vo.foster_list) do
if v.type_id == exchange_type_id then
foster_res_id = self.model:GetModuleResIdByStage(v.type_id,v.stage_id)
end
end
local skin_res_id = false
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == exchange_type_id and v.skin_id > 0 then
skin_res_id = v.skin_id
end
end
local skin_sub_res_id = false
for k,v in pairs(role_vo.foster_sub_skin_list) do
if v.type_id == exchange_type_id and v.skin_id > 0 then
skin_sub_res_id = v.skin_id
end
end
if skin_sub_res_id or skin_res_id or foster_res_id then
role_vo:ChangeVar(FosterConst.CHANGE_TAG_LIST[exchange_type_id],skin_sub_res_id or skin_res_id or foster_res_id)
end
end
--珍宝
function FosterController:ChangeRoleForsterInfo( scmd,role_id, is_base_forster)
role_id = role_id or RoleManager.Instance.mainRoleInfo.role_id
local role_vo = SceneManager.Instance:GetRoleVo(role_id)
local role = Scene.Instance:GetRole(role_id)
if not role_vo then return end
if scmd.type > 1000 then
--珍宝的要特殊处理补齐参数哦
if scmd.type - 1000 == FosterConst.ModuleId.FWeapon then
--武器的珍宝需要手动折算2次成资源名
if tonumber(scmd.display[2]) > 0 then
scmd.skin_id = ShapeModel:GetModelRes( scmd.type-1000, tonumber(scmd.display[1]), tonumber(scmd.display[2]) )
scmd.skin_id = GameResPath:GetFWeaponResName( role_vo.career,scmd.skin_id)
else
scmd.skin_id = 0
end
else
scmd.skin_id = ShapeModel:GetModelRes( scmd.type-1000, tonumber(scmd.display[1]), tonumber(scmd.display[2]) )
end
scmd.sub_id = tonumber(scmd.display[1])
scmd.star = tonumber(scmd.display[2])
end
local function foster_have_change( type_id )
local have = false
for k,v in pairs(role_vo.foster_list) do
if v.type_id == type_id then
v.stage_id = scmd.display
have = true
break
end
end
return have
end
local function shape_have_change( type_id )
local have = false
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == type_id then
v.sub_id = scmd.sub_id
v.star = scmd.star
v.skin_id = scmd.skin_id
have = true
break
end
end
return have
end
-------------------------
if FosterConst.CHANGE_TAG_LIST[scmd.type] or FosterConst.CHANGE_TAG_LIST[scmd.type-1000] then
if scmd.type < 1000 then
--进阶普通的要换算
local have = foster_have_change(scmd.type)
if not have then
table.insert( role_vo.foster_list, {type_id = scmd.type,stage_id = scmd.display} )
end
else
--珍宝的直接就是资源id
local have = shape_have_change(scmd.type - 1000)
if not have then
table.insert( role_vo.foster_skin_list, {type_id = scmd.type,skin_id = scmd.skin_id,sub_id = scmd.sub_id,star = scmd.star} )
end
end
-------------------------
local exchange_type_id = (scmd.type > 1000) and (scmd.type - 1000) or scmd.type
--这里要把别的系统的数据清理掉 开始
for k,v in pairs(role_vo.foster_sub_skin_list) do
if v.type_id == exchange_type_id then
v.skin_id = 0
v.star = 0
break
end
end
if is_base_forster then
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == exchange_type_id then
v.sub_id = 0
v.star = 0
v.skin_id = 0
break
end
end
end
--这里要把别的系统的数据清理掉 结束
local foster_res_id = false
for k,v in pairs(role_vo.foster_list) do
if v.type_id == exchange_type_id then
foster_res_id = self.model:GetModuleResIdByStage(v.type_id,v.stage_id)
end
end
local skin_res_id = false
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == exchange_type_id and v.skin_id > 0 then
skin_res_id = v.skin_id
end
end
local skin_sub_res_id = false
for k,v in pairs(role_vo.foster_sub_skin_list) do
if v.type_id == exchange_type_id and v.skin_id > 0 then
skin_sub_res_id = v.skin_id
end
end
if skin_sub_res_id or skin_res_id or foster_res_id then
role_vo:ChangeVar(FosterConst.CHANGE_TAG_LIST[exchange_type_id],skin_sub_res_id or skin_res_id or foster_res_id)
end
elseif scmd.type == 1000 + FosterConst.ModuleId.FWeapon then
--武器珍宝
local res_id = scmd.skin_id
local have = false
for k,v in pairs(role_vo.foster_skin_list) do
if v.type_id == FosterConst.ModuleId.FWeapon then
v.skin_id = res_id
have = true
break
end
end
if not have then
table.insert( role_vo.foster_skin_list, {type_id = FosterConst.ModuleId.FWeapon,skin_id = scmd.skin_id,sub_id = scmd.sub_id,star = scmd.star} )
end
-------------------------
if role then
role:ChangeWeapon( )
end
elseif scmd.type == FosterConst.ModuleId.FWeapon then
local have_add = false
for k,v in pairs(role_vo.level_model_list) do
if v.part_pos == FashionPartPos.Weapon then
v.level_model_id = GameResPath:GetFWeaponResName( role_vo.career,self.model:GetModuleResIdByStage(scmd.type,scmd.display) )
have_add = true
end
end
if not have_add then
table.insert( role_vo.level_model_list, {part_pos = FashionPartPos.Weapon,level_model_id = scmd.display} )
end
if role then
role:ChangeWeapon( )
end
end
end