简单的PVP

This commit is contained in:
DESKTOP-5RP3AKU\Jisol
2023-11-21 01:57:40 +08:00
parent 1aa5900294
commit 074cfbd5bd
18 changed files with 3218 additions and 158 deletions

View File

@@ -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 消息通知
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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; //消息提示
}