trucoshi 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE +674 -674
  2. package/README.md +60 -37
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.js +18 -18
  5. package/dist/lib/classes/Deck.d.ts +16 -16
  6. package/dist/lib/classes/Deck.js +38 -38
  7. package/dist/lib/classes/GameLoop.d.ts +20 -20
  8. package/dist/lib/classes/GameLoop.js +61 -103
  9. package/dist/lib/classes/Hand.d.ts +38 -38
  10. package/dist/lib/classes/Hand.js +184 -233
  11. package/dist/lib/classes/Lobby.d.ts +27 -27
  12. package/dist/lib/classes/Lobby.js +112 -113
  13. package/dist/lib/classes/Match.d.ts +18 -18
  14. package/dist/lib/classes/Match.js +72 -115
  15. package/dist/lib/classes/Play.d.ts +21 -21
  16. package/dist/lib/classes/Play.js +39 -39
  17. package/dist/lib/classes/Player.d.ts +26 -26
  18. package/dist/lib/classes/Player.js +67 -77
  19. package/dist/lib/classes/Round.d.ts +17 -17
  20. package/dist/lib/classes/Round.js +33 -34
  21. package/dist/lib/classes/Table.d.ts +12 -12
  22. package/dist/lib/classes/Table.js +30 -30
  23. package/dist/lib/classes/Team.d.ts +19 -19
  24. package/dist/lib/classes/Team.js +48 -50
  25. package/dist/lib/classes/Truco.d.ts +18 -18
  26. package/dist/lib/classes/Truco.js +70 -110
  27. package/dist/lib/classes/index.d.ts +11 -11
  28. package/dist/lib/classes/index.js +27 -27
  29. package/dist/lib/constants.d.ts +45 -45
  30. package/dist/lib/constants.js +84 -85
  31. package/dist/lib/index.d.ts +2 -2
  32. package/dist/lib/index.js +18 -18
  33. package/dist/lib/types.d.ts +50 -50
  34. package/dist/lib/types.js +34 -34
  35. package/dist/lib/utils.d.ts +5 -5
  36. package/dist/lib/utils.js +58 -59
  37. package/dist/types.d.ts +133 -101
  38. package/dist/types.js +65 -65
  39. package/package.json +1 -1
