ClientUserManager.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. var CClientUserItem = cc.Class({
  2. ctor :function() {
  3. this.m_UserInfo = new tagUserInfo();
  4. this.m_CustomFaceInfo = new tagCustomFaceInfo();
  5. },
  6. //用户桌子
  7. GetTableID:function (){
  8. return this.m_UserInfo.wTableID;
  9. },
  10. //用户椅子
  11. GetChairID:function () {
  12. return this.m_UserInfo.wChairID;
  13. },
  14. //用户状态
  15. GetUserStatus:function () {
  16. return this.m_UserInfo.cbUserStatus;
  17. },
  18. //用户状态
  19. SetUserStatus:function (cbUserStatus) {
  20. this.m_UserInfo.cbUserStatus = cbUserStatus;
  21. },
  22. //用户标识
  23. GetUserID :function() {
  24. return this.m_UserInfo.dwUserID;
  25. },
  26. GetNickName :function(){
  27. return this.m_UserInfo.szNickName;
  28. },
  29. //用户信息
  30. GetUserInfo:function () {
  31. return this.m_UserInfo;
  32. },
  33. //积分数值
  34. GetUserScore:function () {
  35. return this.m_UserInfo.llScore;
  36. },
  37. GetUserRoomCard:function () {
  38. return this.m_UserInfo.llUserIngot;
  39. },
  40. GetGender:function (){
  41. return this.m_UserInfo.cbGender;
  42. },
  43. //游戏ID
  44. GetGameID :function() {
  45. return this.m_UserInfo.dwGameID;
  46. },
  47. //游戏ID
  48. GetUserIP :function() {
  49. return this.m_UserInfo.szClientIP;
  50. },
  51. //自定头像
  52. GetCustomFaceInfo:function () {
  53. return null;
  54. },
  55. //微信头像
  56. GetHeadImgURL:function (){
  57. return this.m_UserInfo.szHeadImgUrl;
  58. },
  59. });
  60. var CPlazaUserManager = cc.Class({
  61. ctor :function () {
  62. this.m_UserItemActive = new Array();
  63. this.m_pIUserManagerSink = arguments[0];
  64. },
  65. //查找用户
  66. SearchUserByUserID :function(dwUserID){
  67. //用户搜索
  68. for (var i=0,l=this.m_UserItemActive.length;i<l;i++){
  69. var pClientUserItem=this.m_UserItemActive[i];
  70. if (pClientUserItem.m_UserInfo.dwUserID==dwUserID) return pClientUserItem;
  71. }
  72. return 0;
  73. },
  74. //更新积分
  75. UpdateUserItemScore: function(pIClientUserItem, pUserScore) {
  76. // 从客户端用户项中获取用户信息
  77. var pUserInfo = pIClientUserItem.GetUserInfo();
  78. // 创建一个用于存储旧分数的 tagUserScore 对象
  79. var OldScore = new tagUserScore();
  80. // 将用户信息中的分数复制到 OldScore 对象中,以便后续比较
  81. gCByte.StrSameMemCopy(OldScore, pUserInfo);
  82. // 将新的用户分数复制到用户信息对象中,更新用户的分数
  83. gCByte.StrSameMemCopy(pUserInfo, pUserScore);
  84. // 如果 m_pIUserManagerSink 对象存在,则调用其 OnUserScoreUpdate 方法通知分数更新
  85. if (this.m_pIUserManagerSink)
  86. this.m_pIUserManagerSink.OnUserScoreUpdate(pIClientUserItem, OldScore);
  87. // 返回 true 表示更新操作成功
  88. return true;
  89. },
  90. //枚举用户
  91. EnumUserItem :function(wEnumIndex){
  92. if (wEnumIndex>=this.m_UserItemActive.length) return 0;
  93. return this.m_UserItemActive[wEnumIndex];
  94. },
  95. //增加用户
  96. ActiveUserItem :function(UserInfo, CustomFaceInfo) {
  97. //变量定义
  98. var pClientUserItem=new CClientUserItem();
  99. if (pClientUserItem==0) return 0;
  100. pClientUserItem.m_UserInfo = UserInfo;
  101. //设置数据
  102. gCByte.StrSameMemCopy(pClientUserItem.m_UserInfo,UserInfo);
  103. //插入用户
  104. this.m_UserItemActive.push(pClientUserItem);
  105. //更新通知
  106. if (this.m_pIUserManagerSink!=0) this.m_pIUserManagerSink.OnUserItemAcitve(pClientUserItem);
  107. return pClientUserItem;
  108. },
  109. //删除用户
  110. DeleteUserItem:function (pIClientUserItem) {
  111. //查找用户
  112. for (var i in this.m_UserItemActive) {
  113. if (pIClientUserItem==this.m_UserItemActive[i]){
  114. //删除用户
  115. this.m_UserItemActive.splice(i,1);
  116. //删除通知
  117. if (this.m_pIUserManagerSink) this.m_pIUserManagerSink.OnUserItemDelete(pIClientUserItem);
  118. //设置数据
  119. pIClientUserItem.m_UserInfo.dwUserID = 0;
  120. return true;
  121. }
  122. }
  123. return false;
  124. },
  125. //重置用户
  126. ResetUserItem :function(bValue) {
  127. if ( bValue ){
  128. //设置变量
  129. this.m_UserItemActive.splice(0,this.m_UserItemActive.length);
  130. } else {
  131. var TempArr = null;
  132. for (var i=0; i<this.m_UserItemActive.length; i++){
  133. if (g_GlobalUserInfo.dwUserID == this.m_UserItemActive[i].GetUserID()){
  134. TempArr = this.m_UserItemActive.splice(0,1);
  135. }
  136. }
  137. this.m_UserItemActive.splice(0,this.m_UserItemActive.length);
  138. if ( TempArr ) this.m_UserItemActive = TempArr;
  139. }
  140. return true;
  141. },
  142. //更新状态
  143. UpdateUserItemStatus :function (pIClientUserItem,pUserStatus){
  144. //获取用户
  145. var pUserInfo = pIClientUserItem.GetUserInfo();
  146. //以往数据
  147. var UserStatus = new tagUserStatus();
  148. UserStatus.wTableID=pUserInfo.wTableID;
  149. UserStatus.wChairID=pUserInfo.wChairID;
  150. UserStatus.cbUserStatus=pUserInfo.cbUserStatus;
  151. //设置数据
  152. pUserInfo.wTableID=pUserStatus.wTableID;
  153. pUserInfo.wChairID=pUserStatus.wChairID;
  154. pUserInfo.cbUserStatus=pUserStatus.cbUserStatus;
  155. //通知更新
  156. if (this.m_pIUserManagerSink)
  157. this.m_pIUserManagerSink.OnUserItemUpdate(pIClientUserItem,UserStatus);
  158. return true;
  159. },
  160. //获得人数
  161. GetActiveUserCount:function (){
  162. return this.m_UserItemActive.length;
  163. }
  164. });
  165. var CGameUserManager = cc.Class({
  166. ctor:function () {
  167. //组件接口
  168. this.m_pIUserManagerSink = arguments[0];
  169. //用户数据
  170. this.m_pTableUserItem = new Array(100);
  171. this.m_UserItemLookon = new Array();
  172. },
  173. //重置用户
  174. ResetUserItem :function(pClientUserItem){
  175. //存储用户
  176. for (var i=0;i<MAX_CHAIR;i++){
  177. if (this.m_pTableUserItem[i]!=null && pClientUserItem.GetUserID()!=this.m_pTableUserItem[i].GetUserID()) {
  178. this.m_pTableUserItem[i] = null;
  179. }
  180. }
  181. //设置变量
  182. this.m_UserItemLookon.splice(0,this.m_UserItemLookon.length);
  183. return true;
  184. },
  185. //删除用户
  186. DeleteUserItem:function(pIClientUserItem){
  187. //效验状态
  188. if ((pIClientUserItem==null)) return false;
  189. //游戏用户
  190. if (pIClientUserItem.GetUserStatus()!=US_LOOKON){
  191. //变量定义
  192. var wChairID=pIClientUserItem.GetChairID();
  193. var pUserItemRemove=pIClientUserItem;
  194. var bRemove = false;
  195. for (var i=0; i<MAX_CHAIR; i++){
  196. if (this.m_pTableUserItem[i] && (pIClientUserItem.GetUserID() == this.m_pTableUserItem[i].GetUserID())){
  197. //删除用户
  198. this.m_pTableUserItem[i]=null;
  199. bRemove = true;
  200. }
  201. }
  202. if ( !bRemove ) return false;
  203. //删除通知
  204. if (this.m_pIUserManagerSink!=0)
  205. this.m_pIUserManagerSink.OnUserItemDelete(pUserItemRemove);
  206. return true;
  207. }
  208. //旁观用户
  209. var pUserItemActive=0;
  210. for (var i=0;i<this.m_UserItemLookon.length;i++) {
  211. pUserItemActive=this.m_UserItemLookon[i];
  212. if (pIClientUserItem==pUserItemActive){
  213. //删除用户
  214. this.m_UserItemLookon.splice(i,1);
  215. //删除通知
  216. if (this.m_pIUserManagerSink!=0)
  217. this.m_pIUserManagerSink.OnUserItemDelete(pUserItemActive);
  218. return true;
  219. }
  220. }
  221. return false;
  222. },
  223. //增加用户
  224. ActiveUserItem :function(UserInfo, CustomFaceInfo){
  225. //效验状态
  226. if (UserInfo.wChairID>=MAX_CHAIR) return 0;
  227. //变量定义
  228. var pClientUserItem=new CClientUserItem();
  229. if (pClientUserItem==null) return null;
  230. //用户信息
  231. pClientUserItem.m_UserInfo = UserInfo;
  232. pClientUserItem.m_CustomFaceInfo = CustomFaceInfo;
  233. //设置用户
  234. if (UserInfo.cbUserStatus==US_LOOKON) {
  235. var IsHave = false;
  236. for (var i=0,l=this.m_UserItemLookon.length;i<l;i++){
  237. if(this.m_UserItemLookon[i].GetUserID() == pClientUserItem.GetUserID()){
  238. IsHave = true;
  239. }
  240. }
  241. if( IsHave == false){
  242. this.m_UserItemLookon.push(pClientUserItem);
  243. }
  244. }
  245. else this.m_pTableUserItem[UserInfo.wChairID] = pClientUserItem;
  246. //更新通知
  247. if (this.m_pIUserManagerSink!=null)
  248. this.m_pIUserManagerSink.OnUserItemAcitve(pClientUserItem);
  249. return pClientUserItem;
  250. },
  251. //查找用户
  252. SearchUserByUserID:function (dwUserID){
  253. //游戏用户
  254. for (var i=0;i<MAX_CHAIR;i++){
  255. var pClientUserItem= this.m_pTableUserItem[i];
  256. if ((pClientUserItem!=0 && pClientUserItem!=null)&&(pClientUserItem.GetUserID()==dwUserID)) return pClientUserItem;
  257. }
  258. //旁观用户
  259. for (var i=0,l=this.m_UserItemLookon.length;i<l;i++){
  260. pClientUserItem=this.m_UserItemLookon[i];
  261. if (pClientUserItem.GetUserID()==dwUserID) return pClientUserItem;
  262. }
  263. return 0;
  264. },
  265. //更新状态
  266. UpdateUserItemStatus :function(pIClientUserItem, pUserStatus){
  267. //获取用户
  268. var pUserInfo=pIClientUserItem.GetUserInfo();
  269. //以往数据
  270. var UserStatus = new tagUserStatus();
  271. UserStatus.wTableID=pUserInfo.wTableID;
  272. UserStatus.wChairID=pUserInfo.wChairID;
  273. UserStatus.cbUserStatus=pUserInfo.cbUserStatus;
  274. //设置数据
  275. pUserInfo.wTableID=pUserStatus.wTableID;
  276. pUserInfo.wChairID=pUserStatus.wChairID;
  277. pUserInfo.cbUserStatus=pUserStatus.cbUserStatus;
  278. //通知更新
  279. if (this.m_pIUserManagerSink)
  280. if (this.m_pIUserManagerSink!=0) this.m_pIUserManagerSink.OnUserItemUpdate(pIClientUserItem,UserStatus);
  281. return true;
  282. },
  283. //游戏用户
  284. GetTableUserItem:function (wChariID){
  285. //效验参数
  286. if (wChariID>=this.m_pTableUserItem.length) return null;
  287. if(this.m_pTableUserItem[wChariID] && this.m_pTableUserItem[wChariID].GetUserStatus() == US_LOOKON) this.m_pTableUserItem.splice(wChariID, 1)
  288. return this.m_pTableUserItem[wChariID];
  289. },
  290. //游戏用户
  291. GetTableLookOnUserArr:function (){
  292. var IDArr = new Array();
  293. //旁观用户
  294. for (var i=0;i<this.m_UserItemLookon.length;i++){
  295. if(this.m_UserItemLookon[i].GetUserStatus() == US_LOOKON) IDArr.push(this.m_UserItemLookon[i].GetUserID());
  296. else this.m_UserItemLookon.splice(i, 1)
  297. }
  298. return IDArr;
  299. },
  300. });