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