summaryrefslogtreecommitdiff
path: root/src/models/games/reversi/game.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/games/reversi/game.ts')
-rw-r--r--src/models/games/reversi/game.ts111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/models/games/reversi/game.ts b/src/models/games/reversi/game.ts
deleted file mode 100644
index 57c493cff5..0000000000
--- a/src/models/games/reversi/game.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-import * as mongo from 'mongodb';
-import * as deepcopy from 'deepcopy';
-import db from '../../../db/mongodb';
-import isObjectId from '../../../misc/is-objectid';
-import { IUser, pack as packUser } from '../../user';
-
-const ReversiGame = db.get<IReversiGame>('reversiGames');
-export default ReversiGame;
-
-export interface IReversiGame {
- _id: mongo.ObjectID;
- createdAt: Date;
- startedAt: Date;
- user1Id: mongo.ObjectID;
- user2Id: mongo.ObjectID;
- user1Accepted: boolean;
- user2Accepted: boolean;
-
- /**
- * どちらのプレイヤーが先行(黒)か
- * 1 ... user1
- * 2 ... user2
- */
- black: number;
-
- isStarted: boolean;
- isEnded: boolean;
- winnerId: mongo.ObjectID;
- surrendered: mongo.ObjectID;
- logs: {
- at: Date;
- color: boolean;
- pos: number;
- }[];
- settings: {
- map: string[];
- bw: string | number;
- isLlotheo: boolean;
- canPutEverywhere: boolean;
- loopedBoard: boolean;
- };
- form1: any;
- form2: any;
-
- // ログのposを文字列としてすべて連結したもののCRC32値
- crc32: string;
-}
-
-/**
- * Pack an reversi game for API response
- */
-export const pack = (
- game: any,
- me?: string | mongo.ObjectID | IUser,
- options?: {
- detail?: boolean
- }
-) => new Promise<any>(async (resolve, reject) => {
- const opts = Object.assign({
- detail: true
- }, options);
-
- let _game: any;
-
- // Populate the game if 'game' is ID
- if (isObjectId(game)) {
- _game = await ReversiGame.findOne({
- _id: game
- });
- } else if (typeof game === 'string') {
- _game = await ReversiGame.findOne({
- _id: new mongo.ObjectID(game)
- });
- } else {
- _game = deepcopy(game);
- }
-
- // Me
- const meId: mongo.ObjectID = me
- ? isObjectId(me)
- ? me as mongo.ObjectID
- : typeof me === 'string'
- ? new mongo.ObjectID(me)
- : (me as IUser)._id
- : null;
-
- // Rename _id to id
- _game.id = _game._id;
- delete _game._id;
-
- if (opts.detail === false) {
- delete _game.logs;
- delete _game.settings.map;
- } else {
- // 互換性のため
- if (_game.settings.map.hasOwnProperty('size')) {
- _game.settings.map = _game.settings.map.data.match(new RegExp(`.{1,${_game.settings.map.size}}`, 'g'));
- }
- }
-
- // Populate user
- _game.user1 = await packUser(_game.user1Id, meId);
- _game.user2 = await packUser(_game.user2Id, meId);
- if (_game.winnerId) {
- _game.winner = await packUser(_game.winnerId, meId);
- } else {
- _game.winner = null;
- }
-
- resolve(_game);
-});