@@ -0,0 +1,3 @@ | |||||
# tiantian | |||||
天天麻将 |
@@ -0,0 +1,2 @@ | |||||
# game_hongzhong | |||||
@@ -0,0 +1,24 @@ | |||||
local cmd=MJFramework.MJFrameworkClassImprot("mj.luaScript.Protocol.MJCmd") | |||||
cmd.GAME_COMMAND_XIA_PIAO=0x8123 | |||||
cmd.GAME_COMMAND_XIA_PIAO_TIME=0x8124 | |||||
-- cmd.GAME_COMMAND_XIA_PIAO_RESOPNSE=0x8123 | |||||
-- 快速开始 | |||||
cmd.GAME_COMMAND_FAST_START_GAME = 0x8200 | |||||
-- 广播快速开始 | |||||
cmd.GAME_COMMAND_BROAD_FAST_START_GAME = 0x8201 | |||||
-- 快速开始请求返回 | |||||
cmd.GAME_COMMAND_FAST_START_RESULT = 0x8202 | |||||
-- 快速开始成功 | |||||
cmd.GAME_COMMAND_BROAD_QUICKLY_START = 0x8203 | |||||
-- 请求托管 | |||||
cmd.GAME_COMMAND_USER_HOSTING_REQUEST = 0x8127 | |||||
-- 服务器下发过操作,客户端取消按钮,主要用于托管 | |||||
cmd.GAME_COMMAND_USER_PASS = 0x8128 | |||||
-- 请求重连 | |||||
cmd.GAME_COMMAND_GET_TABLE_INFO = 0x802a | |||||
return cmd |
@@ -0,0 +1,315 @@ | |||||
local message=MJFramework.MJFrameworkClassImprot("mj.luaScript.Protocol.MJMessage") | |||||
message.XiaPiao=defClass("XiaPiao" | |||||
-- 飘风 | |||||
, defVar("nPiaoNum", VT_Int, 0) | |||||
) | |||||
message.XiaPiaoResponse=defClass("XiaPiaoResponse" | |||||
-- 用户ID | |||||
, defVar("nUserId", VT_Int, 0) | |||||
-- 飘风 | |||||
, defVar("nPiaoNum", VT_Int, 0) | |||||
) | |||||
--重连回复桌面牌 | |||||
message.RecoverOperateCard = defClass("RecoverOperateCard" | |||||
-- 用户id | |||||
, defVar("nUserId", VT_Int, -1) | |||||
-- 桌面组合牌 | |||||
, defVar("operates", VT_Vector(message.OperateCard1), {}) | |||||
) | |||||
message.XiaPiaoTime=defClass("XiaPiaoTime" | |||||
-- 飘风剩余时间 | |||||
, defVar("nPiaoLeftTime", VT_Int, 0) | |||||
) | |||||
-- 玩家的牌桌信息 | |||||
message.playerInfo = defClass("playerInfo" | |||||
--用户的USER ID | |||||
, defVar("nUserId", VT_Int, 0) | |||||
--用户的TABLE ID | |||||
, defVar("nSeatId", VT_UChar, 0) | |||||
--用户的游戏状态标识 | |||||
, defVar("nPlayerFlag", VT_UChar, 0) | |||||
--玩家解散状态 0:初始状态, 1:发起解散 2: 同意解散 3:不同意解散 | |||||
, defVar("nDisbandStatus", VT_UChar, 255) | |||||
--是否在线 0:离线 1:在线 | |||||
, defVar("nOnlineStatus", VT_UChar, 255) | |||||
--用户信息 | |||||
, defVar("userInfo", VT_String, "") | |||||
--当前局分数 | |||||
, defVar("nTurnScore", VT_String, -1) | |||||
--总分 | |||||
, defVar("nTotalMoney", VT_String, -1) | |||||
--听牌状态,1听牌状态,0不听牌 | |||||
, defVar("nTingStatus", VT_UChar, 0) | |||||
--是否可以操作,用于闹钟 此用户是否可以操作,0:不可以 1: 可以 | |||||
-- , defVar("isCanOperate", VT_UChar, 255) | |||||
-- -- 弃胡玩家弃胡状态 0: 无弃胡 1:待弃胡 2: 已弃胡 (当玩家需要出牌且此值为1时则展示弃胡按钮提示玩家是否弃胡) | |||||
-- , defVar("nQiHuStatus", VT_Short, 0) | |||||
-- 桌面组合牌 | |||||
,defVar("gruoupCards",VT_Vector(message.OperateCard),{}) | |||||
--玩家手牌 | |||||
,defVar("handCards",VT_Vector(message.Card),{}) | |||||
--桌面弃牌 | |||||
,defVar("outCards",VT_Vector(message.Card),{}) | |||||
--飘风 | |||||
-- ,defVar("nPiaoNum", VT_Short, -1) | |||||
) | |||||
-- --断线重连 | |||||
message.GameReconnection = defClass("GameReconnection" | |||||
-- 用户房间号 | |||||
, defVar("gameId", VT_Short, 0) | |||||
-- 用户房间号 | |||||
, defVar("nShowTableId", VT_Int, 0) | |||||
-- 房间最大人数 | |||||
, defVar("nMaxPlayCount", VT_Int, 0) | |||||
-- 用户房主 | |||||
, defVar("nRoomOwnedUid", VT_Int, 0) | |||||
-- 总的局数 | |||||
, defVar("nTotalGameNum", VT_Short, 0) | |||||
--底注 | |||||
, defVar("nBaseChips", VT_Int, 0) | |||||
-- 游戏信息 | |||||
, defVar("strGameInfo", VT_String, "") | |||||
-- 当前局数 | |||||
, defVar("nGameStartCount", VT_Short, 0) | |||||
-- 游戏状态 | |||||
, defVar("nStatus", VT_UChar, 0) | |||||
-- 庄家座位 | |||||
, defVar("nBankSeatId", VT_UChar, 0) | |||||
-- 我的座位 | |||||
, defVar("nMySeatId", VT_UChar, 0) | |||||
-- 是否有人发起解散 | |||||
, defVar("bUserDisbandGame", VT_UChar, 0) | |||||
-- 解散剩余时间,没人发起解散,此值为0 | |||||
, defVar("nDismissStateTime", VT_Int, 0) | |||||
-- | |||||
-- , defVar("userCount", VT_Short, 0) | |||||
-- -- 牌桌信息 | |||||
-- , defVar("usersInfo",VT_Vector()) | |||||
,defVar("playerInfos", VT_VectorToMap(message.playerInfo, "nUserId")) | |||||
-- --剩余的底牌 | |||||
,defVar("leaveCards",VT_Vector(message.Card)) | |||||
--天胡的庄家\翻牌者\出牌者的seatId(可通过状态判断具体的角色) | |||||
,defVar("outCardUserId",VT_Int,0) | |||||
-- --亮出的牌(庄家的天胡的操作状态时showCard == 0) | |||||
-- ,defVar("showCard",VT_UChar,0) | |||||
-- --自己的操作码 | |||||
-- ,defVar("mainOpCode",VT_Short,0) | |||||
-- --是否已经操作过 0表示没用,非0表示已经提交了操作 | |||||
-- ,defVar("isSubmitOp",VT_UChar,255) | |||||
-- -- 摸牌显示 为空操作的玩家是否能够看到牌,0;不能 1:能 | |||||
-- , defVar("showCardFlag", VT_UChar, -1) | |||||
-- --[[ | |||||
-- state: | |||||
-- GAME_STATUS_WAIT_OUT_CARDS | |||||
-- ]] | |||||
--出牌者的seatId | |||||
,defVar("outCardSeatId",VT_UChar,255) | |||||
-- --出牌者上一次的操作 | |||||
-- ,defVar("lastOperate",VT_Short,-1) | |||||
-- --出牌者上一次操作了虾米牌 | |||||
,defVar("lastOpCard",VT_UChar,255) | |||||
--操作列表 | |||||
,defVar("operates",VT_Vector(message.OperateCard),{}) | |||||
--出牌ID | |||||
,defVar("needOutCardId",VT_Int,0) | |||||
--上次出的牌 | |||||
,defVar("lastOutCardId",VT_Int,0) | |||||
--上次出的牌 | |||||
,defVar("lastOutCard",VT_UChar,0) | |||||
-- | |||||
,defVar("stopFlag",VT_UChar,255) | |||||
--结算信息 | |||||
,defVar("strResultInfo",VT_String,"") | |||||
--结算玩家列表 | |||||
,defVar("resultInfos",VT_Vector(message.PlayerResultInfo)) | |||||
--操作统计 | |||||
,defVar("opsCntMapString",VT_String,"") | |||||
--分数统计 | |||||
,defVar("soreCntMapString",VT_String,"") | |||||
--飘风列表 | |||||
,defVar("playerPiaoInfos",VT_Vector(message.XiaPiaoResponse),{}) | |||||
--额外信息 | |||||
,defVar("extJson", VT_String, "") | |||||
--桌面组合牌 | |||||
,defVar("tableGroupCards",VT_Vector(message.RecoverOperateCard)) | |||||
--洗牌消耗数量 | |||||
,defVar("shuffleNum", VT_Int, 2) | |||||
-- --[[ | |||||
-- state: | |||||
-- GAME_STATUS_AUTO_DISCSRD | |||||
-- ]] | |||||
-- --弃牌者的seatId | |||||
-- ,defVar("disCardSeatId",VT_UChar,255) | |||||
-- --要弃的牌(即别人出的牌或翻的牌) | |||||
-- ,defVar("disCard",VT_UChar,255) | |||||
-- --一局结束原因 | |||||
-- ,defVar("stopFlag",VT_UChar,255) | |||||
-- --赢家uid, -1则表示黄局 (对于黄局下面4个字段是无用的) | |||||
-- ,defVar("winUserId",VT_Int,255) | |||||
-- --点炮胡时,表示为点炮用户,赔包子时为吃包子用户,自摸胡时此值无意义 | |||||
-- ,defVar("dianPaoUserId",VT_Int,255) | |||||
-- --胡数 | |||||
-- ,defVar("huShu",VT_UChar,255) | |||||
-- --胡的类型(如地胡、抬炮胡等) | |||||
-- ,defVar("huType",VT_Short,255) | |||||
-- --倍数 | |||||
-- ,defVar("multiNum",VT_UChar,255) | |||||
-- --醒牌 | |||||
-- ,defVar("xingCard",VT_UChar,255) | |||||
-- --醒的倍数 | |||||
-- ,defVar("xingCardNum",VT_UChar,255) | |||||
-- --胡的牌 | |||||
-- ,defVar("huCard",VT_UChar,255) | |||||
-- --听牌张数 | |||||
-- ,defVar("tingCards",VT_Vector(TingCard),{}) | |||||
-- --解散总时间 | |||||
-- ,defVar("nDismissToTalTime",VT_Short,0) | |||||
) | |||||
----------------------------------------------------------- | |||||
-- 快速开始请求 | |||||
--[[ | |||||
FAST_START_REQ_TYPE_START = 1, //请求开始游戏 | |||||
FAST_START_REQ_TYPE_AGREE = 2, //同意开始游戏 | |||||
FAST_START_REQ_TYPE_DISAGREE = 3, //拒绝开始游戏 | |||||
FAST_START_REQ_TYPE_INIT = 4, | |||||
FAST_START_REQ_TYPE_NEW_OR_OUT = 5, //有人进来或者退出 | |||||
FAST_START_REQ_TYPE_TIMEOUT = 6, | |||||
--]] | |||||
message.FastStartRequest = defClass("FastStartRequest" | |||||
, defVar("tp", VT_UChar, 0) | |||||
) | |||||
-- 快速开始请求结果 | |||||
--[[ | |||||
FAST_START_GAME_RET_SUCC = 0, //成功 | |||||
FAST_START_GAME_RET_NOT_ENOUGH = 1, //人数不够 | |||||
FAST_START_GAME_OTHER_REQ = 2, //其他人已请求 | |||||
FAST_START_GAME_RET_ENOUGH = 3, //人数已满 | |||||
FAST_START_GAME_RET_INVALID = 4, //非法操作 | |||||
--]] | |||||
message.FastStartRequestResult = defClass("FastStartRequestResult" | |||||
, defVar("result", VT_Short, -1) | |||||
) | |||||
-- 服务器广播快速开始状态 | |||||
message.FastPlayer = defClass("FastPlayer" | |||||
, defVar("nUserId", VT_Int, 0) | |||||
, defVar("nStatus", VT_UChar, 0) | |||||
) | |||||
message.FastStartStatus = defClass("FastStartStatus" | |||||
, defVar("nUserId", VT_Int, 0) | |||||
, defVar("nStatus", VT_Short, 0) | |||||
, defVar("pList", VT_Vector(message.FastPlayer), {}) | |||||
, defVar("timeOut", VT_Short, 0) | |||||
) | |||||
-- 游戏快速开始 | |||||
message.FastSuccessPlayer = defClass("FastSuccessPlayer" | |||||
, defVar("nUserId", VT_Int, 0) | |||||
, defVar("nSeatId", VT_UChar, 0) | |||||
) | |||||
message.UpdateSeatIds = defClass("UpdateSeatIds" | |||||
, defVar("pList", VT_Vector(message.FastSuccessPlayer), {}) | |||||
) | |||||
-- 同步托管倒计时 | |||||
message.UpdateDirectionTime = defClass("UpdateDirectionTime" | |||||
, defVar("nTime", VT_Int, 0) | |||||
) | |||||
-- 托管状态 | |||||
message.HostingRequest = defClass("HostingRequest" | |||||
, defVar("nUserId", VT_Int, 0) | |||||
-- 1:是托管状态, 0取消托管 | |||||
, defVar("status", VT_Short,0) | |||||
) | |||||
-- | |||||
message.UserPass = defClass("UserPass" | |||||
, defVar("nUserId", VT_Int, 0) | |||||
) | |||||
message.XiaojuPlayerInfo=defClass("GameXiaoJuResponse" | |||||
--玩家的id | |||||
, defVar("nUserId", VT_Int, 0) | |||||
--当前局分数 | |||||
, defVar("nTurnScore", VT_String, 0) | |||||
--总分 | |||||
, defVar("nTotalMoney", VT_String, 0) | |||||
--番数 | |||||
, defVar("fanshu", VT_Int, 0) | |||||
--玩家本局输赢情况 0不胡不输 1胡,2点炮或者输 | |||||
, defVar("result", VT_UChar, 0) | |||||
-- 胡牌牌类型-7对胡、平胡,0为输或者不胡不输 | |||||
, defVar("huType", VT_Short, 0) | |||||
-- 桌面组合牌 | |||||
,defVar("gruoupCards",VT_Vector(message.OperateCard),{}) | |||||
--玩家手牌 | |||||
,defVar("handCards",VT_Vector(message.Card),{}) | |||||
--桌面弃牌 | |||||
,defVar("outCards",VT_Vector(message.Card),{}) | |||||
) | |||||
message.GameXiaoJuResponse = defClass("GameXiaoJuResponse" | |||||
-- 一局结束的原因 | |||||
, defVar("stopFlag", VT_UChar, -1) | |||||
-- 房间信息 | |||||
, defVar("strGameInfo", VT_String, "") | |||||
--结算信息 | |||||
, defVar("strResultInfo",VT_String,"") | |||||
--玩家信息 | |||||
, defVar("playerInfos",VT_Vector(message.XiaojuPlayerInfo),{}) | |||||
--是否大局结束,结束是1 | |||||
, defVar("isGameOver", VT_Short, 0) | |||||
--操作统计 | |||||
,defVar("opsCntMapString",VT_String,"") | |||||
--分数统计 | |||||
,defVar("soreCntMapString",VT_String,"") | |||||
) | |||||
-- --总结算玩家列表 | |||||
message.DaJuPlayerInfo = defClass("DaJuPlayerInfo" | |||||
--玩家Uid | |||||
, defVar("nUserId", VT_Int, 0) | |||||
--总输赢分数 | |||||
, defVar("nTotalScore", VT_String, 0) | |||||
--json格式,暂无数据,后续扩展 | |||||
, defVar("nTotalInfo", VT_String, 0) | |||||
) | |||||
message.GameDaJuResponse = defClass("GameDaJuResponse" | |||||
--多少个玩家 | |||||
, defVar("nTotalPlayerInfos", VT_VectorToMap(message.DaJuPlayerInfo,"nUserId")) | |||||
) | |||||
return message |
@@ -0,0 +1,204 @@ | |||||
local RoomCmd=MJFramework.MJImport("mj.luaScript.Protocol.MJCmd") | |||||
local MJMessage=MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJProtocol=MJFramework.MJFrameworkClassImprot("mj.luaScript.Protocol.MJProtocol") | |||||
local Room = class("hongzhongRoom" , MJProtocol) | |||||
function Room:addExtendData(response) | |||||
for k, v in pairs(response.playerPiaoInfos) do | |||||
if not self.roomInfo.memberList[v.nUserId] then | |||||
self.roomInfo.memberList[v.nUserId] = {} | |||||
end | |||||
self.roomInfo.memberList[v.nUserId].nPiaoNum = v.nPiaoNum | |||||
end | |||||
end | |||||
-- function Room:setMemberInfo(v) | |||||
-- Room.super.setMemberInfo(self,v) | |||||
-- self.roomInfo.memberList[v.nUserId].nPiaoNum = v.nPiaoNum | |||||
-- end | |||||
function Room:onXiaPiaoResponse(status,response) | |||||
logD("-------------------- hongzhongRoom:onXiaPiaoResponse ------------------------") | |||||
if not self.roomInfo then | |||||
print("容错处理") | |||||
return | |||||
end | |||||
local nUserId=response.nUserId | |||||
local nPiaoNum=response.nPiaoNum | |||||
if self.roomInfo.memberList[nUserId] then | |||||
self.roomInfo.memberList[nUserId].nPiaoNum=nPiaoNum | |||||
end | |||||
self:dispatchEvent({name = MJDefine.MJEvent.XiaPiaoResponse, nUserId=nUserId}) | |||||
end | |||||
function Room:onXiaPiaoTime(status,response) | |||||
logD("-------------------- hongzhongRoom:onXiaPiaoTime ------------------------") | |||||
if not self.roomInfo then | |||||
print("容错处理") | |||||
return | |||||
end | |||||
self.roomInfo.nPiaoLeftTime=response.nPiaoLeftTime | |||||
self:dispatchEvent({name = MJDefine.MJEvent.XiaPiaoTime}) | |||||
end | |||||
function Room:ctor(net) | |||||
Room.super.ctor(self , net); | |||||
--请求重连消息 | |||||
self:defMsgFunc{name = MJDefine.MJEvent.GetTableInfo,cmd = RoomCmd.GAME_COMMAND_GET_TABLE_INFO}; | |||||
--选择飘 | |||||
self:defMsgFunc{name = MJDefine.MJEvent.XiaPiao,cmd = RoomCmd.GAME_COMMAND_XIA_PIAO ,sender = MJMessage.XiaPiao} | |||||
--回应 | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_XIA_PIAO,reader = MJMessage.XiaPiaoResponse,func = handler(self,self.onXiaPiaoResponse)} | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_XIA_PIAO_TIME,reader = MJMessage.XiaPiaoTime,func = handler(self,self.onXiaPiaoTime)} | |||||
-- 客户端发起快速请求 | |||||
self:defMsgFunc{name = MJDefine.MJEvent.RequestFastsStart, cmd = RoomCmd.GAME_COMMAND_FAST_START_GAME, sender = MJMessage.FastStartRequest} | |||||
-- 快速开始请求返回 | |||||
if not self.PushMsgList[RoomCmd.GAME_COMMAND_FAST_START_RESULT] then | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_FAST_START_RESULT, reader = MJMessage.FastStartRequestResult, func = handler(self, self.onUserRequestFastError)} | |||||
end | |||||
-- 快速开始广播请求 | |||||
if not self.PushMsgList[RoomCmd.GAME_COMMAND_BROAD_FAST_START_GAME] then | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_BROAD_FAST_START_GAME, reader = MJMessage.FastStartStatus, func = handler(self, self.onBroadcastFastRequest)} | |||||
end | |||||
-- 快速开始成功 | |||||
if not self.PushMsgList[RoomCmd.GAME_COMMAND_BROAD_QUICKLY_START] then | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_BROAD_QUICKLY_START, reader = MJMessage.UpdateSeatIds, func = handler(self, self.onFastStartSucc)} | |||||
end | |||||
-- 收到托管回调 | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_USER_HOSTING_REQUEST, reader = MJMessage.HostingRequest, func = handler(self,self.onHostingRequest)} | |||||
-- user pass | |||||
self:defPushMsg{cmd = RoomCmd.GAME_COMMAND_USER_PASS, reader = MJMessage.UserPass, func = handler(self,self.onUserPassRequest)} | |||||
-- 请求托管 | |||||
self:defMsgFunc{name = MJDefine.MJEvent.HostingRequest, cmd = RoomCmd.GAME_COMMAND_USER_HOSTING_REQUEST, sender = MJMessage.HostingRequest} | |||||
--推送听 | |||||
self:defPushMsg{cmd = RoomCmd.GAME_PUSH_TING, reader = MJMessage.Tings, func = handler(self , self.pushTing)}; | |||||
end | |||||
-- 游戏快速开始,更新玩家座位号 | |||||
function Room:onFastStartSucc( status, response ) | |||||
self.roomInfo.nMaxPlayCount = #response.pList | |||||
local gameInfo = json.decode(self.roomInfo.strGameInfo) | |||||
gameInfo.playnum = self.roomInfo.nMaxPlayCount | |||||
self.roomInfo.strGameInfo = json.encode(gameInfo) | |||||
for _,v in pairs(response.pList) do | |||||
self.roomInfo.memberList[v.nUserId].nSeatId = v.nSeatId | |||||
end | |||||
-- 更新椅子号 | |||||
self.seatShowList = {} | |||||
self:updateUserSeateShowId() | |||||
self:dispatchEvent({name = MJDefine.MJEvent.FastStartSucc ,response = response}) | |||||
end | |||||
-- 快速开始操作广播 | |||||
function Room:onBroadcastFastRequest( status, response )-- | |||||
self:dispatchEvent({name = MJDefine.MJEvent.BraodcastFastStart ,response = response}) | |||||
end | |||||
-- 款速开始请求返回 | |||||
function Room:onUserRequestFastError( status, response )--快速开始请求错误提示错误 | |||||
local errTxt ={ | |||||
[0] = "成功", | |||||
[1] = "人数不够", | |||||
[2] = "其他人已请求", | |||||
[3] = "房间人数已满", | |||||
[4] = "非法操作" | |||||
} | |||||
local txt = errTxt[response.result] | |||||
if txt then | |||||
showTooltip(txt) | |||||
end | |||||
end | |||||
-- 获取房间最大玩家人数 | |||||
function Room:getMaxPlayerCount() | |||||
return self.roomInfo.nMaxPlayCount | |||||
end | |||||
-- 获取房间人数 | |||||
function Room:getPlayerCount() | |||||
local count = 0 | |||||
for k,v in pairs(self.roomInfo.memberList) do | |||||
count = count + 1 | |||||
end | |||||
return count | |||||
end | |||||
-- 重置上局信息 | |||||
function Room:resetRound() | |||||
self.roomInfo.quickStartInfo = nil | |||||
self.roomInfo.hosting = 0--重置托管 | |||||
end | |||||
function Room:resetFastInfo() | |||||
self.roomInfo.quickStartInfo = nil | |||||
end | |||||
function Room:onGameReconnection(status,response) | |||||
-- 获取到的房间信息 | |||||
Room.super.onGameReconnection(self,status,response) | |||||
self.roomInfo.shuffleNum = response.shuffleNum | |||||
self:resetRound() | |||||
local extInfo = json.decode(response.extJson or "") | |||||
self.roomInfo.extJson = extInfo | |||||
if extInfo and type(extInfo)=='table' and extInfo[tostring(self:getMyUserId())] then | |||||
local myinfo = extInfo[tostring(self:getMyUserId())] | |||||
self.roomInfo.hosting = myinfo.hosted or 0--托管状态 | |||||
self.roomInfo.quickStartInfo = extInfo.faststart--提前开局 | |||||
else | |||||
self.roomInfo.hosting = 0 | |||||
end | |||||
end | |||||
function Room:isMyself(uid) | |||||
return uid==self:getMyUserId() | |||||
end | |||||
-- 托管 | |||||
function Room:onHostingRequest( status, response ) | |||||
-- 是否托管 | |||||
if response.nUserId == self:getMyUserId() then | |||||
self.roomInfo.hosting = response.status | |||||
end | |||||
self:dispatchEvent({name = MJDefine.MJEvent.HostingRequest, response = response}); | |||||
end | |||||
-- 收到服务器下发PASS操作 | |||||
function Room:onUserPassRequest( status, response ) | |||||
self:dispatchEvent({name = MJDefine.MJEvent.USER_PASS ,response = response}); | |||||
end | |||||
-- 根据uid获取座位号 | |||||
function Room:getSeatIdByUserId( nUserId ) | |||||
return self:getSeatIdByViewId(self:getViewIdByUserId(nUserId)) | |||||
end | |||||
-- 视角转换 | |||||
function Room:transPos(targetSeatId, seatId ) | |||||
local MaxCount = self.roomInfo.nMaxPlayCount | |||||
local showPos = 4 | |||||
local target = targetSeatId | |||||
if target <= seatId then | |||||
showPos = seatId - target | |||||
elseif target > seatId then | |||||
showPos = MaxCount - target + seatId | |||||
end | |||||
return showPos | |||||
end | |||||
function Room:isAutoPopupGPS() | |||||
return false | |||||
end | |||||
return Room; |
@@ -0,0 +1,13 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local CommonMahjongCard = require("mj.luaScript.Common.2d.CommonMahjongCard") | |||||
local Card2D = class("Card2D", CommonMahjongCard) | |||||
function Card2D:ctor(...) | |||||
Card2D.super.ctor(self, ...) | |||||
end | |||||
return Card2D |
@@ -0,0 +1,13 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local CommonGroupAnGang = require("mj.luaScript.Common.2d.CommonGroupAnGang") | |||||
local GroupAnGang2D = class("GroupAnGang2D", CommonGroupAnGang) | |||||
function GroupAnGang2D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupAnGang2D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupAnGang2D |
@@ -0,0 +1,14 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local CommonGroupBaGang = require("mj.luaScript.Common.2d.CommonGroupBaGang") | |||||
local GroupBaGang2D = class("GroupBaGang2D", CommonGroupBaGang) | |||||
function GroupBaGang2D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupBaGang2D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupBaGang2D |
@@ -0,0 +1,13 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local CommonGroupChi = require("mj.luaScript.Common.2d.CommonGroupChi") | |||||
local GroupChi2D = class("GroupChi2D", CommonGroupChi) | |||||
function GroupChi2D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupChi2D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupChi2D |
@@ -0,0 +1,13 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local CommonGroupGang = require("mj.luaScript.Common.2d.CommonGroupGang") | |||||
local GroupGang2D = class("GroupGang2D", CommonGroupGang) | |||||
function GroupGang2D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupGang2D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupGang2D |
@@ -0,0 +1,13 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local CommonGroupPeng = require("mj.luaScript.Common.2d.CommonGroupPeng") | |||||
local GroupPeng2D = class("GroupPeng2D", CommonGroupPeng) | |||||
function GroupPeng2D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupPeng2D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupPeng2D |
@@ -0,0 +1,193 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local CommonHandCard = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.2d.CommonHandCard") | |||||
local HandCard2D = class("HandCard2D", CommonHandCard) | |||||
function HandCard2D:ctor(...) | |||||
HandCard2D.super.ctor(self, ...) | |||||
end | |||||
--- HandCard2D:onAfterCreateHandcards 创建手牌之后的处理 | |||||
function HandCard2D:onAfterCreateHandcards() | |||||
HandCard2D.super.onAfterCreateHandcards(self) | |||||
self:refreshLuoBoCards() | |||||
end | |||||
--- | |||||
-- 摊牌之后的处理 | |||||
-- | |||||
function HandCard2D:onAfterCreateOpenHandcards() | |||||
HandCard2D.super.onAfterCreateOpenHandcards(self) | |||||
self:refreshLuoBoCards() | |||||
end | |||||
function HandCard2D:createGroupCards(arg, fromViewId) | |||||
for _, v in pairs(arg) do | |||||
if not fromViewId then | |||||
fromViewId = v.fromViewId | |||||
end | |||||
local group = nil | |||||
if v.opType == MJDefine.MJOperateType.OPREATE_ANGANG then | |||||
group = self:getGroup(v.values[1], {MJDefine.MJOperateType.OPREATE_ANGANG}) | |||||
if group then | |||||
group:setCardNum(v.cardNum) | |||||
group:customRefresh(v) | |||||
return | |||||
end | |||||
end | |||||
local groupIndex = table.nums(self._groupNodes) + 1 | |||||
group = self:createGroup(v.values, v.showType, self._viewId, groupIndex, v.cardNum) | |||||
if group then | |||||
group.fromViewId = v.fromViewId ---保留触发操作的玩家位置,补杠需要 | |||||
group.opType = v.opType | |||||
local x, y = self:getGroupPosition(group, groupIndex) | |||||
group:setPosition(cc.p(x, y)) | |||||
group:customRefresh(v) | |||||
self:addChild(group) | |||||
table.insert(self._groupNodes, group) | |||||
end | |||||
end | |||||
self:refreshLuoBoCards() | |||||
self:refreshGroupZOrder() | |||||
end | |||||
function HandCard2D:createGroup(values, showType, viewId, groupIndex, cardNum) | |||||
local group = nil | |||||
if showType == MJDefine.MJGroupType.Chi then | |||||
group = require(MJDefine.MJConfig.GROUP_CHI):new(values, viewId, groupIndex) | |||||
elseif showType == MJDefine.MJGroupType.Peng then | |||||
group = require(MJDefine.MJConfig.GROUP_PENG):new(values, viewId, groupIndex) | |||||
elseif showType == MJDefine.MJGroupType.Gang then | |||||
group = require(MJDefine.MJConfig.GROUP_GANG):new(values, viewId, groupIndex, cardNum) | |||||
elseif showType == MJDefine.MJGroupType.AnGang then | |||||
group = require(MJDefine.MJConfig.GROUP_ANGANG):new(values, viewId, groupIndex, cardNum) | |||||
elseif showType == MJDefine.MJGroupType.BaGang then | |||||
group = require(MJDefine.MJConfig.GROUP_BAGANG):new(values, viewId, groupIndex, cardNum) | |||||
end | |||||
return group | |||||
end | |||||
--- HandCard2D:refreshLuoBoCards 刷新萝卜牌 | |||||
function HandCard2D:refreshLuoBoCards () | |||||
for cardIndex, card in ipairs(self._handCardNodes or {}) do | |||||
local count = app.room:getLuoBoCardCount(card:getValue()) or 0; | |||||
card:setLuoBoVisible(count > 0, count, cardIndex) | |||||
end | |||||
for groupIndex, v in pairs(self._groupNodes) do | |||||
local cards = v:getCards(); | |||||
for _, card in pairs(cards) do | |||||
local cardValue = card:getValue(); | |||||
if cardValue > 0 then | |||||
local count = app.room:getLuoBoCardCount(cardValue) or 0; | |||||
cards[1]:setLuoBoVisible(count > 0, count, groupIndex) | |||||
break; | |||||
end | |||||
end | |||||
end | |||||
end | |||||
--- | |||||
-- 补杠 | |||||
-- @param card 补杠的牌 | |||||
-- @param cardNum 多头杠牌张数 | |||||
-- @return | |||||
-- | |||||
function HandCard2D:buGang(card, cardNum) | |||||
local oldGroup = self:getGroup(card, {MJDefine.MJOperateType.OPREATE_BAGANG, MJDefine.MJOperateType.OPREATE_ZHIGANG, MJDefine.MJOperateType.OPREATE_ANGANG}) | |||||
if oldGroup then | |||||
-- 如果没有碰牌,则查看是否已经有补杠 | |||||
local cards = oldGroup:getCards() | |||||
if cards and cards[4] then | |||||
oldGroup:setCardNum(cardNum) | |||||
cards[4]:setOperateBackImage() | |||||
end | |||||
return | |||||
else | |||||
oldGroup = self:getGroup(card, {MJDefine.MJOperateType.OPREATE_PENG}) | |||||
end | |||||
if not oldGroup then | |||||
return | |||||
end | |||||
local fromViewId = oldGroup.fromViewId | |||||
-- 杠牌对家,换成第四张 | |||||
if app.room:getMaxPlayerCount() == 2 and fromViewId ~= 0 then | |||||
fromViewId = 4 | |||||
end | |||||
if app.room:getMaxPlayerCount() == 4 and fromViewId == 2 then | |||||
fromViewId = 4 | |||||
end | |||||
local oldPos = oldGroup:getPosition() | |||||
local index = table.indexOf(self._groupNodes, oldGroup) | |||||
table.remove(self._groupNodes, index) | |||||
oldGroup:removeFromParent() | |||||
local newGroup = self:createGroup({card, card, card, card}, MJDefine.MJGroupType.BaGang, self._viewId, index, cardNum) | |||||
if not newGroup then | |||||
return | |||||
end | |||||
newGroup.fromViewId = fromViewId | |||||
newGroup.opType = MJDefine.MJOperateType.OPREATE_BAGANG | |||||
table.insert(self._groupNodes, index, newGroup) | |||||
newGroup:setPosition(oldPos) | |||||
newGroup:customRefresh(newGroup) | |||||
self:addChild(newGroup) | |||||
self:refreshGroupZOrder() | |||||
end | |||||
--- HandCard2D:retoreBuGang 还原补杠 | |||||
-- @param card 牌值 | |||||
-- @param cardNum 牌张数 | |||||
function HandCard2D:restoreBuGang(card, cardNum) | |||||
local oldGroup = | |||||
self:getGroup( | |||||
card, | |||||
{ | |||||
MJDefine.MJOperateType.OPREATE_BAGANG, | |||||
MJDefine.MJOperateType.OPREATE_ANGANG, | |||||
MJDefine.MJOperateType.OPREATE_ZHIGANG | |||||
}) | |||||
if not oldGroup then | |||||
return | |||||
end | |||||
local oldCardNum = oldGroup:getCardNum() | |||||
if oldCardNum > 4 then | |||||
oldCardNum = oldCardNum - 1 | |||||
oldGroup:setCardNum(oldCardNum) | |||||
oldGroup:customRefresh() | |||||
return | |||||
end | |||||
local fromViewId = oldGroup.fromViewId | |||||
-- 杠牌对家,换成第四张 | |||||
if app.room:getMaxPlayerCount() == 2 and fromViewId ~= 0 then | |||||
fromViewId = 4 | |||||
end | |||||
if app.room:getMaxPlayerCount() == 4 and fromViewId == 2 then | |||||
fromViewId = 4 | |||||
end | |||||
local oldPos = oldGroup:getPosition() | |||||
local index = table.indexOf(self._groupNodes, oldGroup) | |||||
table.remove(self._groupNodes, index) | |||||
oldGroup:removeFromParent() | |||||
local newGroup = self:createGroup({card, card, card}, MJDefine.MJGroupType.Peng, self._viewId, index, cardNum) | |||||
if not newGroup then | |||||
return | |||||
end | |||||
newGroup.fromViewId = fromViewId | |||||
newGroup.opType = MJDefine.MJOperateType.OPREATE_PENG | |||||
table.insert(self._groupNodes, index, newGroup) | |||||
newGroup:setPosition(pos) | |||||
self:addChild(newGroup) | |||||
self:refreshGroupZOrder() | |||||
end | |||||
return HandCard2D |
@@ -0,0 +1,10 @@ | |||||
local CommonHuCardView = require("mj.luaScript.Common.2d.CommonHuCardView") | |||||
local HuCardView_2d = class("CommonHuCardView", CommonHuCardView) | |||||
function HuCardView_2d:ctor(...) | |||||
HuCardView_2d.super.ctor(self, ...) | |||||
end | |||||
return HuCardView_2d |
@@ -0,0 +1,4 @@ | |||||
local config = require("mj.luaScript.Common.2d.CommonMahjongConfig") | |||||
return config |
@@ -0,0 +1,5 @@ | |||||
local config = require("mj.luaScript.Common.2d.CommonMahjongConfig") | |||||
return config |
@@ -0,0 +1,11 @@ | |||||
local CommonOutCardView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.2d.CommonOutCardView") | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local OutCardView2D = class("OutCardView2D", CommonOutCardView) | |||||
function OutCardView2D:ctor(...) | |||||
OutCardView2D.super.ctor(self, ...) | |||||
end | |||||
return OutCardView2D |
@@ -0,0 +1,20 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local BaseMahjong3DCard = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DCard") | |||||
local Card3D = class("Card3D", BaseMahjong3DCard) | |||||
function Card3D:ctor(...) | |||||
Card3D.super.ctor(self, ...) | |||||
end | |||||
function Card3D:initMahjongImage() | |||||
Card3D.super.initMahjongImage(self) | |||||
if self:getValue() == 0x41 and self._viewId == MJDefine.MyViewId and self._mjType == MJDefine.MJConfig_3d.MJType.Stand then | |||||
local laiFlog = cc.Sprite:createWithSpriteFrameName("mj_flog_laizi.png") | |||||
self:addChild(laiFlog) | |||||
laiFlog:setPosition(17,90) | |||||
end | |||||
end | |||||
return Card3D |
@@ -0,0 +1,11 @@ | |||||
local Mahjong3DGroupAnGang = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DGroupAnGang") | |||||
local GroupAnGang3D = class("GroupAnGang3D", Mahjong3DGroupAnGang) | |||||
function GroupAnGang3D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupAnGang3D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupAnGang3D |
@@ -0,0 +1,68 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local Mahjong3DGroupChi = require("mj.luaScript.Common.3d.Mahjong3DGroupChi") | |||||
local GroupBaGang3D = class("GroupBaGang3D", Mahjong3DGroupChi) | |||||
function GroupBaGang3D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupBaGang3D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
function GroupBaGang3D:createCard(value, viewId, index, groupIndex) | |||||
local card = GroupBaGang3D.super.createCard(self, value, viewId, index, groupIndex) | |||||
if index == 4 then | |||||
local pos = card:getPosition() | |||||
local offsetConfig = MJDefine.MJConfig_3d.GroupGangCardOffsetConfig[viewId] | |||||
local offsetX = offsetConfig.x[groupIndex] | |||||
local offsetY = offsetConfig.y[groupIndex] | |||||
card:setPosition(cc.p(pos.x + offsetX, pos.y + offsetY)) | |||||
-- card:setOperateBackImage() | |||||
-- card:setWordImageVisible(false) | |||||
end | |||||
return card | |||||
end | |||||
function GroupBaGang3D:setDirection(viewId,fromViewId)--原图方向朝上 | |||||
if not viewId then return end | |||||
if not fromViewId then return end | |||||
if viewId == fromViewId then return end | |||||
local arrowDir = { | |||||
[MJDefine.PlayerViewType.Right] = 270, | |||||
[MJDefine.PlayerViewType.Top] = 0, | |||||
[MJDefine.PlayerViewType.Left] = 90, | |||||
[MJDefine.PlayerViewType.My] = 180, | |||||
} | |||||
if fromViewId and arrowDir[fromViewId] then | |||||
local centerCard = self._cardNodes[2] --取到每个吃牌组中间那张牌 | |||||
local x = centerCard:getPositionX() | |||||
local y = centerCard:getPositionY() | |||||
local imgPos3d = { | |||||
[MJDefine.PlayerViewType.Right] = cc.p(x-45,y+8), | |||||
[MJDefine.PlayerViewType.Top] = cc.p(x,-30), | |||||
[MJDefine.PlayerViewType.Left] = cc.p(0+30,y), | |||||
[MJDefine.PlayerViewType.My] = cc.p(x+3,y+50), | |||||
} | |||||
local arrowImg = cc.ImageView:createNode() | |||||
arrowImg:loadTextureFromPlist("mj_room_cpg_direction.png"); | |||||
arrowImg:setEulerRotation(cc.vec3(0,0,arrowDir[fromViewId])) | |||||
--3d | |||||
if viewId == MJDefine.PlayerViewType.Left then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Top then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Right then | |||||
arrowImg:setScale(0.8) | |||||
end | |||||
arrowImg:setPosition(imgPos3d[viewId]) | |||||
self:addChild(arrowImg,2,2) | |||||
end | |||||
end | |||||
return GroupBaGang3D |
@@ -0,0 +1,53 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local Mahjong3DGroupChi = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DGroupChi") | |||||
local GroupChi3D = class("GroupChi3D", Mahjong3DGroupChi) | |||||
function GroupChi3D:ctor(...) | |||||
GroupChi3D.super.ctor(self, ...) | |||||
end | |||||
function GroupChi3D:setDirection(viewId,fromViewId)--原图方向朝上 | |||||
if not viewId then return end | |||||
if not fromViewId then return end | |||||
if viewId == fromViewId then return end | |||||
local arrowDir = { | |||||
[MJDefine.PlayerViewType.Right] = 270, | |||||
[MJDefine.PlayerViewType.Top] = 0, | |||||
[MJDefine.PlayerViewType.Left] = 90, | |||||
[MJDefine.PlayerViewType.My] = 180, | |||||
} | |||||
if fromViewId and arrowDir[fromViewId] then | |||||
local centerCard = self._cardNodes[2] --取到每个吃牌组中间那张牌 | |||||
local x = centerCard:getPositionX() | |||||
local y = centerCard:getPositionY() | |||||
local imgPos3d = { | |||||
[MJDefine.PlayerViewType.Right] = cc.p(x-45,y+8), | |||||
[MJDefine.PlayerViewType.Top] = cc.p(x,-30), | |||||
[MJDefine.PlayerViewType.Left] = cc.p(0+30,y), | |||||
[MJDefine.PlayerViewType.My] = cc.p(x+3,y+50), | |||||
} | |||||
local arrowImg = cc.ImageView:createNode() | |||||
arrowImg:loadTextureFromPlist("mj_room_cpg_direction.png"); | |||||
arrowImg:setEulerRotation(cc.vec3(0,0,arrowDir[fromViewId])) | |||||
--3d | |||||
if viewId == MJDefine.PlayerViewType.Left then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Top then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Right then | |||||
arrowImg:setScale(0.8) | |||||
end | |||||
arrowImg:setPosition(imgPos3d[viewId]) | |||||
self:addChild(arrowImg,2,2) | |||||
end | |||||
end | |||||
return GroupChi3D |
@@ -0,0 +1,54 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local Mahjong3DGroupGang = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DGroupGang") | |||||
local GroupGang3D = class("GroupGang3D", Mahjong3DGroupGang) | |||||
function GroupGang3D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupGang3D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
function GroupGang3D:setDirection(viewId,fromViewId)--原图方向朝上 | |||||
if not viewId then return end | |||||
if not fromViewId then return end | |||||
if viewId == fromViewId then return end | |||||
local arrowDir = { | |||||
[MJDefine.PlayerViewType.Right] = 270, | |||||
[MJDefine.PlayerViewType.Top] = 0, | |||||
[MJDefine.PlayerViewType.Left] = 90, | |||||
[MJDefine.PlayerViewType.My] = 180, | |||||
} | |||||
if fromViewId and arrowDir[fromViewId] then | |||||
local centerCard = self._cardNodes[2] --取到每个吃牌组中间那张牌 | |||||
local x = centerCard:getPositionX() | |||||
local y = centerCard:getPositionY() | |||||
local imgPos3d = { | |||||
[MJDefine.PlayerViewType.Right] = cc.p(x-45,y+8), | |||||
[MJDefine.PlayerViewType.Top] = cc.p(x,-30), | |||||
[MJDefine.PlayerViewType.Left] = cc.p(0+30,y), | |||||
[MJDefine.PlayerViewType.My] = cc.p(x+3,y+50), | |||||
} | |||||
local arrowImg = cc.ImageView:createNode() | |||||
arrowImg:loadTextureFromPlist("mj_room_cpg_direction.png"); | |||||
arrowImg:setEulerRotation(cc.vec3(0,0,arrowDir[fromViewId])) | |||||
--3d | |||||
if viewId == MJDefine.PlayerViewType.Left then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Top then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Right then | |||||
arrowImg:setScale(0.8) | |||||
end | |||||
arrowImg:setPosition(imgPos3d[viewId]) | |||||
self:addChild(arrowImg,2,2) | |||||
end | |||||
end | |||||
return GroupGang3D |
@@ -0,0 +1,12 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local Mahjong3DGroupBaGang = require("mj.luaScript.Common.3d.Mahjong3DGroupBaGang") | |||||
local GroupMSAGang3D = class("GroupMSAGang3D", Mahjong3DGroupBaGang) | |||||
function GroupMSAGang3D:ctor(values, viewId, groupIndex, cardNum) | |||||
self._mjNum = cardNum or 0 | |||||
GroupMSAGang3D.super.ctor(self, values, viewId, groupIndex, cardNum) | |||||
end | |||||
return GroupMSAGang3D |
@@ -0,0 +1,53 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local Mahjong3DGroupPeng = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DGroupPeng") | |||||
local GroupPeng3D = class("GroupPeng3D", Mahjong3DGroupPeng) | |||||
function GroupPeng3D:ctor(...) | |||||
GroupPeng3D.super.ctor(self, ...) | |||||
end | |||||
function GroupPeng3D:setDirection(viewId,fromViewId)--原图方向朝上 | |||||
if not viewId then return end | |||||
if not fromViewId then return end | |||||
if viewId == fromViewId then return end | |||||
local arrowDir = { | |||||
[MJDefine.PlayerViewType.Right] = 270, | |||||
[MJDefine.PlayerViewType.Top] = 0, | |||||
[MJDefine.PlayerViewType.Left] = 90, | |||||
[MJDefine.PlayerViewType.My] = 180, | |||||
} | |||||
if fromViewId and arrowDir[fromViewId] then | |||||
local centerCard = self._cardNodes[2] --取到每个吃牌组中间那张牌 | |||||
local x = centerCard:getPositionX() | |||||
local y = centerCard:getPositionY() | |||||
local imgPos3d = { | |||||
[MJDefine.PlayerViewType.Right] = cc.p(x-45,y+8), | |||||
[MJDefine.PlayerViewType.Top] = cc.p(x,-30), | |||||
[MJDefine.PlayerViewType.Left] = cc.p(0+30,y), | |||||
[MJDefine.PlayerViewType.My] = cc.p(x+3,y+50), | |||||
} | |||||
local arrowImg = cc.ImageView:createNode() | |||||
arrowImg:loadTextureFromPlist("mj_room_cpg_direction.png"); | |||||
arrowImg:setEulerRotation(cc.vec3(0,0,arrowDir[fromViewId])) | |||||
--3d | |||||
if viewId == MJDefine.PlayerViewType.Left then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Top then | |||||
arrowImg:setScale(0.8) | |||||
elseif viewId == MJDefine.PlayerViewType.Right then | |||||
arrowImg:setScale(0.8) | |||||
end | |||||
arrowImg:setPosition(imgPos3d[viewId]) | |||||
self:addChild(arrowImg,2,2) | |||||
end | |||||
end | |||||
return GroupPeng3D |
@@ -0,0 +1,145 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJMessage = MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") | |||||
local MJSound = MJFramework.MJImport("mj.luaScript.MJSound") | |||||
local Mahjong3DHandCard = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DHandCard") | |||||
local HandCard3D = class("HandCard3D", Mahjong3DHandCard) | |||||
function HandCard3D:ctor(...) | |||||
HandCard3D.super.ctor(self, ...) | |||||
end | |||||
function HandCard3D:createGroup(values, showType, viewId, groupIndex) | |||||
local group = nil | |||||
if showType and showType <= 5 then | |||||
if showType == MJDefine.MJGroupType.MAnGang then | |||||
group = require(MJDefine.MJConfig_3d.GROUP_MAGANG):new(values, viewId, groupIndex) | |||||
else | |||||
group = HandCard3D.super.createGroup(self, values, showType, viewId, groupIndex) | |||||
end | |||||
end | |||||
if group and viewId == MJDefine.MyViewId then | |||||
group:setLocalZOrder(4 - groupIndex) | |||||
end | |||||
return group | |||||
end | |||||
function HandCard3D:createGroupCards(arg, fromViewId) | |||||
for _, v in pairs(arg) do | |||||
if not fromViewId then | |||||
fromViewId = v.fromViewId | |||||
end | |||||
local startPos = MJDefine.MJConfig_3d.HandCardStartPos[self._viewId] | |||||
local group = self:createGroup(v.values, v.showType, self._viewId, table.nums(self._groupNodes) + 1) | |||||
if group then | |||||
local x = startPos.x + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][#self._groupNodes + 1].x | |||||
local y = startPos.y + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][#self._groupNodes + 1].y | |||||
if group and (v.opType == MJDefine.MJOperateType.OPREATE_PENG | |||||
or v.opType == MJDefine.MJOperateType.OPREATE_ZHIGANG | |||||
or v.opType == MJDefine.MJOperateType.OPREATE_BAGANG) then | |||||
--设置吃碰杠来源 | |||||
group:setDirection(self._viewId,fromViewId) | |||||
end | |||||
group.opType = v.opType | |||||
group:setPosition(cc.p(x, y)) | |||||
group:customRefresh(v) | |||||
self:addChild(group) | |||||
table.insert(self._groupNodes, group) | |||||
end | |||||
end | |||||
self:refreshGroupZOrder() | |||||
end | |||||
function HandCard3D:sortHandCards() | |||||
table.sort( | |||||
self._handCardNodes, | |||||
function(c1, c2) | |||||
if c1:getValue() == 0x41 and c2:getValue() == 0x41 then | |||||
return false | |||||
elseif c1:getValue() == 0x41 then | |||||
return true | |||||
elseif c2:getValue() == 0x41 then | |||||
return false | |||||
else | |||||
return c1:getValue() < c2:getValue() | |||||
end | |||||
end | |||||
) | |||||
end | |||||
function HandCard3D:buGang(card, cardNum) | |||||
local oldGroup = self:getGroup(card, {MJDefine.MJOperateType.OPREATE_BAGANG, MJDefine.MJOperateType.OPREATE_ZHIGANG, MJDefine.MJOperateType.OPREATE_ANGANG}); | |||||
if oldGroup then | |||||
local cards = oldGroup:getCards(); | |||||
if cards and cards[4] then | |||||
oldGroup:setCardNum(cardNum) | |||||
oldGroup:customRefresh() | |||||
end | |||||
return ; | |||||
else | |||||
oldGroup=self:getGroup(card,{MJDefine.MJOperateType.OPREATE_PENG}) | |||||
end | |||||
if not oldGroup then | |||||
return | |||||
end | |||||
local fromViewId = oldGroup.fromViewId | |||||
-- 杠牌对家,换成第四张 | |||||
--[[ | |||||
if app.room:getMaxPlayerCount() == 2 and fromViewId ~= 0 then | |||||
fromViewId = 4 | |||||
end | |||||
if app.room:getMaxPlayerCount() == 4 and fromViewId == 2 then | |||||
fromViewId = 4 | |||||
end | |||||
]] | |||||
local index = table.indexOf(self._groupNodes, oldGroup) | |||||
table.remove(self._groupNodes, index) | |||||
oldGroup:removeFromParent() | |||||
local newGroup = self:createGroup({card, card, card, card}, MJDefine.MJGroupType.Gang, self._viewId,index) | |||||
if not newGroup then | |||||
return | |||||
end | |||||
newGroup.fromViewId = fromViewId | |||||
newGroup.opType = MJDefine.MJOperateType.OPREATE_BAGANG | |||||
table.insert(self._groupNodes, index, newGroup) | |||||
local startPos = MJDefine.MJConfig_3d.HandCardStartPos[self._viewId] | |||||
local x = startPos.x + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][index].x | |||||
local y = startPos.y + MJDefine.MJConfig_3d.GroupOffsetConfig[self._viewId][index].y | |||||
newGroup:setPosition(cc.p(x, y)) | |||||
newGroup:customRefresh(newGroup) | |||||
self:addChild(newGroup) | |||||
self:refreshGroupZOrder() | |||||
end | |||||
function HandCard3D:pushTing() | |||||
self:clearAllTing() | |||||
local tings = app.room.roomInfo.tings | |||||
if tings then | |||||
for value, v in pairs(tings) do | |||||
for _, mj in pairs(self._handCardNodes) do | |||||
if mj:getValue() == value then | |||||
mj:setTing(true) | |||||
end | |||||
end | |||||
end | |||||
end | |||||
end | |||||
return HandCard3D | |||||
@@ -0,0 +1,10 @@ | |||||
local Mahjong3DHuCardView = require("mj.luaScript.Common.3d.Mahjong3DHuCardView") | |||||
local HuCardView_3d = class("HuCardView_3d", Mahjong3DHuCardView) | |||||
function HuCardView_3d:ctor(...) | |||||
HuCardView_3d.super.ctor(self, ...) | |||||
end | |||||
return HuCardView_3d |
@@ -0,0 +1,15 @@ | |||||
local config = require("mj.luaScript.Common.3d.Mahjong3DConfig") | |||||
config.HANDCARD_VIEW = "hongzhong.luaScript.Views.3d.HandCard_3d" | |||||
config.MAHJONG_CARD = "hongzhong.luaScript.Views.3d.Card_3d" | |||||
config.OUTCARD_VIEW = "hongzhong.luaScript.Views.3d.OutCardView_3d" | |||||
config.HU_CARD_VIEW = "hongzhong.luaScript.Views.3d.HuCardView_3d" | |||||
config.GROUP_CHI = "hongzhong.luaScript.Views.3d.GroupChi_3d" | |||||
config.GROUP_PENG = "hongzhong.luaScript.Views.3d.GroupPeng_3d" | |||||
config.GROUP_GANG = "hongzhong.luaScript.Views.3d.GroupGang_3d" | |||||
config.GROUP_ANGANG = "hongzhong.luaScript.Views.3d.GroupAnGang_3d" | |||||
config.GROUP_BAGANG = "hongzhong.luaScript.Views.3d.GroupBaGang_3d" | |||||
config.GROUP_MAGANG = "hongzhong.luaScript.Views.3d.GroupMSAGang_3d" | |||||
return config |
@@ -0,0 +1,12 @@ | |||||
local Mahjong3DOutCardView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DOutCardView") | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local OutCardView3D = class("OutCardView3D", Mahjong3DOutCardView) | |||||
function OutCardView3D:ctor(...) | |||||
OutCardView3D.super.ctor(self, ...) | |||||
end | |||||
return OutCardView3D |
@@ -0,0 +1,52 @@ | |||||
local MJ=MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Game.MJ") | |||||
local hongzhong=class("hongzhong",MJ) | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
function hongzhong:ctor(...) | |||||
hongzhong.super.ctor(self,...) | |||||
self.dltx , self.dlty = 0, 0 | |||||
end | |||||
function hongzhong:initSortValue(value) | |||||
if value==0x41 then --红中的排序值修改 | |||||
self.sortValue=0x00 | |||||
else | |||||
self.sortValue=value | |||||
end | |||||
end | |||||
function hongzhong:recordPostion(initY) | |||||
hongzhong.super.recordPostion(self, initY) | |||||
self.dltx , self.dlty = 0, 0 | |||||
end | |||||
-- 初始触摸偏移 | |||||
function hongzhong:checkDltPos( pt ) | |||||
local dltx = pt.x - self.initPostion.x | |||||
local dlty = pt.y - self.initPostion.y | |||||
self.dltx , self.dlty = dltx, dlty | |||||
end | |||||
function hongzhong:getDltPos() | |||||
return self.dltx, self.dlty | |||||
end | |||||
-- 触点与最初位置的距离 | |||||
function hongzhong:getTouchDistance() | |||||
local curPos = self:getPosition() | |||||
local iniPos = self.initPostion | |||||
return cc.pGetDistance(curPos, iniPos) | |||||
end | |||||
function hongzhong:setStandImage(value,viewId) | |||||
hongzhong.super.setStandImage(self,value,viewId) | |||||
if tonumber(value)==41 and viewId == MJDefine.MyViewId then | |||||
local laiFlog = cc.Sprite:createWithSpriteFrameName("mj_flog_laizi.png") | |||||
laiFlog:setTag(MJ.MJ_HAND_CARD_FLAG_LAIZI) | |||||
self:addChild(laiFlog) | |||||
laiFlog:setPosition(17,100) | |||||
end | |||||
end | |||||
return hongzhong |
@@ -0,0 +1,297 @@ | |||||
local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ") | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJGroupFactory=MJFramework.MJImport("mj.luaScript.Views.Game.MJGroupFactory") | |||||
local MJPositionCompnent = MJFramework.MJImport("mj.luaScript.Views.Compnent.MJPositionCompnent") | |||||
local MJMessage=MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") | |||||
local MJHandCardView=MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Game.MJHandCardView") | |||||
local MJSound = MJFramework.MJImport("mj.luaScript.MJSound") | |||||
local hongzhongHandCardView = class("hongzhongHandCardView", MJHandCardView) | |||||
function hongzhongHandCardView:ctor(viewId,desktopType) | |||||
hongzhongHandCardView.super.ctor(self,viewId,desktopType) | |||||
end | |||||
function hongzhongHandCardView:initView() | |||||
if self:isUseNew3D() then | |||||
self:loadUI() | |||||
self.ui.Items.Layout_Hand_Card:setVisible(false) | |||||
self.ui.Items.Layout_Operate:setVisible(false) | |||||
self.ui.Items.Button_Sure:setVisible(false) | |||||
local MJConfig = MJDefine.MJConfig_2d | |||||
if self.desktopType == MJDefine.DesktopType.ThreeD then | |||||
MJConfig = MJDefine.MJConfig_3d | |||||
end | |||||
local MahjongHandCard = require(MJConfig.HANDCARD_VIEW) | |||||
local MahjongOutCardView = require(MJConfig.OUTCARD_VIEW) | |||||
local MahjongHuCardView = require(MJConfig.HU_CARD_VIEW) | |||||
self._outCardView = MahjongOutCardView:new(self.viewId) | |||||
self:addChild(self._outCardView) | |||||
self._huCardView = MahjongHuCardView:new(self.viewId) | |||||
self:addChild(self._huCardView) | |||||
self._handcard = MahjongHandCard:new(self.viewId, self.desktopType) | |||||
self:addChild(self._handcard) | |||||
self.ui:setLocalZOrder(10) | |||||
else | |||||
self:loadUI() | |||||
self.ui.Items.Layout_Operate:setVisible(false) | |||||
self.ui.Items.Button_Sure:setVisible(false) | |||||
self.ui.Items.Button_Sure:registerClick(function() | |||||
if not self.touchMJ then | |||||
showTooltip("请选择要出的麻将!") | |||||
end | |||||
self:sendOutCard() | |||||
end) | |||||
print("MJHandCardView:"..self.viewId) | |||||
self.initX=self.ui.Items["ImageView_Start_"..self.viewId]:getPositionX()--MJDefine.MJStartPositions[self.viewId].x | |||||
self.initY=self.ui.Items["ImageView_Start_"..self.viewId]:getPositionY()--MJDefine.MJStartPositions[self.viewId].y | |||||
print("手牌起始位置self.initX = "..self.initX.."self.initY"..self.initY) | |||||
if self.viewId == MJDefine.PlayerViewType.My then | |||||
self.initX = self.initX + (CONST_WIDTH*g_radio_x-CONST_WIDTH)/2 | |||||
print("调整过后我的位置self.initX = "..self.initX.."self.initY"..self.initY) | |||||
else | |||||
self.initX = self.initX*g_radio_x | |||||
self.initY = self.initY*g_radio_y | |||||
print("调整过后其他人位置self.initX = "..self.initX.."self.initY"..self.initY) | |||||
end | |||||
self.outX=self.ui.Items["ImageView_Out_"..self.viewId]:getPositionX() | |||||
self.outY=self.ui.Items["ImageView_Out_"..self.viewId]:getPositionY() | |||||
print("出牌起始位置self.outX = "..self.outX.."self.outY"..self.outY) | |||||
self.outX = self.outX*g_radio_x | |||||
self.outY = self.outY*g_radio_y | |||||
print("出牌调整后的起始位置self.outX = "..self.outX.."self.outY"..self.outY) | |||||
--如果是2人房 调整出牌坐标 | |||||
if app.room.roomInfo.nMaxPlayCount==2 then | |||||
if self.viewId == MJDefine.PlayerViewType.My then | |||||
self.outX=self.outX-200 | |||||
elseif self.viewId == MJDefine.PlayerViewType.Top then | |||||
self.outX=self.outX+180 | |||||
end | |||||
end | |||||
-- if self.viewId~=MJDefine.MyViewId then | |||||
self.showCardPostion=self.ui.Items["ImageView_Show_"..self.viewId]:getPosition() | |||||
-- end | |||||
print("showCard起始位置self.showCardPostion x = "..self.showCardPostion.x.."y = "..self.showCardPostion.y) | |||||
self.showCardPostion.x = self.showCardPostion.x*g_radio_x | |||||
self.showCardPostion.y = self.showCardPostion.y*g_radio_y | |||||
print("showCard调整后起始位置self.showCardPostion x = "..self.showCardPostion.x.."y = "..self.showCardPostion.y) | |||||
self.ui.Items.Layout_Hand_Card:removeAllChildren() | |||||
end | |||||
end | |||||
function hongzhongHandCardView:onTouchBegan(touch) | |||||
local lastMj=self.touchMJ | |||||
self.touchMJ=nil | |||||
self.isTouchMove=false | |||||
-- if self.touchMJ then | |||||
-- self.touchMJ:setPositionY(self.initY) | |||||
-- self.touchMJ:setStatus(MJDefine.MJStatus.Normal) | |||||
-- self.touchMJ=nil | |||||
-- end | |||||
local touchPos=self:convertToNodeSpace(touch:getLocation()) | |||||
for k,v in pairs(self.handCards) do | |||||
local width = v:getContentSize().width | |||||
local height = v:getContentSize().height | |||||
local x = v:getPosition().x-width/2 | |||||
local y = v:getPosition().y-height/2 | |||||
local rect = cc.Rectangle:new(x,y,width,height) | |||||
if rect:contains(touchPos.x,touchPos.y) then | |||||
self.touchMJ=v | |||||
if self.touchMJ.status==MJDefine.MJStatus.Select then --双击出牌 | |||||
self:sendOutCard() | |||||
return false | |||||
else | |||||
--self.touchMJ:recordPostion(self.initY) | |||||
--self.touchMJ:runSelectAnimation() | |||||
--self.touchMJ:setStatus(MJDefine.MJStatus.Select) | |||||
self.touchMJ:recordPostion(cc.p(self.touchMJ:getPositionX(), self.initY)) | |||||
-- self.touchMJ:checkDltPos(touchPos) by c.mj | |||||
--app.room:dispatchEvent({name = MJDefine.MJEvent.ShowTing,card=self.touchMJ.value}) | |||||
end | |||||
break | |||||
end | |||||
end | |||||
--lastMj 有可能被移除 必须 tolua.isnull 判断一次 | |||||
if lastMj and not tolua.isnull(lastMj) and lastMj~=self.touchMJ then | |||||
lastMj:runDeSelectAnimation(true) | |||||
lastMj:setStatus(MJDefine.MJStatus.Normal) | |||||
end | |||||
if self.touchMJ then | |||||
app.room:dispatchEvent({name = MJDefine.MJEvent.SelectCard,value = self.touchMJ.value}) | |||||
else | |||||
app.room:dispatchEvent({name = MJDefine.MJEvent.SelectCard}) | |||||
app.room:dispatchEvent({name = MJDefine.MJEvent.ShowTing}) | |||||
return false | |||||
end | |||||
return true | |||||
end | |||||
function hongzhongHandCardView:onTouchMove(touch) | |||||
if not self.isOutCard then return end | |||||
local touchPos=self:convertToNodeSpace(touch:getLocation()) | |||||
local prePos=self:convertToNodeSpace(touch:getPreviousLocation()) | |||||
local x = math.abs(prePos.x-touchPos.x) | |||||
local y = math.abs(prePos.y-touchPos.y) | |||||
if self.touchMJ and (x>=1 or y>=1) then | |||||
self.isTouchMove=true | |||||
local dltx, dlty = self.touchMJ:getDltPos() | |||||
self.touchMJ:setPosition(cc.p(touchPos.x-dltx, touchPos.y-dlty)) | |||||
self.touchMJ:setLocalZOrder(1) | |||||
--return true | |||||
end | |||||
--return false | |||||
end | |||||
function hongzhongHandCardView:onTouchEnd(touch) | |||||
if self.touchMJ then | |||||
local touchdis = self.touchMJ:getTouchDistance() | |||||
if self.touchMJ:getTouchDistance()>MJDefine.MJ_TOUCH_OUT_CARD_Y then | |||||
self:touchOutCard() | |||||
else | |||||
self.touchMJ:runSelectAnimation() | |||||
self.touchMJ:setStatus(MJDefine.MJStatus.Select) | |||||
app.room:dispatchEvent({name = MJDefine.MJEvent.ShowTing,card=self.touchMJ.value}) | |||||
end | |||||
end | |||||
end | |||||
function hongzhongHandCardView:onTouchCancel(touch) | |||||
--self:touchOutCard() | |||||
end | |||||
function hongzhongHandCardView:touchOutCard() | |||||
if self.touchMJ and self.isTouchMove then | |||||
if self.touchMJ:getPositionY()>self.touchMJ.initPostion.y+MJDefine.MJ_TOUCH_OUT_CARD_Y then | |||||
self:sendOutCard() | |||||
else | |||||
self.touchMJ:restorePostion() | |||||
self.touchMJ:setStatus(MJDefine.MJStatus.Normal) | |||||
app.room:dispatchEvent({name = MJDefine.MJEvent.SelectCard}) | |||||
app.room:dispatchEvent({name = MJDefine.MJEvent.ShowTing}) | |||||
-- if self.isOutCard then | |||||
-- self:moveLastCard() | |||||
-- end | |||||
end | |||||
end | |||||
self.isTouchMove=false | |||||
end | |||||
function hongzhongHandCardView:createOutCards(arg) | |||||
if self:isUseNew3D() then | |||||
self._outCardView:createOutCards(arg) | |||||
--获取出的牌,结算要显示中鸟 | |||||
self.outCards = self._outCardView:getOutCardNodes() | |||||
else | |||||
-- arg={ | |||||
-- {card=0x25}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x02}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x02}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x01}, | |||||
-- {card=0x02}, | |||||
-- } | |||||
if type(arg)=="number" then | |||||
arg={ | |||||
{card=arg} | |||||
} | |||||
end | |||||
-- local x=self.outX | |||||
-- local y=self.outY | |||||
for k,v in pairs(arg) do | |||||
print("测试:"..v.card) | |||||
local mj=MJ:new(v.card,MJDefine.MJType.Out,self.viewId,self.desktopType) | |||||
self.ui.Items.Layout_Hand_Card:addChild(mj) | |||||
table.insert(self.outCards,mj) | |||||
-- --取余计算X坐标 从起始位置开始 默认应该为0 所以要减去1 | |||||
-- local n=#self.outCards%MJDefine.MJChangeLinCount[self.viewId]-1 | |||||
-- --向下取整判断是否换行 | |||||
-- local m=math.floor(#self.outCards/MJDefine.MJChangeLinCount[self.viewId]) | |||||
-- --如果刚好等于0则设置为换行的数 | |||||
-- if #self.outCards%MJDefine.MJChangeLinCount[self.viewId]==0 then | |||||
-- n=MJDefine.MJChangeLinCount[self.viewId]-1 | |||||
-- m=m-1 | |||||
-- end | |||||
-- --根据视图ID 计算坐标 | |||||
-- if self.viewId==MJDefine.PlayerViewType.My then | |||||
-- x=self.outX+(mj:getContentSize().width-MJDefine.MJOutChangeOffSet[self.viewId].x)*n | |||||
-- y=self.outY-m*(mj:getContentSize().height-MJDefine.MJOutChangeOffSet[self.viewId].y) | |||||
-- elseif self.viewId==MJDefine.PlayerViewType.Left then | |||||
-- x=self.outX-m*(mj:getContentSize().width-MJDefine.MJOutChangeOffSet[self.viewId].x)-n*MJDefine.MJOutOffSet[self.viewId].x | |||||
-- y=self.outY-(mj:getContentSize().height-MJDefine.MJOutChangeOffSet[self.viewId].y)*n | |||||
-- mj:setLocalZOrder(n-m) | |||||
-- elseif self.viewId==MJDefine.PlayerViewType.Right then | |||||
-- x=self.outX+m*(mj:getContentSize().width-MJDefine.MJOutChangeOffSet[self.viewId].x)-n*MJDefine.MJOutOffSet[self.viewId].x | |||||
-- y=self.outY+(mj:getContentSize().height-MJDefine.MJOutChangeOffSet[self.viewId].y)*n | |||||
-- mj:setLocalZOrder(-m-n) | |||||
-- elseif self.viewId==MJDefine.PlayerViewType.Top then | |||||
-- -- local scale=0.8 --上面的麻将要缩小 | |||||
-- mj:setScale(MJDefine.MJ_TOP_SCALE) | |||||
-- x=self.outX-(mj:getContentSize().width*MJDefine.MJ_TOP_SCALE-MJDefine.MJOutChangeOffSet[self.viewId].x)*n | |||||
-- y=self.outY+m*(mj:getContentSize().height*MJDefine.MJ_TOP_SCALE-MJDefine.MJOutChangeOffSet[self.viewId].y) | |||||
-- mj:setLocalZOrder(self:getContentSize().height-y) | |||||
-- end | |||||
local x,y=MJPositionCompnent.getOutCardPosition(self.viewId,self.outX,self.outY,mj,#self.outCards,self.desktopType,app.room.roomInfo.nMaxPlayCount) | |||||
mj:setPosition(x,y) | |||||
end | |||||
end | |||||
end | |||||
--插牌动画 | |||||
function hongzhongHandCardView:runInsertCardAction() | |||||
local insertMj=self.handCards[#self.handCards] | |||||
local iX=insertMj:getPositionX() | |||||
local iY=insertMj:getPositionY() | |||||
local height=insertMj:getContentSize().height | |||||
local x,y=self:resetHandCards(insertMj,false) | |||||
-- local actions={ | |||||
-- cc.MoveTo:create(0.01,cc.p(insertMj:getPositionX(),insertMj:getPositionY()+height)), | |||||
-- cc.MoveTo:create(0.01,cc.p(x,insertMj:getPositionY()+height)), | |||||
-- cc.MoveTo:create(0.01,cc.p(x,self.initY)), | |||||
-- } | |||||
-- insertMj:runAction(cc.Sequence:create(actions)) | |||||
insertMj:setPosition(cc.p(x,self.initY)) | |||||
self:resetHandCards() | |||||
end | |||||
return hongzhongHandCardView |
@@ -0,0 +1,141 @@ | |||||
-- require("luaScript.SubGameDefine.ZiPai.LiuHuQiangDef"); | |||||
-- local MJCreateRoomItem=require("luaScript.Views.CreateRoom.MJCreateRoom.hongzhongCreateRoomItem") | |||||
local CreateRoomBase=require("luaScript.Views.CreateRoom.CreateRoomBase") | |||||
-- 主界面 | |||||
local MJCreateRoomView = class("MJCreateRoomView", CreateRoomBase) | |||||
function MJCreateRoomView:ctor() | |||||
local datas = | |||||
{ | |||||
-- 游戏ID | |||||
gameId = app.gameId, | |||||
-- 默认选中的玩法 | |||||
defaultPlayType = 1, | |||||
} | |||||
MJCreateRoomView.super.ctor(self,datas) | |||||
end | |||||
-- function MJCreateRoomView:ctor() | |||||
-- MJCreateRoomView.super.ctor(self); | |||||
-- local ui = loadUI("mj/res/ui/ui_dating/mj_ui_create_room.ui"); | |||||
-- self.ui = ui; | |||||
-- self:addChild(ui); | |||||
-- -- 当前选中的 | |||||
-- self.curPlayType = 1 | |||||
-- --可以配置 | |||||
-- self.ruleButtonList = {} | |||||
-- -- 当前正在显示的规则界面 | |||||
-- self.ruleView = {} | |||||
-- -- 不同玩法的规则配置 | |||||
-- self.PlayTypeClass = | |||||
-- { | |||||
-- [1] = MJCreateRoomItem, | |||||
-- } | |||||
-- end | |||||
-- function MJCreateRoomView:onEnter() | |||||
-- MJCreateRoomView.super.onEnter(self) | |||||
-- self:initGameTypeView() | |||||
-- -- 按钮 - 关闭 | |||||
-- self.ui.Items.Button_Close:registerClick(handler(self, self.onClickButtonClose)) | |||||
-- -- 按钮 - 创建房间 | |||||
-- self.ui.Items.Button_Create:registerClick(handler(self, self.onClickButtonCreate)) | |||||
-- end | |||||
-- function MJCreateRoomView:onClickButtonClose() | |||||
-- self:removeFromParent() | |||||
-- end | |||||
-- -- 玩法界面初始化 | |||||
-- function MJCreateRoomView:initGameTypeView() | |||||
-- -- self.ui.Items.ScrollView:getInnerContainer():setAutoSize(true) | |||||
-- --layout | |||||
-- for i = 1,1 do | |||||
-- local className = self.PlayTypeClass[i] | |||||
-- self.ruleView[i] = className:new() | |||||
-- self.ui.Items.Layout_Rule:addChild(self.ruleView[i]) | |||||
-- if self.ruleView[i]:getContentSize().height<self.ui.Items.Layout_Rule:getContentSize().height then | |||||
-- -- self.ruleView[i]:setContentSize(cc.size(self.ruleView[i]:getContentSize().width,self.ui.Items.Layout_Rule:getContentSize().height)) | |||||
-- self.ruleView[i]:setPositionY(self.ui.Items.Layout_Rule:getContentSize().height-self.ruleView[i]:getContentSize().height) | |||||
-- end | |||||
-- end | |||||
-- self.roomListGameIcon = import("luaScript.Tools.RadioManager"):new() | |||||
-- self.ui.Items.CheckBox_HengYang:setSelectedState(true) | |||||
-- -- self.roomListGameIcon:addItem(self.ui.Items.CheckBox_HengYang,LHQ_GAMERULE.LHQ) | |||||
-- local function callback(gameRule) | |||||
-- if gameRule ~= LHQ_GAMERULE.LHQ then | |||||
-- self.ui.Items.CheckBox_HengYang:setSelectedState(false) | |||||
-- end | |||||
-- self.curPlayType = gameRule + 1 | |||||
-- end | |||||
-- self.roomListGameIcon:setCallback(callback) | |||||
-- self.ui.Items.ScrollView:hideAllBar() | |||||
-- self.ui.Items.ScrollView:jumpToTop()--jumpToTopOnSizeChanged() | |||||
-- end | |||||
function MJCreateRoomView:onClickCreate() | |||||
local totalGameNum,gameInfo = self:getRuleResult() | |||||
log(gameInfo); | |||||
local request = CreateRoomRequest:new() | |||||
request.gameId = app.gameId | |||||
request.basechips = 1 | |||||
request.totalGameNum = totalGameNum or 0 | |||||
request.requireCards = 0 | |||||
request.createFlag = 0 | |||||
-- local gameInfo = {} | |||||
-- gameInfo.settlement=1 | |||||
-- gameInfo.playmode=tt.playmode | |||||
-- gameInfo.extrahutype=tt.extrahutype | |||||
-- gameInfo.gamerule=tt.gamerule | |||||
-- gameInfo.niaopoint=tt.niaopoint | |||||
-- gameInfo.niaonumber=tt.niaonumber | |||||
-- gameInfo.canqiangganghu=tt.canqiangganghu | |||||
request.gameInfo = gameInfo--json.encode(gameInfo) | |||||
request.userInfo = app.user.userInfo; | |||||
-- local tt = json.decode(app.user.userInfo) | |||||
--群检测 | |||||
-- tt.unionid = app.user.password | |||||
-- tt.openid = app.user.account | |||||
--区域设置 | |||||
-- gameInfo.areaNo = tt.areano | |||||
-- request.userInfo = json.encode(tt) | |||||
logE("六胡抢 createroom request :"..table.tostring(request)) | |||||
app.hall:requestCreateRoom(request) | |||||
end | |||||
return MJCreateRoomView |
@@ -0,0 +1,170 @@ | |||||
-- hongzhongRequestStartView.lua | |||||
local MJMessage = MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local hongzhongRequestStartView = class("hongzhongRequestStartView", cc.UIView) | |||||
function hongzhongRequestStartView:ctor(initiateUserId) | |||||
hongzhongRequestStartView.super.ctor(self) | |||||
loadSpriteFrameFile("res/ui/zy_fangjian/liangsanren/liangsanren.plist") | |||||
self.m_initiateUserId = initiateUserId | |||||
self.listItems = {} | |||||
self:loadUi() | |||||
end | |||||
function hongzhongRequestStartView:loadUi() | |||||
self.ui = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstart.ui") | |||||
self:addChild(self.ui) | |||||
self:initUi() | |||||
end | |||||
function hongzhongRequestStartView:initUi( ) | |||||
-- 同意 | |||||
self.ui.Items.Button_1:registerClick(handler(self , self.onClickAgree)) | |||||
-- 拒绝 | |||||
self.ui.Items.Button_2:registerClick(handler(self , self.onClickRefuse)) | |||||
self:setBtnEnabled( not app.room:isMyself(self.m_initiateUserId)) | |||||
self.ui.Items.Text_3:setString("") | |||||
end | |||||
function hongzhongRequestStartView:setBtnEnabled( is ) | |||||
self.ui.Items.Button_1:setVisible( is ) | |||||
self.ui.Items.Button_2:setVisible( is ) | |||||
end | |||||
-- info{uid=1, nick="", headUrl="", status=1} | |||||
function hongzhongRequestStartView:showItems(data) | |||||
self.listItems = {} | |||||
self.ui.Items.Layout_3:removeAllChildren() | |||||
if data == nil or data.pList == nil then return "" end | |||||
local memberList = {} | |||||
for _,v in pairs(data.pList) do | |||||
local info = app.room.roomInfo.memberList[v.nUserId] | |||||
local t = {} | |||||
t.userInfo = info.userInfo | |||||
t.nStatus = v.nStatus | |||||
t.nUserId = v.nUserId | |||||
memberList[v.nUserId] = t | |||||
end | |||||
local tmp = {} | |||||
for uid,v in pairs(memberList) do | |||||
if v and v.userInfo then | |||||
local info = json.decode(v.userInfo) | |||||
table.insert(tmp, {uid=tonumber(uid), nick=info.nickname, headUrl=info.headimgurl, status=v.nStatus}) | |||||
end | |||||
end | |||||
if #tmp>=2 then table.sort(tmp,function(a, b) return a.uid<b.uid end) end | |||||
for i,v in ipairs(tmp) do | |||||
local node = self:createItem(v) | |||||
self.listItems[v.uid] = node | |||||
self.ui.Items.Layout_3:addChild(node) | |||||
end | |||||
self:updateBar(data.timeOut, 60) | |||||
end | |||||
function hongzhongRequestStartView:updateView( data ) | |||||
local list = data.pList | |||||
for _,v in pairs(list) do | |||||
local node = self.listItems[v.nUserId] | |||||
if node then | |||||
node:updateImg(v.nStatus) | |||||
if app.room:isMyself(v.nUserId) and v.nStatus~=4 then | |||||
self:setBtnEnabled(false) | |||||
end | |||||
end | |||||
end | |||||
self:updateBar(data.timeOut, 60) | |||||
end | |||||
-- 设置发起者昵称 | |||||
function hongzhongRequestStartView:setRequestNick( info ) | |||||
self.ui.Items.Text:setString('['.. (getSubStringNickname(info.nickname) or "") ..']') | |||||
end | |||||
-- 时间 | |||||
function hongzhongRequestStartView:updateBar( time, totalTime ) | |||||
if self.loadingBarTimer == nil then | |||||
self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function() | |||||
time = time - 1 | |||||
if self.ui.Items.Text_3 then | |||||
self.ui.Items.Text_3:setString(string.format("%d", time)) | |||||
end | |||||
end,1.0,false) | |||||
else | |||||
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer) | |||||
self.loadingBarTimer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(function() | |||||
time = time - 1 | |||||
if self.ui.Items.Text_3 then | |||||
self.ui.Items.Text_3:setString(string.format("%d", time)) | |||||
end | |||||
end,1.0,false) | |||||
end | |||||
end | |||||
-- 同意 | |||||
function hongzhongRequestStartView:onClickAgree(sender) | |||||
playBtnEffect() | |||||
local request = MJMessage.FastStartRequest:new() | |||||
request.tp = 2 | |||||
self.ui:sendMsg(app.room, MJDefine.MJEvent.RequestFastsStart, request) | |||||
end | |||||
-- 拒绝 | |||||
function hongzhongRequestStartView:onClickRefuse(sender) | |||||
playBtnEffect() | |||||
local request = MJMessage.FastStartRequest:new() | |||||
request.tp = 3 | |||||
self.ui:sendMsg(app.room, MJDefine.MJEvent.RequestFastsStart, request) | |||||
end | |||||
function hongzhongRequestStartView:removeSelf() | |||||
self:removeFromParent() | |||||
end | |||||
function hongzhongRequestStartView:onEnter() | |||||
hongzhongRequestStartView.super.onEnter(self) | |||||
local askInfo = app.room.roomInfo.memberList[self.m_initiateUserId] | |||||
if askInfo then | |||||
local userInfo = json.decode(askInfo.userInfo) | |||||
self:setRequestNick({nickname = userInfo.nickname}) | |||||
end | |||||
end | |||||
function hongzhongRequestStartView:onExit() | |||||
if self.loadingBarTimer then | |||||
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(self.loadingBarTimer) | |||||
self.loadingBarTimer = nil | |||||
end | |||||
end | |||||
-- info{uid=1, nick="", headUrl="", status=1} | |||||
function hongzhongRequestStartView:createItem( info ) | |||||
local node = loadUI("res/ui/ui_fangjian/ui_fangjian_quickstartItem.ui") | |||||
node.headImg = node.Items.ImageView_touxiang | |||||
node.nickName = node.Items.Text_mingzi | |||||
node.statusImg = node.Items.ImageView | |||||
node.updateImg = function(nd, status) | |||||
if nd.statusImg then | |||||
--1申请 2同意 3 拒绝 4初始状态 | |||||
if status == 4 then | |||||
nd.statusImg:loadTexture("kszj_lab_dengdaizhong.png", 1) | |||||
elseif status == 2 then | |||||
nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1) | |||||
elseif status == 3 then | |||||
nd.statusImg:loadTexture("kszj_lab_jujue.png", 1) | |||||
elseif status == 1 then --发起者 | |||||
nd.statusImg:loadTexture("kszj_lab_tongyi.png", 1) | |||||
end | |||||
end | |||||
end | |||||
if info and type(info)=='table' then | |||||
setPlayerHeadImage(info.uid, info.headUrl, node.headImg) | |||||
node.nickName:setString(getSubStringNickname(info.nick) or "") | |||||
node:updateImg(info.status) | |||||
if app.room:isMyself(info.uid) and info.status~=4 then | |||||
self:setBtnEnabled(false) | |||||
end | |||||
end | |||||
return node | |||||
end | |||||
return hongzhongRequestStartView |
@@ -0,0 +1,230 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa") | |||||
local MJRoomDaJuView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomDaJuView") | |||||
local hongzhongRoomDaJuView = class("hongzhongRoomDaJuView",MJRoomDaJuView) | |||||
function hongzhongRoomDaJuView:ctor() | |||||
hongzhongRoomDaJuView.super.ctor(self) | |||||
end | |||||
function hongzhongRoomDaJuView:loadUI() | |||||
local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_daju.ui") | |||||
self.ui = ui | |||||
self:addChild(ui) | |||||
end | |||||
function hongzhongRoomDaJuView:initPlayerInfo() | |||||
local roomInfo = app.room.roomInfo | |||||
--房间玩法 | |||||
local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo) | |||||
self.ui.Items.Text_Rule:setText(ruleAll) | |||||
-- 设置房间号和开始时间 | |||||
local tableId = roomInfo.nShowTableId | |||||
self.ui.Items.Text_fanghao:setText("房号:"..tableId) | |||||
self.ui.Items.Text_time:setText(os.date("%m-%d %X")) | |||||
end | |||||
function hongzhongRoomDaJuView:initPlayerInfo() | |||||
local roomInfo=app.room.roomInfo | |||||
-- local indexPlayer = 1 | |||||
local playerNum = table.nums(roomInfo.memberList) | |||||
for i=1,4 do | |||||
if i>playerNum then | |||||
self.ui.Items["Layout_Player_"..i]:setVisible(false) | |||||
end | |||||
end | |||||
--得到大赢家 土豪 炮友用户ID | |||||
local myUserId=app.room:getMyUserId()--app.user.loginInfo.uid | |||||
local maxTotalScore = 0--roomInfo.memberList[myUserId].nTotalMoney | |||||
local minTotalScore = maxTotalScore--roomInfo.memberList[1].nTotalMoney | |||||
local maxDianPaoCount = 0--roomInfo.memberList[myUserId].nTotalInfo.dianPaoCnt or 0--roomInfo.memberList[1]. | |||||
local maxUserId=-1--roomInfo.memberList[myUserId].nUserId | |||||
local minUserId=maxUserId | |||||
local maxDiaoPaoUserId=maxUserId | |||||
for k,v in pairs(roomInfo.memberList) do | |||||
-- local | |||||
v.nTotalMoney = tonumber(v.nTotalMoney) | |||||
if v.nTotalMoney>maxTotalScore and v.nTotalMoney>0 then | |||||
maxTotalScore=v.nTotalMoney | |||||
maxUserId=v.nUserId | |||||
end | |||||
if v.nTotalMoney<minTotalScore and v.nTotalMoney>0 then | |||||
minTotalScore=v.nTotalMoney | |||||
minUserId=v.nUserId | |||||
end | |||||
if v.nTotalInfo.dianPaoCnt>maxDianPaoCount and v.nTotalMoney>0 then | |||||
maxDianPaoCount=v.nTotalInfo.dianPaoCnt | |||||
maxDiaoPaoUserId=v.nUserId | |||||
end | |||||
end | |||||
self.maxUserId=maxUserId | |||||
--显示用户信息 | |||||
for k,v in pairs(roomInfo.memberList) do | |||||
-- -- 玩家头像 名字 | |||||
local index=v.nSeatId+1 | |||||
local userInfo = app.room:getUserInfo(v.nUserId) | |||||
local name = string.format("Text_name_%d",index) | |||||
local uid = string.format("Text_uid_%d",index) | |||||
local head = string.format("ImageView_headImg_%d",index) | |||||
-- local tuhao = string.format("ImageView_tuhao_%d",index) | |||||
local winer = string.format("ImageView_dayingjia_%d",index) | |||||
local roomer = string.format("ImageView_roomer_%d",index) | |||||
-- local paoyou = string.format("ImageView_PaoYou_%d",index) | |||||
-- local ino = string.format("Text_HuPaiTimes_%d",index) | |||||
-- local ziMoTimes = string.format("Text_ZiMoTimes_%d",index) | |||||
-- local fangPaoTimes = string.format("Text_FangPaoTimes_%d",index) | |||||
local score = string.format("Text_Total_Score_%d",index) | |||||
--local zongFen = string.format("Text_Zongfen_%d",index) | |||||
local bg = string.format("Layout_Player_%d",index) | |||||
local jiesanItems = string.format("Text_Jiesan_%d",index) | |||||
local nickname = "" | |||||
if userInfo and userInfo.nickname then | |||||
nickname = getSubStringNickname(userInfo.nickname) | |||||
self:updateUserHead(self.ui.Items[head],v.nUserId, userInfo.sex, userInfo.headimgurl); | |||||
end | |||||
self.ui.Items[name]:setText(nickname) | |||||
self.ui.Items[uid]:setText("ID:"..v.nUserId) | |||||
--显示隐藏游戏内选手id(主办人和管理员不限制,只针对海选赛) -- todo lwq | |||||
-- begin | |||||
local ClubDefine = require("luaScript.Protocol.Club.ClubDefine") | |||||
if app.club_php.clubID and app.club_php.clubID ~= 0 then | |||||
if app.club_php:getCestIsOpen(app.club_php.clubID) then | |||||
--隐私数据 | |||||
local clubInfo = app.club_php.clubList[app.club_php.clubID] | |||||
self.cliext = clubInfo.groupext and clubInfo.groupext.cliext | |||||
if not self.cliext or not self.cliext.is_hideUid or (self.cliext and self.cliext.is_hideUid == 1) then | |||||
if clubInfo.role == ClubDefine.Job.Creator or clubInfo.role == ClubDefine.Job.Manager then | |||||
self.ui.Items[uid]:setVisible(true) | |||||
else | |||||
self.ui.Items[uid]:setVisible(false) | |||||
end | |||||
end | |||||
end | |||||
end | |||||
if v.nUserId == tonumber(app.user.loginInfo.uid) then | |||||
self.ui.Items[uid]:setVisible(true) | |||||
end | |||||
-- end | |||||
-- self.ui.Items[roomer]:setVisible(v.nUserId == roomInfo.nRoomOwnedUid) | |||||
self.ui.Items[roomer]:setVisible(false) -- 始终隐藏房主 | |||||
-- if v.nUserId~=minUserId then | |||||
-- self.ui.Items[tuhao]:setVisible(false) | |||||
-- end | |||||
if v.nUserId==maxUserId then | |||||
self.ui.Items[bg]:setBackGroundImage("mj_img_game_over1_win_bg.png",cc.TextureResType.plistType) | |||||
--self.ui.Items[zongFen]:setTextColor(cc.c4b(249,242,225,255)) | |||||
-- self.ui.Items[name]:setColor(cc.c3b(249,242,225)) | |||||
else | |||||
self.ui.Items[winer]:setVisible(false) | |||||
end | |||||
-- if v.nUserId~=maxDiaoPaoUserId then | |||||
-- self.ui.Items[paoyou]:setVisible(false) | |||||
-- end | |||||
--分数 | |||||
-- v.nTotalMoney=1 | |||||
if v.nTotalMoney > 0 then | |||||
self.ui.Items[score]:setText(tostring("+"..v.nTotalMoney)) | |||||
self.ui.Items[score]:setFntFile("res/fonts/dt_jia_num.fnt") | |||||
--self.ui.Items[score]:setTextColor(cc.c4b(178,34,34,255)) | |||||
-- local config = self.ui.Items[score]:getFontConfig() | |||||
-- config.effectColor = cc.c4b(146,31,0,255) | |||||
-- config.outlineSize = 1 | |||||
-- self.ui.Items[score]:setFontConfig(config) | |||||
-- self.ui.Items[bg]:setBackGroundImage("mj_img_game_over_win_bg.png",cc.TextureResType.plistType) | |||||
-- self.ui.Items[score]:setFntFile("res/fonts/jiesuan_all_win.fnt") | |||||
else | |||||
self.ui.Items[score]:setText(tostring(v.nTotalMoney)) | |||||
self.ui.Items[score]:setFntFile("res/fonts/dt_jian_num.fnt") | |||||
-- self.ui.Items[score]:setColor(cc.c3b(255,110,22)) | |||||
-- self.ui.Items[bg]:setBackGroundImage("mj_img_game_over_bg.png",cc.TextureResType.plistType) | |||||
-- self.ui.Items[score]:setFntFile("res/fonts/jiesuan_all_lose.fnt") | |||||
end | |||||
if v.nTotalInfo.jiesan then | |||||
if v.nTotalInfo.jiesan >= 0 then | |||||
local jiesan = v.nTotalInfo.jiesan | |||||
if jiesan == 1 then | |||||
self.ui.Items[jiesanItems]:setText("申请解散") | |||||
elseif jiesan == 2 then | |||||
self.ui.Items[jiesanItems]:setText("同意解散") | |||||
elseif jiesan == 4 then | |||||
self.ui.Items[jiesanItems]:setText("系统解散") | |||||
elseif jiesan == 0 then | |||||
self.ui.Items[jiesanItems]:setText("超时解散") | |||||
end | |||||
end | |||||
end | |||||
end | |||||
self:updateItemPosition() | |||||
end | |||||
function hongzhongRoomDaJuView:initPlayerItemInfo() | |||||
local roomInfo=app.room.roomInfo | |||||
local itemNames={ | |||||
["ziMoCnt"]="自摸次数 ", | |||||
["jiePaoCnt"]="接炮次数 ", | |||||
["dianPaoCnt"]="点炮次数 ", | |||||
["mingCnt"]="接杠次数 ", | |||||
-- ["zhiCnt"]="直杠", | |||||
["baCnt"]="明杠次数 ", | |||||
["anCnt"]="暗杠次数 ", | |||||
} | |||||
--显示用户信息 | |||||
for _,player in pairs(roomInfo.memberList) do | |||||
-- -- 玩家头像 名字 | |||||
local index=player.nSeatId+1 | |||||
local i=1 | |||||
for k,v in pairs(itemNames) do | |||||
if player.nTotalInfo[k] then | |||||
local info = string.format("Text_Info_%d_%d",index,i) | |||||
print(info) | |||||
local str =itemNames[k]..player.nTotalInfo[k] --string.format(itemNames[],index,i) | |||||
self.ui.Items[info]:setText(str) | |||||
if self.maxUserId==player.nUserId then | |||||
self.ui.Items[info]:setTextColor(cc.c4b(255,255,255,255)) | |||||
local config = self.ui.Items[info]:getFontConfig() | |||||
--config.effectColor = cc.c4b(255,255,255,255) | |||||
--config.outlineSize = 1 | |||||
self.ui.Items[info]:setFontConfig(config) | |||||
end | |||||
i=i+1 | |||||
end | |||||
end | |||||
end | |||||
end | |||||
return hongzhongRoomDaJuView |
@@ -0,0 +1,41 @@ | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJSound = MJFramework.MJImport("mj.luaScript.MJSound") | |||||
local MJRoomDirection = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomDirection") | |||||
local hongzhongRoomDirection = class("hongzhongRoomDirection", MJRoomDirection) | |||||
function hongzhongRoomDirection:ctor(desktopType) | |||||
hongzhongRoomDirection.super.ctor(self, desktopType) | |||||
end | |||||
function hongzhongRoomDirection:updateView(desktopType) | |||||
if self.ui then | |||||
self.ui:removeFromParent() | |||||
end | |||||
self.desktopType = desktopType | |||||
if self.desktopType == MJDefine.DesktopType.ThreeD then | |||||
if MJDefine.IS_NEW_3D then | |||||
local path = "mj/res/ui/ui_fangjian/mj_ui_room_direction_3d.ui" | |||||
self.ui = loadUI(path) | |||||
else | |||||
self.ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_room_direction.ui") | |||||
self:init3DDirection() | |||||
end | |||||
else | |||||
self.ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_room_direction_2d.ui") | |||||
self:init2DDirection() | |||||
end | |||||
self:addChild(self.ui) | |||||
if self.seatId then | |||||
self.currentDir = nil | |||||
self:updateDirection(self.seatId) | |||||
end | |||||
self:hideJuShuNum(false) | |||||
self:hideLeftCardNums(false) | |||||
end | |||||
return hongzhongRoomDirection |
@@ -0,0 +1,90 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJRoomPlayerView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomPlayerView") | |||||
local hongzhongRoomPlayerView = class("hongzhongRoomPlayerView", MJRoomPlayerView) | |||||
function hongzhongRoomPlayerView:ctor() | |||||
hongzhongRoomPlayerView.super.ctor(self) | |||||
end | |||||
function hongzhongRoomPlayerView:loadUI() | |||||
local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_player_view.ui") | |||||
self.ui = ui | |||||
self:addChild(ui) | |||||
self:resetTuoGuanShow() | |||||
end | |||||
-- 托管显示 | |||||
function hongzhongRoomPlayerView:resetTuoGuanShow() | |||||
for i=1,4 do | |||||
self.ui.Items["ImageView_tuoguan_"..i]:setVisible(false) | |||||
end | |||||
end | |||||
function hongzhongRoomPlayerView:showTuoGuanByViewId(viewId,bVisible) | |||||
self.ui.Items["ImageView_tuoguan_"..viewId]:setVisible(bVisible) | |||||
end | |||||
function hongzhongRoomPlayerView:setPlayerOffLineVisible(bVisible,viewId) | |||||
hongzhongRoomPlayerView.super.setPlayerOffLineVisible(self,bVisible,viewId) | |||||
if self.allNodes[viewId] then | |||||
local Text_offtime = self.allNodes[viewId].offLine:getChildByName("Text_offline_time_"..viewId) | |||||
if Text_offtime then | |||||
local userId = app.room:getUserIdByViewId(viewId) | |||||
local member = app.room.roomInfo.memberList[userId] | |||||
local offtime = member and member.offlinetime or 0 | |||||
Text_offtime:setText(formatTimeToStr(offtime)) | |||||
Text_offtime:stopAllActions() | |||||
Text_offtime:runAction(cc.RepeatForever:create(cc.Sequence:create(cc.DelayTime:create(1),cc.CallFunc:create(function() | |||||
offtime = offtime + 1 | |||||
Text_offtime:setText(formatTimeToStr(offtime)) | |||||
end)))) | |||||
end | |||||
end | |||||
end | |||||
function hongzhongRoomPlayerView:init() | |||||
hongzhongRoomPlayerView.super.init(self) | |||||
self:initChatComponent() | |||||
end | |||||
function hongzhongRoomPlayerView:initChatComponent() | |||||
if self.chatComponentView and not tolua.isnull(self.chatComponentView) then | |||||
return | |||||
end | |||||
local heads = { | |||||
[1] = self.allNodes[1].head, | |||||
[2] = self.allNodes[2].head, | |||||
[3] = self.allNodes[3].head, | |||||
[4] = self.allNodes[4].head, | |||||
} | |||||
self.chatComponentView = import("luaScript.Views.Room.RoomChatComponentView"):new(heads,MJDefine.MJChatTxt,MJDefine.MJFaceConfig) | |||||
local voiceEnable = tonumber(loadUserInfo("voiceEnable")) or 1 | |||||
local propEnable = tonumber(loadUserInfo("propEnable")) or 1 | |||||
self.chatComponentView:setVoiceEnabled(voiceEnable==1) | |||||
self.chatComponentView:setPropEnabled(propEnable==1) | |||||
self:addChild(self.chatComponentView) | |||||
end | |||||
function hongzhongRoomPlayerView:onClickHead(index) | |||||
playBtnEffect() | |||||
local nUserId = app.room.seatShowList[index] | |||||
local memberInfo = app.room.roomInfo.memberList[nUserId] | |||||
if memberInfo then | |||||
local view = import("luaScript.Views.Room.RoomPlayerInfoViewNew"):new(nUserId, memberInfo.userInfo) | |||||
view:setAnchorPoint(cc.p(0.5, 0.5)) | |||||
app:showWaitDialog(view, 0, true) | |||||
end | |||||
end | |||||
return hongzhongRoomPlayerView |
@@ -0,0 +1,569 @@ | |||||
local MJRoomToolView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomToolView") | |||||
local MJRoomMessageView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomMessageView") | |||||
local MJRoomPlayerView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomPlayerView") | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJFunction=MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local MJHandCardView=MJFramework.MJImport("mj.luaScript.Views.Game.MJHandCardView") | |||||
-- local MJRoomXiaoJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomXiaoJuView") | |||||
-- local MJRoomDaJuView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDaJuView") | |||||
-- local MJRoomDismissView=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDismissView") | |||||
local MJRoomDirection=MJFramework.MJImport("mj.luaScript.Views.Room.MJRoomDirection") | |||||
-- local MJMessage=MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") | |||||
-- local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ") | |||||
local MJWanFa=MJFramework.MJImport("luaScript.SubGameDefine.MaJiang.MJWanFa") | |||||
local MJAnimationCompnent=MJFramework.MJImport("mj.luaScript.Views.Compnent.MJAnimationCompnent") | |||||
local MJSound=MJFramework.MJImport("mj.luaScript.MJSound") | |||||
local MJRoomReplayView=MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomReplayView") | |||||
local hongzhongRoomReplayView = class("hongzhongRoomReplayView", MJRoomReplayView) | |||||
function hongzhongRoomReplayView:onEnter() | |||||
-- MJRoomReplayView.super.onEnter(self) | |||||
--ui load | |||||
--初始化处理函数 | |||||
if self.initHanders then | |||||
self:initHanders() | |||||
end | |||||
local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_fangjian.ui"); | |||||
self.ui = ui; | |||||
self:addChild(ui); | |||||
-- 初始化GPS组件 | |||||
-- self:initGpsComponent(); | |||||
--加载纹理缓存 | |||||
self:loadTextureCache() | |||||
-- --监听事件 | |||||
-- self:bindAllEvent() | |||||
-- self:onGameReconnection() | |||||
self:updateRoomData() | |||||
--初始化视图 | |||||
self:initView() | |||||
-- --初始化游戏事件按钮 | |||||
self:initGameButton() | |||||
--默认状态 | |||||
self:defaultState() | |||||
self:initHandCardNodes() | |||||
self:startReplay() | |||||
-- MJSound.PlayGameBGM() | |||||
-- playLHQMusic() | |||||
-- 房间号 | |||||
local roomInfo=app.room.roomInfo | |||||
self.ui.Items.Text_roomNum:setText(tostring(roomInfo.nShowTableId)) | |||||
local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo) | |||||
self.ui.Items.Text_Rule:setText(ruleAll) | |||||
self.ui.Items.Layout_TingPai:setVisible(false) | |||||
end | |||||
function hongzhongRoomReplayView:ctor(data) | |||||
hongzhongRoomReplayView.super.ctor(self,data) | |||||
-- --玩家牌局面板 | |||||
-- self.playerHandCards={} | |||||
-- self.data=data | |||||
-- app:changeGameProtocol(app.gameId,1) | |||||
end | |||||
function hongzhongRoomReplayView:updateRoomData() | |||||
hongzhongRoomReplayView.super.updateRoomData(self) | |||||
if self.data.ext.piaofen then | |||||
local roomInfo=app.room.roomInfo | |||||
for k,v in pairs(self.data.ext.piaofen) do | |||||
local nUserId=tonumber(k) | |||||
roomInfo.memberList[nUserId].nPiaoNum = v | |||||
end | |||||
end | |||||
end | |||||
function hongzhongRoomReplayView:initView() | |||||
hongzhongRoomReplayView.super.initView(self) | |||||
cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("hongzhong/res/zy_fangjian/mj_piao_fen.plist") | |||||
self:onXiaPiaoResponse({}) | |||||
--self:init3DPos() | |||||
self.ui.Items.Button_Info:setVisible(false) | |||||
self.ui.Items.Button_Club:setVisible(false) | |||||
self.ui.Items.Text_Rule:setPositionY(62) | |||||
local exitPt = self.replayView.Items.Button_Exit:getPosition() | |||||
self.replayView.Items.Button_Exit:setPositionY(exitPt.y-30) | |||||
self:adaptPlayerViewPos() | |||||
end | |||||
function hongzhongRoomReplayView:adaptPlayerViewPos() | |||||
self.playerNodePos = {} | |||||
for i=1,4 do | |||||
if self.playerView.allNodes[i].player then | |||||
self.playerNodePos[i] = self.playerView.allNodes[i].player:getPosition() | |||||
end | |||||
end | |||||
self.playerView.allNodes[1].player:setPositionX(self.playerNodePos[1].x-8) | |||||
self.playerView.allNodes[2].player:setPositionY(self.playerNodePos[2].y-20) | |||||
self.playerView.allNodes[3].player:setPositionX(self.playerNodePos[3].x+8) | |||||
self.playerView.allNodes[4].player:setPosition(cc.p(self.playerNodePos[4].x+12,self.playerNodePos[4].y+10)) | |||||
end | |||||
-- function hongzhongRoomReplayView:onEnter() | |||||
-- hongzhongRoomReplayView.super.onEnter(self) | |||||
-- --ui load | |||||
-- local ui = loadUI("mj/res/ui/ui_fangjian/mj_ui_fangjian.ui"); | |||||
-- self.ui = ui; | |||||
-- self:addChild(ui); | |||||
-- -- 初始化GPS组件 | |||||
-- -- self:initGpsComponent(); | |||||
-- --加载纹理缓存 | |||||
-- -- self:loadTextureCache() | |||||
-- -- --初始化游戏事件按钮 | |||||
-- self:initGameButton() | |||||
-- -- --监听事件 | |||||
-- -- self:bindAllEvent() | |||||
-- -- self:onGameReconnection() | |||||
-- self:updateRoomData() | |||||
-- --初始化视图 | |||||
-- self:initView() | |||||
-- --默认状态 | |||||
-- self:defaultState() | |||||
-- self:initHandCardNodes() | |||||
-- self:startReplay() | |||||
-- -- MJSound.PlayGameBGM() | |||||
-- -- playLHQMusic() | |||||
-- end | |||||
-- function hongzhongRoomReplayView:updateRoomData() | |||||
-- local data=self.data--=MJDefine.TestData | |||||
-- -- self.data=data | |||||
-- app.room:initRoomInfo() | |||||
-- local roomInfo=app.room.roomInfo | |||||
-- roomInfo.nMaxPlayCount = table.nums(data.user) | |||||
-- roomInfo.nShowTableId = data.roomid | |||||
-- roomInfo.strGameInfo=json.encode(data.ext) | |||||
-- roomInfo.nGameStartCount=data.turn | |||||
-- roomInfo.nTotalGameNum=data.nbound | |||||
-- local dipai=MJFunction.convertToCards(data.dipai) | |||||
-- roomInfo.nLeaveCardNum=#dipai | |||||
-- roomInfo.stopFlag=data.flag | |||||
-- --用户信息 | |||||
-- roomInfo.memberList={} | |||||
-- for k,v in pairs(data.user) do | |||||
-- local nUserId=tonumber(k) | |||||
-- if not roomInfo.memberList[nUserId] then | |||||
-- roomInfo.memberList[nUserId] = {} | |||||
-- end | |||||
-- roomInfo.memberList[nUserId].nUserId = nUserId | |||||
-- roomInfo.memberList[nUserId].nSeatId = v.seatid | |||||
-- -- self.roomInfo.memberList[v.nUserId].nPlayerFlag = v.nPlayerFlag | |||||
-- local userInfo=app.playerInfoManager:getPlayerInfo(nUserId) | |||||
-- userInfo.nickname=userInfo.name | |||||
-- roomInfo.memberList[nUserId].userInfo = json.encode(userInfo)--v.userInfo | |||||
-- -- self.roomInfo.memberList[v.nUserId].nTurnScore = v.nTurnScore | |||||
-- roomInfo.memberList[nUserId].nTotalMoney = data.score[k] | |||||
-- -- self.roomInfo.memberList[v.nUserId].nTingStatus = v.nTingStatus | |||||
-- -- self.roomInfo.memberList[v.nUserId].gruoupCards = v.gruoupCards | |||||
-- -- self.roomInfo.memberList[v.nUserId].outCards = v.outCards | |||||
-- local tempCards=MJFunction.convertToCards(v.hand) | |||||
-- local handCards={} | |||||
-- for k,v in pairs(tempCards) do | |||||
-- table.insert(handCards,{card=tonumber(v)}) | |||||
-- end | |||||
-- roomInfo.memberList[nUserId].handCards = handCards | |||||
-- -- roomInfo.memberList[nUserId].nOnlineStatus = v.nOnlineStatus | |||||
-- -- roomInfo.memberList[nUserId].nDisbandStatus = v.nDisbandStatus | |||||
-- -- self.dismissInfo[nUserId] = v.nDisbandStatus | |||||
-- --这里只记录,暂时没用到。可能战绩回放的时候是需要用的 | |||||
-- -- local cardData = self:serverCardToMyCard(v.handCard) | |||||
-- -- self.roomInfo.memberList[v.nUserId].cardList = {} | |||||
-- -- self.roomInfo.memberList[v.nUserId].cardList = cardData | |||||
-- end | |||||
-- roomInfo.nBankSeatId=roomInfo.memberList[tonumber(data.ext.banker)].nSeatId | |||||
-- app.room:updateUserSeateShowId() | |||||
-- --战报解析 | |||||
-- self.reports={} | |||||
-- local ops=string.split(data.ops,"|") | |||||
-- for k,v in pairs(ops) do | |||||
-- local op=string.split(v,",") | |||||
-- local nUserId=tonumber(op[1]) | |||||
-- local opType=op[2] | |||||
-- local card=tonumber(op[3]) | |||||
-- table.insert(self.reports,{nUserId=nUserId,opType=opType,card=card}) | |||||
-- -- print(table.tostring(op)) | |||||
-- end | |||||
-- end | |||||
-- function hongzhongRoomReplayView:initGameButton() | |||||
-- --详细按钮 | |||||
-- self.ui.Items.Button_Info:registerClick(function() | |||||
-- playBtnEffect() | |||||
-- self.ui.Items.Layout_Rule:setVisible(not self.ui.Items.Layout_Rule:isVisible()) | |||||
-- end) | |||||
-- --点击空白 | |||||
-- self.ui.Items.Layout_Touch:registerClick(nil,function() | |||||
-- -- 隐藏个人信息 | |||||
-- -- self.playerView:removePlayerInfoView() | |||||
-- -- self.ui.Items.Layout_Card_Panel:setVisible(false) | |||||
-- self.ui.Items.Layout_Rule:setVisible(false) | |||||
-- -- local effect=MJAnimationCompnent.CreateGameStart(onEnd) | |||||
-- -- self.ui.Items.Layout_Player:addChild(effect) | |||||
-- -- self.ui.Items.Button_Invite:setVisible(false) | |||||
-- -- self.ui.Items.Button_Ready:setVisible(false) | |||||
-- end) | |||||
-- end | |||||
-- function hongzhongRoomReplayView:defaultState() | |||||
-- --队列初始化 | |||||
-- self.callbackQueue = {} | |||||
-- self.callbackRunning = false | |||||
-- self.ui.Items.Button_GPS:setVisible(false) | |||||
-- self.ui.Items.Layout_TingPai:setVisible(false) | |||||
-- self.playerView:setOffLineVisible(false) | |||||
-- self.playerView:setPlayerVisible(false) | |||||
-- self.ui.Items.Layout_Rule:setVisible(false) | |||||
-- self.ui.Items.Text_CardNum:setText("") | |||||
-- -- self.playerView:setOperatorTipVisible(false) | |||||
-- self:setBtnSitDownVisible(false) | |||||
-- self:setTingCardViewVisible(false) | |||||
-- self:setGuideView(false) | |||||
-- self:setWetChatVisible(false) | |||||
-- end | |||||
-- function hongzhongRoomReplayView:initView() | |||||
-- self.direcionView = MJRoomDirection:new() | |||||
-- self.ui.Items.Layout_Player:addChild(self.direcionView) | |||||
-- self.direcionView:setVisible(false) | |||||
-- --UI相关 | |||||
-- self.playerView = MJRoomPlayerView:new() | |||||
-- self:addChild(self.playerView) | |||||
-- self.playerView:setHeadTouchEnable(false) | |||||
-- -- 添加语音相关的界面 | |||||
-- self.messageView = MJRoomMessageView:new() | |||||
-- self:addChild(self.messageView) | |||||
-- self.messageView:setVisible(false) | |||||
-- --加载工具层 | |||||
-- self.toolView = MJRoomToolView:new() | |||||
-- self:addChild(self.toolView) | |||||
-- self.toolView:setVisible(false) | |||||
-- local roomInfo=app.room.roomInfo | |||||
-- -- 房间号 | |||||
-- self.ui.Items.Text_roomNum:setText(tostring(roomInfo.nShowTableId)) | |||||
-- self:updateGameNums() | |||||
-- --房间玩法 | |||||
-- local ruleAll = MJWanFa:getWanFaInfo(roomInfo.strGameInfo)--getLHQRuleStr(); | |||||
-- self.ui.Items.Text_Rule:setText(ruleAll) | |||||
-- local heght=self.ui.Items.Text_Rule:getContentSize().height+20 | |||||
-- self.ui.Items.Layout_Rule:setSize(cc.size(self.ui.Items.Layout_Rule:getContentSize().width,heght)) | |||||
-- self.ui.Items.Text_Rule:setPositionY(heght-10) | |||||
-- end | |||||
-- function hongzhongRoomReplayView:startReplay() | |||||
-- self:startGame() | |||||
-- local handers={ | |||||
-- ["DealCard"]=handler(self,self.onGetCard), | |||||
-- ["OutCard"]=handler(self,self.onOutCard), | |||||
-- ["Peng"]=handler(self,self.onOperate), | |||||
-- ["BaGang"]=handler(self,self.onOperate), | |||||
-- ["AnGang"]=handler(self,self.onOperate), | |||||
-- ["Gang"]=handler(self,self.onOperate), | |||||
-- ["DianPao"]=handler(self,self.onGameEnd), | |||||
-- ["ZiMoHu"]=handler(self,self.onGameEnd), | |||||
-- } | |||||
-- local actions={} | |||||
-- for k,v in pairs(self.reports) do | |||||
-- if handers[v.opType] then | |||||
-- table.insert(actions,cc.DelayTime:create(1)) | |||||
-- table.insert(actions,cc.CallFunc:create(function() | |||||
-- print(table.tostring(v)) | |||||
-- handers[v.opType](v) | |||||
-- end)) | |||||
-- end | |||||
-- end | |||||
-- table.insert(actions,cc.DelayTime:create(1)) | |||||
-- table.insert(actions,cc.CallFunc:create(function() | |||||
-- self:endReplay() | |||||
-- -- print(table.tostring(v)) | |||||
-- -- handers[v.opType](v) | |||||
-- end)) | |||||
-- self:runAction(cc.Sequence:create(actions)) | |||||
-- end | |||||
-- function hongzhongRoomReplayView:startGame() | |||||
-- self:onGameStartResponse() | |||||
-- self:onGameSendCardResponse() | |||||
-- self.playerHandCards[MJDefine.MyViewId]:removeTouchEvent() | |||||
-- end | |||||
-- function hongzhongRoomReplayView:onGetCard(data) | |||||
-- local roomInfo=app.room.roomInfo | |||||
-- roomInfo.nLeaveCardNum=roomInfo.nLeaveCardNum-1 | |||||
-- local response={ | |||||
-- nUserId=data.nUserId, | |||||
-- card=data.card, | |||||
-- -- operates={}, | |||||
-- nSeatId=roomInfo.memberList[data.nUserId].nSeatId, | |||||
-- } | |||||
-- self:onBankerOutCard({response=response}) | |||||
-- end | |||||
function hongzhongRoomReplayView:onOutCard(data) | |||||
local roomInfo=app.room.roomInfo | |||||
local response={ | |||||
nUserId=data.nUserId, | |||||
card=data.card, | |||||
-- operates={}, | |||||
-- nSeatId=roomInfo.memberList[data.nUserId].nSeatId, | |||||
} | |||||
self.fromSeatId=roomInfo.memberList[data.nUserId].nSeatId | |||||
local viewId=app.room:getViewIdByUserId(data.nUserId) | |||||
if viewId==MJDefine.MyViewId then | |||||
-- self.playerHandCards[MJDefine.MyViewId].touchMJ=self.playerHandCards[MJDefine.MyViewId]:getMjByValue(data.card) | |||||
end | |||||
self:onOutCardSuccess({response=response}) | |||||
end | |||||
-- function hongzhongRoomReplayView:onOperate(data) | |||||
-- local roomInfo=app.room.roomInfo | |||||
-- local operates={ | |||||
-- ["Peng"]=MJDefine.MJOperateType.OPREATE_PENG, | |||||
-- ["BaGang"]=MJDefine.MJOperateType.OPREATE_BAGANG, | |||||
-- ["AnGang"]=MJDefine.MJOperateType.OPREATE_ANGANG, | |||||
-- ["Gang"]=MJDefine.MJOperateType.OPREATE_ZHIGANG, | |||||
-- } | |||||
-- local response={ | |||||
-- nUserId=data.nUserId, | |||||
-- opCard=data.card, | |||||
-- opType=operates[data.opType], | |||||
-- -- operates={}, | |||||
-- nSeatId=roomInfo.memberList[data.nUserId].nSeatId, | |||||
-- isNeedOutCard=1, | |||||
-- fromSeatId=self.fromSeatId, | |||||
-- } | |||||
-- self:onOperationCodeSuccess({response=response}) | |||||
-- end | |||||
function hongzhongRoomReplayView:onGameEnd(data) | |||||
local function runGameXiaoJuResponse(onEnd) | |||||
local function callback() | |||||
-- self:endReplay() | |||||
-- self:showXiaoJuView() | |||||
if onEnd then | |||||
onEnd() | |||||
end | |||||
end | |||||
local roomInfo = app.room.roomInfo | |||||
local hutype=self.data.ext.huTypes | |||||
local hucard=data.card | |||||
self.direcionView:stopAllActions() | |||||
-- local resultInfo=json.decode(roomInfo.strResultInfo) | |||||
--所有胡牌的人 考虑抢杠胡的问题 | |||||
local viewIds={} | |||||
local failViewId=0 | |||||
if self.data.ext.result then | |||||
for k,v in pairs(self.data.ext.result) do | |||||
local viewId = app.room:getViewIdByUserId(v.uid) | |||||
if v.ishu==MJDefine.MJGameResultType.Win then | |||||
table.insert(viewIds,viewId) | |||||
elseif v.ishu==MJDefine.MJGameResultType.Fail then | |||||
failViewId=viewId | |||||
end | |||||
end | |||||
end | |||||
--[[for k,v in pairs(roomInfo.memberList) do | |||||
local viewId = app.room:getViewIdByUserId(v.nUserId) | |||||
if v.nTotalMoney>0 then | |||||
table.insert(viewIds,viewId) | |||||
elseif v.nTotalMoney<0 then | |||||
failViewId=viewId | |||||
end | |||||
-- if v.result==MJDefine.MJGameResultType.Win then | |||||
-- table.insert(viewIds,viewId) | |||||
-- elseif v.result==MJDefine.MJGameResultType.Fail then | |||||
-- failViewId=viewId | |||||
-- end | |||||
end--]] | |||||
--被抢杠的人回退补杠 | |||||
if hutype==MJDefine.MJHuType.QiangGangHu and roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_NORMAL then | |||||
self.playerHandCards[failViewId]:retoreBuGang(hucard) | |||||
end | |||||
local tabZhaniaocards=MJFunction.convertToCards(self.data.ext.zhaNiaoCards) | |||||
local tabZhongniaocards=MJFunction.convertToCards(self.data.ext.zhongNiaoCards) | |||||
self:outNiaoCards(viewIds,failViewId,tabZhaniaocards) | |||||
local function zhongNiao() | |||||
self:showZhongNiaoView(tabZhongniaocards,viewIds,callback) | |||||
end | |||||
local function niaoFly() | |||||
if #tabZhongniaocards>0 then | |||||
self:showNiaoAniamtion(viewIds,zhongNiao) | |||||
else | |||||
callback() | |||||
end | |||||
end | |||||
local function niaoCallBack() | |||||
if #tabZhaniaocards>0 then | |||||
self:showNiaoView(tabZhaniaocards,niaoFly) | |||||
else | |||||
callback() | |||||
end | |||||
end | |||||
if #viewIds>0 then | |||||
for k,viewId in pairs(viewIds) do | |||||
local effect | |||||
if k == #viewIds then --只有最后播放胡牌动画的回调一次就可以了 | |||||
effect=MJAnimationCompnent.CreateHuEffect(niaoCallBack) | |||||
--音效 | |||||
local userInfo=app.room:getUserInfoByViewId(viewId) | |||||
if userInfo then | |||||
if hutype==MJDefine.MJHuType.Zimo then | |||||
MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_ZIMOHU) | |||||
else | |||||
MJSound.PlayOperateSound(userInfo.sex,MJDefine.MJOperateType.OPREATE_DIANPAOHU) | |||||
end | |||||
end | |||||
else | |||||
effect=MJAnimationCompnent.CreateHuEffect() | |||||
end | |||||
if effect then | |||||
self:addChild(effect) | |||||
effect:setPosition(self.playerHandCards[viewId]:getAnimationPostion()) | |||||
end | |||||
end | |||||
else | |||||
if roomInfo.stopFlag==MJDefine.StopFlag.STOP_FLAG_HUANG_ZHUANG then | |||||
local effect=MJAnimationCompnent.CreateLiuJuEffect(callback) | |||||
self:addChild(effect) | |||||
else | |||||
callback() | |||||
end | |||||
end | |||||
end | |||||
log("2000000000-MJRoomView - addCallBack(runGameXiaoJuResponse)" ) | |||||
self:addCallBack(runGameXiaoJuResponse); | |||||
end | |||||
-- function hongzhongRoomReplayView:endReplay() | |||||
-- local roomInfo = app.room.roomInfo | |||||
-- -- local function sortMj(mjA,mjB) | |||||
-- -- if mjA.sortValue<mjB.sortValue then | |||||
-- -- return true | |||||
-- -- elseif mjA.sortValue==mjB.sortValue then | |||||
-- -- if mjA:getPositionX()<mjB:getPositionX() then | |||||
-- -- return true | |||||
-- -- end | |||||
-- -- end | |||||
-- -- return false | |||||
-- -- end | |||||
-- for k,v in pairs(roomInfo.memberList) do | |||||
-- local viewId = app.room:getViewIdByUserId(v.nUserId) | |||||
-- if self.playerHandCards[viewId] then | |||||
-- local handCards={} | |||||
-- for _,mj in pairs(self.playerHandCards[viewId].handCards) do | |||||
-- table.insert(handCards,{card=mj.value}) | |||||
-- end | |||||
-- -- table.sort(handCards,sortMj) | |||||
-- if viewId==MJDefine.MyViewId then | |||||
-- --我自己则屏蔽触摸事件 | |||||
-- -- self.playerHandCards[viewId]:removeTouchEvent() | |||||
-- else | |||||
-- --显示所有底牌 | |||||
-- self.playerHandCards[viewId]:removeAllHandCards() | |||||
-- self.playerHandCards[viewId]:createOpenHandCards(handCards) | |||||
-- end | |||||
-- end | |||||
-- end | |||||
-- self:runAction(cc.Sequence:create( | |||||
-- cc.DelayTime:create(3), | |||||
-- cc.CallFunc:create(function() | |||||
-- local MJMainView=MJFramework.MJImport("mj.luaScript.Views.Main.MJMainView") | |||||
-- app:gotoView(MJMainView:new()) | |||||
-- end) | |||||
-- )) | |||||
-- end | |||||
return hongzhongRoomReplayView |
@@ -0,0 +1,301 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJSound = MJFramework.MJImport("mj.luaScript.MJSound") | |||||
local MJFunction = MJFramework.MJImport("mj.luaScript.MJFunction") | |||||
local MJRoomSettingView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomSettingView") | |||||
local hongzhongRoomSettingView = class("hongzhongRoomSettingView", MJRoomSettingView) | |||||
local CheckBox_Nor_Color = cc.c3b(21,99,97) | |||||
local CheckBox_Sel_Color = cc.c3b(213,46,11) | |||||
function hongzhongRoomSettingView:ctor() | |||||
hongzhongRoomSettingView.super.ctor(self); | |||||
self:loadUi() | |||||
self.languageRadioManager = import("luaScript.Tools.RadioManager"):new() | |||||
self.desktopRadioManager = import("luaScript.Tools.RadioManager"):new() | |||||
self.mjcolorRadioManager = import("luaScript.Tools.RadioManager"):new() | |||||
end | |||||
function hongzhongRoomSettingView:loadUi() | |||||
local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_shezhi.ui") | |||||
self.ui = ui | |||||
self:addChild(ui) | |||||
end | |||||
function hongzhongRoomSettingView:onEnter() | |||||
if self.languageRadioManager then | |||||
self.languageRadioManager:addItem(self.ui.Items.CheckBox_PuTongHua, 1) | |||||
self.languageRadioManager:addItem(self.ui.Items.CheckBox_Fangyan, 2) | |||||
local defaultValue = tonumber(loadUserInfo("hongzhong_mj_sound")) or 1 | |||||
self.languageRadioManager:setDefault(defaultValue) | |||||
self:setYuColor(defaultValue) | |||||
self.languageRadioManager:setCallback(function ( value ) | |||||
saveUserInfo("hongzhong_mj_sound", value) | |||||
self:setYuColor(value) | |||||
MJSound.setSoundType(value) | |||||
end) | |||||
end | |||||
--麻将子颜色 | |||||
local hongzhong_mj_color = loadUserInfo("hongzhong_mj_color") or MJDefine.DesktopType.TwoD | |||||
if hongzhong_mj_color == "" then | |||||
hongzhong_mj_color = MJDefine.DesktopType.TwoD | |||||
end | |||||
if self.mjcolorRadioManager then | |||||
self.mjcolorRadioManager:addItem(self.ui.Items.CheckBox_jinghuang_2d,MJDefine.DesktopType.TwoDGold) | |||||
self.mjcolorRadioManager:addItem(self.ui.Items.CheckBox_molv_2d,MJDefine.DesktopType.TwoD) | |||||
self.mjcolorRadioManager:addItem(self.ui.Items.CheckBox_molv_3d,MJDefine.DesktopType.ThreeD) | |||||
self.mjcolorRadioManager:setDefault(hongzhong_mj_color) | |||||
self.mjcolorRadioManager:setCallback(function(value) | |||||
app:dispatchEvent({name = MJDefine.MJEvent.ChangeViewType,desktopType = value}) | |||||
saveUserInfo("hongzhong_mj_color",value) | |||||
--showTooltip("设置将在下一局生效!") | |||||
end) | |||||
end | |||||
if self.desktopRadioManager then | |||||
self.desktopRadioManager:addItem(self.ui.Items.CheckBox_desktop_1, 1) | |||||
self.desktopRadioManager:addItem(self.ui.Items.CheckBox_desktop_2, 2) | |||||
self.desktopRadioManager:addItem(self.ui.Items.CheckBox_desktop_3, 3) | |||||
local defaultValue = tonumber(loadUserInfo("hongzhong_mj_desktop_group")) or 1 | |||||
self.desktopRadioManager:setDefault(defaultValue) | |||||
self:setZhuoColor(defaultValue) | |||||
self.desktopRadioManager:setCallback(function ( value ) | |||||
saveUserInfo("hongzhong_mj_desktop_group", value) | |||||
self:setZhuoColor(value) | |||||
app:dispatchEvent({name = MJDefine.MJEvent.ChangeTableBg}) | |||||
--showTooltip("设置将在下一局生效!") | |||||
end) | |||||
end | |||||
self.ui.Items.ImageView_BG:setTouchEnabled(true) | |||||
-- 关闭 | |||||
self.ui.Items.Button_guanbi:registerClick(handler(self , self.onClickClose)) | |||||
-- 音乐 | |||||
self.ui.Items.CheckBox_Music:addEventListener(handler(self , self.onClickYinYue)) | |||||
self.ui.Items.CheckBox_Music:setSelectedState(app.systemSetting.info.music); | |||||
--音乐音量 | |||||
self.ui.Items.Slider_Music:setPercent(app.systemSetting.info.musicVolume * 100 or 100) | |||||
self.ui.Items.Slider_Music:addEventListener(handler(self, self.onMusicVolumeClickSlider)) | |||||
-- 音效 | |||||
self.ui.Items.CheckBox_Effect:addEventListener(handler(self , self.onClickYinXiao)) | |||||
self.ui.Items.CheckBox_Effect:setSelectedState(app.systemSetting.info.sound); | |||||
--音效音量 | |||||
self.ui.Items.Slider_Effect:setPercent(app.systemSetting.info.soundVolume * 100 or 100) | |||||
self.ui.Items.Slider_Effect:addEventListener(handler(self, self.onSoundVolumeClickSlider)) | |||||
--2D | |||||
local function listener2D() | |||||
if self.isFobidChangeDesktop then | |||||
showTooltip("操作太频繁,请稍候再试!") | |||||
self.ui.Items.CheckBox_2D:setSelectedState(false) | |||||
return | |||||
end | |||||
self.ui.Items.CheckBox_3D:setSelectedState(false) | |||||
self.ui.Items.CheckBox_3D:setTouchEnabled(true) | |||||
self.ui.Items.CheckBox_2D:setTouchEnabled(false) | |||||
self.ui.Items.CheckBox_2D:setSelectedState(true) | |||||
app.systemSetting.info.viewType=MJDefine.DesktopType.TwoD | |||||
app.systemSetting:save() | |||||
self:setZhuoBuText(2) | |||||
self:setLanColor(2) | |||||
app:dispatchEvent({name = MJDefine.MJEvent.ChangeViewType,desktopType = MJDefine.DesktopType.TwoD}) | |||||
--showTooltip("设置将在下一局生效!") | |||||
saveUserInfo("hongzhong_mj_color", MJDefine.DesktopType.TwoD) | |||||
--2d可以选择麻将颜色 | |||||
self.ui.Items.Layout_color_2:setVisible(true) | |||||
self.ui.Items.Layout_color_3:setVisible(false) | |||||
self.mjcolorRadioManager:setDefault(MJDefine.DesktopType.TwoD) | |||||
self.isFobidChangeDesktop = true | |||||
self:runDelay(1.0, function () | |||||
self.isFobidChangeDesktop = false | |||||
end) | |||||
end | |||||
self.ui.Items.CheckBox_2D:addEventListener(listener2D) | |||||
--self.ui.Items.ImageView_img2d:setTouchEnabled(true) | |||||
--self.ui.Items.ImageView_img2d:registerClick(listener2D) | |||||
--3D | |||||
local function listener3D() | |||||
if self.isFobidChangeDesktop then | |||||
showTooltip("操作太频繁,请稍候再试!") | |||||
self.ui.Items.CheckBox_3D:setSelectedState(false) | |||||
return | |||||
end | |||||
self.ui.Items.CheckBox_3D:setSelectedState(true) | |||||
self.ui.Items.CheckBox_3D:setTouchEnabled(false) | |||||
self.ui.Items.CheckBox_2D:setTouchEnabled(true) | |||||
self.ui.Items.CheckBox_2D:setSelectedState(false) | |||||
app.systemSetting.info.viewType=MJDefine.DesktopType.ThreeD | |||||
app.systemSetting:save() | |||||
self:setZhuoBuText(3) | |||||
self:setLanColor(3) | |||||
app:dispatchEvent({name = MJDefine.MJEvent.ChangeViewType,desktopType = MJDefine.DesktopType.ThreeD}) | |||||
--showTooltip("设置将在下一局生效!") | |||||
--3d不可以选择麻将颜色 | |||||
self.ui.Items.Layout_color_2:setVisible(false) | |||||
self.ui.Items.Layout_color_3:setVisible(true) | |||||
self.mjcolorRadioManager:setDefault(MJDefine.DesktopType.ThreeD) | |||||
self.isFobidChangeDesktop = true | |||||
self:runDelay(1.0, function () | |||||
self.isFobidChangeDesktop = false | |||||
end) | |||||
end | |||||
self.ui.Items.CheckBox_3D:addEventListener(listener3D) | |||||
--self.ui.Items.ImageView_img3d:setTouchEnabled(true) | |||||
--self.ui.Items.ImageView_img3d:registerClick(listener3D) | |||||
--互动表情 | |||||
local faceKG = tonumber(loadUserInfo("propEnable")) or 1--0关 1开 hongzhongHuDongBiaoQingKG | |||||
self.ui.Items.Button_face_guan:setVisible(faceKG==0) | |||||
self.ui.Items.Button_face_kai:setVisible(faceKG==1) | |||||
self.ui.Items.Button_face_guan:registerClick(handler(self , self.setHuDongBiaoQingClose)) | |||||
self.ui.Items.Button_face_kai:registerClick(handler(self , self.setHuDongBiaoQingOpen)) | |||||
--屏蔽语音 | |||||
local voiceKG = tonumber(loadUserInfo("voiceEnable")) or 1--0关 1开 hongzhongPingBiYuYinKG | |||||
self.ui.Items.Button_voice_guan:setVisible(voiceKG==0) | |||||
self.ui.Items.Button_voice_kai:setVisible(voiceKG==1) | |||||
self.ui.Items.Button_voice_guan:registerClick(handler(self , self.setPingBiYuYinClose)) | |||||
self.ui.Items.Button_voice_kai:registerClick(handler(self , self.setPingBiYuYinOpen)) | |||||
if hongzhong_mj_color==MJDefine.DesktopType.ThreeD then | |||||
self.ui.Items.CheckBox_3D:setSelectedState(true) | |||||
self.ui.Items.CheckBox_3D:setTouchEnabled(false) | |||||
self.ui.Items.CheckBox_2D:setTouchEnabled(true) | |||||
self.ui.Items.CheckBox_2D:setSelectedState(false) | |||||
self:setZhuoBuText(3) | |||||
self:setLanColor(3) | |||||
self.ui.Items.Layout_color_2:setVisible(false) | |||||
self.ui.Items.Layout_color_3:setVisible(true) | |||||
else | |||||
self.ui.Items.CheckBox_3D:setSelectedState(false) | |||||
self.ui.Items.CheckBox_3D:setTouchEnabled(true) | |||||
self.ui.Items.CheckBox_2D:setTouchEnabled(false) | |||||
self.ui.Items.CheckBox_2D:setSelectedState(true) | |||||
self:setZhuoBuText(2) | |||||
self:setLanColor(2) | |||||
self.ui.Items.Layout_color_2:setVisible(true) | |||||
self.ui.Items.Layout_color_3:setVisible(false) | |||||
end | |||||
self.ui.Items.Layout_Prop:setVisible(not MJFunction.isPropFobided()) | |||||
self.ui.Items.Layout_Voice:setVisible(not MJFunction.isVoiceFobided()) | |||||
end | |||||
function hongzhongRoomSettingView:setZhuoBuText(zbType)--根据2d 3d设置桌布text 默认用红色2D 音效默认普通话 | |||||
if zbType == 2 then | |||||
self.ui.Items.Text_16:setText("红色") | |||||
self.ui.Items.Text_17:setText("绿色") | |||||
self.ui.Items.Text_18:setText("蓝色") | |||||
saveUserInfo("hongzhong_ZhuoMian_BG_Type", MJDefine.DesktopType.TwoD) | |||||
else | |||||
self.ui.Items.Text_16:setText("绿色") | |||||
self.ui.Items.Text_17:setText("墨绿") | |||||
self.ui.Items.Text_18:setText("经典") | |||||
saveUserInfo("hongzhong_ZhuoMian_BG_Type", MJDefine.DesktopType.ThreeD) | |||||
end | |||||
end | |||||
--选择23D时,字体变颜色 | |||||
function hongzhongRoomSettingView:setLanColor(ttype) | |||||
--self.ui.Items.Text_2D:setColor(ttype == 2 and CheckBox_Sel_Color or CheckBox_Nor_Color) | |||||
--self.ui.Items.Text_2D_1:setColor(ttype == 3 and CheckBox_Sel_Color or CheckBox_Nor_Color) | |||||
end | |||||
--选择语言时,字体变颜色 | |||||
function hongzhongRoomSettingView:setYuColor(ttype) | |||||
self.ui.Items.Text_13:setColor(ttype == 1 and CheckBox_Sel_Color or CheckBox_Nor_Color)--普通话 | |||||
self.ui.Items.Text_12:setColor(ttype == 2 and CheckBox_Sel_Color or CheckBox_Nor_Color)--长沙话 | |||||
end | |||||
--选择桌布时,字体变颜色 | |||||
function hongzhongRoomSettingView:setZhuoColor(ttype) | |||||
self.ui.Items.Text_16:setColor(ttype == 1 and CheckBox_Sel_Color or CheckBox_Nor_Color)--颜色1 | |||||
self.ui.Items.Text_17:setColor(ttype == 2 and CheckBox_Sel_Color or CheckBox_Nor_Color)--颜色2 | |||||
self.ui.Items.Text_18:setColor(ttype == 3 and CheckBox_Sel_Color or CheckBox_Nor_Color)--颜色3 | |||||
end | |||||
function hongzhongRoomSettingView:setHuDongBiaoQingClose() | |||||
self.ui.Items.Button_face_guan:setVisible(false) | |||||
self.ui.Items.Button_face_kai:setVisible(true) | |||||
saveUserInfo("hongzhongHuDongBiaoQingKG",1) | |||||
app.room:dispatchEvent({name = "ontSetPropEnabled", value = 1}); | |||||
if self.onClickProp then | |||||
self:onClickProp() | |||||
end | |||||
end | |||||
function hongzhongRoomSettingView:setHuDongBiaoQingOpen() | |||||
self.ui.Items.Button_face_guan:setVisible(true) | |||||
self.ui.Items.Button_face_kai:setVisible(false) | |||||
saveUserInfo("hongzhongHuDongBiaoQingKG",0) | |||||
app.room:dispatchEvent({name = "ontSetPropEnabled", value = 0}); | |||||
if self.onClickProp then | |||||
self:onClickProp() | |||||
end | |||||
end | |||||
function hongzhongRoomSettingView:setPingBiYuYinClose() | |||||
self.ui.Items.Button_voice_guan:setVisible(false) | |||||
self.ui.Items.Button_voice_kai:setVisible(true) | |||||
saveUserInfo("hongzhongPingBiYuYinKG",1) | |||||
app.room:dispatchEvent({name = "onSetVoiceEnabled", value = 1}); | |||||
if self.onClickVoice then | |||||
self:onClickVoice() | |||||
end | |||||
end | |||||
function hongzhongRoomSettingView:setPingBiYuYinOpen() | |||||
self.ui.Items.Button_voice_guan:setVisible(true) | |||||
self.ui.Items.Button_voice_kai:setVisible(false) | |||||
saveUserInfo("hongzhongPingBiYuYinKG",0) | |||||
app.room:dispatchEvent({name = "onSetVoiceEnabled", value = 0}); | |||||
if self.onClickVoice then | |||||
self:onClickVoice() | |||||
end | |||||
end | |||||
-- 音乐 | |||||
function hongzhongRoomSettingView:onClickYinYue() | |||||
app.systemSetting.info.music = self.ui.Items.CheckBox_Music:getSelectedState(); | |||||
app.systemSetting:save() | |||||
end | |||||
-- 音效 | |||||
function hongzhongRoomSettingView:onClickYinXiao() | |||||
app.systemSetting.info.sound = self.ui.Items.CheckBox_Effect:getSelectedState(); | |||||
app.systemSetting:save() | |||||
end | |||||
-- 音乐音量设置回调 | |||||
function hongzhongRoomSettingView:onMusicVolumeClickSlider() | |||||
local percent = self.ui.Items.Slider_Music:getPercent(); | |||||
local curValue = percent / 100; | |||||
app.systemSetting.info.musicVolume = curValue; | |||||
app.systemSetting:save() | |||||
end | |||||
-- 音效音量设置回调 | |||||
function hongzhongRoomSettingView:onSoundVolumeClickSlider() | |||||
local percent = self.ui.Items.Slider_Effect:getPercent(); | |||||
local curValue = percent / 100; | |||||
app.systemSetting.info.soundVolume = curValue; | |||||
app.systemSetting:save() | |||||
end | |||||
return hongzhongRoomSettingView |
@@ -0,0 +1,156 @@ | |||||
local MJRoomToolView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomToolView") | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJMessage = MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") | |||||
local hongzhongRoomToolView = class("hongzhongRoomToolView", MJRoomToolView) | |||||
function hongzhongRoomToolView:ctor( ... ) | |||||
hongzhongRoomToolView.super.ctor(self) | |||||
end | |||||
function hongzhongRoomToolView:onEnter() | |||||
hongzhongRoomToolView.super.onEnter(self) | |||||
self.ui.Items.Button_tuoguan:registerClick(handler(self , self.onClickTuoGuan)) | |||||
self.ui.Items.Button_tuoguan:setEnabled(app.room.roomInfo.hosting~=1) | |||||
self.ui.Items.Button_tuoguan:setVisible(false) | |||||
self.ui.Items.Button_guoguan:registerClick(handler(self , self.onClickQXTuoGuan)) | |||||
self.ui.Items.Layout_tuoguan:registerClick(function ( sender ) | |||||
print("do nothing...") | |||||
end) | |||||
self.ui.Items.Layout_tuoguan:setLocalZOrder(1000) | |||||
self:showTuoGuan(false) | |||||
self.ui.Items.Button_fastStart:registerClick(handler(self, self.onClickFastStart)) | |||||
self:showFastStart(false) | |||||
self:setMenuVisible(false, true) | |||||
self.ui.Items.Button_Invite:setVisible(false) | |||||
self.ui.Items.Button_Ready:setVisible(false) | |||||
-- if self.ui.Items.Button_Face then | |||||
-- self.ui.Items.Button_Face:registerClick(handler(self,self.onClickFace)) | |||||
-- end | |||||
-- if self.ui.Items.Button_Voice then | |||||
-- local voiceComponentView = import("luaScript.Views.Room.RoomVoiceComponentView"):new(self.ui.Items.Button_Voice) | |||||
-- self:addChild(voiceComponentView) | |||||
-- end | |||||
end | |||||
function hongzhongRoomToolView:loadUI() | |||||
local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_tool.ui") | |||||
self.ui = ui | |||||
self:addChild(ui) | |||||
end | |||||
-- 设置界面 | |||||
function hongzhongRoomToolView:onClickMenu() | |||||
playBtnEffect() | |||||
self:setMenuVisible(not self.ui.Items.Layout_Menu:isVisible()) | |||||
end | |||||
--设置按钮菜单 | |||||
function hongzhongRoomToolView:setMenuVisible(bVisible, flag) | |||||
self.ui.Items.Layout_Menu:setVisible(bVisible) | |||||
self:hideOther() | |||||
end | |||||
--点击日记 | |||||
function hongzhongRoomToolView:onClickLog() | |||||
hongzhongRoomToolView.super.onClickLog(self) | |||||
self:hideOther() | |||||
end | |||||
function hongzhongRoomToolView:hideOther() | |||||
-- 隐藏个人信息 | |||||
if self:getParent() and self:getParent().playerView then | |||||
self:getParent().playerView:removePlayerInfoView() | |||||
end | |||||
end | |||||
function hongzhongRoomToolView:onClickFastStart( sender )--发起申请 | |||||
playBtnEffect() | |||||
local request = MJMessage.FastStartRequest:new() | |||||
request.tp = 1 | |||||
self.ui:sendMsg(app.room, MJDefine.MJEvent.RequestFastsStart, request) | |||||
end | |||||
--[[function hongzhongRoomToolView:reloadCallback() | |||||
-- 离开按钮 | |||||
self.ui.Items.Button_Leave:registerClick(function () | |||||
playBtnEffect() | |||||
if app.room.roomInfo.tableOverFlag and app.room.roomInfo.tableOverFlag > MJDefine.TABLE_OVER_FLAG.TABLE_OVER_NORMAL then | |||||
showTooltip(MJDefine.TABLE_OVER_FLAG_TEXT[app.room.roomInfo.tableOverFlag]); | |||||
app:gotoView(import("luaScript.Views.Main.MainView"):new(GAME_IDS.LaiBing)); | |||||
else | |||||
playBtnEffect() | |||||
app.room.roomInfo.bQuitRoom = true | |||||
self.ui:sendMsg(app.room, MJDefine.MJEvent.CallLeaveRequest) | |||||
end | |||||
end) | |||||
end | |||||
--]] | |||||
function hongzhongRoomToolView:showFastStart(is) | |||||
local roomInfo = app.room.roomInfo | |||||
if roomInfo.nStatus and roomInfo.nStatus>=MJDefine.GameStatus.GAME_STATUS_WAIT_BANKER_START and roomInfo.nStatus<=MJDefine.GameStatus.GAME_STATUS_GAME_OVER then | |||||
self.ui.Items.Button_fastStart:setVisible(false) | |||||
else | |||||
local playerCount = app.room:getPlayerCount() | |||||
local roomInfo=app.room.roomInfo | |||||
local gameInfo=json.decode(roomInfo.strGameInfo) | |||||
if true == is and playerCount<app.room:getMaxPlayerCount() and app.room.roomInfo.nGameStartCount<=0 then | |||||
local playerCount = app.room:getPlayerCount() | |||||
self.ui.Items.Button_fastStart:setVisible(playerCount==2 or playerCount==3) | |||||
else | |||||
self.ui.Items.Button_fastStart:setVisible(false) | |||||
end | |||||
if gameInfo.isfaststart and gameInfo.isfaststart == 0 then | |||||
self.ui.Items.Button_fastStart:setVisible(false) | |||||
end | |||||
end | |||||
end | |||||
--隐藏微信按钮 | |||||
function hongzhongRoomToolView:setWetChatVisible(bVisible) | |||||
-- self.ui.Items.Button_Invite:setVisible(bVisible) | |||||
self:setInviteClubVisible(bVisible) | |||||
--self:updateButtonPosition() | |||||
end | |||||
function hongzhongRoomToolView:updateButton() | |||||
end | |||||
function hongzhongRoomToolView:onClickTuoGuan( sender ) | |||||
playBtnEffect() | |||||
local request = MJMessage.HostingRequest:new() | |||||
request.nUserId = app.room:getMyUserId() | |||||
request.status = 1 --1托管 0取消托管 | |||||
self.ui:sendMsg(app.room, MJDefine.MJEvent.HostingRequest, request) | |||||
end | |||||
function hongzhongRoomToolView:onClickQXTuoGuan( sender ) | |||||
playBtnEffect() | |||||
-- | |||||
local request = MJMessage.HostingRequest:new() | |||||
request.nUserId = 0 | |||||
request.status = 0 --1托管 0取消托管 | |||||
self.ui:sendMsg(app.room, MJDefine.MJEvent.HostingRequest, request) | |||||
end | |||||
function hongzhongRoomToolView:showTuoGuan( is ) | |||||
self.ui.Items.Layout_tuoguan:setVisible(is==true) | |||||
end | |||||
-- function hongzhongRoomToolView:onClickFace() | |||||
-- local chatView = import("luaScript.Views.Room.RoomChatView"):new(MJDefine.MJChatTxt,MJDefine.MJFaceConfig) | |||||
-- chatView:setAnchorPoint(cc.p(0.5, 0.5)) | |||||
-- app:showWaitDialog(chatView,0,true) | |||||
-- end | |||||
return hongzhongRoomToolView |
@@ -0,0 +1,377 @@ | |||||
local MJDefine=MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local MJ=MJFramework.MJImport("mj.luaScript.Views.Game.MJ") | |||||
local MJWanFa=MJFramework.ImportWanFa("luaScript.SubGameDefine.MaJiang.MJWanFa") | |||||
local MJRoomXiaoJuView = MJFramework.MJFrameworkClassImprot("mj.luaScript.Views.Room.MJRoomXiaoJuView") | |||||
-- 房间设置界面 | |||||
local hongzhongRoomXiaoJuView = class("hongzhongRoomXiaoJuView", MJRoomXiaoJuView) | |||||
local MJ_WIDTH=47 | |||||
--起始位置 | |||||
local MJ_HAND_CARD_INIT_X = 150 * g_radio_x | |||||
local MJ_HAND_CARD_INIT_Y = 50 * g_radio_y | |||||
local MJ_GROUP_CARD_INIT_X = 100 * g_radio_x | |||||
--麻将组间隔 | |||||
local MJ_GROUP_PADDING_X=0 | |||||
--麻将直接间隔 | |||||
local MJ_PADDING_X=-3 | |||||
--胡牌麻将间隔 | |||||
local MJ_HU_X=8 | |||||
--暗杠上面的牌Y轴偏移量 | |||||
local GANG_OFFSET_Y=16 | |||||
function hongzhongRoomXiaoJuView:ctor() | |||||
hongzhongRoomXiaoJuView.super.ctor(self) | |||||
--self:loadUI() | |||||
--添加扎鸟UI | |||||
-- local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_xiaoju.ui") | |||||
-- self.zhaniaoUI = ui | |||||
-- self.ui.Items.Layout_Content:addChild(ui) | |||||
--获取红中设置参数里的麻将颜色 | |||||
self.mjColor = loadUserInfo("hongzhong_mj_color") or MJDefine.DesktopType.TwoDGold | |||||
self:changeHandCardY(50 * g_radio_y) | |||||
end | |||||
function hongzhongRoomXiaoJuView:loadUI() | |||||
local ui = loadUI("hongzhong/res/ui_fangjian/hongzhong_ui_xiaoju.ui") | |||||
self.ui = ui | |||||
self:addChild(ui) | |||||
end | |||||
function hongzhongRoomXiaoJuView:setPlayerItemInfo(ui,player) | |||||
hongzhongRoomXiaoJuView.super.setPlayerItemInfo(self,ui,player) | |||||
local roomInfo = app.room.roomInfo | |||||
local nodeResult= ui.Items["Text_ResultInfo"] | |||||
local nodeBg= ui.Items["ImageView_ItemBg"] | |||||
local strResult="" | |||||
local benJuScore = "TextBMFont_Score" | |||||
local benJuScore1 = "Text_Score" | |||||
local nodeBenJu = ui.Items[benJuScore] | |||||
local bmFontScore = true | |||||
if not nodeBenJu then | |||||
nodeBenJu = ui.Items[benJuScore1] | |||||
bmFontScore = false | |||||
end | |||||
local gameInfo=json.decode(roomInfo.strGameInfo) | |||||
if gameInfo.piaotype and tonumber(gameInfo.piaotype)==1 and player.nPiaoNum>-1 then | |||||
if player.nPiaoNum==0 then | |||||
strResult=strResult=="" and "不飘 " or strResult.." 不飘" | |||||
else | |||||
strResult=strResult=="" and "飘分"..player.nPiaoNum.." " or strResult.." 飘分"..player.nPiaoNum | |||||
end | |||||
end | |||||
if app.room.roomInfo.scoreCntMap and app.room.roomInfo.scoreCntMap[tostring(player.nUserId)] then | |||||
strResult=strResult..app.room.roomInfo.scoreCntMap[tostring(player.nUserId)] | |||||
end | |||||
-- if then return end | |||||
nodeResult:setVisible(true) | |||||
nodeResult:setString(strResult) | |||||
if tonumber(player.nTurnScore) > 0 then | |||||
nodeBg:loadTexture("mj_xiao_ju1_item_hu_bg.png",cc.TextureResType.plistType) | |||||
nodeBg:setVisible(true) | |||||
else | |||||
nodeBg:setVisible(false) | |||||
end | |||||
if tonumber(player.nTurnScore) > 0 then | |||||
nodeBenJu:setText("+"..player.nTurnScore) | |||||
else | |||||
nodeBenJu:setText(player.nTurnScore) | |||||
if tonumber(player.nTurnScore)<0 and bmFontScore == true then | |||||
nodeBenJu:setFntFile("res/fonts/dt_jian_num.fnt") | |||||
end | |||||
end | |||||
if player.result~=MJDefine.MJGameResultType.Win then | |||||
return | |||||
end | |||||
local resultInfo=json.decode(roomInfo.strResultInfo) | |||||
-- resultInfo.zhongniaocards=" 0x01" | |||||
local huImg=ui.Items.ImageView_Hu | |||||
-- huImg:setPositionX(huImg:getPositionX()+40) | |||||
-- 不在这里显示中鸟了,小局下面已经显示了 屏蔽by yuncai | |||||
--[[local zhongniaocards=string.ltrim(resultInfo.zhongniaocards) | |||||
local tabZhongniaocards=string.split(zhongniaocards," ") | |||||
if resultInfo.zhongniaocards~="" and #tabZhongniaocards>0 then | |||||
local zhongNiao=cc.Sprite:create("hongzhong/res/zy_fangjian/hongzhong_zhong_niao.png") | |||||
ui.Items.Layout_Player:addChild(zhongNiao) | |||||
local y=ui.Items.Layout_Player:getContentSize().height/2 | |||||
zhongNiao:setPosition(825,y) | |||||
if #tabZhongniaocards>4 then | |||||
y=ui.Items.Layout_Player:getContentSize().height/2+28 | |||||
end | |||||
local x=0 | |||||
for k,v in pairs(tabZhongniaocards) do | |||||
local mj=MJ:new(v,MJDefine.MJType.Out,MJDefine.MyViewId) | |||||
mj:setScale(0.8) | |||||
ui.Items.Layout_Player:addChild(mj) | |||||
local mjWidth=mj:getContentSize().width*0.8 | |||||
local mjHeight=mj:getContentSize().height | |||||
local index=k%4 | |||||
if k==4 then | |||||
index=4 | |||||
end | |||||
index=index==0 and 1 or index | |||||
x=825+index*(mjWidth+MJ_PADDING_X)+20 | |||||
if k>4 then | |||||
mj:setPosition(x,y-48) | |||||
else | |||||
mj:setPosition(x,y) | |||||
end | |||||
end | |||||
else | |||||
end--]] | |||||
end | |||||
function hongzhongRoomXiaoJuView:initOther() | |||||
-- hongzhongRoomXiaoJuView.super.initOther(self) | |||||
local roomInfo = app.room.roomInfo | |||||
self.ui.Items.Text_Round:setText("局数:"..roomInfo.nGameStartCount..'/'..roomInfo.nTotalGameNum) | |||||
--房号 | |||||
self.ui.Items.Text_RoomNum:setText("房号:"..roomInfo.nShowTableId) | |||||
local resultInfo=json.decode(roomInfo.strResultInfo) | |||||
--规则 | |||||
local ruleAll = MJWanFa.getWanFaInfo(roomInfo.strGameInfo) | |||||
local item = self.ui.Items.Text_Rule:getCopied() | |||||
item:setVisible(true) | |||||
item:setText(ruleAll) | |||||
self.ui.Items.ListView:addChild(item) | |||||
self.ui.Items.ListView:hideAllBar() | |||||
self.ui.Items.ListView:getInnerContainer():setAutoSize(true) | |||||
self.ui.Items.ListView:requestDoLayout(); | |||||
self.ui.Items.ListView:doLayout(); | |||||
--时间 | |||||
self.ui.Items.Text_Time:setText(os.date("%m-%d %X"))--(getTimeString()) | |||||
local zhaniaocards=string.ltrim(resultInfo.zhaniaocards) | |||||
local tabZhaniaocards=string.split(zhaniaocards," ") | |||||
if resultInfo.zhaniaocards=="" then | |||||
tabZhaniaocards={} | |||||
end | |||||
local zhongniaocards=string.ltrim(resultInfo.zhongniaocards) | |||||
local tabZhongniaocards=string.split(zhongniaocards," ") | |||||
if resultInfo.zhongniaocards=="" then | |||||
tabZhongniaocards={} | |||||
end | |||||
if #tabZhaniaocards>0 then | |||||
for k,v in pairs(tabZhaniaocards) do | |||||
local mj=MJ:new(v,MJDefine.MJType.Stand,MJDefine.MyViewId) | |||||
mj:setScale(0.5) | |||||
self.ui.Items.Layout_Niao:addChild(mj) | |||||
local mjWidth=mj:getContentSize().width*0.5 | |||||
local mjHeight=mj:getContentSize().height*0.5 | |||||
local x=mjWidth/2+(k-1)*(mjWidth+MJ_PADDING_X) | |||||
local y=mjHeight/2+20 | |||||
mj:setPosition(x,y) | |||||
mj:setStatus(MJDefine.MJStatus.Select) | |||||
local niaoImg=cc.Sprite:create("hongzhong/res/zy_fangjian/hongzhong_niao2.png") | |||||
mj:addChild(niaoImg) | |||||
niaoImg:setScale(2) | |||||
niaoImg:setPosition(mj:getContentSize().width/2,mj:getContentSize().height) | |||||
for index,niao in pairs(tabZhongniaocards) do | |||||
if v==niao then | |||||
niaoImg:setTexture("hongzhong/res/zy_fangjian/hongzhong_niao1.png") | |||||
mj:setStatus(MJDefine.MJStatus.Normal) | |||||
table.remove(tabZhongniaocards,index) | |||||
break | |||||
end | |||||
end | |||||
end | |||||
end | |||||
end | |||||
function hongzhongRoomXiaoJuView:createChi(values) | |||||
local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255)) | |||||
node:setAnchorPoint(cc.p(0.5,0.5)) | |||||
node:ignoreAnchorPointForPosition(false) | |||||
local width=0 | |||||
local height=0 | |||||
for i=1,3 do | |||||
if values[i] then | |||||
local mj=MJ:new(values[i],MJDefine.MJType.Out,MJDefine.MyViewId,self.mjColor) | |||||
node:addChild(mj) | |||||
local mjWidth=mj:getContentSize().width | |||||
local mjHeight=mj:getContentSize().height | |||||
local x=mjWidth/2+(i-1)*(mjWidth+MJ_PADDING_X) | |||||
local y=mjHeight/2 | |||||
width=width+mjWidth | |||||
height=mjHeight | |||||
mj:setPosition(x,y) | |||||
end | |||||
end | |||||
node:setContentSize(cc.size(width,height)) | |||||
return node | |||||
end | |||||
function hongzhongRoomXiaoJuView:createGang(values) | |||||
local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255)) | |||||
node:setAnchorPoint(cc.p(0.5,0.5)) | |||||
node:ignoreAnchorPointForPosition(false) | |||||
local width=0 | |||||
local height=0 | |||||
for i=1,4 do | |||||
if values[i] then | |||||
local mj=MJ:new(values[i],MJDefine.MJType.Out,MJDefine.MyViewId,self.mjColor) | |||||
node:addChild(mj) | |||||
local mjWidth=mj:getContentSize().width | |||||
local mjHeight=mj:getContentSize().height | |||||
local x=mjWidth/2+(i-1)*(mjWidth+MJ_PADDING_X) | |||||
local y=mjHeight/2 | |||||
width=width+mjWidth | |||||
height=mjHeight | |||||
mj:setPosition(x,y) | |||||
end | |||||
end | |||||
node:setContentSize(cc.size(width,height)) | |||||
return node | |||||
end | |||||
function hongzhongRoomXiaoJuView:createAnGang(values) | |||||
local node=cc.Layer:create()--Color:create(cc.c4b(255,0,0,255)) | |||||
node:setAnchorPoint(cc.p(0.5,0.5)) | |||||
node:ignoreAnchorPointForPosition(false) | |||||
local width=0 | |||||
local height=0 | |||||
for i=1,4 do | |||||
if values[i] then | |||||
local mj | |||||
local mjWidth | |||||
local mjHeight | |||||
if i<=3 then | |||||
mj=MJ:new(values[i],MJDefine.MJType.OutBlack,MJDefine.MyViewId,self.mjColor) | |||||
if self.mjColor == MJDefine.DesktopType.TwoDGold then | |||||
mj:setAutoSize(false) | |||||
mj:setSize(cc.size(36,55)) | |||||
mjWidth, mjHeight = 36, 55 | |||||
elseif self.mjColor == MJDefine.DesktopType.TwoD then | |||||
mj:setAutoSize(false) | |||||
mj:setSize(cc.size(47,68)) | |||||
mjWidth, mjHeight = 47,68 | |||||
end | |||||
else | |||||
mj=MJ:new(values[i],MJDefine.MJType.Out,MJDefine.MyViewId,self.mjColor) | |||||
end | |||||
node:addChild(mj) | |||||
local mjWidth= mjWidth or mj:getContentSize().width | |||||
local mjHeight= mjHeight or mj:getContentSize().height | |||||
local x=mjWidth/2+(i-1)*(mjWidth+MJ_PADDING_X) | |||||
local y=mjHeight/2 | |||||
if i <= 3 then | |||||
y = y + 4 | |||||
end | |||||
width=width+mjWidth | |||||
height=mjHeight | |||||
mj:setPosition(x,y) | |||||
end | |||||
end | |||||
node:setContentSize(cc.size(width,height)) | |||||
return node | |||||
end | |||||
function hongzhongRoomXiaoJuView:createHandCards(layer,arg,seatId) | |||||
--红中摆前面 | |||||
local temp1={} | |||||
local temp2={} | |||||
for k,v in pairs(arg) do | |||||
if v.card==0x41 then | |||||
table.insert(temp1,v) | |||||
else | |||||
table.insert(temp2,v) | |||||
end | |||||
end | |||||
local cards={} | |||||
table.insertTo(cards,temp1) | |||||
table.insertTo(cards,temp2) | |||||
for k,v in pairs(cards) do | |||||
local mj=MJ:new(v.card,MJDefine.MJType.Out,MJDefine.MyViewId, self.mjColor) | |||||
layer:addChild(mj) | |||||
mj:setPosition(cc.p(self.initX[seatId],MJ_HAND_CARD_INIT_Y)) | |||||
self.initX[seatId]=self.initX[seatId]+mj:getContentSize().width + MJ_PADDING_X | |||||
end | |||||
for i,v in pairs(layer:getChildren()) do | |||||
--[[if v and v.newValue then | |||||
print("v.newValue ================= "..v.newValue) | |||||
end--]] | |||||
if tonumber(v.newValue) == 41 then | |||||
local laiFlog = cc.Sprite:createWithSpriteFrameName("mj_flog_laizi_out.png") | |||||
laiFlog:setScale(0.7) | |||||
--laiFlog:setTag(MJ.MJ_HAND_CARD_FLAG_LAIZI) | |||||
v:addChild(laiFlog) | |||||
if self.mjColor == MJDefine.DesktopType.TwoDGold then | |||||
laiFlog:setPosition(14,45) | |||||
else | |||||
laiFlog:setPosition(14,61) | |||||
end | |||||
end | |||||
end | |||||
end | |||||
function hongzhongRoomXiaoJuView:createHuCard(layer,card,seatId) | |||||
local mj=MJ:new(card,MJDefine.MJType.Out,MJDefine.MyViewId, self.mjColor) | |||||
layer:addChild(mj) | |||||
mj:setPosition(cc.p(self.initX[seatId], MJ_HAND_CARD_INIT_Y)) | |||||
self.initX[seatId]=self.initX[seatId] + mj:getContentSize().width + MJ_PADDING_X | |||||
local flag = cc.Sprite:create("mj/res/ui/zy_fangjian/mj_hu_flag.png") | |||||
mj:addChild(flag) | |||||
if self.mjColor == MJDefine.DesktopType.TwoDGold then | |||||
flag:setPosition(cc.p(16,40)) | |||||
else | |||||
flag:setPosition(cc.p(16,55)) | |||||
end | |||||
end | |||||
-- 分辨率改变回调(针对部分机型切后台后,导致牌数据位置不对(宽高分辨率对调了),暂时处理部分游戏) | |||||
function hongzhongRoomXiaoJuView:applicationScreenSizeChanged() | |||||
if not next(self.items) then | |||||
return | |||||
end | |||||
MJ_HAND_CARD_INIT_X=150 * g_radio_x | |||||
MJ_HAND_CARD_INIT_Y=50 * g_radio_y | |||||
MJ_GROUP_CARD_INIT_X=100 * g_radio_x | |||||
hongzhongRoomXiaoJuView.super.applicationScreenSizeChanged(self) | |||||
end | |||||
return hongzhongRoomXiaoJuView |
@@ -0,0 +1,96 @@ | |||||
local hongzhongDefine=MJFramework.MJFrameworkClassImprot("mj.luaScript.MJDefine") | |||||
hongzhongDefine.MJEvent.XiaPiao="MJEvent_XiaPiao" | |||||
hongzhongDefine.MJEvent.XiaPiaoResponse="MJEvent_XiaPiaoResponse" | |||||
hongzhongDefine.MJEvent.XiaPiaoTime="MJEvent_XiaPiaoTime" | |||||
hongzhongDefine.MJEvent.RequestFastsStart = "MJEvent_RequestFastsStart" | |||||
hongzhongDefine.MJEvent.BraodcastFastStart = "MJEvent_BraodcastFastStart" | |||||
hongzhongDefine.MJEvent.FastStartSucc = "MJEvent_FastStartSucc" | |||||
hongzhongDefine.MJEvent.HostingRequest = "MJEvent_HostingRequest" | |||||
hongzhongDefine.MJEvent.USER_PASS = "MJEvent_USER_PASS" | |||||
hongzhongDefine.MJEvent.GetTableInfo = "MJEvent_GetTableInfo" | |||||
hongzhongDefine.IS_NEW_3D = true | |||||
hongzhongDefine.MJ_TOUCH_OUT_CARD_Y = 20 | |||||
hongzhongDefine.MJ_HAND_CARD_TOUCH_Y = 20 | |||||
hongzhongDefine.MJ_TIME_OUT_CARD = 0 | |||||
hongzhongDefine.MJ_TIME_OUT_CARD_SCALE = 0.0 | |||||
hongzhongDefine.MJ_TIME_OUT_CARD_WAIT = 0.1 | |||||
hongzhongDefine.MJ_OUT_CARD_SCALE = 0.5 | |||||
hongzhongDefine.CHANGE_GAME_BG = | |||||
{ | |||||
[1] = { | |||||
['2d'] = "hongzhong/res/zy_fangjian/liuzhou_2d_red_bg.jpg", | |||||
['3d'] = "hongzhong/res/zy_fangjian/hongzhong_mingliang_3d_bg.png", | |||||
}, | |||||
[2] = { | |||||
['2d'] = "hongzhong/res/zy_fangjian/liuzhou_2d_green_bg.jpg", | |||||
['3d'] = "mj/res/ui/zy_fangjian/room/room_bg/mj_room_bg_3d_jingdian.jpg", | |||||
}, | |||||
[3] = { | |||||
['2d'] = "hongzhong/res/zy_fangjian/liuzhou_2d_blue_bg.jpg", | |||||
['3d'] = "mj/res/ui/zy_fangjian/room/room_bg/mj_room_bg_3d_molv.jpg", | |||||
}, | |||||
} | |||||
hongzhongDefine.MJStandImage[hongzhongDefine.DesktopType.TwoD] = { | |||||
[hongzhongDefine.PlayerViewType.My]="handCards/hl_old_mj_handcard_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Left]="other/hl_old_mj_2d_stand_left.png", | |||||
[hongzhongDefine.PlayerViewType.Right]="other/hl_old_mj_2d_stand_left.png", | |||||
[hongzhongDefine.PlayerViewType.Top]="other/hl_old_mj_stand_top.png", | |||||
} | |||||
hongzhongDefine.MJOutImage[hongzhongDefine.DesktopType.TwoD] = { | |||||
[hongzhongDefine.PlayerViewType.My]="outCards/my/hl_old_mj_outcard_my_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Left]="outCards/left/hl_old_mj_2d_outcard_left_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Right]="outCards/right/hl_old_mj_2d_outcard_right_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Top]="outCards/top/hl_old_mj_outcard_top_%d.png", | |||||
} | |||||
hongzhongDefine.MJOperateGroupImage[hongzhongDefine.DesktopType.TwoD] = { | |||||
[hongzhongDefine.PlayerViewType.My]="outCards/my/hl_old_mj_outcard_my_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Left]="outCards/left/hl_old_mj_2d_outcard_left_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Right]="outCards/right/hl_old_mj_2d_outcard_right_%d.png", | |||||
[hongzhongDefine.PlayerViewType.Top]="outCards/top/hl_old_mj_outcard_top_%d.png", | |||||
} | |||||
hongzhongDefine.MJOutBlackImage[hongzhongDefine.DesktopType.TwoD] = { | |||||
[hongzhongDefine.PlayerViewType.My]="other/hl_old_mj_lie_down.png", | |||||
[hongzhongDefine.PlayerViewType.Left]="other/hl_old_mj_2d_lie_left.png", | |||||
[hongzhongDefine.PlayerViewType.Right]="other/hl_old_mj_2d_lie_left.png", | |||||
[hongzhongDefine.PlayerViewType.Top]="other/hl_old_mj_lie_top.png", | |||||
} | |||||
function loadMJConfig(desktopType) | |||||
local AllMJConfigs = { | |||||
[hongzhongDefine.DesktopType.ThreeD] = "hongzhong.luaScript.Views.3d.MJConfig_3d", | |||||
[hongzhongDefine.DesktopType.TwoD] = "hongzhong.luaScript.Views.2d.MJConfig_2d", | |||||
[hongzhongDefine.DesktopType.TwoDGold] = "hongzhong.luaScript.Views.2d.MJConfig_2d_gold", | |||||
} | |||||
desktopType = desktopType or app.systemSetting.info.viewType | |||||
if not desktopType then | |||||
desktopType = hongzhongDefine.DesktopType.TwoD | |||||
end | |||||
-- 修复2d金黄切墨绿时,部分配置没有重写成功的bug | |||||
package.loaded['mj.luaScript.Common.2d.CommonMahjongConfig'] = nil | |||||
hongzhongDefine.MJConfig_3d = require(AllMJConfigs[hongzhongDefine.DesktopType.ThreeD]) | |||||
if desktopType ~= hongzhongDefine.DesktopType.ThreeD then | |||||
hongzhongDefine.MJConfig_2d = require(AllMJConfigs[desktopType]) | |||||
else | |||||
hongzhongDefine.MJConfig_2d = require(AllMJConfigs[hongzhongDefine.DesktopType.TwoD]) | |||||
end | |||||
end | |||||
hongzhongDefine.loadMJConfig = loadMJConfig | |||||
loadMJConfig() | |||||
return hongzhongDefine |
@@ -0,0 +1,64 @@ | |||||
local MJSound = MJFramework.MJFrameworkClassImprot("mj.luaScript.MJSound") | |||||
local hongzhongSound = class("laibingRoomView", MJSound) | |||||
local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") | |||||
local path = "mj/res/sound" | |||||
local hongzhongPath = "hongzhong/res/sound" | |||||
hongzhongSound.man = "c_man" | |||||
hongzhongSound.women = "c_women" | |||||
hongzhongSound.pre = "c_" | |||||
hongzhongSound.sound_t = 1 | |||||
-- 吃操作 | |||||
--hongzhongSound.OperateSoundConfig[MJDefine.MJOperateType.OPREATE_CHI] = "chi" | |||||
local function dealSex(s) | |||||
local sex=tonumber(s) | |||||
if sex~=1 and sex~=2 then | |||||
sex=1 | |||||
end | |||||
return 2--sex | |||||
end | |||||
-- sound_t 1 普通话 2 方言 | |||||
function hongzhongSound.setSoundType( sound_t ) | |||||
hongzhongSound.sound_t = sound_t | |||||
if sound_t == 1 then | |||||
hongzhongSound.man = "c_man" | |||||
hongzhongSound.women = "c_women" | |||||
hongzhongSound.pre = "c_" | |||||
else | |||||
hongzhongSound.man = "man" | |||||
hongzhongSound.women = "women" | |||||
hongzhongSound.pre = "" | |||||
end | |||||
end | |||||
function hongzhongSound.PlayOperateSound(sex,opType) | |||||
if hongzhongSound.sound_t == 1 then--普通话 | |||||
hongzhongSound.super.PlayOperateSound(sex,opType) | |||||
else | |||||
if hongzhongSound.OperateSoundConfig[opType] then | |||||
sex = dealSex(sex) | |||||
local name = string.format("%s/%s/%shongzhong_mj_%s_%s.ogg", hongzhongPath,sex ==1 and hongzhongSound.man or hongzhongSound.women, hongzhongSound.pre, sex, hongzhongSound.OperateSoundConfig[opType]) | |||||
playVoice(name) | |||||
end | |||||
end | |||||
end | |||||
function hongzhongSound.PlayMJSound(sex,value) | |||||
if hongzhongSound.sound_t == 1 then--普通话 | |||||
hongzhongSound.super.PlayMJSound(sex,value) | |||||
else | |||||
sex = dealSex(sex) | |||||
local name = string.format("%s/%s/%shongzhong_mj_%s_%x.ogg", hongzhongPath,sex ==1 and hongzhongSound.man or hongzhongSound.women, hongzhongSound.pre, sex, value) | |||||
playVoice(name) | |||||
end | |||||
end | |||||
function hongzhongSound.PlayZhaNiao() | |||||
playVoice(hongzhongPath.."/hz_zhuaniao.ogg") | |||||
end | |||||
return hongzhongSound |
@@ -0,0 +1,6 @@ | |||||
local versionInfo = | |||||
{ | |||||
ResourceVersion = "10040", | |||||
} | |||||
return versionInfo; |