dezhou_client/lua_probject/base_project/Game/Data/GroupData.lua

284 lines
5.3 KiB
Lua

local M = class("GroupData")
function M:ctor()
self.id = 0
self.name = ""
-- 盟主ID
self.owner = 0
--盟主昵称
self.o_nick = ""
--盟主头像
self.o_portrait = ""
--自己在圈子的职位
self.lev = 3
self.top_time = 0
--已获取成员数
self.member_num = 0
-- 总成员数
self.total_member_num = 0
--圈子房间数
self.room_num = 0
-- 1普通圈子2大联盟
self.type = 1
-- 1是房主支付2AA支付
self.pay_type = 1
--成员列表
self.members = {}
self.memberMap = {}
--房间列表
self.rooms = {}
--默认房间列表
self.default_rooms = {}
--玩法列表
self.playList = {}
--加圈子申请数
self.joins = 0
--自动解散
self.dissolve_opt = 1
--占座踢出
self.kick_opt = 1
--玩家申请
self.apply = 0
--盟主钻石
self.diamo = 0
--隐藏功能
self.hide_action = 0
--是否开启全民推广
self.promote = false
end
-- 添加成员
function M:addMember(member)
local _tem = self.memberMap[member.uid]
if _tem then
for k, v in pairs(member) do
_tem[k] = v
end
else
self.memberMap[member.uid] = member
self.members[#self.members + 1] = member
self.member_num = #self.members
end
end
-- 删除成员
function M:delMember(id)
local _tem = self.memberMap[id]
if _tem then
self.memberMap[id] = nil
for i=1,#self.members do
local member = self.members[i]
if member.uid == id then
table.remove(self.members,i)
break
end
end
self.member_num = #self.members
end
end
function M:clearMember()
self.members = {}
self.memberMap = {}
self.member_num = 0
end
function M:getMember(id)
return self.memberMap[id]
end
-- 添加房间
function M:addRoom(room)
local pid = room.pid
local play = self:getPlay(pid)
print("jefe addRoom")
if not play then return end
for i=1,#self.rooms do
local tem = self.rooms[i]
if room.id == tem.id then
self.rooms[i] = room
for j = 1, #play.rooms do
if room.id == play.rooms[j].id then
play.rooms[j] = room
return
end
end
return
end
end
self.rooms[#self.rooms+1] = room
-- 把房间加入对应的玩法下的列表
play.rooms[#play.rooms + 1] = room
end
-- 删除房间
function M:delRoom(id)
local pid = 0
for i=1,#self.rooms do
local room = self.rooms[i]
if room.id == id then
pid = room.pid
table.remove(self.rooms,i)
break
end
end
if pid == 0 then return end
local play = self:getPlay(pid)
if not play then return end
for i = 1, #play.rooms do
local room = play.rooms[i]
if room.id == id then
table.remove(play.rooms, i)
break
end
end
end
-- 添加玩法
function M:addPlay(play)
--printlog("添加玩法addPlay===>>>")
--pt(play)
local maxRound=0
if play.maxRound then
maxRound=play.maxRound
else
local hpdata = json.decode(play.hpData)
maxRound=hpdata.maxRound
end
local pnum = play.maxPlayers
local room = {maxPlayers = pnum, status = -1, default = true, pid = play.id,times=maxRound}
play.rooms = {}
local index = self:getPlayIndex(play.id)
if index ~= -1 then
self.playList[index] = play
self.default_rooms[index] = room
return
end
self.playList[#self.playList + 1] = play
-- 房间列表中,给每个玩法添加一个对应的空房间
self.default_rooms[#self.default_rooms + 1] = room
--self.playList=self:SortPlay(self.playList)
--pt(self.playList)
--self.default_rooms=self:SortDefaultPlay(self.default_rooms)
end
function M:SortPlay(list)
local singlePlayList={}
local otherPlayList={}
for i=1,#list do
local hpdata=json.decode(list[i].hpData)
if hpdata.maxRound and hpdata.maxRound==1 then
table.insert(singlePlayList,list[i])
else
table.insert(otherPlayList,list[i])
end
end
for i=1,#otherPlayList do
table.insert(singlePlayList,otherPlayList[i])
end
return singlePlayList
end
function M:SortDefaultPlay(list)
local singlePlayList={}
local otherPlayList={}
for i=1,#list do
if list[i].times and list[i].times==1 then
table.insert(singlePlayList,list[i])
else
table.insert(otherPlayList,list[i])
end
end
for i=1,#otherPlayList do
table.insert(singlePlayList,otherPlayList[i])
end
return singlePlayList
end
-- 删除玩法
function M:delPlay(pid)
local index = self:getPlayIndex(pid)
if index ~= -1 then
table.remove(self.playList,index)
table.remove(self.default_rooms, index)
return true
end
return false
end
-- 禁止玩法
function M:banPlay(pid, ban)
local play = self:getPlay(pid)
--printlog("禁止玩法===>>>")
--pt(play)
play.ban = ban
end
-- 标记玩法
function M:markPlay(pid, ban)
local play = self:getPlay(pid)
--printlog("标记玩法===>>>")
play.mark = ban
--pt(play)
end
function M:getPlay(pid)
local index = self:getPlayIndex(pid)
if index ~= -1 then
return self.playList[index]
end
return nil
end
function M:getPlayName(pid)
local index = self:getPlayIndex(pid)
if index ~= -1 then
return self.playList[index].name
end
return "已删除"
end
function M:getPlayIndex(pid)
for i=1,#self.playList do
local tem = self.playList[i]
if tem.id == pid then
return i
end
end
return -1
end
function M:clearPlay()
self.playList = {}
self.rooms = {}
self.default_rooms={}
for i = 1, #self.playList do
self.playList[i].rooms = {}
end
end
function M:clear()
self.playList = {}
self.members = {}
self.memberMap = {}
self.rooms = {}
self.default_rooms = {}
end
return M