This commit is contained in:
PC-20230316NUNE\Administrator
2024-01-03 15:51:16 +08:00
parent f29aa38a60
commit 252e9ef11d
17 changed files with 470 additions and 165 deletions

View File

@@ -28,14 +28,14 @@ import AppAction from "./AppAction";
import { Asset } from "cc";
import { Component } from "cc";
let APIPath = `http://localhost:8080`
let WsPath = `ws://localhost:8080/websocket`
// let APIPath = `http://localhost:8080`
// let WsPath = `ws://localhost:8080/websocket`
// let APIPath = `http://192.168.1.23:8080`
// let WsPath = `ws://192.168.1.23:8080/websocket`
// let APIPath = `http://192.168.0.116:8080`
// let WsPath = `ws://192.168.0.116:8080/websocket`
// let APIPath = `https://api.pet.jisol.cn`
// let WsPath = `wss://api.pet.jisol.cn/websocket`
// let APIPath = `http://192.168.0.115:8080`
// let WsPath = `ws://192.168.0.115:8080/websocket`
let APIPath = `https://api.pet.jisol.cn`
let WsPath = `wss://api.pet.jisol.cn/websocket`
//重写UI
class JNGLayer extends JNLayer{

View File

@@ -39,7 +39,8 @@ export default class PVPAction extends BaseAction {
//PVP开始等待
onModePVPStartWait(){
//PVP 匹配页面
app.layer.Open(GUI.PVPModeMatchView);
if(GBattleModeManager.getIns().current != BattleMode.PVP)
app.layer.Open(GUI.PVPModeMatchView);
}
//PVP结束等待

View File

@@ -97,6 +97,9 @@ export default class GOnHookMode extends GDefaultMode<{},{}>{
//是否允许攻击
isAllowAttack:boolean = false;
//是否战斗失败
isFail:boolean = false;
//添加监听事件
addEvent(){
app.event.on(PlayerTacticalEvent.UPDATE_TACTICAL,this.onUpdatePlayerPet,this);
@@ -352,7 +355,11 @@ export default class GOnHookMode extends GDefaultMode<{},{}>{
}
//生成敌人
onResetGenerateEnemy(){
onResetFight(){
//初始化战斗失败
this.isFail = false;
this.enemyRoles = [];
let sign = TD.TbGOnHookMaps.get(GOnHookData.getIns().info.onHookMap).sign;
let table:{data:TbGEntity.TOnHookLevel} = TD[sign].get(GOnHookData.getIns().info.levelId);
@@ -376,13 +383,26 @@ export default class GOnHookMode extends GDefaultMode<{},{}>{
role.node.destroy()
},3000)
//清理
this.onClearCache();
//如果死亡的是野怪则通知野怪死亡
if(role.getComponent(GRoleOnHookCreepsExpand)){
GOnHookManager.getIns().onKillSreeps(role.getComponent(GRoleOnHookCreepsExpand).creeps);
//如果野怪都死了 并且 战斗成功 则向服务器发送战斗成功
if(this.enemyRoles.length <= 0 && !this.isFail){
GOnHookManager.getIns().onWinLevel();
}
}
//清理
this.onClearCache();
//如果死亡的是玩家宠物 并且 场上没有玩家宠物则重新战斗
if(role.getComponent(GRoleOnHookPlayerExpand)){
if(this.playerRoles.length <= 0){
//玩家战斗失败
this.isFail = true;
this.onUpdatePlayerPet();
}
}
}

View File

@@ -78,7 +78,7 @@ export default class GFSMOnHookMode extends GFSMBase{
//生成敌人
onGenEnemyProcess(){
this.mode.onResetGenerateEnemy();
this.mode.onResetFight();
return ProcessEnum.LeaveFight; //前往战斗
}

View File

@@ -3,11 +3,16 @@ import { app } from "../App";
import { PlayerPetOV, RData, RProto } from "./API";
import { GActionType } from "./GActionType";
export interface ModeHookInfo{
maps:{[key:number]:number}; //地图关卡信息 {地图Id: 地图关卡Id}
mapStates:{[key:number]:number}; //地图关卡状态 {地图Id: 状态(0:战斗中, 1:胜利)}
}
export interface ModeOnHookOV{
playerId:number; //玩家Id
onHookMap:number; //当前玩家所在的地图(配置表Id)
levelId:number; //当前关卡Id
hookInfo:ModeHookInfo; //关卡信息
}
@@ -25,6 +30,8 @@ export const GAPI = {
//出售野怪
GOnHookSellCreeps : async (creepId) => RData(await app.api.post(`/game/mode/onHook/onSellCreeps/${creepId}`),true) as boolean,
//下一关
GOnHookNextLevel : async () => RData(await app.api.post(`/game/mode/onHook/nextLevel`)) as boolean,
GOnHookNextLevel : async () => RData(await app.api.post(`/game/mode/onHook/nextLevel`),true) as ModeOnHookOV,
//战胜当前关卡
GOnHookWinLevel : async () => RData(await app.api.post(`/game/mode/onHook/winLevel`),true) as ModeOnHookOV,
}

View File

@@ -4,19 +4,30 @@ import { GAPI, ModeOnHookOV } from "../consts/GAPI";
import { GUI } from "../ui/UIConfig";
import BaseData from "./BaseData";
export enum GOnHookDataEnum{
UPDATE = "GOnHookDataEnum_UPDATE" //刷新信息
}
//无限模式数据类
export default class GOnHookData extends BaseData{
info:ModeOnHookOV;
//是否允许下一关
get isNextLevel(){
if(!this.info) return false;
return this.info.hookInfo.mapStates[this.info.onHookMap] == 1;
}
async onInit() {
await this.onUpdateInfo();
console.log("GOnHookData Info",this.info);
}
//刷新数据
async onUpdateInfo(){
this.info = await GAPI.GOnHookInfo();
async onUpdateInfo(info?){
this.info = info || await GAPI.GOnHookInfo();
app.event.emit(GOnHookDataEnum.UPDATE);
}
//切换地图
@@ -29,8 +40,14 @@ export default class GOnHookData extends BaseData{
//下一关
async onNextLevel(){
await GAPI.GOnHookNextLevel();
await this.onUpdateInfo();
let info = await GAPI.GOnHookNextLevel();
if(info) this.onUpdateInfo(info);
return !!info;
}
//战胜当前关卡
async onWinLevel(){
this.onUpdateInfo(await GAPI.GOnHookWinLevel());
}
}

View File

@@ -108,19 +108,16 @@ export default class GOnHookManager extends Singleton{
}
}).bind(this))
//生成野怪
onSpawnSreeps(){
onSpawnSreeps = NGameUtil.ThrottleASync((async () => {
GAPI.GOnHookSpawnCreeps().then(data => {
data.pets.forEach(pet => {
this._sreeps.set(pet.key,pet as GOnHookPet);
})
});
}
}).bind(this))
//获取下一只野怪
getNextCreeps(){
@@ -204,11 +201,15 @@ export default class GOnHookManager extends Singleton{
//下一关
async onNextLevel(){
GOnHookData.getIns().onNextLevel();
app.layer.Open(GUI.Tips,{text:"下一关"});
await GOnHookData.getIns().onNextLevel();
this.onResetMap();
}
//战胜当前关卡
async onWinLevel(){
await GOnHookData.getIns().onWinLevel();
}
//切换场景
async setMap(mapId:number){

View File

@@ -8,6 +8,9 @@ import { app } from '../../App';
import { GAction } from '../../consts/GAction';
import { GAPI } from '../../consts/GAPI';
import GOnHookManager, { GOnHookManagerEvent } from '../../manager/battle/mode/GOnHookManager';
import { Button } from 'cc';
import GOnHookData, { GOnHookDataEnum } from '../../data/GOnHookData';
import { Sprite } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('MainView')
@@ -18,6 +21,9 @@ export class MainView extends JNGLayerBase {
@property(Label)
onHookLabel:Label; //挂机文本
@property(Button)
nextLevelBtn:Button; //下一关按钮
onJNLoad(data?: any): void {
@@ -32,6 +38,7 @@ export class MainView extends JNGLayerBase {
//监听
app.event.on(GOnHookManagerEvent.UPDATE_ON_HOOK_STATE,this.onUpdateOnHook,this);
app.event.on(GOnHookDataEnum.UPDATE,this.onUpdateOnHookInfo,this);
}
@@ -39,16 +46,23 @@ export class MainView extends JNGLayerBase {
onJNClose(): void {
super.onJNClose();
//取消监听
app.event.on(GOnHookManagerEvent.UPDATE_ON_HOOK_STATE,this.onUpdateOnHook,this);
app.event.off(GOnHookManagerEvent.UPDATE_ON_HOOK_STATE,this.onUpdateOnHook,this);
app.event.off(GOnHookDataEnum.UPDATE,this.onUpdateOnHookInfo,this);
}
onUpdateOnHook(){
this.onHookLabel.string = (GOnHookManager.getIns().isOnHook) ? "挂机中" : "挂机";
}
onUpdateOnHookInfo(){
this.nextLevelBtn.node.active = GOnHookData.getIns().isNextLevel;
}
//更新UI界面
onUpdateView(){
this.playerNameLabel.string = `${PlayerData.getIns().getInfo().playerId}`;
this.onUpdateOnHookInfo();
this.onUpdateOnHook();
}
//打开Demo页面