@brajkowski/connect4-multiplayer-client
Advanced tools
Comparing version 1.0.0-beta.7 to 1.0.0-beta.8
export declare class Connect4Client { | ||
private ws; | ||
private session; | ||
private user; | ||
private sessionName; | ||
private username; | ||
private onOpenCallback?; | ||
private sessionCreatedCallback?; | ||
private joinedSessionCallback?; | ||
private sessionNotFoundCallback?; | ||
private onSessionCreatedCallback?; | ||
private onSessionJoinedCallback?; | ||
private onSessionNotFoundCallback?; | ||
private onOpponentJoinCallback?; | ||
@@ -17,4 +17,4 @@ private onOpponentMoveCallback?; | ||
close(): void; | ||
createSession(user: string): void; | ||
joinSession(session: string, user: string): void; | ||
createSession(username: string): void; | ||
joinSession(sessionName: string, username: string): void; | ||
makeMove(column: number): void; | ||
@@ -24,3 +24,3 @@ quit(): void; | ||
onSessionCreated(callback: (sessionName: string) => any): void; | ||
onJoinedSession(callback: (opponentUsername: string) => any): void; | ||
onSessionJoined(callback: (opponentUsername: string) => any): void; | ||
onSessionNotFound(callback: () => any): void; | ||
@@ -27,0 +27,0 @@ onOpponentJoin(callback: (username: string) => any): void; |
@@ -26,6 +26,6 @@ "use strict"; | ||
}; | ||
Connect4Client.prototype.createSession = function (user) { | ||
this.user = user; | ||
Connect4Client.prototype.createSession = function (username) { | ||
this.username = username; | ||
var packet = { | ||
user: this.user, | ||
user: this.username, | ||
action: connect4_multiplayer_common_1.ClientAction.CREATE_SESSION, | ||
@@ -35,8 +35,8 @@ }; | ||
}; | ||
Connect4Client.prototype.joinSession = function (session, user) { | ||
this.session = session; | ||
this.user = user; | ||
Connect4Client.prototype.joinSession = function (sessionName, username) { | ||
this.sessionName = sessionName; | ||
this.username = username; | ||
var packet = { | ||
session: this.session, | ||
user: this.user, | ||
session: this.sessionName, | ||
user: this.username, | ||
action: connect4_multiplayer_common_1.ClientAction.JOIN_SESSION, | ||
@@ -48,4 +48,4 @@ }; | ||
var packet = { | ||
session: this.session, | ||
user: this.user, | ||
session: this.sessionName, | ||
user: this.username, | ||
action: connect4_multiplayer_common_1.ClientAction.MOVE, | ||
@@ -58,4 +58,4 @@ column: column, | ||
var packet = { | ||
session: this.session, | ||
user: this.user, | ||
session: this.sessionName, | ||
user: this.username, | ||
action: connect4_multiplayer_common_1.ClientAction.QUIT, | ||
@@ -70,9 +70,9 @@ }; | ||
Connect4Client.prototype.onSessionCreated = function (callback) { | ||
this.sessionCreatedCallback = callback; | ||
this.onSessionCreatedCallback = callback; | ||
}; | ||
Connect4Client.prototype.onJoinedSession = function (callback) { | ||
this.joinedSessionCallback = callback; | ||
Connect4Client.prototype.onSessionJoined = function (callback) { | ||
this.onSessionJoinedCallback = callback; | ||
}; | ||
Connect4Client.prototype.onSessionNotFound = function (callback) { | ||
this.sessionNotFoundCallback = callback; | ||
this.onSessionNotFoundCallback = callback; | ||
}; | ||
@@ -102,10 +102,11 @@ Connect4Client.prototype.onOpponentJoin = function (callback) { | ||
case connect4_multiplayer_common_1.ServerAction.SESSION_CREATED: | ||
this.session = packet.newSession; | ||
(_a = this.sessionCreatedCallback) === null || _a === void 0 ? void 0 : _a.call(this, this.session); | ||
this.sessionName = packet.newSession; | ||
(_a = this.onSessionCreatedCallback) === null || _a === void 0 ? void 0 : _a.call(this, this.sessionName); | ||
break; | ||
case connect4_multiplayer_common_1.ServerAction.JOINED_SESSION: | ||
(_b = this.joinedSessionCallback) === null || _b === void 0 ? void 0 : _b.call(this, packet.user); | ||
(_b = this.onSessionJoinedCallback) === null || _b === void 0 ? void 0 : _b.call(this, packet.user); | ||
break; | ||
case connect4_multiplayer_common_1.ServerAction.SESSION_NOT_FOUND: | ||
(_c = this.sessionNotFoundCallback) === null || _c === void 0 ? void 0 : _c.call(this); | ||
(_c = this.onSessionNotFoundCallback) === null || _c === void 0 ? void 0 : _c.call(this); | ||
break; | ||
case connect4_multiplayer_common_1.ServerAction.OPPONENT_JOIN: | ||
@@ -112,0 +113,0 @@ (_d = this.onOpponentJoinCallback) === null || _d === void 0 ? void 0 : _d.call(this, packet.user); |
@@ -8,4 +8,3 @@ { | ||
"test": "echo \"Error: no test specified\" && exit 1", | ||
"build": "rimraf ./dist && tsc", | ||
"start": "ts-node src/main.ts" | ||
"build": "rimraf ./dist && tsc" | ||
}, | ||
@@ -49,5 +48,5 @@ "repository": { | ||
"dependencies": { | ||
"@brajkowski/connect4-multiplayer-common": "^1.0.0-beta.9" | ||
"@brajkowski/connect4-multiplayer-common": "^1.0.0" | ||
}, | ||
"version": "1.0.0-beta.7" | ||
"version": "1.0.0-beta.8" | ||
} |
# Connect 4 Multiplayer: Client | ||
[![Build](https://github.com/brajkowski/connect4-multiplayer-client/actions/workflows/build.yml/badge.svg)](https://github.com/brajkowski/connect4-multiplayer-client/actions/workflows/build.yml) | ||
[![npm:latest](https://img.shields.io/npm/v/@brajkowski/connect4-multiplayer-client/latest?color=limegreen&logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-multiplayer-client) | ||
[![npm:beta](https://img.shields.io/npm/v/@brajkowski/connect4-multiplayer-client/beta?logo=npm)](https://www.npmjs.com/package/@brajkowski/connect4-multiplayer-client) | ||
@@ -19,4 +20,61 @@ [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) | ||
TODO. | ||
This client is designed to connect to an instance of the [connect4-multiplayer-server](https://github.com/brajkowski/connect4-multiplayer-server). | ||
To use the client, simply create an instance and open a connection to the server: | ||
```ts | ||
const client: Connect4Client = new Connect4Client(); | ||
client.open('wss://my-multiplayer-server-instance.myhost.com'); | ||
``` | ||
From there you can either create a new multiplayer session or join an existing session: | ||
```ts | ||
client.createSession(username); | ||
// or | ||
client.joinSession(sessionName, username); | ||
``` | ||
The [Connect4Client](src/client.ts) object provides methods to perform actions such as placing a chip or leaving the session: | ||
```ts | ||
client.makeMove(0); // Sends action to server to place chip in first column. | ||
client.quit(); // Gracefully leave the multiplayer session and alert the server. | ||
``` | ||
Finally there are several methods to write custom callbacks in order to handle actions that are coming from the server: | ||
```ts | ||
onOpen(callback: () => any) | ||
onSessionCreated(callback: (sessionName: string) => any) | ||
onSessionJoined(callback: (opponentUsername: string) => any) | ||
onSessionNotFound(callback: () => any) | ||
onOpponentJoin(callback: (username: string) => any) | ||
onOpponentMove(callback: (column: number) => any) | ||
onOpponentQuit(callback: () => any) | ||
onGameRestart(callback: (thisClientStartsFirst: boolean) => any) | ||
onSessionEnded(callback: () => any) | ||
onClose(callback: () => any) | ||
``` | ||
### Example: Tying it all together | ||
```ts | ||
const client: Connect4Client = new Connect4Client(); | ||
client.onOpen(() => client.createSession(username)); | ||
client.onSessionCreated((sessionName) => shareSessionName(sessionName)); | ||
client.onOpponentJoin((username) => { | ||
setOpponentUsername(username); | ||
promptUserForMove(); // The session creator always goes first. | ||
}); | ||
client.onOpponentMove((column) => { | ||
trackOpponentChipPlacement(column); | ||
promptUserForMove(); | ||
}); | ||
client.onGameRestart((thisClientStartsFirst) => { | ||
resetGameState(); | ||
if (thisClientStartsFirst) promptUserForMove(); // Server decides who goes first. | ||
}); | ||
client.open('wss://my-multiplayer-server-instance.myhost.com'); | ||
``` | ||
## Building from Source | ||
@@ -23,0 +81,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12586
165
88