public static function doApi($data) { // 获取客户端请求 if (!$data || !isset($re['type'])) { \Utils\RedisUtil::set('msg', 'error'); $v = \Utils\RedisUtil::get('msg'); return array('s' => Constants::RESPONSE_ERROR, 'v' => $v); } $re = array(); $re['type'] = $data['type']; if ($data['type'] == 'login') { // Login::doApi($data,$re); } else { $uid = $data['uid']; $player = PlayerDao::getPlayer($uid); // RedisUtil::lock($uid); if (!$data['uid'] || !$player) { $re['s'] = Constants::RESPONSE_NO_PLAYER; // RedisUtil::unlock($uid); return $re; } $re['s'] = Constants::RESPONSE_SUCCESS; switch ($data['type']) { case 'test': // Progress::doApi($player,$data,$re); break; default: $re['s'] = Constants::RESPONSE_FAIL; break; } } return $re; // RedisUtil::unlock($uid); }
public static function doApi($player, $data, &$re) { $uid = $player->uid; if ($player->tableId > 0) { $table = TableDao::getTable($player->tableId); if ($table && $table->tableStatus == Constants::TABLE_IN_GAME) { if (time() - $table->recordTime >= Constants::PLAY_TIME + 2) { $re['s'] = Constants::RESPONSE_FAIL; return 0; } if ($uid == $table->currOpUid) { $table->recordTime = time(); TableDao::addTable($table->tableId, $table); $playCardNos = $data['playCardNos']; $table->nextPlay($playCardNos, $data['op']); return 1; //协议已发送 } } else { $player->tableId = 0; PlayerDao::addPlayer($player->uid, $player); } } $re['s'] = Constants::RESPONSE_FAIL; return 0; }
public static function doApi($player, $data, &$re) { $uid = $player->uid; if ($player->tableId > 0) { $table = TableDao::getTable($player->tableId); if ($table && $table->tableStatus == Constants::TABLE_LANDLORD) { // echo "=======time:".(time()-$table->recordTime)." bool:".((time()-$table->recordTime) >= (Constants::LANDLORD_TIME + 1)).' =========='; if (time() - $table->recordTime >= Constants::LANDLORD_TIME + 1) { $re['s'] = Constants::RESPONSE_FAIL; return 0; } if ($uid == $table->currOpUid) { $table->recordTime = time(); TableDao::addTable($table->tableId, $table); $op = $data['op']; if ($op == 0 || $op > $table->multiple || $op == $table->multiple && $op == 1) { $status = $table->nextLandlord($uid, $op); if ($status == -3) { $re['s'] = Constants::RESPONSE_FAIL; return 0; } $table->recordTime = time(); TableDao::addTable($table->tableId, $table); $tableInfo = array(); if (is_array($status)) { $tableInfo = $status['tableInfo']; $status = $status['st']; } switch ($status) { case Constants::LANDLORD_ENSURE: $re = self::sendInfo($table, $re, $uid); break; case Constants::LANDLORD_RESET_TABLE: $re['s'] = Constants::RESPONSE_RE_TABLE; $re['tableInfo'] = $tableInfo; break; case Constants::LANDLORD_NEXT_CHOOSE: $re = self::sendNextInfo($table, $re, $uid); break; case Constants::LANDLORD_RE_JOIN: $re['s'] = Constants::RESPONSE_RE_JOIN; break; } return 0; } } } else { $player->tableId = 0; PlayerDao::addPlayer($player->uid, $player); } } $re['s'] = Constants::RESPONSE_FAIL; return 0; }
public static function getPlayerInfos($uids, $selfPlayer) { $playerInfos = array(); foreach ($uids as $uid) { if ($selfPlayer->uid == $uid) { $playerInfos[$uid] = $selfPlayer->getPlayerInfo(); continue; } $player = PlayerDao::getPlayer($uid); $playerInfos[$uid] = $player->getPlayerInfo(); } return $playerInfos; }
public static function doApi($client_id, $message) { // 获取客户端请求 $data = json_decode($message, true); if (!$data) { return; } $re = array(); $re['type'] = $data['type']; $st = 0; if ($data['type'] == 'login') { Login::doApi($data, $re); isset($re['uid']) && Gateway::bindUid($client_id, $re['uid']); } else { $uid = $data['uid']; $player = PlayerDao::getPlayer($uid); // RedisUtil::lock($uid); if (!$data['uid'] || !$player) { $re['s'] = Constants::RESPONSE_NO_PLAYER; Gateway::sendToClient($client_id, json_encode($re)); // RedisUtil::unlock($uid); return; } $re['s'] = Constants::RESPONSE_SUCCESS; switch ($data['type']) { case 'test': $st = Progress::doApi($player, $data, $re, $client_id); break; case 'jt': JoinTable::doApi($player, $data, $re); break; case 'll': Landlord::doApi($player, $data, $re); break; case 'play': $st = Play::doApi($player, $data, $re); break; case 'chgSt': ChgPlaySt::doApi($player, $data, $re); break; default: $re['s'] = Constants::RESPONSE_FAIL; break; } } if ($st != 1) { Gateway::sendToClient($client_id, json_encode($re)); } // RedisUtil::unlock($uid); }
/** * 玩家账号注册,确定牌局 * @param $data * @param $re * @return int */ public static function doApi($data, &$re) { if (!isset($data['uid'])) { $re['s'] = Constants::RESPONSE_FAIL; return 0; } $uid = $data['uid']; $re['uid'] = $uid; $player = PlayerDao::getPlayer($uid); if (!$player) { $ip = $_SERVER['REMOTE_ADDR']; $player = new Player($data, $ip); PlayerDao::addPlayer($player->uid, $player); } else { $player->lastLoginIp = $player->loginIp; $player->loginIp = $_SERVER['REMOTE_ADDR']; $player->loginTime = time(); $player->tableId = $data['tid']; PlayerDao::addPlayer($player->uid, $player); } $table = TableDao::getTable($player->tableId); $nowTime = time(); if ($table && isset($table->playerStatus[$uid]) && $nowTime - $table->recordTime <= 60 && $table->tableStatus != Constants::TABLE_INIT && $table->tableStatus != Constants::TABLE_END && $table->playerStatus[$uid] != Constants::PLAYER_LEAVE) { GameDao::addInGamePlayer($uid); $re['s'] = Constants::RESPONSE_RECONN_SUCCESS; $tableInfo = $table->getTableInfo($player); if ($tableInfo) { $re['tableInfo'] = $tableInfo; Gateway::sendToUid($uid, json_encode($re)); return 1; } } if (!$table || $nowTime - $table->initTime >= 120) { $table = new Table($data['tid'], $data['uids']); TableDao::addTable($table->tableId, $table); } if ($table && in_array($uid, $table->uids)) { $re['s'] = Constants::RESPONSE_SUCCESS; } else { $re['s'] = Constants::RESPONSE_FAIL; } }
/** * 废弃桌子 */ public function rmTable() { if ($this->blinkTimeOut) { Timer::del($this->blinkTimeOut); } $this->blinkTimeOut = 0; foreach ($this->uids as $uid) { $player = PlayerDao::getPlayer($uid); if ($player && $player->tableId == $this->tableId) { PlayerDao::rmPlayer($uid); } } TableDao::rmTable($this->tableId); }