use of com.code.server.constant.response.ResponseVo in project summer by foxsugar.
the class GameUserService method guessCarUp2Agent.
/**
* 猜汽车
* @param msgKey
* @return
*/
public int guessCarUp2Agent(KafkaMsgKey msgKey) {
final int needMoney = 1000;
long userId = msgKey.getUserId();
UserBean userBean = RedisManager.getUserRedisService().getUserBean(userId);
if (userBean.getVip() != 0) {
return ErrorCode.CAN_NOT_BING_REFERRER;
}
// 减钻石
if (userBean.getMoney() < needMoney) {
return ErrorCode.NOT_HAVE_MORE_MONEY;
}
userBean.setVip(Integer.valueOf("" + userId));
RedisManager.getUserRedisService().updateUserBean(userId, userBean);
RedisManager.getUserRedisService().addUserMoney(userId, -needMoney);
ResponseVo vo = new ResponseVo("userService", "guessCarUp2Agent", userId);
sendMsg(msgKey, vo);
return 0;
}
use of com.code.server.constant.response.ResponseVo in project summer by foxsugar.
the class GameUserService method getReplay.
public int getReplay(KafkaMsgKey msgKey, long id) {
Replay r = SpringUtil.getBean(ReplayService.class).getReplay(id);
if (r == null) {
return ErrorCode.REPLAY_NOT_EXIST;
}
Map<String, Object> result = new HashMap<>();
result.put("data", r.getData());
ResponseVo vo = new ResponseVo("userService", "getReplay", r.getData());
sendMsg(msgKey, vo);
return 0;
}
use of com.code.server.constant.response.ResponseVo in project summer by foxsugar.
the class GameUserService method accessCode.
public int accessCode(KafkaMsgKey msgKey, String accessCode) {
if (accessCode == null || "".equals(accessCode)) {
return ErrorCode.NO_ACCESSCODE;
}
String ac = ServerManager.constant.getAccessCode();
if (ac == null || !accessCode.equals(ac)) {
return ErrorCode.NO_ACCESSCODE;
}
UserBean userBean = RedisManager.getUserRedisService().getUserBean(msgKey.getUserId());
userBean.getUserInfo().setInputAccessCode(true);
// RedisManager.getUserRedisService().setUserBean(userBean);
RedisManager.getUserRedisService().updateUserBean(userBean.getId(), userBean);
ResponseVo vo = new ResponseVo("userService", "accessCode", 0);
sendMsg(msgKey, vo);
return 0;
}
use of com.code.server.constant.response.ResponseVo in project summer by foxsugar.
the class GameInfo method chiTing.
public int chiTing(long userId, String one, String two) {
PlayerCardsInfoMj playerCardsInfo = playerCardsInfos.get(userId);
boolean isCanChi = playerCardsInfo.isCanChiThisCard(disCard, one, two);
if (!isCanChi) {
return ErrorCode.CAN_NOT_CHI_TING;
}
if (disCard == null) {
return ErrorCode.CAN_NOT_CHI_TING;
}
// 从等待列表删除
if (waitingforList.size() > 0) {
WaitDetail waitDetail = waitingforList.get(0);
if (waitDetail.myUserId == userId && waitDetail.isChiTing) {
// waitingforList.remove(waitDetail);
waitingforList.clear();
} else {
return ErrorCode.NOT_TURN;
}
}
OperateReqResp operateReqResp = new OperateReqResp();
operateReqResp.setOperateType(OperateReqResp.type_chi_ting);
operateReqResp.setUserId(userId);
ResponseVo vo = new ResponseVo(ResponseType.SERVICE_TYPE_GAMELOGIC, ResponseType.METHOD_TYPE_OTHER_OPERATE, operateReqResp);
// 通知其他玩家听
MsgSender.sendMsg2Player(vo, users);
// 回放
replay.getOperate().add(operateReqResp);
// 吃
playerCardsInfo.chi(disCard, one, two);
// 吃完只能听
turnId = userId;
// 通知客户端 操作
OperateResp operateResp = new OperateResp();
operateResp.setIsCanTing(true);
operateResp.setIsCanGang(false);
ResponseVo operateVo = new ResponseVo(ResponseType.SERVICE_TYPE_GAMELOGIC, ResponseType.METHOD_TYPE_OPERATE, operateResp);
MsgSender.sendMsg2Player(operateVo, userId);
this.disCard = null;
// 自己将能做的处理
playerCardsInfo.canBeChi = false;
playerCardsInfo.canBeTing = true;
playerCardsInfo.canBeGang = false;
return 0;
}
use of com.code.server.constant.response.ResponseVo in project summer by foxsugar.
the class GameInfo method chupai.
/**
* 出牌
*
* @param userId
* @param card
*/
public int chupai(long userId, String card) {
// 出牌的玩家
PlayerCardsInfoMj chupaiPlayerCardsInfo = playerCardsInfos.get(userId);
if (this.turnId != userId) {
return ErrorCode.CAN_NOT_PLAYCARD;
}
if (!chupaiPlayerCardsInfo.checkPlayCard(card)) {
return ErrorCode.CAN_NOT_PLAYCARD;
}
// 上个出牌的人
this.lastPlayUserId = userId;
// 上个操作的人
lastOperateUserId = userId;
// 出的牌
this.disCard = card;
chupaiPlayerCardsInfo.chupai(card);
// 通知其他玩家出牌信息
PlayCardResp playCardResp = new PlayCardResp();
playCardResp.setUserId(userId);
playCardResp.setCard(this.disCard);
ResponseVo vo = new ResponseVo(ResponseType.SERVICE_TYPE_GAMELOGIC, ResponseType.METHOD_TYPE_PLAY_CARD, playCardResp);
MsgSender.sendMsg2Player(vo, users);
// 回放 出牌
OperateReqResp operateReqResp = new OperateReqResp();
operateReqResp.setCard(card);
operateReqResp.setUserId(userId);
operateReqResp.setOperateType(OperateReqResp.type_play);
replay.getOperate().add(operateReqResp);
// 其他人能做的操作
for (Map.Entry<Long, PlayerCardsInfoMj> entry : playerCardsInfos.entrySet()) {
OperateResp operateResp = new OperateResp();
// 其他玩家的处理 碰杠等 如果有加入等待列表(要等待这些玩家"过")
if (userId != entry.getKey()) {
// 通知其他玩家出了什么牌 自己能有什么操作
PlayerCardsInfoMj playerCardsInfo = entry.getValue();
boolean isCanGang = playerCardsInfo.isCanGangAddThisCard(card);
boolean isCanPeng = playerCardsInfo.isCanPengAddThisCard(card);
boolean isCanHu;
if (isHasGuoHu() && playerCardsInfo.isGuoHu()) {
isCanHu = false;
} else {
isCanHu = playerCardsInfo.isCanHu_dianpao(card);
}
boolean isCanChi = playerCardsInfo.isHasChi(card);
boolean isCanChiTing = playerCardsInfo.isCanChiTing(card);
boolean isCanPengTing = playerCardsInfo.isCanPengTing(card);
// 设置返回结果
operateResp.setCanBeOperate(isCanChi, isCanPeng, isCanGang, false, isCanHu, isCanChiTing, isCanPengTing);
// 设置自己能做的操作
playerCardsInfo.setCanBeOperate(isCanChi, isCanPeng, isCanGang, false, isCanHu, isCanChiTing, isCanPengTing);
boolean isWait = isCanGang || isCanPeng || isCanHu || isCanChi || isCanChiTing || isCanPengTing;
if (isWait) {
this.waitingforList.add(new WaitDetail(entry.getKey(), isCanHu, isCanGang, isCanPeng, isCanChi, isCanChiTing, isCanPengTing));
}
}
// 可能的操作
ResponseVo OperateVo = new ResponseVo(ResponseType.SERVICE_TYPE_GAMELOGIC, ResponseType.METHOD_TYPE_OPERATE, operateResp);
MsgSender.sendMsg2Player(OperateVo, entry.getKey());
}
resetCanBeOperate(chupaiPlayerCardsInfo);
// 如果等待列表为空 就轮到下个人摸牌
if (this.waitingforList.size() == 0) {
long nextId = nextTurnId(turnId);
mopai(nextId, "userId : " + userId + " 出牌");
} else {
// todo 一炮多响
if (this.room.isYipaoduoxiang && waitingforList.stream().filter(waitDetail -> waitDetail.isHu).count() >= 2) {
handleYiPaoDuoXiang();
} else {
// 比较
compare(waitingforList);
}
}
return 0;
}
Aggregations