Commit 318f12f9 authored by Chunchi Che's avatar Chunchi Che

add roomStore

parent 4f4677b7
Pipeline #22921 passed with stages
in 17 minutes and 34 seconds
......@@ -7,6 +7,7 @@ export * from "./moraStore";
export * from "./placeStore";
export * from "./playerStore";
export * from "./replayStore";
export * from "./roomStore";
import { devtools } from "valtio/utils";
......@@ -19,6 +20,7 @@ import { moraStore } from "./moraStore";
import { placeStore } from "./placeStore";
import { playerStore } from "./playerStore";
import { replayStore } from "./replayStore";
import { roomStore } from "./roomStore";
devtools(playerStore, { name: "player", enabled: true });
devtools(chatStore, { name: "chat", enabled: true });
......@@ -29,6 +31,7 @@ devtools(cardStore, { name: "card", enabled: true });
devtools(placeStore, { name: "place", enabled: true });
devtools(replayStore, { name: "replay", enabled: true });
devtools(accountStore, { name: "account", enabled: true });
devtools(roomStore, { name: "room", enabled: true });
// 重置所有`Store`
export const resetUniverse = () => {
......@@ -40,4 +43,5 @@ export const resetUniverse = () => {
placeStore.reset();
playerStore.reset();
replayStore.reset();
roomStore.reset();
};
// 等待房间页面的状态管理
import { proxy } from "valtio";
import { ygopro } from "@/api";
import StocHsPlayerChange = ygopro.StocHsPlayerChange;
import StocTypeChange = ygopro.StocTypeChange;
import { NeosStore } from "./shared";
interface Player {
name: string; // 玩家的昵称
state: StocHsPlayerChange.State; // 玩家当前状态
deckInfo?: DeckInfo;
}
// 卡组的数量信息,在猜拳阶段由后端传入
interface DeckInfo {
mainSize: number;
extraSize: number;
sideSize: number;
}
class RoomStore implements NeosStore {
joined: boolean = false; // 是否已经加入房间
players: Player[] = []; // 进入房间的玩家列表
observerCount: number = 0; // 观战者数量
isHost: boolean = false; // 当前玩家是否是房主
selfType: StocTypeChange.SelfType = 0; // 当前玩家的类型
moraStart: boolean = false; // 猜拳阶段是否开始
selectHand: boolean = false; // 是否可以选择猜拳
selectTp: boolean = false; // 是否可以选边
reset(): void {
this.joined = false;
this.players = [];
this.observerCount = 0;
this.isHost = false;
this.moraStart = false;
this.selectHand = false;
this.selectTp = false;
}
}
export const roomStore = proxy<RoomStore>(new RoomStore());
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment