PC-20230316NUNE\Administrator 252e9ef11d 保存
2024-01-03 15:51:16 +08:00

85 lines
2.7 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 匹配页面
if(GBattleModeManager.getIns().current != BattleMode.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)
}
}
}