Author | SHA1 | Message | Date |
---|---|---|---|
|
ce7914a346 | Publish a new version by . | 3 years ago |
@@ -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; |