[add] 遊戲Type
This commit is contained in:
parent
14505e26ee
commit
d7671c7d80
@ -1,2 +1,3 @@
|
|||||||
src/utils
|
src/utils
|
||||||
src/Engine
|
src/Engine
|
||||||
|
src/shared/protocols/serviceProto.ts
|
@ -4,8 +4,9 @@ import { ReqCreate, ResCreate } from "../../shared/protocols/room/PtlCreate";
|
|||||||
import { ServiceType } from "../../shared/protocols/serviceProto";
|
import { ServiceType } from "../../shared/protocols/serviceProto";
|
||||||
|
|
||||||
export default async function (call: ApiCall<ReqCreate, ResCreate>) {
|
export default async function (call: ApiCall<ReqCreate, ResCreate>) {
|
||||||
|
const { type } = call.req;
|
||||||
const conn: BaseConnection<ServiceType> = call.conn;
|
const conn: BaseConnection<ServiceType> = call.conn;
|
||||||
const room: Room = new Room();
|
const room: Room = new Room(type);
|
||||||
room.Join(conn);
|
room.Join(conn);
|
||||||
conn.Room = room;
|
conn.Room = room;
|
||||||
call.succ(room.RoomId);
|
call.succ(room.RoomId);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { ApiCall, BaseConnection } from "tsrpc";
|
import { ApiCall, BaseConnection } from "tsrpc";
|
||||||
import Room from "../../component/Room/Room";
|
import Room from "../../component/Room/Room";
|
||||||
|
import { EGameType } from "../../shared/protocols/define/enum";
|
||||||
import { ReqJoin, ResJoin } from "../../shared/protocols/room/PtlJoin";
|
import { ReqJoin, ResJoin } from "../../shared/protocols/room/PtlJoin";
|
||||||
import { ServiceType } from "../../shared/protocols/serviceProto";
|
import { ServiceType } from "../../shared/protocols/serviceProto";
|
||||||
|
|
||||||
@ -12,9 +13,9 @@ export default async function (call: ApiCall<ReqJoin, ResJoin>) {
|
|||||||
call.error("房間已滿");
|
call.error("房間已滿");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
room.Join(conn);
|
const type: EGameType = room.Join(conn);
|
||||||
conn.Room = room;
|
conn.Room = room;
|
||||||
call.succ(room.ConnCount());
|
call.succ([room.ConnCount(), type]);
|
||||||
|
|
||||||
if (room.ConnCount() >= 2) {
|
if (room.ConnCount() >= 2) {
|
||||||
room.GotoGame();
|
room.GotoGame();
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import { BaseConnection, WsConnection } from "tsrpc";
|
import { BaseConnection, WsConnection } from "tsrpc";
|
||||||
import { server } from "../..";
|
import { server } from "../..";
|
||||||
import { RandomEx } from "../../Engine/Utils/Number/RandomEx";
|
import { RandomEx } from "../../Engine/Utils/Number/RandomEx";
|
||||||
import { EGameState } from "../../shared/protocols/define/enum";
|
import { EGameState, EGameType } from "../../shared/protocols/define/enum";
|
||||||
import { MsgChangeState } from "../../shared/protocols/room/MsgChangeState";
|
import { MsgChangeState } from "../../shared/protocols/room/MsgChangeState";
|
||||||
|
import { MsgGoToGame } from "../../shared/protocols/room/MsgGoToGame";
|
||||||
import { ServiceType } from "../../shared/protocols/serviceProto";
|
import { ServiceType } from "../../shared/protocols/serviceProto";
|
||||||
import { sleep } from "../../utils";
|
import { sleep } from "../../utils";
|
||||||
import { RoomConnData } from "./RoomUtils";
|
import { RoomConnData } from "./RoomUtils";
|
||||||
@ -32,6 +33,8 @@ export default class Room {
|
|||||||
|
|
||||||
private connData: Map<BaseConnection<any>, RoomConnData> = new Map<BaseConnection, RoomConnData>();
|
private connData: Map<BaseConnection<any>, RoomConnData> = new Map<BaseConnection, RoomConnData>();
|
||||||
|
|
||||||
|
private type: EGameType;
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Lifecycle
|
//#region Lifecycle
|
||||||
@ -39,10 +42,11 @@ export default class Room {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
constructor() {
|
constructor(type: EGameType) {
|
||||||
// 给每个新房间生成一个唯一的 ID
|
// 给每个新房间生成一个唯一的 ID
|
||||||
this.RoomId = ++Room.maxRoomId;
|
this.RoomId = ++Room.maxRoomId;
|
||||||
Room.rooms[this.RoomId] = this;
|
Room.rooms[this.RoomId] = this;
|
||||||
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
@ -68,7 +72,8 @@ export default class Room {
|
|||||||
|
|
||||||
/** GotoGame */
|
/** GotoGame */
|
||||||
public GotoGame(): void {
|
public GotoGame(): void {
|
||||||
server.broadcastMsg("room/GoToGame", 0, <WsConnection<ServiceType>[]>this.conns);
|
let data: MsgGoToGame = this.type;
|
||||||
|
server.broadcastMsg("room/GoToGame", data, <WsConnection<ServiceType>[]>this.conns);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -211,13 +216,14 @@ export default class Room {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Join */
|
/** Join */
|
||||||
public Join(conn: BaseConnection): void {
|
public Join(conn: BaseConnection): EGameType {
|
||||||
this.conns.push(conn);
|
this.conns.push(conn);
|
||||||
const data: RoomConnData = {
|
const data: RoomConnData = {
|
||||||
state: undefined,
|
state: undefined,
|
||||||
answer: undefined,
|
answer: undefined,
|
||||||
};
|
};
|
||||||
this.connData.set(conn, data);
|
this.connData.set(conn, data);
|
||||||
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** GameOver */
|
/** GameOver */
|
||||||
|
Loading…
Reference in New Issue
Block a user