Преглед на файлове

Publish a new version by .

master
Kevin преди 3 години
родител
ревизия
12c15cdc3d
променени са 10675 файла, в които са добавени 531503 реда и са изтрити 0 реда
  1. +3
    -0
      tiantian/README.md
  2. +2
    -0
      tiantian/hongzhong/README.md
  3. +24
    -0
      tiantian/hongzhong/luaScript/Protocol/hongzhongCmd.lua
  4. +315
    -0
      tiantian/hongzhong/luaScript/Protocol/hongzhongMessage.lua
  5. +204
    -0
      tiantian/hongzhong/luaScript/Protocol/hongzhongProtocol.lua
  6. +13
    -0
      tiantian/hongzhong/luaScript/Views/2d/Card_2d.lua
  7. +13
    -0
      tiantian/hongzhong/luaScript/Views/2d/GroupAnGang_2d.lua
  8. +14
    -0
      tiantian/hongzhong/luaScript/Views/2d/GroupBaGang_2d.lua
  9. +13
    -0
      tiantian/hongzhong/luaScript/Views/2d/GroupChi_2d.lua
  10. +13
    -0
      tiantian/hongzhong/luaScript/Views/2d/GroupGang_2d.lua
  11. +13
    -0
      tiantian/hongzhong/luaScript/Views/2d/GroupPeng_2d.lua
  12. +193
    -0
      tiantian/hongzhong/luaScript/Views/2d/HandCard_2d.lua
  13. +10
    -0
      tiantian/hongzhong/luaScript/Views/2d/HuCardView_2d.lua
  14. +4
    -0
      tiantian/hongzhong/luaScript/Views/2d/MJConfig_2d.lua
  15. +5
    -0
      tiantian/hongzhong/luaScript/Views/2d/MJConfig_2d_gold.lua
  16. +11
    -0
      tiantian/hongzhong/luaScript/Views/2d/OutCardView_2d.lua
  17. +20
    -0
      tiantian/hongzhong/luaScript/Views/3d/Card_3d.lua
  18. +11
    -0
      tiantian/hongzhong/luaScript/Views/3d/GroupAnGang_3d.lua
  19. +68
    -0
      tiantian/hongzhong/luaScript/Views/3d/GroupBaGang_3d.lua
  20. +53
    -0
      tiantian/hongzhong/luaScript/Views/3d/GroupChi_3d.lua
  21. +54
    -0
      tiantian/hongzhong/luaScript/Views/3d/GroupGang_3d.lua
  22. +12
    -0
      tiantian/hongzhong/luaScript/Views/3d/GroupMSAGang_3d.lua
  23. +53
    -0
      tiantian/hongzhong/luaScript/Views/3d/GroupPeng_3d.lua
  24. +145
    -0
      tiantian/hongzhong/luaScript/Views/3d/HandCard_3d.lua
  25. +10
    -0
      tiantian/hongzhong/luaScript/Views/3d/HuCardView_3d.lua
  26. +15
    -0
      tiantian/hongzhong/luaScript/Views/3d/MJConfig_3d.lua
  27. +12
    -0
      tiantian/hongzhong/luaScript/Views/3d/OutCardView_3d.lua
  28. +52
    -0
      tiantian/hongzhong/luaScript/Views/Game/hongzhong.lua
  29. +297
    -0
      tiantian/hongzhong/luaScript/Views/Game/hongzhongHandCardView.lua
  30. +141
    -0
      tiantian/hongzhong/luaScript/Views/Main/hongzhongCreateRoomView.lua
  31. +170
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRequestStartView.lua
  32. +230
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomDaJuView.lua
  33. +41
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomDirection.lua
  34. +90
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomPlayerView.lua
  35. +569
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomReplayView.lua
  36. +301
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomSettingView.lua
  37. +156
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomToolView.lua
  38. +1294
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomView.lua
  39. +377
    -0
      tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomXiaoJuView.lua
  40. +96
    -0
      tiantian/hongzhong/luaScript/hongzhongDefine.lua
  41. +64
    -0
      tiantian/hongzhong/luaScript/hongzhongSound.lua
  42. +6
    -0
      tiantian/hongzhong/luaScript/hongzhongVersion.lua
  43. Двоични данни
      tiantian/hongzhong/res/sound/hz_zhuaniao.ogg
  44. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_1.ogg
  45. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_11.ogg
  46. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_11_1.ogg
  47. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_12.ogg
  48. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_13.ogg
  49. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_14.ogg
  50. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_15.ogg
  51. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_16.ogg
  52. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_17.ogg
  53. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_18.ogg
  54. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_19.ogg
  55. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_19_1.ogg
  56. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_2.ogg
  57. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_21.ogg
  58. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_21_1.ogg
  59. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_22.ogg
  60. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_23.ogg
  61. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_24.ogg
  62. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_25.ogg
  63. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_26.ogg
  64. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_27.ogg
  65. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_28.ogg
  66. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_29.ogg
  67. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_3.ogg
  68. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_31.ogg
  69. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_32.ogg
  70. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_33.ogg
  71. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_34.ogg
  72. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_4.ogg
  73. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_41.ogg
  74. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_42.ogg
  75. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_43.ogg
  76. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_5.ogg
  77. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_6.ogg
  78. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_7.ogg
  79. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_8.ogg
  80. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_9.ogg
  81. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_angang.ogg
  82. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_chi.ogg
  83. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_gang.ogg
  84. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_hu.ogg
  85. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_peng.ogg
  86. Двоични данни
      tiantian/hongzhong/res/sound/man/hongzhong_mj_1_zimo.ogg
  87. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_1.ogg
  88. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_11.ogg
  89. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_11_1.ogg
  90. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_12.ogg
  91. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_13.ogg
  92. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_14.ogg
  93. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_15.ogg
  94. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_16.ogg
  95. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_17.ogg
  96. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_18.ogg
  97. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_19.ogg
  98. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_2.ogg
  99. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_21.ogg
  100. Двоични данни
      tiantian/hongzhong/res/sound/women/hongzhong_mj_2_21_1.ogg

