require("game.bag.AllAdditionView") require("game.bag.EquipItem") require("game.newMainRole.NewMainRoleView") require("game.newMainRole.NewMainRoleModel") require("game.newMainRole.roleAttribute.RoleAttributeModel") require("game.newMainRole.roleAttribute.RoleAttributeView") -- require("game.newMainRole.roleAttribute.RoleAttrInstructionView") -- require("game.newMainRole.roleAttribute.RoleAttrItem") -- require("game.newMainRole.roleAttribute.RoleAttrDesItem") require("game.newMainRole.roleAttribute.RolePropertyItem") require("game.newMainRole.roleAttribute.RolePropTips") require("game.newMainRole.WorldLevelView") require("game.newMainRole.SelectSysRoleHeadView") require("game.newMainRole.RoleHeadShowItem") -- require("game.newMainRole.RoleHeadTips") require("game.newMainRole.roleAttribute.RolePropertyTop") require("game.newMainRole.AttrDetailView") -- 属性详细介绍界面 require("game.newMainRole.NewMainRoleHatredView") -- 善恶值界面 NewMainRoleController = NewMainRoleController or BaseClass(BaseController) function NewMainRoleController:__init() NewMainRoleController.Instance = self self.model = NewMainRoleModel:getInstance() self.mainVo = RoleManager.Instance.mainRoleInfo self.test_pattern = false self:RegisterAllProtocals() self:AddAllEvents() end function NewMainRoleController:RegisterAllProtocals() self:RegisterProtocal(13013, "handler13013") --请求玩家figure self:RegisterProtocal(13014, "handler13014") self:RegisterProtocal(13085, "handler13085") --头像广播 self:RegisterProtocal(13045, "Handler13045") --转职 self:RegisterProtocal(13046, "Handler13046") --转职时间 -- self:RegisterProtocal(13082, "handler13082")--检测是否可上传头像 -- self:RegisterProtocal(13083, "handler13083")--上传头像 -- self:RegisterProtocal(13086, "handler13086")--上传头像 self:RegisterProtocal(13087, "handler13087") -- 登录相关时间查询协议 self:RegisterProtocal(13088, "handler13088") -- 查询角色头像信息 self:RegisterProtocal(13089, "handler13089") -- 激活头像 self:RegisterProtocal(13090, "handler13090") -- 更换头像 end function NewMainRoleController:AddAllEvents() local function onGameStart() -- 请求登录时间信息 self:SendFmtToGame(13087) -- 请求头像信息 self:SendFmtToGame(13088) -- self.model:CheckErrorRoleHead() end GlobalEventSystem:Bind(EventName.GAME_START, onGameStart) -- 头像是否可上传 -- local onCheckRoleHeadForbidState = function() -- self:SendFmtToGame(13082) -- end -- GlobalEventSystem:Bind(EventName.CHECK_ROLE_HEAD_FORBID, onCheckRoleHeadForbidState) -- 头像上传 -- local onRoleHeadUploadSucceed = function() -- self:SendFmtToGame(13083) -- end -- GlobalEventSystem:Bind(EventName.ROLEHEAD_UPLOAD_SUCCEED, onRoleHeadUploadSucceed) -- 本地头像上传 -- local onChangeLocalHead = function(id) -- self:SendFmtToGame(13086, "h", id) -- end -- GlobalEventSystem:Bind(EventName.ROLEHEAD_LOCAL_UPLOAD, onChangeLocalHead) local function OPEN_PROP_TIP(id, val, x, y) do return end if not self.RolePropTips then self.RolePropTips = RolePropTips.New() end self.RolePropTips:Open(id, val, x, y) end RoleAttributeModel:getInstance():Bind(RoleAttributeModel.OPEN_PROP_VIEW, OPEN_PROP_TIP) --绑定打开称号界面的方法 local function onOpenMainRoleView(index,sub_index,value) if self.mainRoleView == nil then self.mainRoleView = NewMainRoleView.New() end if not self.mainRoleView:HasOpen() then self.mainRoleView:Open(index,sub_index,value) else self.mainRoleView:ReOpen(index,sub_index,value) end end GlobalEventSystem:Bind(EventName.OPEN_NEW_MAIN_ROLE_VIEW, onOpenMainRoleView) local function close_mianrole_view() if self.mainRoleView and self.mainRoleView:HasOpen() then self.mainRoleView:Close() end end GlobalEventSystem:Bind(EventName.CLOSE_NEW_MAIN_ROLE_VIEW, close_mianrole_view) local function onOpenAllAdditionView(type) if self.AllAdditionView == nil then self.AllAdditionView = AllAdditionView.New() end self.AllAdditionView:Open(type) end self.model:Bind(NewMainRoleModel.OPEN_ALL_ADDITION_VIEW, onOpenAllAdditionView) local function open_attr_detail_view(type) if not self.attr_detail_view then self.attr_detail_view = AttrDetailView.New() end self.attr_detail_view:Open(type) end RoleAttributeModel:getInstance():Bind(RoleAttributeModel.OPEN_ATTR_DETAIL_VIEW, open_attr_detail_view) local function open_hatred_view(force_close) if force_close then if self.hatred_view == nil then return end if self.hatred_view:HasOpen() then self.hatred_view:Close() end return end if not self.hatred_view then self.hatred_view = NewMainRoleHatredView.New() end self.hatred_view:Open() end self.model:Bind(NewMainRoleModel.OPEN_HATRED_VIEW, open_hatred_view) local function sent_turn_career_protocal(...) local args = {...} if args[1] == 13045 then self:SendFmtToGame(args[1], "cc", args[2], args[3]) elseif args[1] == 13046 then self:SendFmtToGame(args[1]) end end self.model:Bind(NewMainRoleModel.SEND_TURN_CAREER_PROTOCAL, sent_turn_career_protocal) local function onRequestOtherInfo(unique_server_id, role_id, module_id) if unique_server_id and role_id and module_id then self:SendFmtToGame(13013, "hlh", unique_server_id, role_id, module_id) end end self.model:Bind(NewMainRoleModel.REQUEST_OTHER_PLAYER_INFO, onRequestOtherInfo) local function onRequestWorldLevel() self:SendFmtToGame(13011) end self.model:Bind(NewMainRoleModel.RequestWorldLevel, onRequestWorldLevel) local function onOpenWorldLevelView() if self.worldLevelView == nil then self.worldLevelView = WorldLevelView.New() end if not self.worldLevelView:HasOpen() then self.worldLevelView:Open() end end GlobalEventSystem:Bind(EventName.OPEN_WORLD_LEVEL_VIEW, onOpenWorldLevelView) local function onCloseWorldLevelView() if self.worldLevelView then self.worldLevelView:Close() self.worldLevelView = nil end end GlobalEventSystem:Bind(EventName.CLOSE_WORLD_LEVEL_VIEW, onCloseWorldLevelView) local function onGameStart() -- if self.test_pattern then -- if not self.game_start_set then -- local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.TEST_DETECT_PLAYER_ATTR) -- if not data then -- data = {} -- end -- local vo = { -- start_time = os.date("%c", os.time()), -- role_id = self.mainVo.role_id, -- role_name = self.mainVo.name, -- read_time = os.date("%c", os.time()), -- role_lv = self.mainVo.level, -- attr_list = self:SetRoleAttrList(), -- } -- table.insert(data, vo) -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.TEST_DETECT_PLAYER_ATTR, data) -- self.game_start_set = true -- end -- end end GlobalEventSystem:Bind(SceneManager.START, onGameStart) local function update_red_dot_by_tab_id_func( tab_id )--主要的更新红点方法 if not tab_id then self.model:IsNeedRedAll() else self.model:IsNeedRed(tab_id) end local red_dot = self.model:GetAllRedDot() local bool = false for i,v in pairs(red_dot) do if v then bool = true break end end GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 130, bool) end self.model:Bind(NewMainRoleModel.UPDATE_RED_DOT,update_red_dot_by_tab_id_func) -- 查询玩家已激活的头像信息 local function onRequestRoleHeadInfo() self:SendFmtToGame(13088) end GlobalEventSystem:Bind(EventName.REQ_ROLE_HEAD_INFO, onRequestRoleHeadInfo) -- 请求激活目标头像 local function onActivateRoleHead(photo_id) if not photo_id then return end self:SendFmtToGame(13089, "i", photo_id) end GlobalEventSystem:Bind(EventName.REQ_ACTIVATE_ROLEHEAD, onActivateRoleHead) -- 请求切换玩家头像 local function onChangeRoleHead(photo_id) if not photo_id then return end self:SendFmtToGame(13090, "i", photo_id) end GlobalEventSystem:Bind(EventName.REQ_CHANGE_ROLEHEAD, onChangeRoleHead) -- local function onChangeAttr() -- if self.test_pattern then -- if self.game_start_set then -- local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.TEST_DETECT_PLAYER_ATTR) -- if not data then -- data = {} -- end -- local vo = { -- start_time = 0, -- role_id = self.mainVo.role_id, -- role_name = self.mainVo.name, -- read_time = os.date("%c", os.time()), -- role_lv = self.mainVo.level, -- attr_list = self:SetRoleAttrList(), -- } -- table.insert(data, vo) -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.TEST_DETECT_PLAYER_ATTR, data) -- end -- end -- end -- for k, v in pairs(Config.ConfigItemAttr.TestAttr) do -- 以下是数值策划测试所用 -- self.mainVo:BindOne(v.attr_str, onChangeAttr) -- end end -- function NewMainRoleController:SetRoleAttrList() -- local list = {} -- for k, v in pairs(Config.ConfigItemAttr.TestAttr) do -- if v then -- local vo = {name = Config.ConfigItemAttr.Normal[v.id].name, attr_val = self.mainVo[v.attr_str]} -- table.insert(list, vo) -- end -- end -- return list -- end function NewMainRoleController:handler13013() local vo = {} vo.server_id = UserMsgAdapter.ReadFmt("h") vo.role_id = UserMsgAdapter.ReadFmt("l") vo.module_id = UserMsgAdapter.ReadFmt("h") vo.fighting = UserMsgAdapter.ReadFmt("i") FigureProtoVo.ReadFmt(vo) vo.server_name = UserMsgAdapter.ReadFmt("s") self.model:SetRoleFigure(vo) self.model:Fire(NewMainRoleModel.REQUEST_OTHER_PLAYER_INFO, vo, vo.module_id) end function NewMainRoleController:handler13014() self.model.other_guild_chief_vo = {} self.model.other_guild_chief_vo.server_id = UserMsgAdapter.ReadFmt("h") self.model.other_guild_chief_vo.guild_id = UserMsgAdapter.ReadFmt("l") self.model.other_guild_chief_vo.module_id = UserMsgAdapter.ReadFmt("h") self.model.other_guild_chief_vo.role_id = UserMsgAdapter.ReadFmt("l") -- self.model.other_guild_chief_vo.fighting = UserMsgAdapter.ReadFmt("i") FigureProtoVo.ReadFmt(self.model.other_guild_chief_vo) -- self.model.other_guild_chief_vo.server_name = UserMsgAdapter.ReadFmt("s") self.model:Fire(NewMainRoleModel.REQUEST_OTHER_PLAYER_INFO, self.model.other_guild_chief_vo, self.model.other_guild_chief_vo.module_id) end function NewMainRoleController:handler13085() local role_id, img_str, img_ver = self:ReadFmt("lsi") local role_vo = SceneManager.Instance:GetRoleVo(role_id) if role_vo then role_vo:ChangeVar("picture_ver", img_ver) role_vo:ChangeVar("picture", img_str) end GlobalEventSystem:Fire(EventName.MAINROLEHEAD_DATA_CHANGE, self.mainVo.role_id) end function NewMainRoleController:Handler13045() local error, str, career, sex = self:ReadFmt("iscc") if error == 1 then self.model:Fire(NewMainRoleModel.SEND_TURN_CAREER_PROTOCAL, 13046) ReincarnationController.Instance:OpenSuccessView(sex, nil, career) --self.model:Fire(MainRoleModel.TURN_CAREER_SUCCESS, career, sex) else ErrorCodeShow(error, str) end end function NewMainRoleController:Handler13046() local time = self:ReadFmt("i") self.model:Fire(MainRoleModel.GET_TURN_CAREER_TIME, time) end function NewMainRoleController:handler13082() local result = self:ReadFmt("c") if result == 1 then self:pickPhoto() elseif result == 2 then Message.show("你已被管理员禁止设置头像") else Message.show("未知原因,请与管理员联系") end end function NewMainRoleController:handler13083() local result, img_ver, img_str = self:ReadFmt("cis") if result == 1 then Message.show("保存头像成功!") RoleManager.Instance.mainRoleInfo:ChangeVar("picture_ver", img_ver) RoleManager.Instance.mainRoleInfo:ChangeVar("picture", img_str) RoleManager.Instance.mainRoleInfo:ChangeVar("profile_photo_id", "") GlobalEventSystem:Fire(EventName.MAINROLEHEAD_DATA_CHANGE, RoleManager.Instance.mainRoleInfo.role_id) elseif result == 2 then Message.show("你已被管理员禁止设置头像") else Message.show("保存头像失败!") end end function NewMainRoleController:handler13086() local result, icon_id = self:ReadFmt("ch") if result == 1 then Message.show("更头像成功!") RoleManager.Instance.mainRoleInfo.picture = ""--:ChangeVar("picture", "") RoleManager.Instance.mainRoleInfo.profile_photo_id = icon_id--:ChangeVar("local_picture_id", icon_id) GlobalEventSystem:Fire(EventName.MAINROLEHEAD_DATA_CHANGE) -- GlobalEventSystem:Fire(EventName.MAINROLEHEAD_LOCAL_DATA_CHANGE, RoleManager.Instance.mainRoleInfo.role_id) elseif result == 2 then Message.show("你已被管理员禁止设置头像") else ErrorCodeShow(result) end end function NewMainRoleController:handler13087( ) -- 请求时服务器时间/上一次登录时间/本次登录时间/上次退出游戏时间 local req_time, last_login_time, cur_login_time, last_quit_time = self:ReadFmt("iiii") self.model:SetRoleLoginTimeData(req_time, last_login_time, cur_login_time, last_quit_time) GlobalEventSystem:Fire(EventName.UPDATE_ROLE_LOGIN_TIME_DATA) end function NewMainRoleController:handler13088( ) --开始构造数据,不要问为什么要这么做,为了要和112装扮模块的协议数据一致 local vo = {} local len0 = self:ReadFmt("h") or 0 vo.dress_type = ChatDressSubType.ROLE_HEAD vo.use_dress_id = RoleManager.Instance.mainRoleInfo.profile_photo_id vo.enable_list = {} for i = 1, len0 do vo.enable_list[i] = { dress_id = self:ReadFmt("i") or 0 } end ChatDressModel:getInstance():UpdateDressData(vo) -- self.model:RefreshRoleHeadRed() WardrobeModel:GetInstance():Fire(WardrobeConst.UPDATE_RED_DOT, WardrobeConst.TabId.DRESS) self.model:Fire(NewMainRoleModel.REFRESH_ROLE_HEAD_ACTIVATE) end function NewMainRoleController:handler13089( ) local result, photo_id = self:ReadFmt("ii") if result == 1 then Message.show("激活成功") -- 更新缓存 local data = { dressup_list = { [1] = { dress_type = ChatDressSubType.ROLE_HEAD, dress_id = photo_id, } } } ChatDressModel:getInstance():UpdataUsingDress(data) local data = { dress_id = photo_id, dress_type = ChatDressSubType.ROLE_HEAD } ChatDressModel:getInstance():UpdataEnableList(data) -- 先自动替换头像 RoleManager.Instance.mainRoleInfo:ChangeVar("profile_photo_id", photo_id) GlobalEventSystem:Fire(EventName.MAINROLEHEAD_DATA_CHANGE) WardrobeModel:GetInstance():Fire(WardrobeConst.UPDATE_RED_DOT, WardrobeConst.TabId.DRESS) else ErrorCodeShow(result) end end function NewMainRoleController:handler13090( ) local result, photo_id = self:ReadFmt("ii") if result == 1 then if RoleManager.Instance.mainRoleInfo.profile_photo_id ~= 0 then -- 过滤掉非法头像切换的飘字 Message.show("替换头像成功") local data = { dressup_list = { [1] = { dress_type = ChatDressSubType.ROLE_HEAD, dress_id = photo_id, } } } ChatDressModel:getInstance():UpdataUsingDress(data) end RoleManager.Instance.mainRoleInfo:ChangeVar("profile_photo_id", photo_id) GlobalEventSystem:Fire(EventName.MAINROLEHEAD_DATA_CHANGE) else ErrorCodeShow(result) end end function NewMainRoleController:pickPhoto() local operate_str = "pickPhoto" local role_info = RoleManager.Instance.mainRoleInfo local new_version = role_info.picture_ver + 1 local file_path, file_name = UtilGetRolePicPath(role_info.role_id, nil, new_version) SDKUtil.CallSDKFunc("PhonePhoto", operate_str, {imagePath = file_path, imageName = file_name, imageWidth = 200, imageHeight = 200}) local no_support_text = PlatformMgr:getInstance():NoSupportPhotoMsg() if no_support_text then local show_func = function() Message.show(no_support_text) end setTimeout(show_func, 1) end end