import { IMsg } from './message/IMsg' import { Client } from 'colyseus' import { PetInfo, PetInfoMsg } from './message/PetInfo' import { BattleHandler } from './rooms/logic/Handler/BattleHandler' import { SkillInfoMsg } from './message/SkillInfo' import { PartResultMsg } from './message/PartResult' import { RemovePetMsg } from './message/RemovePetMsg' import { Dispatcher } from '@colyseus/command' import { Delayed } from '@gamestdio/timer/lib/Delayed' import { Player } from './rooms/schema/Player' import { RobotClient } from './robot/RobotClient' export {} declare global { namespace NodeJS { interface Global { NODE_ENV: string ROOT_PATH: string $cfg: any isProd: boolean } } } /** * GeneralRoom 扩展方法 */ declare module 'colyseus' { interface Room { battleMan: BattleHandler; dispatcher: Dispatcher; mainClock: Delayed; robotCount: number; match: string | undefined; score: number; /** * 当前room的client数量 */ clientCount: number; /** * 根据sessionId获取client * @param player 玩家id或者玩家的对象 */ getClient(player: string | Player): Client; // >>>>>>>>> Begin of extend send message <<<<<<<<<<<<< /** * 广播玩家加入房间 * @param data * @param options */ bUserJoin(data?: any, options?: any): void; /** * 广播玩家离开 * @param data */ bUserLeft(data?: any): void; /** * 给指定用户下发英雄选择结果 * @param client * @param data */ sSelectHero(client: Client, data?: any): void; /** * 广播英雄选择结果 * @param data */ bSelectHero(data?: any): void; /** * 下发抽牌信息 * @param client * @param data */ sDrawCard(client: Client, data?: any): void; /** * 增加一个随从 * @param data */ bAddPet(data?: PetInfoMsg): void; /** * 施放一个技能 * @param data */ bCastSkill(data?: SkillInfoMsg): void; /** * 广播偷卡信息 * @param data * @param options */ bStealCard(data?: any, options?: any): void; /** * 单独下发一个偷卡信息 * @param data */ sStealCard(data?: any): void; /** * 广播一个抽卡信息 * @param data * @param options */ bDrawCard(data?: any, options?: any): void; /** * 广播一个弃卡信息 * @param data * @param options */ bRemoveCard(data?: any, options?: any): void; /** * 移除随从 * @param data * @param options */ bRemovePet(data?: RemovePetMsg, options?: any): void; /** * 广播游戏进行中的决斗结果 * @param data * @param options */ bPartResult(data?: PartResultMsg, options?: any): void; /** * 广播游戏最终结果 * @param data * @param options */ bGameResult(data?: any, options?: any): void; /** * 发送换卡消息 * @param client * @param data */ sChangeCard(client: Client, data?: any): void; /** * 发需要替换随从的消息给客户端 * @param player * @param data */ sNeedChangePet(player: string | Player, data?: any): void; /** * 发送给个人的消息列表 * @param client * @param data */ sMsgQueue(client: Client, data: IMsg[]): void; /** * 广播玩家死亡消息 * @param data * @param options */ bPlayerDead(data: any, options?: any): void; /** * 广播的消息列表 * 例: * let datas:IMsg[] = []; * datas.push({errcode: 0, type: '消息类型', data: {pid: 1}}); * this.room.bMsgQueue(datas); * @param datas * @param options */ bMsgQueue(datas: IMsg[], options?: any): void; send(client: Client, type: string, data?: any): void; // >>>>>>>>> End of extend send message <<<<<<<<<<<<< // >>>>>>>>> Begin of extend functions <<<<<<<<<<<<< /** * 随机从一个玩家那里抽一定数量的卡, 并将抽卡信息广播出去 * @param srcplayer * @param dstplayer 目标玩家 * @param count 抽卡数量 */ drawCardFromPlayer(srcplayer: string, dstplayer: string, count: number): number; /** * 弃卡, 并广播消息 * @param dstplayer 目标玩家 * @param count * @param fromplayer */ giveUpCard(dstplayer: string, count: number, fromplayer?: string): number; /** * 补卡, 并广播消息 * @param dstplayer 目标玩家 * @param count 补多少张, 该值和max_count至少一个不为0 * @param max_count 补到多少张, 如果count和max_count都不为0, 则抽 Math.min(count, (max_count - 当前手牌数)) * @param source 0: 正常抽卡, 1: 技能, 2: gm命令抽的卡 * @param fromplayer * @param extData 将抽到的卡变成特定的效果 */ addCard(dstplayer: string, count: number, max_count: number, source?: number, fromplayer?: string, extData?: {}): number; /** * 更新玩家血量 * @param dstplayer * @param hp * @param reason * @param fromplayer */ updateHp(dstplayer: string, hp: number, reason?: string, fromplayer?: string): number; /** * 更新随从信息 * @param datas * @param fromplayer */ updatePet(datas: PetInfo[], fromplayer?: string): void; /** * 更新随从信息, 统计用 * @param datas * @param fromplayer */ updatePetStat(datas: PetInfo[], fromplayer?: string): void; /** * 添加一个计时器 * @param millisecond * @param handler * @param name */ beginSchedule(millisecond: number, handler: Function, name: string): void; /** * 判断某个定时器是否active * @param {string} name * @return {boolean} */ scheduleActive(name: string): boolean; /** * 取消某个计时器 */ stopSchedule(name: string): number; /** * 暂停某个计时器 */ pauseSchedule(name: string): number; /** * 恢复某个计时器 */ resumeSchedule(name: string): number; /** * 给某个计时器增加n秒 * @param name * @param millisecond * @param reason */ addScheduleTime(millisecond: number, reason?: string, name?: string): void; /** * 为一个玩家生产n张指定效果id的卡 * @param effectId * @param count * @param player * @param fromplayer */ generateCard({ player, count, effectId, fromplayer, options } : { player: string | Player, count: number, effectId: number, fromplayer?: string | Player, options?: any }): number; /** * 添加一个机器人 * @param playerId */ addRobot(playerId?: string): void; /** * 添加一个辅助机器人 * @param sessionId */ addAssistClient(sessionId: string): void; /** * 获取当前session的辅助机器人 * @param sessionId */ getAssistClient(sessionId: string): RobotClient; /** * 获取对位玩家 * @param srcPlayer */ getOppositePlayer(srcPlayer: string | Player): Player; /** * 获取另外一队的玩家 * @param {string | Player} srcPlayer * @param exPlayer * @return {Player[]} */ getOtherTeamPlayers(srcPlayer: string, exPlayer?: string): Player[]; /** * 根据index获取玩家 * @param {number} idx * @return {Player} */ getPlayerByIdx(idx: number): Player; } }