@@ -1,113 +1,112 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Lobby = void 0;
4
- var constants_1 = require("../constants");
5
- var types_1 = require("../../types");
6
- var GameLoop_1 = require("./GameLoop");
7
- var Match_1 = require("./Match");
8
- var Player_1 = require("./Player");
9
- var Table_1 = require("./Table");
10
- var Team_1 = require("./Team");
11
- function Lobby(teamSize) {
12
- var lobby = {
13
- lastTeamIdx: 1,
14
- _players: [],
15
- get players() {
16
- return lobby._players.filter(function (player) { return Boolean(player && player.id); });
17
- },
18
- teams: [],
19
- table: null,
20
- maxPlayers: teamSize ? teamSize * 2 : 6,
21
- full: false,
22
- ready: false,
23
- started: false,
24
- gameLoop: undefined,
25
- calculateReady: function () {
26
- var allPlayersReady = lobby.players.reduce(function (prev, curr) { return Boolean(prev && curr && curr.ready); }, true);
27
- var teamsSameSize = lobby.players.filter(function (player) { return player.teamIdx === 0; }).length ===
28
- lobby.players.filter(function (player) { return player.teamIdx === 1; }).length;
29
- var allTeamsComplete = lobby.players.length % 2 === 0;
30
- lobby.ready = allPlayersReady && allTeamsComplete && teamsSameSize;
31
- return lobby.ready;
32
- },
33
- calculateFull: function () {
34
- lobby.full = lobby.players.length >= lobby.maxPlayers;
35
- return lobby.full;
36
- },
37
- addPlayer: function (id, session, teamIdx, isOwner) {
38
- var exists = lobby.players.find(function (player) { return player.session === session; });
39
- if (exists) {
40
- if (exists.teamIdx === teamIdx) {
41
- return exists;
42
- }
43
- lobby.removePlayer(exists.session);
44
- }
45
- if (lobby.started) {
46
- throw new Error(types_1.GAME_ERROR.MATCH_ALREADY_STARTED);
47
- }
48
- if (lobby.full) {
49
- throw new Error(types_1.GAME_ERROR.LOBBY_IS_FULL);
50
- }
51
- var maxSize = teamSize ? teamSize : 3;
52
- if (lobby.full ||
53
- lobby.players.filter(function (player) { return player.teamIdx === teamIdx; }).length > maxSize) {
54
- throw new Error(types_1.GAME_ERROR.TEAM_IS_FULL);
55
- }
56
- var player = (0, Player_1.Player)(id, teamIdx !== undefined ? teamIdx : Number(!lobby.lastTeamIdx), isOwner);
57
- player.setSession(session);
58
- lobby.lastTeamIdx = Number(!lobby.lastTeamIdx);
59
- for (var i = 0; i < lobby._players.length; i++) {
60
- if (!lobby._players[i].id) {
61
- if (player.teamIdx === 0 && i % 2 === 0) {
62
- lobby._players[i] = player;
63
- break;
64
- }
65
- if (player.teamIdx === 1 && i % 2 !== 0) {
66
- lobby._players[i] = player;
67
- break;
68
- }
69
- }
70
- }
71
- lobby.calculateFull();
72
- lobby.calculateReady();
73
- return player;
74
- },
75
- removePlayer: function (session) {
76
- var idx = lobby._players.findIndex(function (player) { return player && player.session === session; });
77
- if (idx !== -1) {
78
- lobby._players[idx] = {};
79
- lobby.calculateFull();
80
- lobby.calculateReady();
81
- }
82
- return lobby;
83
- },
84
- startMatch: function (matchPoint) {
85
- if (matchPoint === void 0) { matchPoint = 9; }
86
- lobby.calculateReady();
87
- var actualTeamSize = lobby.players.length / 2;
88
- if (!constants_1.TEAM_SIZE_VALUES.includes(actualTeamSize)) {
89
- throw new Error(types_1.GAME_ERROR.UNEXPECTED_TEAM_SIZE);
90
- }
91
- if (!lobby.ready) {
92
- throw new Error(types_1.GAME_ERROR.TEAM_NOT_READY);
93
- }
94
- lobby.teams = [
95
- (0, Team_1.Team)(lobby.players.filter(function (player) { return player.teamIdx === 0; })),
96
- (0, Team_1.Team)(lobby.players.filter(function (player) { return player.teamIdx === 1; })),
97
- ];
98
- if (lobby.teams[0].players.length !== actualTeamSize ||
99
- lobby.teams[1].players.length !== actualTeamSize) {
100
- throw new Error(types_1.GAME_ERROR.UNEXPECTED_TEAM_SIZE);
101
- }
102
- lobby.table = (0, Table_1.Table)(lobby.players, lobby.teams);
103
- lobby.gameLoop = (0, GameLoop_1.GameLoop)((0, Match_1.Match)(lobby.table, lobby.teams, matchPoint));
104
- lobby.started = true;
105
- return lobby.gameLoop;
106
- },
107
- };
108
- for (var i = 0; i < lobby.maxPlayers; i++) {
109
- lobby._players.push({});
110
- }
111
- return lobby;
112
- }
113
- exports.Lobby = Lobby;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lobby = void 0;
4
+ const constants_1 = require("../constants");
5
+ const types_1 = require("../../types");
6
+ const GameLoop_1 = require("./GameLoop");
7
+ const Match_1 = require("./Match");
8
+ const Player_1 = require("./Player");
9
+ const Table_1 = require("./Table");
10
+ const Team_1 = require("./Team");
11
+ function Lobby(teamSize) {
12
+ const lobby = {
13
+ lastTeamIdx: 1,
14
+ _players: [],
15
+ get players() {
16
+ return lobby._players.filter((player) => Boolean(player && player.id));
17
+ },
18
+ teams: [],
19
+ table: null,
20
+ maxPlayers: teamSize ? teamSize * 2 : 6,
21
+ full: false,
22
+ ready: false,
23
+ started: false,
24
+ gameLoop: undefined,
25
+ calculateReady() {
26
+ const allPlayersReady = lobby.players.reduce((prev, curr) => Boolean(prev && curr && curr.ready), true);
27
+ const teamsSameSize = lobby.players.filter((player) => player.teamIdx === 0).length ===
28
+ lobby.players.filter((player) => player.teamIdx === 1).length;
29
+ const allTeamsComplete = lobby.players.length % 2 === 0;
30
+ lobby.ready = allPlayersReady && allTeamsComplete && teamsSameSize;
31
+ return lobby.ready;
32
+ },
33
+ calculateFull() {
34
+ lobby.full = lobby.players.length >= lobby.maxPlayers;
35
+ return lobby.full;
36
+ },
37
+ addPlayer(id, session, teamIdx, isOwner) {
38
+ const exists = lobby.players.find((player) => player.session === session);
39
+ if (exists) {
40
+ if (exists.teamIdx === teamIdx) {
41
+ return exists;
42
+ }
43
+ lobby.removePlayer(exists.session);
44
+ }
45
+ if (lobby.started) {
46
+ throw new Error(types_1.GAME_ERROR.MATCH_ALREADY_STARTED);
47
+ }
48
+ if (lobby.full) {
49
+ throw new Error(types_1.GAME_ERROR.LOBBY_IS_FULL);
50
+ }
51
+ const maxSize = teamSize ? teamSize : 3;
52
+ if (lobby.full ||
53
+ lobby.players.filter((player) => player.teamIdx === teamIdx).length > maxSize) {
54
+ throw new Error(types_1.GAME_ERROR.TEAM_IS_FULL);
55
+ }
56
+ const player = (0, Player_1.Player)(id, teamIdx !== undefined ? teamIdx : Number(!lobby.lastTeamIdx), isOwner);
57
+ player.setSession(session);
58
+ lobby.lastTeamIdx = Number(!lobby.lastTeamIdx);
59
+ for (let i = 0; i < lobby._players.length; i++) {
60
+ if (!lobby._players[i].id) {
61
+ if (player.teamIdx === 0 && i % 2 === 0) {
62
+ lobby._players[i] = player;
63
+ break;
64
+ }
65
+ if (player.teamIdx === 1 && i % 2 !== 0) {
66
+ lobby._players[i] = player;
67
+ break;
68
+ }
69
+ }
70
+ }
71
+ lobby.calculateFull();
72
+ lobby.calculateReady();
73
+ return player;
74
+ },
75
+ removePlayer(session) {
76
+ const idx = lobby._players.findIndex((player) => player && player.session === session);
77
+ if (idx !== -1) {
78
+ lobby._players[idx] = {};
79
+ lobby.calculateFull();
80
+ lobby.calculateReady();
81
+ }
82
+ return lobby;
83
+ },
84
+ startMatch(matchPoint = 9) {
85
+ lobby.calculateReady();
86
+ const actualTeamSize = lobby.players.length / 2;
87
+ if (!constants_1.TEAM_SIZE_VALUES.includes(actualTeamSize)) {
88
+ throw new Error(types_1.GAME_ERROR.UNEXPECTED_TEAM_SIZE);
89
+ }
90
+ if (!lobby.ready) {
91
+ throw new Error(types_1.GAME_ERROR.TEAM_NOT_READY);
92
+ }
93
+ lobby.teams = [
94
+ (0, Team_1.Team)(lobby.players.filter((player) => player.teamIdx === 0)),
95
+ (0, Team_1.Team)(lobby.players.filter((player) => player.teamIdx === 1)),
96
+ ];
97
+ if (lobby.teams[0].players.length !== actualTeamSize ||
98
+ lobby.teams[1].players.length !== actualTeamSize) {
99
+ throw new Error(types_1.GAME_ERROR.UNEXPECTED_TEAM_SIZE);
100
+ }
101
+ lobby.table = (0, Table_1.Table)(lobby.players, lobby.teams);
102
+ lobby.gameLoop = (0, GameLoop_1.GameLoop)((0, Match_1.Match)(lobby.table, lobby.teams, matchPoint));
103
+ lobby.started = true;
104
+ return lobby.gameLoop;
105
+ },
106
+ };
107
+ for (let i = 0; i < lobby.maxPlayers; i++) {
108
+ lobby._players.push({});
109
+ }
110
+ return lobby;
111
+ }
112
+ exports.Lobby = Lobby;
@@ -1,18 +1,18 @@
1
- import { IHand, IHandPoints } from "./Hand";
2
- import { IPlayInstance } from "./Play";
3
- import { ITable } from "./Table";
4
- import { ITeam } from "./Team";
5
- export interface IMatch {
6
- teams: [ITeam, ITeam];
7
- hands: Array<IHand>;
8
- winner: ITeam | null;
9
- currentHand: IHand | null;
10
- table: ITable;
11
- play(): IPlayInstance | null;
12
- addPoints(points: IHandPoints): [ITeam, ITeam];
13
- pushHand(hand: IHand): void;
14
- setCurrentHand(hand: IHand | null): IHand | null;
15
- setWinner(winner: ITeam): void;
16
- getNextTurn(): IteratorResult<IMatch | null, IMatch | null | void>;
17
- }
18
- export declare function Match(table: ITable, teams?: Array<ITeam>, matchPoint?: number): IMatch;
1
+ import { IHand, IHandPoints } from "./Hand";
2
+ import { IPlayInstance } from "./Play";
3
+ import { ITable } from "./Table";
4
+ import { ITeam } from "./Team";
5
+ export interface IMatch {
6
+ teams: [ITeam, ITeam];
7
+ hands: Array<IHand>;
8
+ winner: ITeam | null;
9
+ currentHand: IHand | null;
10
+ table: ITable;
11
+ play(): IPlayInstance | null;
12
+ addPoints(points: IHandPoints): [ITeam, ITeam];
13
+ pushHand(hand: IHand): void;
14
+ setCurrentHand(hand: IHand | null): IHand | null;
15
+ setWinner(winner: ITeam): void;
16
+ getNextTurn(): IteratorResult<IMatch | null, IMatch | null | void>;
17
+ }
18
+ export declare function Match(table: ITable, teams?: Array<ITeam>, matchPoint?: number): IMatch;
@@ -1,115 +1,72 @@
1
- "use strict";
2
- var __generator = (this && this.__generator) || function (thisArg, body) {
3
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
5
- function verb(n) { return function (v) { return step([n, v]); }; }
6
- function step(op) {
7
- if (f) throw new TypeError("Generator is already executing.");
8
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
9
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
10
- if (y = 0, t) op = [op[0] & 2, t.value];
11
- switch (op[0]) {
12
- case 0: case 1: t = op; break;
13
- case 4: _.label++; return { value: op[1], done: false };
14
- case 5: _.label++; y = op[1]; op = [0]; continue;
15
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
16
- default:
17
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
18
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
19
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
20
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
21
- if (t[2]) _.ops.pop();
22
- _.trys.pop(); continue;
23
- }
24
- op = body.call(thisArg, _);
25
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
26
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
27
- }
28
- };
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.Match = void 0;
31
- var Deck_1 = require("./Deck");
32
- var Hand_1 = require("./Hand");
33
- function Match(table, teams, matchPoint) {
34
- if (teams === void 0) { teams = []; }
35
- if (matchPoint === void 0) { matchPoint = 9; }
36
- var deck = (0, Deck_1.Deck)().shuffle();
37
- var size = teams[0].players.length;
38
- if (size !== teams[1].players.length) {
39
- throw new Error("Team size mismatch");
40
- }
41
- function handsGeneratorSequence() {
42
- var hand, value, teams_1, winner;
43
- return __generator(this, function (_a) {
44
- switch (_a.label) {
45
- case 0:
46
- if (!!match.winner) return [3 /*break*/, 4];
47
- deck.shuffle();
48
- hand = match.setCurrentHand((0, Hand_1.Hand)(match, deck, match.hands.length + 1));
49
- match.pushHand(hand);
50
- _a.label = 1;
51
- case 1:
52
- if (!!hand.finished()) return [3 /*break*/, 3];
53
- value = hand.getNextPlayer().value;
54
- if (value && value.finished()) {
55
- return [3 /*break*/, 1];
56
- }
57
- match.setCurrentHand(value);
58
- return [4 /*yield*/, match];
59
- case 2:
60
- _a.sent();
61
- return [3 /*break*/, 1];
62
- case 3:
63
- match.setCurrentHand(null);
64
- teams_1 = match.addPoints(hand.points);
65
- winner = teams_1.find(function (team) { return team.points.winner; });
66
- if (winner) {
67
- match.setWinner(winner);
68
- match.setCurrentHand(null);
69
- return [3 /*break*/, 4];
70
- }
71
- match.table.nextTurn();
72
- return [3 /*break*/, 0];
73
- case 4: return [4 /*yield*/, match];
74
- case 5:
75
- _a.sent();
76
- return [2 /*return*/];
77
- }
78
- });
79
- }
80
- var handsGenerator = handsGeneratorSequence();
81
- var match = {
82
- winner: null,
83
- teams: teams,
84
- hands: [],
85
- table: table,
86
- currentHand: null,
87
- play: function () {
88
- match.getNextTurn();
89
- if (!match.currentHand) {
90
- return null;
91
- }
92
- return match.currentHand.play();
93
- },
94
- addPoints: function (points) {
95
- match.teams[0].addPoints(matchPoint, points[0]);
96
- match.teams[1].addPoints(matchPoint, points[1]);
97
- return match.teams;
98
- },
99
- pushHand: function (hand) {
100
- match.hands.push(hand);
101
- },
102
- setCurrentHand: function (hand) {
103
- match.currentHand = hand;
104
- return match.currentHand;
105
- },
106
- setWinner: function (winner) {
107
- match.winner = winner;
108
- },
109
- getNextTurn: function () {
110
- return handsGenerator.next();
111
- },
112
- };
113
- return match;
114
- }
115
- exports.Match = Match;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Match = void 0;
4
+ const Deck_1 = require("./Deck");
5
+ const Hand_1 = require("./Hand");
6
+ function Match(table, teams = [], matchPoint = 9) {
7
+ const deck = (0, Deck_1.Deck)().shuffle();
8
+ const size = teams[0].players.length;
9
+ if (size !== teams[1].players.length) {
10
+ throw new Error("Team size mismatch");
11
+ }
12
+ function* handsGeneratorSequence() {
13
+ while (!match.winner) {
14
+ deck.shuffle();
15
+ const hand = match.setCurrentHand((0, Hand_1.Hand)(match, deck, match.hands.length + 1));
16
+ match.pushHand(hand);
17
+ while (!hand.finished()) {
18
+ const { value } = hand.getNextPlayer();
19
+ if (value && value.finished()) {
20
+ continue;
21
+ }
22
+ match.setCurrentHand(value);
23
+ yield match;
24
+ }
25
+ match.setCurrentHand(null);
26
+ const teams = match.addPoints(hand.points);
27
+ const winner = teams.find((team) => team.points.winner);
28
+ if (winner) {
29
+ match.setWinner(winner);
30
+ match.setCurrentHand(null);
31
+ break;
32
+ }
33
+ match.table.nextTurn();
34
+ }
35
+ yield match;
36
+ }
37
+ const handsGenerator = handsGeneratorSequence();
38
+ const match = {
39
+ winner: null,
40
+ teams: teams,
41
+ hands: [],
42
+ table,
43
+ currentHand: null,
44
+ play() {
45
+ match.getNextTurn();
46
+ if (!match.currentHand) {
47
+ return null;
48
+ }
49
+ return match.currentHand.play();
50
+ },
51
+ addPoints(points) {
52
+ match.teams[0].addPoints(matchPoint, points[0]);
53
+ match.teams[1].addPoints(matchPoint, points[1]);
54
+ return match.teams;
55
+ },
56
+ pushHand(hand) {
57
+ match.hands.push(hand);
58
+ },
59
+ setCurrentHand(hand) {
60
+ match.currentHand = hand;
61
+ return match.currentHand;
62
+ },
63
+ setWinner(winner) {
64
+ match.winner = winner;
65
+ },
66
+ getNextTurn() {
67
+ return handsGenerator.next();
68
+ },
69
+ };
70
+ return match;
71
+ }
72
+ exports.Match = Match;
@@ -1,21 +1,21 @@
1
- import { ECommand, EHandState, EnvidoState } from "../../types";
2
- import { ICard } from "./Deck";
3
- import { IHand } from "./Hand";
4
- import { IPlayer } from "./Player";
5
- import { IRound } from "./Round";
6
- import { ITeam } from "./Team";
7
- import { ITruco } from "./Truco";
8
- export interface IPlayInstance {
9
- teams: [ITeam, ITeam];
10
- handIdx: number;
11
- roundIdx: number;
12
- state: EHandState;
13
- truco: ITruco;
14
- envido: EnvidoState;
15
- player: IPlayer | null;
16
- commands: Array<ECommand> | null;
17
- rounds: Array<IRound> | null;
18
- use(idx: number, card: ICard): ICard | null;
19
- say(command: ECommand): ECommand | null;
20
- }
21
- export declare function PlayInstance(hand: IHand, teams: [ITeam, ITeam]): IPlayInstance;
1
+ import { ECommand, EHandState, EnvidoState } from "../../types";
2
+ import { ICard } from "./Deck";
3
+ import { IHand } from "./Hand";
4
+ import { IPlayer } from "./Player";
5
+ import { IRound } from "./Round";
6
+ import { ITeam } from "./Team";
7
+ import { ITruco } from "./Truco";
8
+ export interface IPlayInstance {
9
+ teams: [ITeam, ITeam];
10
+ handIdx: number;
11
+ roundIdx: number;
12
+ state: EHandState;
13
+ truco: ITruco;
14
+ envido: EnvidoState;
15
+ player: IPlayer | null;
16
+ commands: Array<ECommand> | null;
17
+ rounds: Array<IRound> | null;
18
+ use(idx: number, card: ICard): ICard | null;
19
+ say(command: ECommand): ECommand | null;
20
+ }
21
+ export declare function PlayInstance(hand: IHand, teams: [ITeam, ITeam]): IPlayInstance;
@@ -1,39 +1,39 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlayInstance = void 0;
4
- var types_1 = require("../../types");
5
- function PlayInstance(hand, teams) {
6
- var _a, _b, _c;
7
- var instance = {
8
- state: hand.state,
9
- teams: teams,
10
- truco: hand.truco,
11
- envido: hand.envido,
12
- handIdx: hand.idx,
13
- roundIdx: hand.rounds.length,
14
- player: hand.currentPlayer,
15
- commands: [],
16
- rounds: hand.rounds,
17
- use: function (idx, card) {
18
- return hand.use(idx, card);
19
- },
20
- say: function (command) {
21
- var _a;
22
- if (!hand._currentPlayer || !((_a = instance.commands) === null || _a === void 0 ? void 0 : _a.includes(command))) {
23
- return null;
24
- }
25
- hand.commands[command](hand._currentPlayer);
26
- return command;
27
- },
28
- };
29
- (_a = instance.commands) === null || _a === void 0 ? void 0 : _a.push(types_1.ESayCommand.MAZO);
30
- (_b = instance.commands) === null || _b === void 0 ? void 0 : _b.push(types_1.ESayCommand.TRUCO);
31
- if (hand.rounds.length === 1) {
32
- (_c = instance.commands) === null || _c === void 0 ? void 0 : _c.push(types_1.EEnvidoCommand.ENVIDO);
33
- }
34
- if (hand.state === types_1.EHandState.WAITING_FOR_TRUCO_ANSWER) {
35
- instance.commands = [types_1.ESayCommand.TRUCO, types_1.ESayCommand.QUIERO, types_1.ESayCommand.NO_QUIERO];
36
- }
37
- return instance;
38
- }
39
- exports.PlayInstance = PlayInstance;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlayInstance = void 0;
4
+ const types_1 = require("../../types");
5
+ function PlayInstance(hand, teams) {
6
+ var _a, _b, _c;
7
+ const instance = {
8
+ state: hand.state,
9
+ teams,
10
+ truco: hand.truco,
11
+ envido: hand.envido,
12
+ handIdx: hand.idx,
13
+ roundIdx: hand.rounds.length,
14
+ player: hand.currentPlayer,
15
+ commands: [],
16
+ rounds: hand.rounds,
17
+ use(idx, card) {
18
+ return hand.use(idx, card);
19
+ },
20
+ say(command) {
21
+ var _a;
22
+ if (!hand._currentPlayer || !((_a = instance.commands) === null || _a === void 0 ? void 0 : _a.includes(command))) {
23
+ return null;
24
+ }
25
+ hand.commands[command](hand._currentPlayer);
26
+ return command;
27
+ },
28
+ };
29
+ (_a = instance.commands) === null || _a === void 0 ? void 0 : _a.push(types_1.ESayCommand.MAZO);
30
+ (_b = instance.commands) === null || _b === void 0 ? void 0 : _b.push(types_1.ESayCommand.TRUCO);
31
+ if (hand.rounds.length === 1) {
32
+ (_c = instance.commands) === null || _c === void 0 ? void 0 : _c.push(types_1.EEnvidoCommand.ENVIDO);
33
+ }
34
+ if (hand.state === types_1.EHandState.WAITING_FOR_TRUCO_ANSWER) {
35
+ instance.commands = [types_1.ESayCommand.TRUCO, types_1.ESayCommand.QUIERO, types_1.ESayCommand.NO_QUIERO];
36
+ }
37
+ return instance;
38
+ }
39
+ exports.PlayInstance = PlayInstance;
@@ -1,26 +1,26 @@
1
- import { ECommand } from "../../types";
2
- import { ICard } from "./Deck";
3
- export interface IPlayer {
4
- teamIdx: number;
5
- id: string;
6
- session?: string;
7
- hand: Array<ICard>;
8
- commands: Array<ECommand>;
9
- usedHand: Array<ICard>;
10
- prevHand: Array<ICard>;
11
- isTurn: boolean;
12
- isOwner: boolean;
13
- disabled: boolean;
14
- ready: boolean;
15
- setTurn(turn: boolean): void;
16
- getPublicPlayer(): IPublicPlayer;
17
- setSession(session: string): void;
18
- enable(): void;
19
- disable(): void;
20
- setOwner(owner: boolean): void;
21
- setReady(ready: boolean): void;
22
- setHand(hand: Array<ICard>): Array<ICard>;
23
- useCard(idx: number, card: ICard): ICard | null;
24
- }
25
- export type IPublicPlayer = Pick<IPlayer, "id" | "disabled" | "ready" | "hand" | "usedHand" | "prevHand" | "teamIdx" | "session" | "isTurn" | "isOwner">;
26
- export declare function Player(id: string, teamIdx: number, isOwner?: boolean): IPlayer;
1
+ import { ECommand } from "../../types";
2
+ import { ICard } from "./Deck";
3
+ export interface IPlayer {
4
+ teamIdx: number;
5
+ id: string;
6
+ session?: string;
7
+ hand: Array<ICard>;
8
+ commands: Array<ECommand>;
9
+ usedHand: Array<ICard>;
10
+ prevHand: Array<ICard>;
11
+ isTurn: boolean;
12
+ isOwner: boolean;
13
+ disabled: boolean;
14
+ ready: boolean;
15
+ setTurn(turn: boolean): void;
16
+ getPublicPlayer(): IPublicPlayer;
17
+ setSession(session: string): void;
18
+ enable(): void;
19
+ disable(): void;
20
+ setOwner(owner: boolean): void;
21
+ setReady(ready: boolean): void;
22
+ setHand(hand: Array<ICard>): Array<ICard>;
23
+ useCard(idx: number, card: ICard): ICard | null;
24
+ }
25
+ export type IPublicPlayer = Pick<IPlayer, "id" | "disabled" | "ready" | "hand" | "usedHand" | "prevHand" | "teamIdx" | "session" | "isTurn" | "isOwner">;
26
+ export declare function Player(id: string, teamIdx: number, isOwner?: boolean): IPlayer;