mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 03:14:47 +00:00
84 lines
2.6 KiB
TypeScript
84 lines
2.6 KiB
TypeScript
import { app } from "../App";
|
|
import { Env, EnvCurrent } from "../Env";
|
|
import GBattleModeManager, { BattleMode, GBattleModeEvent } from "../battle/GBattleModeManager";
|
|
import { GAction } from "../consts/GAction";
|
|
import { GActionType } from "../consts/GActionType";
|
|
import { GUI } from "../ui/UIConfig";
|
|
import BaseAction from "./BaseAction";
|
|
|
|
export interface GPVPStart{
|
|
leftTactical:string; //左边玩家的阵法
|
|
leftPets:{[key:number]:string}; //左边玩家的宠物
|
|
rightTactical:string; //右边玩家的阵法
|
|
rightPets:{[key:number]:string}; //左边玩家的宠物
|
|
leftPlayerId:number; //左边的玩家Id
|
|
rightPlayerId:number; //右边的玩家Id
|
|
}
|
|
|
|
|
|
export interface GPVPText{
|
|
text:string
|
|
}
|
|
|
|
export default class PVPAction extends BaseAction {
|
|
|
|
onInit(){
|
|
|
|
app.socket.on(GAction.C_MODE_PVP_START_WAIT,this.onModePVPStartWait,this);
|
|
app.socket.on(GAction.C_MODE_PVP_END_WAIT,this.onModePVPEndWait,this);
|
|
app.socket.on(GAction.C_MODE_PVP_START,this.onModePVPStart,this,GActionType.GPVPStart);
|
|
app.socket.on(GAction.C_MODE_PVP_MESSAGE,this.onModePVPMessage,this,GActionType.GPVPText);
|
|
|
|
if(EnvCurrent == Env.Server){
|
|
app.socket.on(GAction.CR_REFEREE_PVP_MODE,this.onCrReferee,this,GActionType.GPVPStart); //监听PVP裁决
|
|
app.event.on(GBattleModeEvent.Close,this.onBattleRefereeClose,this); //模式结束运行
|
|
}
|
|
|
|
}
|
|
|
|
//PVP开始等待
|
|
onModePVPStartWait(){
|
|
//PVP 匹配页面
|
|
app.layer.Open(GUI.PVPModeMatchView);
|
|
}
|
|
|
|
//PVP结束等待
|
|
onModePVPEndWait(){
|
|
//PVP 匹配页面
|
|
app.layer.Close(GUI.PVPModeMatchView);
|
|
}
|
|
|
|
//开始PVP
|
|
onModePVPStart(info:GPVPStart){
|
|
console.log("开始PVP",info);
|
|
app.layer.Close(GUI.PVPModeMatchView);
|
|
GBattleModeManager.getIns().Open(BattleMode.PVP,true,info);
|
|
}
|
|
|
|
//裁决运行
|
|
onCrReferee(info:GPVPStart){
|
|
console.log("开始PVP裁决",info);
|
|
GBattleModeManager.getIns().Open(BattleMode.PVP,false,info);
|
|
GBattleModeManager.getIns().setAuto(true,true);
|
|
}
|
|
|
|
//提示
|
|
onModePVPMessage(info:GPVPText){
|
|
console.log("提示PVP",info);
|
|
app.layer.Open(GUI.Tips,{text:info.text})
|
|
}
|
|
|
|
//裁决结束返回
|
|
onBattleRefereeClose(type:BattleMode,data?:number){
|
|
if(type == BattleMode.PVP){
|
|
console.log("裁决结束胜利玩家",data)
|
|
app.socket.Send(GAction.CR_REFEREE_PVP_END,{
|
|
winnerId:data
|
|
},GActionType.GPVPRefereeInfo)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|