diff --git a/src/global.d.ts b/src/global.d.ts index 420c0b6..2697a9c 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,6 +1,6 @@ import {IMsg} from "./message/IMsg"; import {Client, Room} from "colyseus"; -import {PetInfoMsg} from "./message/PetInfo"; +import {PetInfo, PetInfoMsg} from "./message/PetInfo"; import {BattleHandler} from "./rooms/logic/Handler/BattleHandler"; import {SkillInfoMsg} from "./message/SkillInfo"; import {PartResultMsg} from "./message/PartResult"; @@ -107,7 +107,6 @@ declare module "colyseus" { * @param options */ bRemovePet(data?: RemovePetMsg, options?: any): void; - /** * 广播游戏进行中的决斗结果 * @param data @@ -177,6 +176,12 @@ declare module "colyseus" { */ updateHp(dstplayer: string, hp: number): number; + /** + * 更新随从信息 + * @param datas + */ + updatePet(datas: PetInfo[]): void; + } } diff --git a/src/message/PetInfo.ts b/src/message/PetInfo.ts index bc92119..63e3178 100644 --- a/src/message/PetInfo.ts +++ b/src/message/PetInfo.ts @@ -3,25 +3,24 @@ import {IMsg} from "./IMsg"; /** * 英雄, 随从信息 */ +export class PetInfo { + id: number; + player: string; + isHero: boolean; + ap: number; + pos: number; + extAp: number; + harmReduce?: number; + skills: number[]; + extSkills: number[] +} export class PetInfoMsg implements IMsg { data: any; errcode: number; errmsg: string; - constructor(data?: { - id: number, - player: string, - isHero: boolean, - ap: number, - pos: number, - extAp: number, - harmReduce?: number, - skills: number[], - extSkills: number[] - }) { + constructor(data?: PetInfo) { this.errcode = 0; this.data = data; } - - } diff --git a/src/rooms/RoomExtMethod.ts b/src/rooms/RoomExtMethod.ts index 3674db2..b627454 100644 --- a/src/rooms/RoomExtMethod.ts +++ b/src/rooms/RoomExtMethod.ts @@ -2,6 +2,7 @@ import {Room} from "colyseus"; import gameUtil from "../utils/game.util"; import {error} from "../common/Debug"; import {PlayerStateConst} from "../constants/PlayerStateConst"; +import {PetInfo} from "../message/PetInfo"; /** * 一些常用的方法 @@ -94,5 +95,39 @@ Object.defineProperties(Room.prototype, { } return player.hp; } + }, + /** + * 更新随从信息 + * @param data + */ + updatePet: { + value: function (datas: PetInfo[]): void { + let playerSet: Set = new Set(); + for (let obj of datas) { + let pid = obj.player; + playerSet.add(pid); + let player = this.state.players.get(pid); + let pet = player.pets.get(obj.pos + ''); + pet.id = obj.id; + pet.ap = obj.ap; + pet.extAp = obj.extAp; + pet.harmReduce = obj.harmReduce; + pet.skills.length = 0; + pet.state = 1; + if (obj.skills) { + pet.skills.length = 0; + for (let s of obj.skills) { + pet.skills.push(s); + } + } + if (obj.extSkills) { + pet.extSkills.length = 0; + for (let s of obj.extSkills) { + pet.extSkills.push(s); + } + } + } + this.broadcast("pet_update_s2c", {data: [...playerSet]}, {afterNextPatch: true}); + } } });