This commit is contained in:
DESKTOP-5RP3AKU\Jisol
2023-11-23 02:39:12 +08:00
parent e3781116dc
commit e99fc3929c
9 changed files with 35 additions and 10 deletions

View File

@@ -20,6 +20,7 @@ public interface GActionEnum {
/*************** 裁决 *********************/
int CR_REFEREE_READY = 4000; //裁决就绪
int CR_REFEREE_PVP_MODE = 4001; //裁决PVP模式
int CR_REFEREE_PVP_END = 4002; //裁决PVP结束

View File

@@ -0,0 +1,8 @@
package cn.jisol.game.actions;
public interface GActionEvent {
//裁决员空闲
static final String REFEREE_FREE = "GActionEvent_REFEREE_FREE";
}

View File

@@ -6,6 +6,7 @@ import cn.jisol.game.network.client.GRefereeClient;
import cn.jisol.game.proto.GPVPMessage;
import cn.jisol.ngame.actions.core.NAction;
import cn.jisol.ngame.actions.core.NActionMethod;
import cn.jisol.ngame.util.EventDispatcher;
import cn.jisol.ngame.util.JLoggerUtil;
import org.slf4j.LoggerFactory;
@@ -35,8 +36,8 @@ public class GRefereeAction {
public static GRefereeClient getFreeReferee(){
for (String key : REFEREES.keySet()) {
if (!(REFEREES.get(key).isReferee)) {
REFEREES.get(key).isReferee = true;
if (REFEREES.get(key).isReady) {
REFEREES.get(key).isReady = false;
return REFEREES.get(key);
}
}
@@ -49,8 +50,10 @@ public class GRefereeAction {
}
//放回一个空闲裁决员
@NActionMethod(GActionEnum.CR_REFEREE_READY)
public static void addFreeReferee(GRefereeClient referee){
referee.isReferee = false;
referee.isReady = true;
EventDispatcher.getInstance().dispatchEvent(GActionEvent.REFEREE_FREE);
}
//自动回收裁决

View File

@@ -3,6 +3,7 @@ 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.actions.GActionEvent;
import cn.jisol.game.actions.GRefereeAction;
import cn.jisol.game.controller.game.GPlayerPetController;
import cn.jisol.game.controller.game.GPlayerTacticalController;
@@ -13,6 +14,7 @@ import cn.jisol.game.proto.GPVPMessage;
import cn.jisol.game.service.PlayerTacticalService;
import cn.jisol.ngame.actions.core.NAction;
import cn.jisol.ngame.actions.core.NActionMethod;
import cn.jisol.ngame.util.EventDispatcher;
import cn.jisol.ngame.util.spring.SpringBeanUtils;
import java.util.*;
@@ -37,6 +39,10 @@ public class GPVPAction {
}
},0,1000);
EventDispatcher.getInstance().addListener(GActionEvent.REFEREE_FREE,(EventDispatcher.Event event) -> {
onUpdateMatchGame(); //刷新匹配
});
}
//加入PVP
@@ -175,7 +181,7 @@ public class GPVPAction {
System.out.println("获胜的玩家是:"+info.getWinnerId());
//裁决结束 等待下次裁决
referee.isReferee = false;
GRefereeAction.addFreeReferee(referee);
}

View File

@@ -7,8 +7,8 @@ import javax.websocket.Session;
//裁决员客户端
public class GRefereeClient extends GClient {
//是否正在裁决
public boolean isReferee = false;
//是否就绪
public boolean isReady = false;
public GRefereeClient(String token, Session session) {
super(token, session);