源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

409 lines
13 KiB

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