trucoshi 0.0.4 → 0.0.5

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 (41) hide show
  1. package/README.md +3 -2
  2. package/build/lib/classes/Hand.js +87 -29
  3. package/build/lib/classes/Match.d.ts +2 -2
  4. package/build/lib/classes/Match.js +2 -3
  5. package/build/lib/classes/Play.js +6 -12
  6. package/build/lib/classes/Player.js +12 -0
  7. package/build/lib/classes/Round.d.ts +1 -1
  8. package/build/lib/classes/Round.js +5 -1
  9. package/build/lib/classes/Table.d.ts +2 -2
  10. package/build/lib/classes/Table.js +3 -10
  11. package/build/lib/classes/Team.js +8 -0
  12. package/build/lib/classes/Truco.d.ts +2 -0
  13. package/build/lib/classes/Truco.js +110 -0
  14. package/build/lib/constants.d.ts +6 -0
  15. package/build/lib/constants.js +8 -1
  16. package/build/lib/index.d.ts +13 -6
  17. package/build/lib/index.js +83 -10
  18. package/build/lib/types.d.ts +50 -5
  19. package/build/lib/types.js +2 -0
  20. package/build/lib/utils.d.ts +2 -2
  21. package/build/lib/utils.js +1 -18
  22. package/build/server/match.d.ts +0 -0
  23. package/build/server/match.js +1 -0
  24. package/build/test/autoplay.js +11 -2
  25. package/build/test/play.js +70 -51
  26. package/package.json +1 -1
  27. package/src/lib/classes/Hand.ts +82 -26
  28. package/src/lib/classes/Match.ts +3 -4
  29. package/src/lib/classes/Play.ts +9 -17
  30. package/src/lib/classes/Player.ts +13 -1
  31. package/src/lib/classes/Round.ts +5 -1
  32. package/src/lib/classes/Table.ts +8 -13
  33. package/src/lib/classes/Team.ts +7 -0
  34. package/src/lib/classes/Truco.ts +72 -0
  35. package/src/lib/constants.ts +8 -0
  36. package/src/lib/index.ts +95 -17
  37. package/src/lib/types.ts +51 -5
  38. package/src/lib/utils.ts +1 -22
  39. package/src/server/match.ts +0 -0
  40. package/src/test/autoplay.ts +12 -2
  41. package/src/test/play.ts +64 -55
@@ -39,11 +39,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.Trucoshi = void 0;
40
40
  var Match_1 = require("./classes/Match");
41
41
  var Player_1 = require("./classes/Player");
42
+ var Table_1 = require("./classes/Table");
42
43
  var Team_1 = require("./classes/Team");
