From 1e76e420b1ecd63e065b52f42a90799266b477e4 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5RP3AKU\\Jisol" <2858626794@qq.com> Date: Tue, 5 Dec 2023 01:43:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPVP=20=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E9=87=8D=E7=BD=AE=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Datas/战斗/模式/无尽模式/OnHook地图.xlsx | Bin 10300 -> 10302 bytes .../resources/config/json/tbgonhookmaps.json | 1 - .../script/battle/GBattleModeManager.ts | 6 ++++ .../script/battle/base/role/GRoleBase.ts | 13 ++++++-- .../assets/script/battle/modes/GOnHookMode.ts | 6 ++-- .../assets/script/battle/modes/GPVPMode.ts | 31 +++++++++++------- .../manager/battle/mode/GOnHookManager.ts | 16 ++++++++- .../script/ui/Home/Sreeps/MainSreepsList.ts | 9 ++++- JisolGameCocos/proto/GPVPMessage.proto | 4 +-- .../game/mode/GOnHookController.java | 14 ++++---- .../cn/jisol/game/proto/GPVPMessage.proto | 8 ++--- .../main/resources/json/tbgonhookmaps.json | 1 - 12 files changed, 74 insertions(+), 35 deletions(-) diff --git a/DataTables/Datas/战斗/模式/无尽模式/OnHook地图.xlsx b/DataTables/Datas/战斗/模式/无尽模式/OnHook地图.xlsx index 06922d4096f5798b09719165c4213535df79a940..e5ec9662a7e5098f5458b37d901b2d423f482b40 100644 GIT binary patch delta 2613 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 JA0z+(0003t#qR(B diff --git a/JisolGameCocos/assets/resources/config/json/tbgonhookmaps.json b/JisolGameCocos/assets/resources/config/json/tbgonhookmaps.json index 953dd292..ebcd8ef4 100644 --- a/JisolGameCocos/assets/resources/config/json/tbgonhookmaps.json +++ b/JisolGameCocos/assets/resources/config/json/tbgonhookmaps.json @@ -18,7 +18,6 @@ "mapImage": "ui/map/魔法镇_图片/spriteFrame", "mapId": 60002, "petIds": [ - 10003, 10004 ], "sign": "", diff --git a/JisolGameCocos/assets/script/battle/GBattleModeManager.ts b/JisolGameCocos/assets/script/battle/GBattleModeManager.ts index 2dd89c9d..8b8a54c6 100644 --- a/JisolGameCocos/assets/script/battle/GBattleModeManager.ts +++ b/JisolGameCocos/assets/script/battle/GBattleModeManager.ts @@ -98,6 +98,12 @@ export default class GBattleModeManager extends Singleton { } + //重置当前模式 + Reset(){ + app.sync.onReset(); + app.sync.onStart(); + } + //关闭当前模式 async Close(data?:any){ diff --git a/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts b/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts index ed00d31e..5ed53f4b 100644 --- a/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts +++ b/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts @@ -64,7 +64,14 @@ export default abstract class GRoleBase extends GObject{ addAttackCallback(fun:Function){this.attackCallbacks.push(fun)}; //角色数值类 - values:GRoleValues; + _values:GRoleValues; + get values(){ + if(!this._values) this._values = new GRoleValues(); + return this._values; + } + set values(value){ + this._values = value; + } get():this{ if(this.isDie) return null; @@ -85,8 +92,8 @@ export default abstract class GRoleBase extends GObject{ //创建角色动画状态机 this.fsmAnim = this.fsmAnimCreate(); - //创建数值类 - this.values = new GRoleValues(); + // //创建数值类 + // this.values = new GRoleValues(); } diff --git a/JisolGameCocos/assets/script/battle/modes/GOnHookMode.ts b/JisolGameCocos/assets/script/battle/modes/GOnHookMode.ts index 43d17a9d..d1599a7f 100644 --- a/JisolGameCocos/assets/script/battle/modes/GOnHookMode.ts +++ b/JisolGameCocos/assets/script/battle/modes/GOnHookMode.ts @@ -100,13 +100,13 @@ export default class GOnHookMode extends GDefaultMode<{},{}>{ //添加监听事件 addEvent(){ app.event.on(PlayerTacticalEvent.UPDATE_TACTICAL,this.onUpdatePlayerPet,this); - app.event.on(GOnHookManagerEvent.UPDATE_MAP,this.onUpdateWorld,this); + // app.event.on(GOnHookManagerEvent.UPDATE_MAP,this.onUpdateWorld,this); } //移除监听事件 onDestroy(){ super.onDestroy(); app.event.off(PlayerTacticalEvent.UPDATE_TACTICAL,this.onUpdatePlayerPet,this); - app.event.off(GOnHookManagerEvent.UPDATE_MAP,this.onUpdateWorld,this); + // app.event.off(GOnHookManagerEvent.UPDATE_MAP,this.onUpdateWorld,this); } onSyncInitSuccess():void{ @@ -151,7 +151,7 @@ export default class GOnHookMode extends GDefaultMode<{},{}>{ //更新地图 onUpdateWorld(){ let info = TD.TbGOnHookMaps.get(GOnHookData.getIns().info.onHookMap); - this.setWorldMap(info.mapId) + this.setWorldMap(info.mapId); } //更新页面 diff --git a/JisolGameCocos/assets/script/battle/modes/GPVPMode.ts b/JisolGameCocos/assets/script/battle/modes/GPVPMode.ts index 65d38147..9a935571 100644 --- a/JisolGameCocos/assets/script/battle/modes/GPVPMode.ts +++ b/JisolGameCocos/assets/script/battle/modes/GPVPMode.ts @@ -14,6 +14,7 @@ import { app, TD } from "../../App"; import { ModeRenderEvent } from "../../ui/Consts/Game/ModeRender"; import { GPVPStart } from "../../action/PVPAction"; import { PlayerPetOV } from "../../consts/API"; +import GPetAttribute from "../base/values/attribute/role/GPetAttribute"; const { ccclass, property } = _decorator; //PVP 角色 @@ -27,7 +28,7 @@ export interface GPVPModePlayerInfo{ //阵法 tactical: GTactical; //宠物列表 - roles: TB.TbGRole[]; + roles: PlayerPetOV[]; } /** @@ -72,26 +73,29 @@ export default class GPVPMode extends GBaseMode<{},GPVPStart>{ let rightTactical:number[] = JSON.parse(this.data.rightTactical); //宠物列表 - let leftTbs:TB.TbGRole[] = JSON.parse(this.data.leftTactical); - let rightTbs:TB.TbGRole[] = JSON.parse(this.data.rightTactical); + let leftTbs:PlayerPetOV[] = []; + let rightTbs:PlayerPetOV[] = []; - //玩家宠物信息 + //整理宠物信息 for (let index = 0; index < leftTactical.length; index++) { const petId = leftTactical[index]; + leftTbs[index] = null; + if(petId != 0){ let pet:PlayerPetOV = JSON.parse(this.data.leftPets[petId]); - leftTbs[index] = TD.TbGRole.get(pet.petTbId); - }else{ - leftTbs[index] = null; + if(pet && pet.petId) + leftTbs[index] = pet; } } + for (let index = 0; index < rightTactical.length; index++) { const petId = rightTactical[index]; + rightTbs[index] = null; + if(petId != 0){ let pet:PlayerPetOV = JSON.parse(this.data.leftPets[petId]); - rightTbs[index] = TD.TbGRole.get(pet.petTbId); - }else{ - rightTbs[index] = null; + if(pet && pet.petId) + rightTbs[index] = pet; } } @@ -119,7 +123,7 @@ export default class GPVPMode extends GBaseMode<{},GPVPStart>{ } //生成角色 - onGenRole(type: GPVPModePlayerEnum,index:number,info:TB.TbGRole) { + onGenRole(type: GPVPModePlayerEnum,index:number,info:PlayerPetOV) { let tactical = this.getInfo(type).tactical; let pos:Vec2 = this.getInfo(type).tactical.getPosition(index); @@ -127,7 +131,7 @@ export default class GPVPMode extends GBaseMode<{},GPVPStart>{ let role = instantiate(this.rolePrefab); let entity = role.getComponent(GRoleDefault); //初始化 - entity.onInit(type,info,tactical,index); + entity.onInit(type,TD.TbGRole.get(info.petTbId),tactical,index); //绑定寻敌 entity.onQueryEunmy = () => { @@ -139,6 +143,9 @@ export default class GPVPMode extends GBaseMode<{},GPVPStart>{ //绑定死亡回调 entity.addKillBackEvent(this.onRoleKillBack.bind(this)) + //添加宠物属性 + entity.onEffectiveValue(new GPetAttribute(info)); + this.addGObject(entity,tactical.getPosition(index)); this.getOnesRole(type).push(entity); diff --git a/JisolGameCocos/assets/script/manager/battle/mode/GOnHookManager.ts b/JisolGameCocos/assets/script/manager/battle/mode/GOnHookManager.ts index 77babbff..65ac652f 100644 --- a/JisolGameCocos/assets/script/manager/battle/mode/GOnHookManager.ts +++ b/JisolGameCocos/assets/script/manager/battle/mode/GOnHookManager.ts @@ -1,6 +1,7 @@ import { GOnHookPet } from "../../../../../extensions/ngame/assets/ngame/message/proto"; import Singleton from "../../../../../extensions/ngame/assets/ngame/util/Singleton"; import { app } from "../../../App"; +import GBattleModeManager, { BattleMode } from "../../../battle/GBattleModeManager"; import { PlayerPetOV } from "../../../consts/API"; import { GAPI } from "../../../consts/GAPI"; import GOnHookData from "../../../data/GOnHookData"; @@ -12,6 +13,8 @@ export enum GOnHookManagerEvent{ ADD_KILL_SREEP = "GOnHookManagerEvent_ADD_KILL_SREEP", //删除死亡野怪 DEL_KILL_SREEP = "GOnHookManagerEvent_DEL_KILL_SREEP", + //重置数据 + RESET_DATA = "GOnHookManagerEvent_RESET_DATA", //删除死亡野怪 UPDATE_MAP = "GOnHookManagerEvent_UPDATE_MAP" } @@ -26,7 +29,7 @@ export default class GOnHookManager extends Singleton{ if(!this._sreeps || !(this._sreeps.size)){ //生成 this.onSpawnSreeps(); - return null; + return new Map(); } return this._sreeps; } @@ -119,6 +122,13 @@ export default class GOnHookManager extends Singleton{ return await GAPI.GOnHookSellCreeps(creeps.key); } + //重置数据 + onResetData(){ + this._sreeps = new Map(); + this.killSreeps = []; + app.event.emit(GOnHookManagerEvent.RESET_DATA); + } + //切换场景 async setMap(mapId:number){ @@ -126,6 +136,10 @@ export default class GOnHookManager extends Singleton{ //通知地图已切换 app.event.emit(GOnHookManagerEvent.UPDATE_MAP); + //重置数据 + this.onResetData(); + //重置场景 + GBattleModeManager.getIns().Open(BattleMode.OnHook,true); } diff --git a/JisolGameCocos/assets/script/ui/Home/Sreeps/MainSreepsList.ts b/JisolGameCocos/assets/script/ui/Home/Sreeps/MainSreepsList.ts index 82397d98..fc0265b2 100644 --- a/JisolGameCocos/assets/script/ui/Home/Sreeps/MainSreepsList.ts +++ b/JisolGameCocos/assets/script/ui/Home/Sreeps/MainSreepsList.ts @@ -24,6 +24,8 @@ export class MainSreepsList extends Component { app.event.on(GOnHookManagerEvent.ADD_KILL_SREEP,this.onAddSreep,this); //监听 野怪删除 app.event.on(GOnHookManagerEvent.DEL_KILL_SREEP,this.onDelSreep,this); + //监听 野怪数据重置 + app.event.on(GOnHookManagerEvent.RESET_DATA,this.onResetData,this); //添加子节点事件 this.views.addItemEvent(NodeEventType.TOUCH_END,this.onClickItem.bind(this)); @@ -34,9 +36,14 @@ export class MainSreepsList extends Component { //取消监听 app.event.off(GOnHookManagerEvent.ADD_KILL_SREEP,this.onAddSreep,this); - app.event.on(GOnHookManagerEvent.DEL_KILL_SREEP,this.onDelSreep,this); + app.event.off(GOnHookManagerEvent.DEL_KILL_SREEP,this.onDelSreep,this); + app.event.off(GOnHookManagerEvent.RESET_DATA,this.onResetData,this); } + //重置数据 + onResetData(){ + this.views.refreshData([]); + } //添加野怪 onAddSreep(sreep:GOnHookPet){ diff --git a/JisolGameCocos/proto/GPVPMessage.proto b/JisolGameCocos/proto/GPVPMessage.proto index 94ef6ad0..87e8679e 100644 --- a/JisolGameCocos/proto/GPVPMessage.proto +++ b/JisolGameCocos/proto/GPVPMessage.proto @@ -6,9 +6,9 @@ option java_package = "cn.jisol.ngame.proto"; //PVP 开始 message GPVPStart { string leftTactical = 1; //左边的布阵 - map leftPets = 2; //左边的宠物 key:宠物Id value 宠物配置Id + map leftPets = 2; //左边的宠物 key:宠物Id value PlayerPet JSON string rightTactical = 3; //右边的布阵 - map rightPets = 4; //右边的宠物 key:宠物Id value 宠物配置Id + map rightPets = 4; //右边的宠物 key:宠物Id value PlayerPet JSON int64 leftPlayerId = 5; //左边的玩家Id int64 rightPlayerId = 6; //右边的玩家Id } diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java index ae262c6d..7cdc5780 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java @@ -29,10 +29,8 @@ import org.springframework.retry.annotation.Retryable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Api(value = "JNGameDemo - API", tags = {"无尽模式 - API"}) @RestController @@ -89,6 +87,8 @@ public class GOnHookController { ModeOnHook data = this.getInfo(player).data; data.setOnHookMap(mapId); modeOnHookService.saveOrUpdate(data); + //切换地图 清理历史野怪 + CREEPS.put(player.getPlayerId(),new HashMap<>()); return NewsContext.onSuccess("成功",data); } @@ -112,8 +112,10 @@ public class GOnHookController { //获取可生成的最大数量 int max = Integer.parseInt(TD.DATA.getTbGOnHookGlobal().get(GlobalId.MODE_ON_HOOK_SPAWN_NUM).args); - //获取配置表全部宠物 - ArrayList tdPets = TD.DATA.getTbGRole().getDataList(); + //获取玩家所在当前地图可生成的宠物 + ModeOnHook info = this.getInfo(player).data; + TbGOnHookMaps mapInfo = TD.DATA.getTbGOnHookMaps().get(info.getOnHookMap()); + List tdPets = Arrays.stream(mapInfo.petIds).mapToObj(petId -> TD.DATA.getTbGRole().get(petId)).collect(Collectors.toList()); //如果小于最大数量则生成 while (creeps.size() < max){ diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/proto/GPVPMessage.proto b/JisolGameServer/Main/src/main/java/cn/jisol/game/proto/GPVPMessage.proto index 94ef6ad0..b5c9699b 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/proto/GPVPMessage.proto +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/proto/GPVPMessage.proto @@ -6,9 +6,9 @@ option java_package = "cn.jisol.ngame.proto"; //PVP 开始 message GPVPStart { string leftTactical = 1; //左边的布阵 - map leftPets = 2; //左边的宠物 key:宠物Id value 宠物配置Id + map leftPets = 2; //左边的宠物 key:宠物Id value PlayerPet JSON string rightTactical = 3; //右边的布阵 - map rightPets = 4; //右边的宠物 key:宠物Id value 宠物配置Id + map rightPets = 4; //右边的宠物 key:宠物Id value PlayerPet JSON int64 leftPlayerId = 5; //左边的玩家Id int64 rightPlayerId = 6; //右边的玩家Id } @@ -22,6 +22,4 @@ message GPVPText { message GPVPRefereeInfo{ //获胜玩家Id int64 winnerId = 1; -} - - +} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/tbgonhookmaps.json b/JisolGameServer/Main/src/main/resources/json/tbgonhookmaps.json index 953dd292..ebcd8ef4 100644 --- a/JisolGameServer/Main/src/main/resources/json/tbgonhookmaps.json +++ b/JisolGameServer/Main/src/main/resources/json/tbgonhookmaps.json @@ -18,7 +18,6 @@ "mapImage": "ui/map/魔法镇_图片/spriteFrame", "mapId": 60002, "petIds": [ - 10003, 10004 ], "sign": "",