gitextract_v_63r64i/ ├── .vscode/ │ └── settings.json ├── LICENSE ├── README.md ├── docs/ │ ├── 笔记.md │ └── 需求文档.md ├── reload.sh ├── werewolf-backend/ │ ├── .eslintrc │ ├── .gitignore │ ├── .vscode/ │ │ └── be.code-snippets │ ├── ecosystem.config.js │ ├── nodemon.json │ ├── package.json │ ├── src/ │ │ ├── handlers/ │ │ │ └── http/ │ │ │ ├── gameAct.ts │ │ │ ├── gameActHandlers/ │ │ │ │ ├── BeforeDayDiscuss.ts │ │ │ │ ├── DayDiscuss.ts │ │ │ │ ├── ExileVote.ts │ │ │ │ ├── ExileVoteCheck.ts │ │ │ │ ├── GuardProtect.ts │ │ │ │ ├── HunterCheck.ts │ │ │ │ ├── HunterShoot.ts │ │ │ │ ├── LeaveMsg.ts │ │ │ │ ├── SeerCheck.ts │ │ │ │ ├── SheriffAssign.ts │ │ │ │ ├── SheriffAssignCheck.ts │ │ │ │ ├── SheriffElect.ts │ │ │ │ ├── SheriffSpeach.ts │ │ │ │ ├── SheriffVote.ts │ │ │ │ ├── SheriffVoteCheck.ts │ │ │ │ ├── WitchAct.ts │ │ │ │ ├── WolfKill.ts │ │ │ │ ├── WolfKillCheck.ts │ │ │ │ ├── index.ts │ │ │ │ └── validateIdentity.ts │ │ │ ├── gameBegin.ts │ │ │ ├── gameGetHint/ │ │ │ │ ├── getWolfs.ts │ │ │ │ ├── index.ts │ │ │ │ ├── witchGetDie.ts │ │ │ │ └── wolfKill.ts │ │ │ ├── gameStatus.ts │ │ │ ├── roomCreate.ts │ │ │ ├── roomInit.ts │ │ │ └── roomJoin.ts │ │ ├── index.ts │ │ ├── middleware/ │ │ │ ├── auth.ts │ │ │ └── handleError.ts │ │ ├── models/ │ │ │ ├── PlayerModel.ts │ │ │ └── RoomModel.ts │ │ ├── routes/ │ │ │ ├── gameRoutes.ts │ │ │ ├── index.ts │ │ │ └── roomRoutes.ts │ │ ├── utils/ │ │ │ ├── checkGameOver.ts │ │ │ ├── getVoteResult.ts │ │ │ └── renderHintNPlayers.ts │ │ └── ws/ │ │ └── index.ts │ └── tsconfig.json └── werewolf-frontend/ ├── .eslintrc.js ├── .gitignore ├── .vscode/ │ └── settings.json ├── README.md ├── index.html ├── package.json ├── shared/ │ ├── .vscode/ │ │ ├── WS Msg Model.code-snippets │ │ └── http Msg Model.code-snippets │ ├── GameDefs.ts │ ├── ModelDefs.ts │ ├── WSEvents.ts │ ├── WSMsg/ │ │ ├── ChangeStatus.ts │ │ ├── GameEnd.ts │ │ ├── RoomExile.ts │ │ ├── RoomJoin.ts │ │ └── ShowMsg.ts │ ├── constants.ts │ └── httpMsg/ │ ├── CharacterAct.ts │ ├── CreateRoomMsg.ts │ ├── GameStatusMsg.ts │ ├── InitRoomMsg.ts │ ├── JoinRoomMsg.ts │ ├── SeerCheckMsg.ts │ └── _httpResTemplate.ts ├── src/ │ ├── App.vue │ ├── components/ │ │ ├── Avatar.vue │ │ ├── Btn.vue │ │ ├── Dialog.vue │ │ ├── PlayActions/ │ │ │ ├── ActionBtn.vue │ │ │ ├── commonAction.ts │ │ │ ├── index.vue │ │ │ └── renderActionList.ts │ │ ├── PlayBottomActions.vue │ │ ├── PlayCharacter.vue │ │ ├── PlayEventList.vue │ │ ├── PlayEventTile.vue │ │ ├── PlayEvents.vue │ │ ├── PlayMemo.vue │ │ ├── RoomCharacterTile.vue │ │ ├── RoomPlayerList.vue │ │ ├── UseBorder.vue │ │ └── UseMenu.vue │ ├── http/ │ │ ├── _request.ts │ │ ├── action.ts │ │ ├── gameGetHint.ts │ │ ├── gameStatus.ts │ │ └── room.ts │ ├── index.css │ ├── main.js │ ├── normalize.css │ ├── pages/ │ │ ├── CreateRoom.vue │ │ ├── Home.vue │ │ ├── JoinRoom.vue │ │ ├── Play.vue │ │ ├── Review.vue │ │ ├── ReviewDetail.vue │ │ └── WaitRoom.vue │ ├── reactivity/ │ │ ├── computeGameEvents.ts │ │ ├── createRoom.ts │ │ ├── dialog.ts │ │ ├── game.ts │ │ ├── joinRoom.ts │ │ ├── playAction.ts │ │ ├── playPage.ts │ │ ├── record.ts │ │ └── theme.ts │ ├── router.ts │ ├── socket/ │ │ ├── changeStatus.ts │ │ ├── gameBegin.ts │ │ ├── gameEnd.ts │ │ ├── index.ts │ │ ├── roomJoin.ts │ │ └── showWSMsg.ts │ ├── utils/ │ │ ├── setObj.ts │ │ ├── token.ts │ │ └── votes.ts │ └── werewolf.d.ts ├── tsconfig.json └── vite.config.js