44
+ var constants_1 = require("./constants");
45
+ var types_1 = require("./types");
43
46
  var GameLoop = function (match) {
44
47
  var gameloop = {
48
+ _onTruco: function () { return Promise.resolve(); },
45
49
  _onTurn: function () { return Promise.resolve(); },
46
50
  _onWinner: function () { return Promise.resolve(); },
51
+ onTruco: function (callback) {
52
+ gameloop._onTruco = callback;
53
+ return gameloop;
54
+ },
47
55
  onTurn: function (callback) {
48
56
  gameloop._onTurn = callback;
49
57
  return gameloop;
@@ -52,23 +60,31 @@ var GameLoop = function (match) {
52
60
  gameloop._onWinner = callback;
53
61
  return gameloop;
54
62
  },
55
- start: function () {
63
+ begin: function () {
56
64
  return __awaiter(this, void 0, void 0, function () {
57
65
  var play;
58
66
  return __generator(this, function (_a) {
59
67
  switch (_a.label) {
60
68
  case 0:
61
- if (!!match.winner) return [3 /*break*/, 2];
69
+ if (!!match.winner) return [3 /*break*/, 5];
62
70
  play = match.play();
63
71
  if (!play || !play.player) {
64
72
  return [3 /*break*/, 0];
65
73
  }
66
- return [4 /*yield*/, gameloop._onTurn(play)];
74
+ if (!(play.state === types_1.EHandState.WAITING_FOR_TRUCO_ANSWER)) return [3 /*break*/, 2];
75
+ return [4 /*yield*/, gameloop._onTruco(play)];
67
76
  case 1:
68
77
  _a.sent();
69
78
  return [3 /*break*/, 0];
70
- case 2: return [4 /*yield*/, gameloop._onWinner(match.winner, match.teams)];
79
+ case 2:
80
+ if (!(play.state === types_1.EHandState.WAITING_PLAY)) return [3 /*break*/, 4];
81
+ return [4 /*yield*/, gameloop._onTurn(play)];
71
82
  case 3:
83
+ _a.sent();
84
+ return [3 /*break*/, 0];
85
+ case 4: return [3 /*break*/, 0];
86
+ case 5: return [4 /*yield*/, gameloop._onWinner(match.winner, match.teams)];
87
+ case 6:
72
88
  _a.sent();
73
89
  return [2 /*return*/];
74
90
  }
@@ -78,11 +94,68 @@ var GameLoop = function (match) {
78
94
  };
79
95
  return gameloop;
80
96
  };
81
- function Trucoshi(idsTeam0, idsTeam1, matchPoint) {
82
- var teams = [
83
- (0, Team_1.Team)(idsTeam0.map(function (id) { return (0, Player_1.Player)(id, 0); })),
84
- (0, Team_1.Team)(idsTeam1.map(function (id) { return (0, Player_1.Player)(id, 1); })),
85
- ];
86
- return GameLoop((0, Match_1.Match)(teams, matchPoint));
97
+ function Trucoshi(teamSize) {
98
+ var trucoshi = {
99
+ lastTeamIdx: 1,
100
+ _players: new Map(),
101
+ get players() {
102
+ return Array.from(trucoshi._players.values());
103
+ },
104
+ teams: [],
105
+ table: null,
106
+ maxPlayers: teamSize ? teamSize * 2 : 6,
107
+ full: false,
108
+ ready: false,
109
+ calculateReady: function () {
110
+ trucoshi.ready = trucoshi.players.reduce(function (prev, curr) { return prev && curr.ready; }, true);
111
+ return trucoshi.ready;
112
+ },
113
+ calculateFull: function () {
114
+ trucoshi.full = trucoshi._players.size >= trucoshi.maxPlayers;
115
+ return trucoshi.full;
116
+ },
117
+ addPlayer: function (id, teamIdx) {
118
+ var maxSize = teamSize ? teamSize : 3;
119
+ if (trucoshi.full || trucoshi.players.filter(function (p) { return p.teamIdx === teamIdx; }).length > maxSize) {
120
+ throw new Error(constants_1.GAME_ERROR.TEAM_IS_FULL);
121
+ }
122
+ var player = (0, Player_1.Player)(id, teamIdx !== undefined ? teamIdx : Number(!trucoshi.lastTeamIdx));
123
+ trucoshi.lastTeamIdx = Number(!trucoshi.lastTeamIdx);
124
+ trucoshi._players.set(id, player);
125
+ trucoshi.calculateFull();
126
+ trucoshi.calculateReady();
127
+ return player;
128
+ },
129
+ removePlayer: function (id) {
130
+ trucoshi._players.delete(id);
131
+ trucoshi.calculateFull();
132
+ trucoshi.calculateReady();
133
+ return trucoshi;
134
+ },
135
+ startMatch: function (matchPoint) {
136
+ if (matchPoint === void 0) { matchPoint = 9; }
137
+ trucoshi.calculateReady();
138
+ var teamSize = trucoshi._players.size / 2;
139
+ if (!constants_1.TEAM_SIZE_VALUES.includes(teamSize)) {
140
+ throw new Error(constants_1.GAME_ERROR.UNEXPECTED_TEAM_SIZE);
141
+ }
142
+ if (!trucoshi.ready) {
143
+ throw new Error(constants_1.GAME_ERROR.TEAM_NOT_READY);
144
+ }
145
+ trucoshi.teams.push((0, Team_1.Team)(trucoshi.players.filter(function (p) { return p.teamIdx === 0; })));
146
+ trucoshi.teams.push((0, Team_1.Team)(trucoshi.players.filter(function (p) { return p.teamIdx === 1; })));
147
+ if (trucoshi.teams[0].players.length !== teamSize ||
148
+ trucoshi.teams[1].players.length !== teamSize) {
149
+ throw new Error(constants_1.GAME_ERROR.UNEXPECTED_TEAM_SIZE);
150
+ }
151
+ trucoshi.table = (0, Table_1.Table)(trucoshi.players, trucoshi.teams);
152
+ return GameLoop((0, Match_1.Match)(trucoshi.table, trucoshi.teams, matchPoint));
153
+ },
154
+ };
155
+ return {
156
+ addPlayer: trucoshi.addPlayer,
157
+ removePlayer: trucoshi.removePlayer,
158
+ startMatch: trucoshi.startMatch,
159
+ };
87
160
  }
88
161
  exports.Trucoshi = Trucoshi;
@@ -1,3 +1,4 @@
1
+ import { IGameLoop } from ".";
1
2
  import { CARDS } from "./constants";
2
3
  export type ICard = keyof typeof CARDS;
3
4
  export interface IDeck {
@@ -14,7 +15,13 @@ export interface IPlayer {
14
15
  teamIdx: number;
15
16
  id: string;
16
17
  hand: Array<ICard>;
18
+ commands: Array<ECommand>;
17
19
  usedHand: Array<ICard>;
20
+ disabled: boolean;
21
+ ready: boolean;
22
+ enable(): void;
23
+ disable(): void;
24
+ setReady(ready: boolean): void;
18
25
  setHand(hand: Array<ICard>): Array<ICard>;
19
26
  useCard(idx: number): ICard | null;
20
27
  }
@@ -22,6 +29,8 @@ export interface ITeam {
22
29
  _players: Map<string, IPlayer>;
23
30
  players: Array<IPlayer>;
24
31
  points: TeamPoints;
32
+ isTeamDisabled(): boolean;
33
+ disable(player: IPlayer): boolean;
25
34
  addPoints(matchPoint: number, points: number): TeamPoints;
26
35
  }
27
36
  export interface IMatch {
@@ -52,6 +61,8 @@ export interface RoundPoints {
52
61
  ties: number;
53
62
  }
54
63
  export declare enum ESayCommand {
64
+ QUIERO = "QUIERO",
65
+ NO_QUIERO = "NO_QUIERO",
55
66
  TRUCO = "TRUCO",
56
67
  MAZO = "MAZO",
57
68
  FLOR = "FLOR",
@@ -64,9 +75,21 @@ export declare enum EEnvidoCommand {
64
75
  FALTA_ENVIDO = "FALTA_ENVIDO"
65
76
  }
66
77
  export type ECommand = ESayCommand | EEnvidoCommand;
67
- export interface TrucoState {
78
+ export interface ITruco {
68
79
  state: 1 | 2 | 3 | 4;
69
80
  teamIdx: 0 | 1 | null;
81
+ answer: boolean | null;
82
+ turn: number;
83
+ players: Array<IPlayer>;
84
+ currentPlayer: IPlayer | null;
85
+ generator: Generator<ITruco, void, unknown>;
86
+ sayTruco(teamIdx: 0 | 1, players: Array<IPlayer>): ITruco;
87
+ setPlayers(players: Array<IPlayer>): void;
88
+ setAnswer(answer: boolean | null): ITruco;
89
+ setTurn(turn: number): number;
90
+ setTeam(idx: 0 | 1): 0 | 1;
91
+ setCurrentPlayer(player: IPlayer | null): IPlayer | null;
92
+ getNextPlayer(): IteratorResult<ITruco, ITruco | void>;
70
93
  }
71
94
  export interface EnvidoState {
72
95
  accept: number;
@@ -78,7 +101,7 @@ export interface IPlayInstance {
78
101
  handIdx: number;
79
102
  roundIdx: number;
80
103
  state: EHandState;
81
- truco: TrucoState;
104
+ truco: ITruco;
82
105
  envido: EnvidoState;
83
106
  player: IPlayer | null;
84
107
  commands: Array<ECommand> | null;
@@ -100,15 +123,18 @@ export interface IHand {
100
123
  state: EHandState;
101
124
  turn: number;
102
125
  points: HandPoints;
103
- truco: TrucoState;
126
+ truco: ITruco;
104
127
  envido: EnvidoState;
105
128
  rounds: Array<IRound>;
106
- currentPlayer: IPlayer | null;
129
+ _currentPlayer: IPlayer | null;
130
+ get currentPlayer(): IPlayer | null;
131
+ set currentPlayer(player: IPlayer | null);
107
132
  currentRound: IRound | null;
108
- disabledPlayerIds: Array<string>;
109
133
  commands: IHandCommands;
110
134
  finished: () => boolean;
111
135
  play(): IPlayInstance | null;
136
+ nextTurn(): void;
137
+ use(idx: number): ICard | null;
112
138
  pushRound(round: IRound): IRound;
113
139
  setTurn(turn: number): IPlayer;
114
140
  addPoints(team: 0 | 1, points: number): void;
@@ -118,6 +144,23 @@ export interface IHand {
118
144
  setState(state: EHandState): EHandState;
119
145
  getNextPlayer(): IteratorResult<IHand, IHand | void>;
120
146
  }
147
+ export interface IPrivateTrucoshi {
148
+ lastTeamIdx: 0 | 1;
149
+ _players: Map<string, IPlayer>;
150
+ get players(): Array<IPlayer>;
151
+ teams: Array<ITeam>;
152
+ maxPlayers: number;
153
+ table: ITable | null;
154
+ ready: boolean;
155
+ full: boolean;
156
+ addPlayer(id: string, teamIdx?: 0 | 1): IPlayer;
157
+ removePlayer(id: string): ITrucoshi;
158
+ calculateReady(): boolean;
159
+ calculateFull(): boolean;
160
+ startMatch(matchPoint?: 9 | 12 | 15): IGameLoop;
161
+ }
162
+ export interface ITrucoshi extends Pick<IPrivateTrucoshi, 'addPlayer' | 'removePlayer' | 'startMatch'> {
163
+ }
121
164
  export interface ITable {
122
165
  forehandIdx: number;
123
166
  cards: Array<Array<IPlayedCard>>;
@@ -131,6 +174,8 @@ export interface IRound {
131
174
  winner: IPlayer | null;
132
175
  highest: number;
133
176
  cards: Array<IPlayedCard>;
177
+ turn: number;
178
+ nextTurn(): void;
134
179
  use(playedCard: IPlayedCard): ICard;
135
180
  }
136
181
  export type IEnvidoCalculatorResult = {
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EHandState = exports.EEnvidoCommand = exports.ESayCommand = void 0;
4
4
  var ESayCommand;
5
5
  (function (ESayCommand) {
6
+ ESayCommand["QUIERO"] = "QUIERO";
7
+ ESayCommand["NO_QUIERO"] = "NO_QUIERO";
6
8
  ESayCommand["TRUCO"] = "TRUCO";
7
9
  ESayCommand["MAZO"] = "MAZO";
8
10
  ESayCommand["FLOR"] = "FLOR";
@@ -1,5 +1,5 @@
1
- import { ICard, IRound, ITeam } from "./types";
1
+ import { ICard, IRound } from "./types";
2
2
  export declare function getMaxNumberIndex<T = number>(array: Array<T>): number;
3
3
  export declare function getCardValue(card: ICard): number;
4
4
  export declare function shuffleArray<T = unknown>(array: Array<T>): T[];
5
- export declare function checkHandWinner(rounds: Array<IRound>, forehandTeamIdx: 0 | 1, disabledPlayerIds: Array<string>, teams: [ITeam, ITeam]): null | 0 | 1;
5
+ export declare function checkHandWinner(rounds: Array<IRound>, forehandTeamIdx: 0 | 1): null | 0 | 1;
@@ -23,25 +23,8 @@ function shuffleArray(array) {
23
23
  return array;
24
24
  }
25
25
  exports.shuffleArray = shuffleArray;
26
- function checkHandWinner(rounds, forehandTeamIdx, disabledPlayerIds, teams) {
26
+ function checkHandWinner(rounds, forehandTeamIdx) {
27
27
  var _a, _b;
28
- var winningTeamIdx = null;
29
- // End hand if all players in one team go MAZO
30
- if (disabledPlayerIds.length) {
31
- var disabledTeams = teams.map(function (team) {
32
- var forfeited = team.players.filter(function (player) { return disabledPlayerIds.includes(player.id); });
33
- return forfeited.length === team.players.length;
34
- });
35
- if (disabledTeams[0] && disabledTeams[1]) {
36
- return forehandTeamIdx;
37
- }
38
- if (disabledTeams[0]) {
39
- return 1;
40
- }
41
- if (disabledTeams[1]) {
42
- return 0;
43
- }
44
- }
45
28
  var roundsWon = {
46
29
  0: 0,
47
30
  1: 0,
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -38,8 +38,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var lib_1 = require("../lib");
40
40
  (function () { return __awaiter(void 0, void 0, void 0, function () {
41
+ var trucoshi;
41
42
  return __generator(this, function (_a) {
42
- (0, lib_1.Trucoshi)(["lukini", "guada", "day"], ["denoph", "juli", "fran"], 9)
43
+ trucoshi = (0, lib_1.Trucoshi)();
44
+ trucoshi.addPlayer("lukini").setReady(true);
45
+ trucoshi.addPlayer("denoph").setReady(true);
46
+ trucoshi.addPlayer("guada").setReady(true);
47
+ trucoshi.addPlayer("juli").setReady(true);
48
+ trucoshi.addPlayer("day").setReady(true);
49
+ trucoshi.addPlayer("fran").setReady(true);
50
+ trucoshi
51
+ .startMatch()
43
52
  .onTurn(function (play) { return __awaiter(void 0, void 0, void 0, function () {
44
53
  var name, randomIdx, handString, card;
45
54
  var _a;
@@ -79,7 +88,7 @@ var lib_1 = require("../lib");
79
88
  return [2 /*return*/];
80
89
  });
81
90
  }); })
82
- .start();
91
+ .begin();
83
92
  return [2 /*return*/];
84
93
  });
85
94
  }); })();
@@ -70,7 +70,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
70
70
  Object.defineProperty(exports, "__esModule", { value: true });
71
71
  var readline = __importStar(require("readline"));
72
72
  var lib_1 = require("../lib");
73
- var types_1 = require("../lib/types");
74
73
  var command = function (title, onLine) {
75
74
  var promise = function () {
76
75
  return new Promise(function (resolve) {
@@ -111,70 +110,90 @@ var command = function (title, onLine) {
111
110
  };
112
111
  return promise;
113
112
  };
113
+ var playCommand = function (play) {
114
+ var _a, _b, _d;
115
+ return command("".concat((_a = play.player) === null || _a === void 0 ? void 0 : _a.id, " elije una carta [").concat((_b = play.player) === null || _b === void 0 ? void 0 : _b.hand.map(function (_c, i) { return i + 1; }), "]: ").concat(JSON.stringify((_d = play.player) === null || _d === void 0 ? void 0 : _d.hand), "\n"), function (idx) { return __awaiter(void 0, void 0, void 0, function () {
116
+ var playedCard, handString;
117
+ var _a;
118
+ return __generator(this, function (_b) {
119
+ playedCard = play.use(Number(idx) - 1);
120
+ if (!playedCard) {
121
+ return [2 /*return*/, Promise.reject()];
122
+ }
123
+ handString = JSON.stringify((_a = play.player) === null || _a === void 0 ? void 0 : _a.hand);
124
+ console.log("\n".concat(handString, "\nUsing ").concat(playedCard));
125
+ console.log(play.rounds && play.rounds.length
126
+ ? play.rounds.map(function (round) {
127
+ return round.cards.length ? round.cards.map(function (c) { return [c.player.id, c.card]; }) : "";
128
+ })
129
+ : "");
130
+ return [2 /*return*/, Promise.resolve()];
131
+ });
132
+ }); });
133
+ };
134
+ var sayCommand = function (play, canPlay) {
135
+ var _a, _b;
136
+ return command("".concat((_a = play.player) === null || _a === void 0 ? void 0 : _a.id, " elije una accion [").concat(canPlay ? "0," : "").concat((_b = play.commands) === null || _b === void 0 ? void 0 : _b.map(function (_c, i) { return i + 1; }), "]: ").concat(canPlay ? JSON.stringify(__spreadArray(["CARTA"], (play.commands || []), true)) : JSON.stringify(play.commands), "\n"), function (idx, close) { return __awaiter(void 0, void 0, void 0, function () {
137
+ var selectedCommand;
138
+ var _a;
139
+ return __generator(this, function (_b) {
140
+ switch (_b.label) {
141
+ case 0:
142
+ selectedCommand = (_a = play.commands) === null || _a === void 0 ? void 0 : _a[Number(idx) - 1];
143
+ if (selectedCommand) {
144
+ play.say(selectedCommand);
145
+ return [2 /*return*/, Promise.resolve()];
146
+ }
147
+ if (!(idx === "0" && canPlay)) return [3 /*break*/, 2];
148
+ close();
149
+ return [4 /*yield*/, playCommand(play)()];
150
+ case 1:
151
+ _b.sent();
152
+ return [2 /*return*/, Promise.resolve()];
153
+ case 2: return [2 /*return*/, Promise.reject()];
154
+ }
155
+ });
156
+ }); });
157
+ };
114
158
  (function () { return __awaiter(void 0, void 0, void 0, function () {
159
+ var trucoshi;
115
160
  return __generator(this, function (_a) {
116
- (0, lib_1.Trucoshi)(["lukini", "guada"], ["denoph", "juli"], 9)
161
+ trucoshi = (0, lib_1.Trucoshi)();
162
+ trucoshi.addPlayer("lukini", 0).setReady(true);
163
+ trucoshi.addPlayer("guada", 0).setReady(true);
164
+ trucoshi.addPlayer("denoph", 1).setReady(true);
165
+ trucoshi.addPlayer("juli", 1).setReady(true);
166
+ trucoshi
167
+ .startMatch()
168
+ .onTruco(function (play) { return __awaiter(void 0, void 0, void 0, function () {
169
+ return __generator(this, function (_a) {
170
+ switch (_a.label) {
171
+ case 0: return [4 /*yield*/, sayCommand(play, false)()];
172
+ case 1:
173
+ _a.sent();
174
+ return [2 /*return*/];
175
+ }
176
+ });
177
+ }); })
117
178
  .onTurn(function (play) { return __awaiter(void 0, void 0, void 0, function () {
118
- var name, canPlay, sayCommand, playCommand;
119
- var _a, _b, _d, _e, _f, _g;
120
- return __generator(this, function (_h) {
121
- switch (_h.label) {
179
+ var name;
180
+ var _a;
181
+ return __generator(this, function (_b) {
182
+ switch (_b.label) {
122
183
  case 0:
123
184
  name = (_a = play.player) === null || _a === void 0 ? void 0 : _a.id.toUpperCase();
124
185
  console.log("=== Mano ".concat(play.handIdx, " === Ronda ").concat(play.roundIdx, " === Turno de ").concat(name, " ==="));
125
186
  play.teams.map(function (team, id) {
126
187
  return console.log("=== Team ".concat(id, " = ").concat(team.points.malas, " malas ").concat(team.points.buenas, " buenas"));
127
188
  });
128
- canPlay = play.state === types_1.EHandState.WAITING_PLAY;
129
189
  console.log(play.rounds && play.rounds.length
130
190
  ? play.rounds.map(function (round) {
131
191
  return round.cards.length ? round.cards.map(function (c) { return [c.player.id, c.card]; }) : "";
132
192
  })
133
193
  : "");
134
- sayCommand = command("".concat((_b = play.player) === null || _b === void 0 ? void 0 : _b.id, " elije una accion [").concat(canPlay ? "0," : "").concat((_d = play.commands) === null || _d === void 0 ? void 0 : _d.map(function (_c, i) { return i + 1; }), "]: ").concat(canPlay
135
- ? JSON.stringify(__spreadArray(["CARTA"], (play.commands || []), true))
136
- : JSON.stringify(play.commands), "\n"), function (idx, close) { return __awaiter(void 0, void 0, void 0, function () {
137
- var selectedCommand;
138
- var _a;
139
- return __generator(this, function (_b) {
140
- switch (_b.label) {
141
- case 0:
142
- selectedCommand = (_a = play.commands) === null || _a === void 0 ? void 0 : _a[Number(idx) - 1];
143
- if (selectedCommand) {
144
- play.say(selectedCommand);
145
- return [2 /*return*/, Promise.resolve()];
146
- }
147
- if (!(idx === "0" && canPlay)) return [3 /*break*/, 2];
148
- close();
149
- return [4 /*yield*/, playCommand()];
150
- case 1:
151
- _b.sent();
152
- return [2 /*return*/, Promise.resolve()];
153
- case 2: return [2 /*return*/, Promise.reject()];
154
- }
155
- });
156
- }); });
157
- playCommand = command("".concat((_e = play.player) === null || _e === void 0 ? void 0 : _e.id, " elije una carta [").concat((_f = play.player) === null || _f === void 0 ? void 0 : _f.hand.map(function (_c, i) { return i + 1; }), "]: ").concat(JSON.stringify((_g = play.player) === null || _g === void 0 ? void 0 : _g.hand), "\n"), function (idx) { return __awaiter(void 0, void 0, void 0, function () {
158
- var playedCard, handString;
159
- var _a;
160
- return __generator(this, function (_b) {
161
- playedCard = play.use(Number(idx) - 1);
162
- if (!playedCard) {
163
- return [2 /*return*/, Promise.reject()];
164
- }
165
- handString = JSON.stringify((_a = play.player) === null || _a === void 0 ? void 0 : _a.hand);
166
- console.log("\n".concat(handString, "\nUsing ").concat(playedCard));
167
- console.log(play.rounds && play.rounds.length
168
- ? play.rounds.map(function (round) {
169
- return round.cards.length ? round.cards.map(function (c) { return [c.player.id, c.card]; }) : "";
170
- })
171
- : "");
172
- return [2 /*return*/, Promise.resolve()];
173
- });
174
- }); });
175
- return [4 /*yield*/, sayCommand()];
194
+ return [4 /*yield*/, sayCommand(play, true)()];
176
195
  case 1:
177
- _h.sent();
196
+ _b.sent();
178
197
  return [2 /*return*/];
179
198
  }
180
199
  });
@@ -188,7 +207,7 @@ var command = function (title, onLine) {
188
207
  return [2 /*return*/];
189
208
  });
190
209
  }); })
191
- .start();
210
+ .begin();
192
211
  return [2 /*return*/];
193
212
  });
194
213
  }); })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trucoshi",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "main": "build/lib/trucoshi.js",
5
5
  "license": "GPL-3.0",
6
6
  "scripts": {