public void read(Int64 room_id) { log.log.trace(new System.Diagnostics.StackFrame(), service.timerservice.Tick, "begin read"); mj_huanghuang_table _table = server.tables.get_mj_huanghuang_table(room_id); if (_table.play_count < _table.times || _table.times < 0) { var client_uuid = hub.hub.gates.current_client_uuid; var _proxy = _table.get_player_proxy(client_uuid); _proxy.state = GameCommon.mjPlayerstate.read; bool is_read = true; GameCommon.mjSite site = GameCommon.mjSite.One; for (int i = 0; i < _table.peopleNum; i++) { if (_table.site[(int)site].is_robot) { _table.site[(int)site].state = GameCommon.mjPlayerstate.read; } if (_table.site[(int)site].state != GameCommon.mjPlayerstate.read) { log.log.trace(new System.Diagnostics.StackFrame(), service.timerservice.Tick, "site:{0}", site); is_read = false; break; } site = _table.GetNextSite(site); } if (is_read) { log.log.trace(new System.Diagnostics.StackFrame(), service.timerservice.Tick, "new game"); _table.begin_game(); _table.deal(); } else { _table.broadcast("mj_huanghuang", "read", _proxy.player_info["site"]); } } log.log.trace(new System.Diagnostics.StackFrame(), service.timerservice.Tick, "end read"); }
// client call public void mj_huanghuang_occupat_site(Int64 room_id, Int64 site) { log.log.trace(new System.Diagnostics.StackFrame(), service.timerservice.Tick, "begin mj_huanghuang_occupat_site"); mj_huanghuang_table _table = server.tables.get_mj_huanghuang_table(room_id); if (_table != null) { log.log.trace(new System.Diagnostics.StackFrame(true), service.timerservice.Tick, "occupat_site"); if (!_table.site.ContainsKey(site) && site < (int)GameCommon.mjSite.End) { string client_uuid = hub.hub.gates.current_client_uuid; var _proxy = _table.get_player_proxy(client_uuid); _table.site.Add(site, _proxy); _table.matcher.Remove(_proxy); _proxy.player_info["site"] = site; _proxy.state = GameCommon.mjPlayerstate.read; _table.broadcast("room", "on_mj_huanghuang_occupat_site", _proxy.player_info["unionid"], site); hub.hub.hubs.call_hub("lobby", "lobby", "occupat_site", _table.owner, room_id); } else { string client_uuid = hub.hub.gates.current_client_uuid; hub.hub.gates.call_client(client_uuid, "room", "occupat_site", false); return; } if (_table.site.Count == _table.peopleNum) { //坐满了则将没坐下的踢出去 if (_table != null) { ArrayList _proxys = new ArrayList(); ArrayList _uuids = new ArrayList(); foreach (var item in _table.players_uuid) { _proxys.Add(item.Value); _uuids.Add(item.Key); } for (int i = _table.players_uuid.Count - 1; i >= 0; i--) { if (!_table.site.ContainsValue((playerproxy)_proxys[i])) { _table.exit_table((string)_uuids[i]); } } } hub.hub.hubs.call_hub("lobby", "lobby", "begin_game", _table.owner, room_id); //开始游戏 log.log.trace(new System.Diagnostics.StackFrame(true), service.timerservice.Tick, "1:start game !"); _table.frist_begin_game(); _table.begin_game(); _table.deal(); } } log.log.trace(new System.Diagnostics.StackFrame(), service.timerservice.Tick, "end mj_huanghuang_occupat_site"); }