local JoinGroupView = import('.JoinGroupView') local GroupSettingView = import('.GroupSettingView') local CreateGroupView = import('.CreateGroupView') local GroupInfoView = import('.GroupInfoView') local PhoneBindView = import("Game.View.Lobby.PhoneBindView") local GroupMainView = {} local M = GroupMainView function GroupMainView.new(main_view, root_view, par_veiw) ---- print(debug.traceback()) local self = setmetatable({}, { __index = M }) self.class = 'GroupMainView' UIPackage.AddPackage('base/newgroup/ui/NewGroup') self._view = main_view self._root_view = root_view self._par_veiw = par_veiw self:InitView() return self end function M:InitView(url) ---- print(url) -- BlurView(self._view:GetChild("bg"),true) if DataManager.SelfUser.agent > 0 then self._view:GetController('agent').selectedIndex = 1 end -- local btn_close = self._view:GetChild("btn_close") -- btn_close.onClick:Set(function() -- self:Destroy() -- end) local fgCtr = ControllerManager.GetController(NewGroupController) local btn_creategroup = self._view:GetChild('btn_creategroup') btn_creategroup.onClick:Set(function() local cgv = CreateGroupView.new(self._root_view) cgv:Show() cgv:SetCallback(function(name, pay_type, fg_type) ViewUtil.ShowModalWait(cgv._root_view) fgCtr:FG_CreateGroup(name, pay_type, fg_type, function(res) ViewUtil.CloseModalWait() if self._is_destroy then return end if res.ReturnCode == 0 then cgv:Destroy() self:FillData() else ViewUtil.ErrorTip(res.ReturnCode, '创建大联盟失败!') end end) end) end) self.btn_joingroup = self._par_veiw:GetChild('btn_join_group') self.btn_joingroup.displayObject.gameObject:SetActive(false) --[[self.btn_joingroup.onClick:Set(function() local groups = DataManager.groups.groupList if #groups == 0 then local jgv = JoinGroupView.new(self._root_view) jgv:Show() else local info = GroupInfoView.new(groups[1], self.fg_info) self._groupInfoView = info info:SetCallBack(function() self._groupInfoView = nil self:Show() self._view.visible = true end) info:Show() self._view.visible = false end if not DataManager.SelfUser.phone then --local phone_view = PhoneBindView.new() --phone_view:Show() -- return end end)--]] -- local btn_setting = self._view:GetChild('btn_setting') -- btn_setting.onClick:Set( -- function() -- local gsv = GroupSettingView.new(self._root_view) -- gsv:FillData() -- gsv:SetCallback( -- function() -- self:FillData() -- end -- ) -- gsv:Show() -- end -- ) local btn_refresh = self._view:GetChild('btn_refresh') btn_refresh.onClick:Set(function() ViewUtil.ShowModalWait(self._root_view) fgCtr:FG_GroupList(function(res) ViewUtil.CloseModalWait() if self._is_destroy then return end if res.ReturnCode == 0 then -- self:__fillTopGroups(res.Data.groups,res.Data.stickGroups) self:FillData(res.Data.groups) end end) end) local lst_group = self._view:GetChild('lst_group') lst_group.onClickItem:Add(function(context) local curGroup = context.data.data local info = GroupInfoView.new(curGroup, self.fg_info) self._groupInfoView = info info:SetCallBack(function() self._groupInfoView = nil self:Show() self._view.visible = true end) --info:Show() --self._view.visible = false end) local ctr_empty_group = self._view:GetController('empty_group') ctr_empty_group.selectedIndex = 1 local btn_close = self._view:GetChild("btn_close") btn_close.onClick:Set(function() self._view.visible = false end) end function M:DEnterGroup() local groups = DataManager.groups.groupList if #groups == 0 then --local jgv = JoinGroupView.new(self._root_view) --jgv:Show() else local info = GroupInfoView.new(groups[1], self.fg_info) self._groupInfoView = info info:SetCallBack(function() self._groupInfoView = nil self:Show() self._view.visible = true end) --info:Show() --self._view.visible = false end end local function SortGroups(a, b) local sort_a = 0 local sort_b = 0 sort_a = a.top and 2000 or 0 sort_b = b.top and 2000 or 0 return sort_a > sort_b end function M:__fill_item(item, group) item:GetChild('tex_name').emojies = EmojiDitc.EmojiesDitc item:GetChild('tex_name').text = Utils.TextOmit(group.name, 6, "...") item:GetChild('tex_id').text = "ID:" .. group.id local p_num = group.total_member_num item:GetChild('tex_p_num').text = p_num > 99 and '99+' or p_num if group.lev < 3 then if group.lev == 1 then item:GetChild('tex_room_num').text = group.room_num else item:GetChild('tex_room_num').text = group.room_num > 99 and '99+' or group.room_num end else if group.show_num > 0 and group.room_num > group.show_num then item:GetChild('tex_room_num').text = group.show_num > 99 and '99+' or group.show_num --group.show_num else item:GetChild('tex_room_num').text = group.room_num > 99 and '99+' or group.room_num end end local btn_head = item:GetChild('btn_head') btn_head.icon = 'ui://Common/Head0' ImageLoad.Load(group.o_portrait, btn_head._iconObject, self.class) end function M:FillData() local groups = DataManager.groups.groupList -- 读取牌友圈信息 local filename = 'fginfo_' .. DataManager.SelfUser.account_id local json_data = Utils.LoadLocalFile(filename) local fg_info = not json_data and {} or json.decode(json_data) local fg_info_changed = not json_data and true or (table.nums(fg_info) ~= #groups and true or false) local new_info = {} for i = 1, #groups do local key = tostring(groups[i].id) local key1 = tostring(groups[i].id) .. "vip" if not fg_info[key] then new_info[key] = 0 if not fg_info_changed then fg_info_changed = true end else new_info[key] = fg_info[key] end if not fg_info[key1] then new_info[key1] = 0 else new_info[key1] = fg_info[key1] end end self.fg_info = new_info if fg_info_changed and table.nums(new_info) > 0 then Utils.SaveLocalFile(filename, json.encode(new_info)) end local ctr_empty_group = self._view:GetController('empty_group') if #groups == 0 then self.btn_joingroup:GetController("info").selectedIndex = 0 ctr_empty_group.selectedIndex = 1 return else self.btn_joingroup:GetController("info").selectedIndex = 1 ctr_empty_group.selectedIndex = 0 self:__fill_item(self.btn_joingroup, groups[1]) end local lst_group = self._view:GetChild('lst_group') lst_group:RemoveChildrenToPool() for i = 1, #groups do local group = groups[i] local item = lst_group:AddItemFromPool() item.data = group self:__fill_item(item, group) local btn_top = item:GetChild('btn_top') local ctr_select = btn_top:GetController('select') ctr_select.selectedIndex = group.top_time > 0 and 1 or 0 -- item:GetController('select_index').selectedIndex = group.top_time > 0 and 1 or 0 btn_top.onClick:Set(function(context) context:StopPropagation() local fgCtr = ControllerManager.GetController(NewGroupController) ViewUtil.ShowModalWait(self._root_view) fgCtr:FG_TopGroup(group.id, ctr_select.selectedIndex == 0, function(res) ViewUtil.CloseModalWait() if self._is_destroy then return end if res.ReturnCode == 0 then ctr_select.selectedIndex = group.top_time > 0 and 1 or 0 self:FillData() else ViewUtil.ErrorTip(res.ReturnCode, '置顶大联盟失败!') end end) end) end -- end end function M:OnFGChanged(callback) self._onFGChange = callback end function M:EnterGroup(fg_id) local curGroup = DataManager.groups:get(fg_id) local info = GroupInfoView.new(curGroup, self.fg_info) self._groupInfoView = info info:SetCallBack(function() self._groupInfoView = nil self:FillData() self._view.visible = true end) info:Show() --self._view.visible = false end function M:Show(fg_id, callback) local fgCtr1 = ControllerManager.GetController(NewGroupController) fgCtr1:FG_GroupList(function(res) if self._is_destroy then return end if res.ReturnCode == 0 then self:FillData() if fg_id then self:EnterGroup(fg_id) else if callback then callback(0) end end else if callback then callback(-1) end end end) end function M:Destroy() if self._onFGChange then self._onFGChange() end ImageLoad.Clear(self.class) UIPackage.RemovePackage('base/newgroup/ui/NewGroup') local num = PlayerPrefs.GetInt('fgroup_bg') if num == 0 then num = 1 end ResourcesManager.UnLoadGroup('base/newgroup/bg/bg0' .. num) end return M