336 lines
7.6 KiB
TypeScript
336 lines
7.6 KiB
TypeScript
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;
|
|
}
|
|
}
|
|
|
|
|