+ 3
- 0
tiantian/README.md Целия файл

@@ -0,0 +1,3 @@
# tiantian

天天麻将

+ 2
- 0
tiantian/hongzhong/README.md Целия файл

@@ -0,0 +1,2 @@
# game_hongzhong


+ 24
- 0
tiantian/hongzhong/luaScript/Protocol/hongzhongCmd.lua Целия файл

@@ -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

+ 315
- 0
tiantian/hongzhong/luaScript/Protocol/hongzhongMessage.lua Целия файл

@@ -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

+ 204
- 0
tiantian/hongzhong/luaScript/Protocol/hongzhongProtocol.lua Целия файл

@@ -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;

+ 13
- 0
tiantian/hongzhong/luaScript/Views/2d/Card_2d.lua Целия файл

@@ -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

+ 13
- 0
tiantian/hongzhong/luaScript/Views/2d/GroupAnGang_2d.lua Целия файл

@@ -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

+ 14
- 0
tiantian/hongzhong/luaScript/Views/2d/GroupBaGang_2d.lua Целия файл

@@ -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

+ 13
- 0
tiantian/hongzhong/luaScript/Views/2d/GroupChi_2d.lua Целия файл

@@ -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

+ 13
- 0
tiantian/hongzhong/luaScript/Views/2d/GroupGang_2d.lua Целия файл

@@ -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

+ 13
- 0
tiantian/hongzhong/luaScript/Views/2d/GroupPeng_2d.lua Целия файл

@@ -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

+ 193
- 0
tiantian/hongzhong/luaScript/Views/2d/HandCard_2d.lua Целия файл

@@ -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

+ 10
- 0
tiantian/hongzhong/luaScript/Views/2d/HuCardView_2d.lua Целия файл

@@ -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

+ 4
- 0
tiantian/hongzhong/luaScript/Views/2d/MJConfig_2d.lua Целия файл

@@ -0,0 +1,4 @@

local config = require("mj.luaScript.Common.2d.CommonMahjongConfig")

return config

+ 5
- 0
tiantian/hongzhong/luaScript/Views/2d/MJConfig_2d_gold.lua Целия файл

@@ -0,0 +1,5 @@

local config = require("mj.luaScript.Common.2d.CommonMahjongConfig")


