trucoshi 0.0.20 → 0.0.22

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.
@@ -1,3 +1,3 @@
1
1
  import { IPlayer } from "../types";
2
- export type IPublicPlayer = Pick<IPlayer, "id" | "disabled" | "ready" | "hand" | "usedHand" | "prevHand" | "teamIdx" | "session">;
2
+ export type IPublicPlayer = Pick<IPlayer, "id" | "disabled" | "ready" | "hand" | "usedHand" | "prevHand" | "teamIdx" | "session" | "isTurn">;
3
3
  export declare function Player(id: string, teamIdx: number): IPlayer;
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
14
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
15
  if (ar || !(i in from)) {
@@ -19,8 +30,15 @@ function Player(id, teamIdx) {
19
30
  commands: [],
20
31
  usedHand: [],
21
32
  prevHand: [],
33
+ isTurn: false,
22
34
  disabled: false,
23
35
  ready: false,
36
+ setTurn: function (turn) {
37
+ player.isTurn = turn;
38
+ },
39
+ getPublicPlayer: function () {
40
+ return __assign(__assign({}, player), { hand: player.hand.map(function () { return "xx"; }), session: undefined });
41
+ },
24
42
  setSession: function (session) {
25
43
  player.session = session;
26
44
  },
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
14
  exports.Team = void 0;
4
15
  function Team(players) {
@@ -12,6 +23,11 @@ function Team(players) {
12
23
  malas: 0,
13
24
  winner: false,
14
25
  },
26
+ getPublicTeam: function (playerSession) {
27
+ return __assign(__assign({}, team), { players: team.players.map(function (player) {
28
+ return player.session === playerSession ? player : player.getPublicPlayer();
29
+ }) });
30
+ },
15
31
  isTeamDisabled: function () {
16
32
  return team.players.reduce(function (prev, curr) { return prev && curr.disabled; }, true);
17
33
  },
package/dist/lib/index.js CHANGED
@@ -85,9 +85,11 @@ var GameLoop = function (match) {
85
85
  return [3 /*break*/, 1];
86
86
  case 3:
87
87
  if (!(play.state === types_1.EHandState.WAITING_PLAY)) return [3 /*break*/, 5];
88
+ play.player.setTurn(true);
88
89
  return [4 /*yield*/, gameloop._onTurn(play)];
89
90
  case 4:
90
91
  _a.sent();
92
+ play.player.setTurn(false);
91
93
  return [3 /*break*/, 1];
92
94
  case 5: return [3 /*break*/, 1];
93
95
  case 6:
@@ -21,8 +21,11 @@ export interface IPlayer {
21
21
  commands: Array<ECommand>;
22
22
  usedHand: Array<ICard>;
23
23
  prevHand: Array<ICard>;
24
+ isTurn: boolean;
24
25
  disabled: boolean;
25
26
  ready: boolean;
27
+ setTurn(turn: boolean): void;
28
+ getPublicPlayer(): IPlayer;
26
29
  setSession(session: string): void;
27
30
  enable(): void;
28
31
  disable(): void;
@@ -33,10 +36,11 @@ export interface IPlayer {
33
36
  export interface ITeam {
34
37
  _players: Map<string, IPlayer>;
35
38
  players: Array<IPlayer>;
36
- points: TeamPoints;
39
+ points: ITeamPoints;
40
+ getPublicTeam(playerSession?: string): ITeam;
37
41
  isTeamDisabled(): boolean;
38
42
  disable(player: IPlayer): boolean;
39
- addPoints(matchPoint: number, points: number): TeamPoints;
43
+ addPoints(matchPoint: number, points: number): ITeamPoints;
40
44
  }
41
45
  export interface IMatch {
42
46
  teams: [ITeam, ITeam];
@@ -45,22 +49,22 @@ export interface IMatch {
45
49
  currentHand: IHand | null;
46
50
  table: ITable;
47
51
  play(): IPlayInstance | null;
48
- addPoints(points: HandPoints): [ITeam, ITeam];
52
+ addPoints(points: IHandPoints): [ITeam, ITeam];
49
53
  pushHand(hand: IHand): void;
50
54
  setCurrentHand(hand: IHand | null): IHand | null;
51
55
  setWinner(winner: ITeam): void;
52
56
  getNextTurn(): IteratorResult<IMatch | null, IMatch | null | void>;
53
57
  }
54
- export interface TeamPoints {
58
+ export interface ITeamPoints {
55
59
  buenas: number;
56
60
  malas: number;
57
61
  winner: boolean;
58
62
  }
59
- export interface HandPoints {
63
+ export interface IHandPoints {
60
64
  0: number;
61
65
  1: number;
62
66
  }
63
- export interface RoundPoints {
67
+ export interface IRoundPoints {
64
68
  0: number;
65
69
  1: number;
66
70
  ties: number;
@@ -127,7 +131,7 @@ export interface IHand {
127
131
  idx: number;
128
132
  state: EHandState;
129
133
  turn: number;
130
- points: HandPoints;
134
+ points: IHandPoints;
131
135
  truco: ITruco;
132
136
  envido: EnvidoState;
133
137
  rounds: Array<IRound>;
@@ -1,7 +1,8 @@
1
1
  import { IPublicPlayer } from "../../lib/classes/Player";
2
2
  import { IPublicTeam } from "../../lib/classes/Team";
3
- import { ILobby, IPlayedCard, ITeam } from "../../lib/types";
3
+ import { IHandPoints, ILobby, IPlayedCard, ITeam } from "../../lib/types";
4
4
  export interface IPublicMatch {
5
+ state: EMatchTableState;
5
6
  winner: ITeam | null;
6
7
  matchSessionId: string;
7
8
  teams: Array<IPublicTeam>;
@@ -9,7 +10,7 @@ export interface IPublicMatch {
9
10
  me: IPublicPlayer;
10
11
  rounds: IPlayedCard[][];
11
12
  prevRounds: IPlayedCard[][] | null;
12
- state: EMatchTableState;
13
+ prevHandPoints?: IHandPoints | null;
13
14
  }
14
15
  export interface IMatchTable {
15
16
  matchSessionId: string;
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  Object.defineProperty(exports, "__esModule", { value: true });
14
3
  exports.MatchTable = exports.EMatchTableState = void 0;
15
4
  var lib_1 = require("../../lib");
@@ -48,34 +37,38 @@ function MatchTable(matchSessionId, teamSize) {
48
37
  return search || null;
49
38
  },
50
39
  getPublicMatch: function (userSession) {
51
- var _a, _b, _c, _d, _e, _f;
40
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
52
41
  var lobby = matchTable.lobby;
53
42
  var winner = ((_a = lobby.gameLoop) === null || _a === void 0 ? void 0 : _a.winner) || null;
54
43
  var lastHandIdx = (((_b = lobby.gameLoop) === null || _b === void 0 ? void 0 : _b.hands.length) || 1) - 1;
55
44
  var rounds = ((_d = (_c = lobby.gameLoop) === null || _c === void 0 ? void 0 : _c.hands[lastHandIdx]) === null || _d === void 0 ? void 0 : _d.rounds.map(function (round) { return round.cards; })) || [];
56
45
  var prevHandIdx = lastHandIdx - 1;
57
- var prevRounds = prevHandIdx !== -1 && rounds[0].length === 0
58
- ? (_f = (_e = lobby.gameLoop) === null || _e === void 0 ? void 0 : _e.hands[prevHandIdx]) === null || _f === void 0 ? void 0 : _f.rounds.map(function (round) { return round.cards; })
46
+ var hasPrevHand = prevHandIdx !== -1;
47
+ var newHandNotStarted = ((_e = rounds[0]) === null || _e === void 0 ? void 0 : _e.length) === 0;
48
+ var prevRounds = hasPrevHand && newHandNotStarted
49
+ ? (_g = (_f = lobby.gameLoop) === null || _f === void 0 ? void 0 : _f.hands[prevHandIdx]) === null || _g === void 0 ? void 0 : _g.rounds.map(function (round) { return round.cards; })
59
50
  : null;
51
+ var prevHandPoints = prevRounds && ((_j = (_h = lobby.gameLoop) === null || _h === void 0 ? void 0 : _h.hands[prevHandIdx]) === null || _j === void 0 ? void 0 : _j.points);
60
52
  var players = lobby.players.filter(function (player) { return Boolean(player); });
61
53
  var currentPlayerIdx = players.findIndex(function (player) { return player && player.session === userSession; });
62
54
  var me = players[currentPlayerIdx];
63
55
  var cut = players.slice(currentPlayerIdx, players.length);
64
56
  var end = players.slice(0, currentPlayerIdx);
65
- var publicPlayers = cut.concat(end).map(function (player) {
66
- return (player === null || player === void 0 ? void 0 : player.session) === userSession
67
- ? player
68
- : __assign(__assign({}, player), { session: undefined, hand: player === null || player === void 0 ? void 0 : player.hand.map(function () { return "xx"; }) });
69
- });
57
+ var publicPlayers = cut
58
+ .concat(end)
59
+ .map(function (player) { return ((player === null || player === void 0 ? void 0 : player.session) === userSession ? player : player.getPublicPlayer()); });
60
+ var teams = ((_k = lobby.gameLoop) === null || _k === void 0 ? void 0 : _k.teams) || lobby.teams;
61
+ var publicTeams = teams.map(function (team) { return team.getPublicTeam(userSession); });
70
62
  return {
71
63
  me: me,
72
64
  winner: winner,
73
65
  matchSessionId: matchTable.matchSessionId,
74
66
  state: matchTable.state(),
75
- teams: [],
67
+ teams: publicTeams,
76
68
  players: publicPlayers,
77
69
  rounds: rounds || [[]],
78
70
  prevRounds: prevRounds || null,
71
+ prevHandPoints: prevHandPoints,
79
72
  };
80
73
  },
81
74
  };
@@ -344,10 +344,10 @@ io.on("connection", function (_socket) {
344
344
  users.set(session, updatedUser);
345
345
  socket.session = session;
346
346
  var currentTable = currentMatchId ? tables.get(currentMatchId) : null;
347
- if (currentTable && currentTable.isSessionPlaying(session)) {
347
+ if (currentTable) {
348
348
  addSocketToUser(session, socket.id, currentTable);
349
349
  socket.join(currentTable.matchSessionId);
350
- if (session === ((_a = currentTable.currentPlayer) === null || _a === void 0 ? void 0 : _a.session)) {
350
+ if (currentTable.isSessionPlaying(session) && session === ((_a = currentTable.currentPlayer) === null || _a === void 0 ? void 0 : _a.session)) {
351
351
  try {
352
352
  var _b = turns.get(currentTable.matchSessionId) || {}, play = _b.play, resolve = _b.resolve;
353
353
  if (!play) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trucoshi",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "main": "build/lib/trucoshi.js",
5
5
  "license": "GPL-3.0",
6
6
  "scripts": {