mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-26 18:26:23 +00:00
简单的PVP
This commit is contained in:
@@ -16,5 +16,6 @@ public interface GActionEnum {
|
||||
int C_MODE_PVP_END = 3005; //PVP结束
|
||||
int C_MODE_PVP_START_WAIT = 3006; //开始等待PVP开始
|
||||
int C_MODE_PVP_END_WAIT = 3007; //结束等待PVP开始
|
||||
int C_MODE_PVP_MESSAGE = 3008; //PVP 消息通知
|
||||
|
||||
}
|
||||
|
@@ -1,6 +1,9 @@
|
||||
package cn.jisol.game.actions.onhook;
|
||||
|
||||
import cn.hutool.json.JSON;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.jisol.game.actions.GActionEnum;
|
||||
import cn.jisol.game.controller.game.GPlayerPetController;
|
||||
import cn.jisol.game.controller.game.GPlayerTacticalController;
|
||||
import cn.jisol.game.entity.game.PlayerTactical;
|
||||
import cn.jisol.game.network.client.GClient;
|
||||
@@ -89,18 +92,51 @@ public class GPVPAction {
|
||||
}
|
||||
|
||||
//获取双方的阵型
|
||||
GPlayerTacticalController tactical = SpringBeanUtils.getBean(GPlayerTacticalController.class);
|
||||
GPlayerTacticalController tacticalController = SpringBeanUtils.getBean(GPlayerTacticalController.class);
|
||||
GPlayerPetController petController = SpringBeanUtils.getBean(GPlayerPetController.class);
|
||||
|
||||
String leftTactical = tacticalController.getInfo(client1.player).data.getTacticalData();
|
||||
String rightTactical = tacticalController.getInfo(client2.player).data.getTacticalData();
|
||||
|
||||
|
||||
//如果有人阵法是默认 则 不开始
|
||||
if (leftTactical.equals(tacticalController.InitTactical) || rightTactical.equals(tacticalController.InitTactical)){
|
||||
if(leftTactical.equals(tacticalController.InitTactical)){
|
||||
client1.invoke(GActionEnum.C_MODE_PVP_END_WAIT);
|
||||
client1.invoke(GActionEnum.C_MODE_PVP_MESSAGE, GPVPMessage.GPVPText.newBuilder().setText("你的阵法没有宠物~").build());
|
||||
}else{
|
||||
//加入回列表
|
||||
pool.addFirst(client1);
|
||||
}
|
||||
if(rightTactical.equals(tacticalController.InitTactical)){
|
||||
client2.invoke(GActionEnum.C_MODE_PVP_END_WAIT);
|
||||
client2.invoke(GActionEnum.C_MODE_PVP_MESSAGE, GPVPMessage.GPVPText.newBuilder().setText("你的阵法没有宠物~").build());
|
||||
}else{
|
||||
//加入回列表
|
||||
pool.addFirst(client2);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//构建匹配信息
|
||||
GPVPMessage.GPVPStart info = GPVPMessage.GPVPStart.newBuilder()
|
||||
.setLeftTactical(tactical.getInfo(client1.player).data.getTacticalData())
|
||||
.setRightTactical(tactical.getInfo(client2.player).data.getTacticalData())
|
||||
.build();
|
||||
GPVPMessage.GPVPStart.Builder builder = GPVPMessage.GPVPStart.newBuilder()
|
||||
.setLeftTactical(leftTactical)
|
||||
.setRightTactical(rightTactical);
|
||||
//构建玩家宠物列表
|
||||
petController.getPetList(client1.player).data.forEach(pet -> {
|
||||
builder.putLeftPets(pet.getPetId(), JSONUtil.toJsonStr(pet));
|
||||
});
|
||||
petController.getPetList(client2.player).data.forEach(pet -> {
|
||||
builder.putLeftPets(pet.getPetId(), JSONUtil.toJsonStr(pet));
|
||||
});
|
||||
|
||||
|
||||
|
||||
//取消等待
|
||||
client1.invoke(GActionEnum.C_MODE_PVP_END_WAIT);
|
||||
client2.invoke(GActionEnum.C_MODE_PVP_END_WAIT);
|
||||
|
||||
GPVPMessage.GPVPStart info = builder.build();
|
||||
//PVP 开始
|
||||
client1.invoke(GActionEnum.C_MODE_PVP_START, info);
|
||||
client2.invoke(GActionEnum.C_MODE_PVP_START, info);
|
||||
|
@@ -29,6 +29,9 @@ public class GPlayerTacticalController {
|
||||
@Autowired
|
||||
PlayerTacticalService playerTacticalService;
|
||||
|
||||
//默认阵法
|
||||
public final String InitTactical = "[0,0,0,0,0,0,0,0,0]";
|
||||
|
||||
//获取玩家阵法
|
||||
@ApiImplicitParams({})
|
||||
@ApiOperation(value = "获取玩家阵法")
|
||||
@@ -49,7 +52,7 @@ public class GPlayerTacticalController {
|
||||
|
||||
//如果没有阵法则默认一个阵法
|
||||
if(Objects.isNull(info.getTacticalData())){
|
||||
info.setTacticalData("[0,0,0,0,0,0,0,0,0]");
|
||||
info.setTacticalData(InitTactical);
|
||||
}
|
||||
|
||||
return NewsContext.onSuccess("获取成功",info);
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,14 @@ option java_package = "cn.jisol.ngame.proto";
|
||||
//PVP 开始
|
||||
message GPVPStart {
|
||||
string leftTactical = 1; //左边的布阵
|
||||
string rightTactical = 2; //右边的布阵
|
||||
map<int64, string> leftPets = 2; //左边的宠物 key:宠物Id value 宠物配置Id
|
||||
string rightTactical = 3; //右边的布阵
|
||||
map<int64, string> rightPets = 4; //右边的宠物 key:宠物Id value 宠物配置Id
|
||||
}
|
||||
|
||||
//PVP 消息提示
|
||||
message GPVPText {
|
||||
string text = 1; //消息提示
|
||||
}
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user