return config

+ 11
- 0
tiantian/hongzhong/luaScript/Views/2d/OutCardView_2d.lua Целия файл

@@ -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

+ 20
- 0
tiantian/hongzhong/luaScript/Views/3d/Card_3d.lua Целия файл

@@ -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

+ 11
- 0
tiantian/hongzhong/luaScript/Views/3d/GroupAnGang_3d.lua Целия файл

@@ -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

+ 68
- 0
tiantian/hongzhong/luaScript/Views/3d/GroupBaGang_3d.lua Целия файл

@@ -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

+ 53
- 0
tiantian/hongzhong/luaScript/Views/3d/GroupChi_3d.lua Целия файл

@@ -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

+ 54
- 0
tiantian/hongzhong/luaScript/Views/3d/GroupGang_3d.lua Целия файл

@@ -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

+ 12
- 0
tiantian/hongzhong/luaScript/Views/3d/GroupMSAGang_3d.lua Целия файл

@@ -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

+ 53
- 0
tiantian/hongzhong/luaScript/Views/3d/GroupPeng_3d.lua Целия файл

@@ -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

+ 145
- 0
tiantian/hongzhong/luaScript/Views/3d/HandCard_3d.lua Целия файл

@@ -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

+ 10
- 0
tiantian/hongzhong/luaScript/Views/3d/HuCardView_3d.lua Целия файл

@@ -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

+ 15
- 0
tiantian/hongzhong/luaScript/Views/3d/MJConfig_3d.lua Целия файл

@@ -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

+ 12
- 0
tiantian/hongzhong/luaScript/Views/3d/OutCardView_3d.lua Целия файл

@@ -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

+ 52
- 0
tiantian/hongzhong/luaScript/Views/Game/hongzhong.lua Целия файл

@@ -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

+ 297
- 0
tiantian/hongzhong/luaScript/Views/Game/hongzhongHandCardView.lua Целия файл

@@ -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

+ 141
- 0
tiantian/hongzhong/luaScript/Views/Main/hongzhongCreateRoomView.lua Целия файл

@@ -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

+ 170
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRequestStartView.lua Целия файл

@@ -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

+ 230
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomDaJuView.lua Целия файл

@@ -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

+ 41
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomDirection.lua Целия файл

@@ -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

+ 90
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomPlayerView.lua Целия файл

@@ -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

+ 569
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomReplayView.lua Целия файл

@@ -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

+ 301
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomSettingView.lua Целия файл

@@ -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

+ 156
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomToolView.lua Целия файл

@@ -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

+ 1294
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomView.lua
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 377
- 0
tiantian/hongzhong/luaScript/Views/Room/hongzhongRoomXiaoJuView.lua Целия файл

@@ -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

+ 96
- 0
tiantian/hongzhong/luaScript/hongzhongDefine.lua Целия файл

@@ -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

+ 64
- 0
tiantian/hongzhong/luaScript/hongzhongSound.lua Целия файл

@@ -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

+ 6
- 0
tiantian/hongzhong/luaScript/hongzhongVersion.lua Целия файл

@@ -0,0 +1,6 @@
local versionInfo =
{
ResourceVersion = "10047",
}

return versionInfo;

Двоични данни
tiantian/hongzhong/res/sound/hz_zhuaniao.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_1.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_11.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_11_1.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_12.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_13.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_14.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_15.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_16.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_17.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_18.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_19.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_19_1.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_2.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_21.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_21_1.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_22.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_23.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_24.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_25.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_26.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_27.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_28.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_29.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_3.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_31.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_32.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_33.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_34.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_4.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_41.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_42.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_43.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_5.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_6.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_7.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_8.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_9.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_angang.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_chi.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_gang.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_hu.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_peng.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/man/hongzhong_mj_1_zimo.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_1.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_11.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_11_1.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_12.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_13.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_14.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_15.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_16.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_17.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_18.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_19.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_2.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_21.ogg Целия файл


Двоични данни
tiantian/hongzhong/res/sound/women/hongzhong_mj_2_21_1.ogg Целия файл


Някои файлове не бяха показани, защото твърде много файлове са промени

Зареждане…
Отказ
Запис