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

409 行
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