require("game.nature.NatureModel") require("game.proto.167.Require167") require("game.nature.view.NatureSubView") require("game.nature.NatureSubView") require("game.nature.view.NatureItem") require("game.nature.view.NatureAddPointView") require("game.nature.view.NatureAttrItem") require("game.nature.view.NatureSpotRewardItem") require("game.nature.view.NatureInfoView") require("game.nature.view.NatureTagView") require("game.nature.view.NatureShowTagItem") require("game.nature.view.NatureTagItem") require("game.nature.view.NatureHasSelectTagItem") require("game.nature.view.NatureRewardView") require("game.nature.view.NatureUpgradeView") require("game.nature.view.NatureUpgradeItem") require("game.nature.view.NatureTaskRewardView") require("game.nature.view.NatureTaskRewardItem") require("game.nature.view.NaturePreRewardView") NatureController = NatureController or BaseClass(BaseController, true) local NatureController = NatureController NatureController.IsDebug = true function NatureController:__init() NatureController.Instance = self -- self.model = NatureModel:getInstance() -- self:AddEvents() -- self:RegisterAllProtocal() -- self.first_data_has_set = {} -- self.model:InitEffectFlag( ) end function NatureController:__delete() end function NatureController:RegisterAllProtocal( ) self:RegisterProtocal(16700, "Handle16700") -- 性格总览 self:RegisterProtocal(16701, "Handle16701") -- 性格章节数据 self:RegisterProtocal(16702, "Handle16702") -- 领取性格节点奖励 self:RegisterProtocal(16703, "Handle16703") -- 性格突破 self:RegisterProtocal(16704, "Handle16704") -- 日常任务结算点数 self:RegisterProtocal(16705, "Handle16705") -- 性格标签 self:RegisterProtocal(16706, "Handle16706") -- 替换性格标签 self:RegisterProtocal(16707, "Handle16707") -- 加点 self:RegisterProtocal(16708, "Handle16708") -- 领取章节奖励 self:RegisterProtocal(16709, "Handle16709") -- 点击性格宝箱后飘个字 end function NatureController:AddEvents() local function onRequestHandler(...) local args = {...} if args[1] == 16701 or args[1] == 16708 then self:SendFmtToGame(args[1], "c", args[2]) elseif args[1] == 16702 then self:SendFmtToGame(args[1], "ccc", args[2], args[3], args[4]) elseif args[1] == 16707 then --print('Msh:NatureController.lua[51] data', args[2], args[3], args[4], args[5]) self:SendFmtToGame(args[1], "cccc", args[2], args[3], args[4], args[5]) else self:SendFmtToGame(args[1]) end end self.model:Bind(NatureModel.REQUEST_CCMD_EVENT, onRequestHandler) local function replace_tag( tips_list ) self:WriteBegin(16706) -- logWarn('=======Msh:NatureController.lua[60]=======') -- PrintTable(tips_list) self:WriteFMT("h", #tips_list) for i, v in ipairs(tips_list) do self:WriteFMT("c", v.nature_type) self:WriteFMT("c", v.tip) self:WriteFMT("c", v.show_pos) end self:SendToGame() end self.model:Bind(NatureModel.REPLACE_TAG, replace_tag) -- 打开突破界面 local function open_upgrade_view() if self.upgrade_view == nil then self.upgrade_view = NatureUpgradeView.New() end if self.upgrade_view:HasOpen() then self.upgrade_view:UpdateView() else self.upgrade_view:Open() end end self.model:Bind(NatureModel.OPEN_UPGRADE_VIEW, open_upgrade_view) local function gameStartHandler() self.model:ResetData() local delay = function() -- 拿一下三个章节的数据 self.model:Fire(NatureModel.REQUEST_CCMD_EVENT, 16700) self.model:Fire(NatureModel.REQUEST_CCMD_EVENT, 16701, 1) self.model:Fire(NatureModel.REQUEST_CCMD_EVENT, 16701, 2) self.model:Fire(NatureModel.REQUEST_CCMD_EVENT, 16701, 3) end setTimeout(delay,1) end GlobalEventSystem:Bind(EventName.GAME_START, gameStartHandler) local onOpenNatureTaskRewardView = function (data)--通用奖励结算界面 -- data = { -- award = {{100,230001,1},{100,230001,1},}, -- title_ab_name = "common_asset", -- title_res = "com_award_result_title", -- } GiftModel:getInstance():Fire(GiftModel.CLOSE_NORMAL_VIEW) if self.NatureTaskRewardView == nil then self.NatureTaskRewardView = NatureTaskRewardView.New() end if self.NatureTaskRewardView:HasOpen() then self.NatureTaskRewardView:UpdateView(data) else self.NatureTaskRewardView:Open(data) end end GlobalEventSystem:Bind(NatureModel.OPEN_AWARD_RESULT_VIEW, onOpenNatureTaskRewardView) local function open_tag_view() if self.tag_view == nil then self.tag_view = NatureTagView.New() end if self.tag_view:HasOpen() then self.tag_view:UpdateView() else self.tag_view:Open() end end self.model:Bind(NatureModel.OPEN_TAG_VIEW, open_tag_view) local function open_pre_reward_view( cur_category, nature_type, spot ) if self.pre_reward_view == nil then self.pre_reward_view = NaturePreRewardView.New() end if self.pre_reward_view:HasOpen() then self.pre_reward_view:UpdateView() else self.pre_reward_view:Open(cur_category, nature_type, spot) end end self.model:Bind(NatureModel.OPEN_PRE_REWARD_VIEW, open_pre_reward_view) --[[ local function on_hp_change( ) if RoleManager.Instance.mainRoleInfo.role_id == 8589934620 or --RoleManager.Instance.mainRoleInfo.role_id == 8589934595 or RoleManager.Instance.mainRoleInfo.role_id == 4294968102 then local time = TimeUtil:getServerTime( ) print('Msh:CheatPropertyView.lua[100] data', TimeUtil:timeConversion(time, 'mm-dd hh:MM:ss')) PrintCallStack() print('Msh:CheatPropertyView.lua[101] hp', RoleManager.Instance.mainRoleInfo.hp) end end self.bind_hp_id = RoleManager.Instance.mainRoleInfo:BindOne("hp",on_hp_change)--]] end --[[################# 性格总览 ################## protocol=16700{ c2s{ } s2c{ nature_list:array{ nature_type:int8 // 性格类型 nature_value:int16 // 性格点数 } free_value:int16 // 自由点数 level:int16 // 突破等级 overflow_value:int32 // 溢出自由性格点数 } }--]] function NatureController:Handle16700( ) local scmd = SCMD16700.New(true) --PrintTable(scmd) self.model:SetTotalNatureInfo( scmd ) self.model:Fire(NatureModel.UPDATE_MAIN_VIEW, nil, true) end --[[################# 性格章节数据 ################## protocol=16701{ c2s{ category:int8 // 章节 } s2c{ category:int8 // 章节 branch_list:array{ nature_type:int8 // 性格类型 spot_list:array{ spot:int8 // 节点 light_times:int8 // 点亮次数 reward_status:int8 // 奖励领取状态 } } category_reward_status:int8 // 章节奖励领取状态 } }--]] function NatureController:Handle16701( ) local scmd = SCMD16701.New(true) --PrintTable(scmd) self.model:SetCategoryNatureInfo( scmd ) self.model:Fire(NatureModel.UPDATE_CATEGORY_INFO, scmd.category) self.model:Fire(NatureModel.UPDATE_ADD_POINT_VIEW) self.model:UpdateRedDot( NatureModel.RedDotTpye.GET_REWRAD ) -- if not self.first_data_has_set[scmd.category] then -- 只有第一次数据的更新不需要检查 其他都要检查 -- self.first_data_has_set[scmd.category] = true -- self.model:Fire(NatureModel.UPDATE_CATEGORY_INFO, scmd.category, nil,false) -- else -- self.model:Fire(NatureModel.UPDATE_CATEGORY_INFO, scmd.category, nil,true) -- end if not self.model:IsNeedEffect() then self.first_data_has_set[scmd.category] = true if TableSize(self.first_data_has_set) >= 3 then self.model:SetEffectFlag() end end self.model:Fire(NatureModel.UPDATE_CATEGORY_INFO, scmd.category, nil,false) end --[[################# 领取性格节点奖励 ################## protocol=16702{ c2s{ category:int8 // 章节 nature_type:int8 // 性格类型 spot:int8 // 节点 } s2c{ res:int32 // 错误码 1-成功 其他 category:int8 // 章节 nature_type:int8 // 性格类型 spot:int8 // 节点 rewward_status:int8 // 奖励领取状态 } } --]] function NatureController:Handle16702( ) local scmd = SCMD16702.New(true) if scmd.res == 1 then Message.show("领取奖励成功") self.model:SetSingleCategoryNatureInfo( scmd.category, scmd.nature_type, scmd.spot, scmd.rewward_status ) self.model:Fire(NatureModel.UPDATE_ADD_POINT_VIEW) self.model:UpdateRedDot( NatureModel.RedDotTpye.GET_REWRAD ) else ErrorCodeShow(scmd.res) end end --[[################# 性格突破 ################## protocol=16703{ c2s{ } s2c{ res:int32 // 错误码 1-成功 其他 level:int16 // 性格突破等级 overflow_value:int32 // 溢出自由性格点数 } }]] function NatureController:Handle16703( ) local scmd = SCMD16703.New(true) --PrintTable(tab) if scmd.res == 1 then self.model:SetAfterUpgradeData(scmd) self.model:Fire(NatureModel.SUCCESS_UPGRADE) self.model:Fire(NatureModel.UPDATE_UPGRADE_RED_DOT) else ErrorCodeShow(scmd.res) end end --[[################# 日常任务结算点数 ################## protocol=16704{ s2c{ nature_value:int16 // 性格点数 rand_value:int16 // 随机点数 } }]] function NatureController:Handle16704( ) local scmd = SCMD16704.New(true) self.model:SetTaskNatureValue(scmd) end --[[################# 性格标签 ################## protocol=16705{ c2s{ } s2c{ nature_tips:array{ //拥有标签列表 nature_type:int8 // 性格类型 tips_list:array{ tip:int8 // 性格标签 } } tips_list:array{ //展示标签列表 nature_type:int8 // 性格类型 tip:int8 // 性格标签 show_pos:int8 // 展示顺序 } } }]] function NatureController:Handle16705( ) local scmd = SCMD16705.New(true) -- logWarn('=======Msh:NatureController.lua[214]=======') -- PrintTable(scmd) self.model:SetHasTagData(scmd.nature_tips) self.model:SetShowTagData(scmd.tips_list) self.model:Fire(NatureModel.UPDATE_TAG_VIEW) end --[[################# 替换性格标签 ################## protocol=16706{ c2s{ tips_list:array{ nature_type:int8 // 性格类型 tip:int8 // 性格标签 show_pos:int8 // 展示顺序 } } s2c{ res:int32 // 错误码 1-成功 其他 tips_list:array{ nature_type:int8 // 性格类型 tip:int8 // 性格标签 show_pos:int8 // 展示顺序 } } }]] function NatureController:Handle16706( ) local scmd = SCMD16706.New(true) if scmd.res == 1 then self.model:SetShowTagData(scmd.tips_list) self.model:Fire(NatureModel.UPDATE_TAG_VIEW) if #scmd.tips_list == 0 then Message.show("当前未展示任意标签") else Message.show("成功展示标签") end else ErrorCodeShow(scmd.res) end end --[[################# 性格加点 (同时也会推送16700,16701更新数据)################## protocol=16707{ c2s{ category:int8 // 章节 nature_type:int8 // 性格类型 spot:int8 // 节点 light_times:int16 // 点亮次数 } s2c{ res:int32 // 错误码 1-成功 其他 nature_type:int8 // 性格类型 free_value:int16 // 剩余自由点数 } }--]] function NatureController:Handle16707( ) local scmd = SCMD16707.New(true) if scmd.res == 1 then Message.show("加点成功") self.model:SetFreePoint(scmd.free_value) else ErrorCodeShow(scmd.res) end end --[[################# 章节完成后领取称号 ################## protocol=16708{ c2s{ category:int8 // 章节 } s2c{ res:int32 // 错误码 1-成功 其他 category:int8 // 章节 status:int8 // 章节奖励领取状态 0-未领取 1-已领取 } }--]] function NatureController:Handle16708( ) local scmd = SCMD16708.New(true) if scmd.res == 1 then self.model:UpdateCategoryRewardState(scmd.category, scmd.status) self.model:Fire(NatureModel.UPDATE_NATURE_REWARD_VIEW) self.model:UpdateRedDot( NatureModel.RedDotTpye.GET_REWRAD ) else ErrorCodeShow(scmd.res) end end --[[################# 宝箱怪采集后加点推送 ################## protocol=16709{ s2c{ add_value:int16 // 增加点数 } }--]] function NatureController:Handle16709( ) local scmd = SCMD16709.New(true) Message.show( string.format('自由性格点数 +%s', scmd.add_value) ) end