@gbraver-burst-network/offline-browser-sdk 1.18.0 → 1.19.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.
@@ -0,0 +1,27 @@
1
+ import { Command, GameState, Player } from "gbraver-burst-core";
2
+ import { Observable } from "rxjs";
3
+ import { Socket } from "socket.io-client";
4
+ import { OfflineBattleSDK } from "./offline-battle-sdk";
5
+ import { BattleInfo } from "./offline-browser-sdk";
6
+ /** オフライン用バトルSDK実装 */
7
+ export declare class OfflineBattleSDKImpl implements OfflineBattleSDK {
8
+ #private;
9
+ /** @override */
10
+ player: Player;
11
+ /** @override */
12
+ enemy: Player;
13
+ /** @override */
14
+ initialState: GameState[];
15
+ /**
16
+ * コンストラクタ
17
+ * @param options オプション
18
+ */
19
+ constructor(options: BattleInfo & {
20
+ /** 入室したソケット */
21
+ socket: Socket;
22
+ });
23
+ /** @override */
24
+ progress(command: Command): Promise<GameState[]>;
25
+ /** @override */
26
+ suddenlyBattleEndNotifier(): Observable<unknown>;
27
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _OfflineBattleSDKImpl_socket, _OfflineBattleSDKImpl_flowId;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OfflineBattleSDKImpl = void 0;
16
+ const rxjs_1 = require("rxjs");
17
+ const game_ended_1 = require("./socket-io-events/game-ended");
18
+ const progressed_1 = require("./socket-io-events/progressed");
19
+ /** オフライン用バトルSDK実装 */
20
+ class OfflineBattleSDKImpl {
21
+ /**
22
+ * コンストラクタ
23
+ * @param options オプション
24
+ */
25
+ constructor(options) {
26
+ var _a;
27
+ /** ソケット */
28
+ _OfflineBattleSDKImpl_socket.set(this, void 0);
29
+ /** フローID */
30
+ _OfflineBattleSDKImpl_flowId.set(this, void 0);
31
+ const enemy = (_a = options.stateHistory
32
+ .at(-1)) === null || _a === void 0 ? void 0 : _a.players.find((p) => p.playerId !== options.player.playerId);
33
+ if (!enemy) {
34
+ throw new Error("Enemy player not found");
35
+ }
36
+ this.player = options.player;
37
+ this.enemy = enemy;
38
+ this.initialState = options.stateHistory;
39
+ __classPrivateFieldSet(this, _OfflineBattleSDKImpl_socket, options.socket, "f");
40
+ __classPrivateFieldSet(this, _OfflineBattleSDKImpl_flowId, options.flowId, "f");
41
+ }
42
+ /** @override */
43
+ progress(command) {
44
+ __classPrivateFieldGet(this, _OfflineBattleSDKImpl_socket, "f").emit("sendCommand", { command, flowId: __classPrivateFieldGet(this, _OfflineBattleSDKImpl_flowId, "f") });
45
+ return new Promise((resolve) => {
46
+ __classPrivateFieldGet(this, _OfflineBattleSDKImpl_socket, "f").once("progressed", (data) => {
47
+ const parsedResult = progressed_1.ProgressedSchema.safeParse(data);
48
+ if (!parsedResult.success) {
49
+ return;
50
+ }
51
+ __classPrivateFieldSet(this, _OfflineBattleSDKImpl_flowId, parsedResult.data.flowId, "f");
52
+ resolve(parsedResult.data.updatedStateHistory);
53
+ });
54
+ __classPrivateFieldGet(this, _OfflineBattleSDKImpl_socket, "f").once("gameEnded", (data) => {
55
+ const parsedResult = game_ended_1.GameEndedSchema.safeParse(data);
56
+ if (!parsedResult.success) {
57
+ return;
58
+ }
59
+ // ゲームが終了したのでflowIdは送信されないので、同プロパティの更新処理は行わない
60
+ resolve(parsedResult.data.updatedStateHistory);
61
+ });
62
+ });
63
+ }
64
+ /** @override */
65
+ suddenlyBattleEndNotifier() {
66
+ return (0, rxjs_1.fromEvent)(__classPrivateFieldGet(this, _OfflineBattleSDKImpl_socket, "f"), "error");
67
+ }
68
+ }
69
+ exports.OfflineBattleSDKImpl = OfflineBattleSDKImpl;
70
+ _OfflineBattleSDKImpl_socket = new WeakMap(), _OfflineBattleSDKImpl_flowId = new WeakMap();
@@ -0,0 +1,26 @@
1
+ import { Command, GameState, Player } from "gbraver-burst-core";
2
+ import { Observable } from "rxjs";
3
+ /**
4
+ * オフライン用バトルSDK
5
+ * インターフェースはpackages/browser-sdk/src/browser-sdk/battle-sdk.tsのBattleSDKと同一
6
+ * 本操作はログイン後に実行することを想定している
7
+ */
8
+ export interface OfflineBattleSDK {
9
+ /** プレイヤーの情報 */
10
+ player: Player;
11
+ /** 対戦相手の情報 */
12
+ enemy: Player;
13
+ /** ゲームの初期状態 */
14
+ initialState: GameState[];
15
+ /**
16
+ * バトルを進行させる
17
+ * @param command プレイヤーが入力するコマンド
18
+ * @returns ゲーム結果
19
+ */
20
+ progress(command: Command): Promise<GameState[]>;
21
+ /**
22
+ * バトル強制終了の通知ストリーム
23
+ * @returns 通知ストリーム
24
+ */
25
+ suddenlyBattleEndNotifier(): Observable<unknown>;
26
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,7 @@
1
- import { ArmdozerId, Command, GameState, PilotId } from "gbraver-burst-core";
1
+ import { ArmdozerId, PilotId } from "gbraver-burst-core";
2
2
  import { Observable } from "rxjs";
3
- import { BattleInfo, OfflineBrowserSDK } from "./offline-browser-sdk";
3
+ import { OfflineBattleSDK } from "./offline-battle-sdk";
4
+ import { OfflineBrowserSDK } from "./offline-browser-sdk";
4
5
  /** オフライン用ブラウザSDK実装 */
5
6
  export declare class OfflineBrowserSDKImpl implements OfflineBrowserSDK {
6
7
  #private;
@@ -16,9 +17,7 @@ export declare class OfflineBrowserSDKImpl implements OfflineBrowserSDK {
16
17
  enterRoom(options: {
17
18
  armdozerId: ArmdozerId;
18
19
  pilotId: PilotId;
19
- }): Promise<BattleInfo>;
20
- /** @override */
21
- sendCommand(command: Command): Promise<GameState[]>;
20
+ }): Promise<OfflineBattleSDK>;
22
21
  /** @override */
23
22
  closeConnection(): void;
24
23
  /** @override */
@@ -19,14 +19,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
19
19
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
20
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
21
  };
22
- var _OfflineBrowserSDKImpl_instances, _OfflineBrowserSDKImpl_backendURL, _OfflineBrowserSDKImpl_socket, _OfflineBrowserSDKImpl_flowId, _OfflineBrowserSDKImpl_error, _OfflineBrowserSDKImpl_ensureSocket;
22
+ var _OfflineBrowserSDKImpl_instances, _OfflineBrowserSDKImpl_backendURL, _OfflineBrowserSDKImpl_socket, _OfflineBrowserSDKImpl_error, _OfflineBrowserSDKImpl_ensureSocket;
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.OfflineBrowserSDKImpl = void 0;
25
25
  const rxjs_1 = require("rxjs");
26
26
  const socket_io_client_1 = require("socket.io-client");
27
+ const offline_battle_sdk_impl_1 = require("./offline-battle-sdk-impl");
27
28
  const offline_browser_sdk_1 = require("./offline-browser-sdk");
28
- const game_ended_1 = require("./socket-io-events/game-ended");
29
- const progressed_1 = require("./socket-io-events/progressed");
30
29
  /** オフライン用ブラウザSDK実装 */
31
30
  class OfflineBrowserSDKImpl {
32
31
  /**
@@ -40,8 +39,6 @@ class OfflineBrowserSDKImpl {
40
39
  _OfflineBrowserSDKImpl_backendURL.set(this, void 0);
41
40
  /** ソケット接続、未作成の場合はnull */
42
41
  _OfflineBrowserSDKImpl_socket.set(this, null);
43
- /** 現在のフローID、バトル以外ではnullがセットされる */
44
- _OfflineBrowserSDKImpl_flowId.set(this, null);
45
42
  /** エラー通知のSubject */
46
43
  _OfflineBrowserSDKImpl_error.set(this, void 0);
47
44
  __classPrivateFieldSet(this, _OfflineBrowserSDKImpl_backendURL, options.backendURL, "f");
@@ -56,49 +53,20 @@ class OfflineBrowserSDKImpl {
56
53
  socket.once("matched", (data) => {
57
54
  const parsedBattleInfo = offline_browser_sdk_1.BattleInfoSchema.safeParse(data);
58
55
  if (parsedBattleInfo.success) {
59
- __classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, parsedBattleInfo.data.flowId, "f");
60
- resolve(parsedBattleInfo.data);
56
+ const battleSDK = new offline_battle_sdk_impl_1.OfflineBattleSDKImpl(Object.assign(Object.assign({}, parsedBattleInfo.data), { socket }));
57
+ resolve(battleSDK);
61
58
  }
62
59
  });
63
60
  });
64
61
  });
65
62
  }
66
63
  /** @override */
67
- sendCommand(command) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- if (!__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_flowId, "f")) {
70
- throw new Error("Not in battle");
71
- }
72
- const socket = __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_instances, "m", _OfflineBrowserSDKImpl_ensureSocket).call(this);
73
- socket.emit("sendCommand", { command, flowId: __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_flowId, "f") });
74
- return new Promise((resolve) => {
75
- socket.once("progressed", (data) => {
76
- const parsedResult = progressed_1.ProgressedSchema.safeParse(data);
77
- if (!parsedResult.success) {
78
- return;
79
- }
80
- __classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, parsedResult.data.flowId, "f");
81
- resolve(parsedResult.data.updatedStateHistory);
82
- });
83
- socket.once("gameEnded", (data) => {
84
- const parsedResult = game_ended_1.GameEndedSchema.safeParse(data);
85
- if (!parsedResult.success) {
86
- return;
87
- }
88
- __classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, null, "f");
89
- resolve(parsedResult.data.updatedStateHistory);
90
- });
91
- });
92
- });
93
- }
94
- /** @override */
95
64
  closeConnection() {
96
65
  if (!__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f")) {
97
66
  return;
98
67
  }
99
68
  __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f").disconnect();
100
69
  __classPrivateFieldSet(this, _OfflineBrowserSDKImpl_socket, null, "f");
101
- __classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, null, "f");
102
70
  }
103
71
  /** @override */
104
72
  notifyError() {
@@ -106,7 +74,7 @@ class OfflineBrowserSDKImpl {
106
74
  }
107
75
  }
108
76
  exports.OfflineBrowserSDKImpl = OfflineBrowserSDKImpl;
109
- _OfflineBrowserSDKImpl_backendURL = new WeakMap(), _OfflineBrowserSDKImpl_socket = new WeakMap(), _OfflineBrowserSDKImpl_flowId = new WeakMap(), _OfflineBrowserSDKImpl_error = new WeakMap(), _OfflineBrowserSDKImpl_instances = new WeakSet(), _OfflineBrowserSDKImpl_ensureSocket = function _OfflineBrowserSDKImpl_ensureSocket() {
77
+ _OfflineBrowserSDKImpl_backendURL = new WeakMap(), _OfflineBrowserSDKImpl_socket = new WeakMap(), _OfflineBrowserSDKImpl_error = new WeakMap(), _OfflineBrowserSDKImpl_instances = new WeakSet(), _OfflineBrowserSDKImpl_ensureSocket = function _OfflineBrowserSDKImpl_ensureSocket() {
110
78
  if (__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f")) {
111
79
  return __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f");
112
80
  }
@@ -1,6 +1,7 @@
1
- import { ArmdozerId, Command, GameState, PilotId, Player } from "gbraver-burst-core";
1
+ import { ArmdozerId, GameState, PilotId, Player } from "gbraver-burst-core";
2
2
  import { Observable } from "rxjs";
3
3
  import { z } from "zod";
4
+ import { OfflineBattleSDK } from "./offline-battle-sdk";
4
5
  /** バトル情報 */
5
6
  export type BattleInfo = {
6
7
  /** バトルID */
@@ -504,12 +505,7 @@ export interface OfflineBrowserSDK {
504
505
  enterRoom(options: {
505
506
  armdozerId: ArmdozerId;
506
507
  pilotId: PilotId;
507
- }): Promise<BattleInfo>;
508
- /**
509
- * コマンドを送信する
510
- * @param command 送信するコマンド
511
- */
512
- sendCommand(command: Command): Promise<GameState[]>;
508
+ }): Promise<OfflineBattleSDK>;
513
509
  /**
514
510
  * サーバーとの接続を閉じる
515
511
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gbraver-burst-network/offline-browser-sdk",
3
3
  "description": "gbraver burst offline browser sdk",
4
- "version": "1.18.0",
4
+ "version": "1.19.0",
5
5
  "author": "Y.Takeuchi",
6
6
  "bugs": {
7
7
  "url": "https://github.com/kaidouji85/gbraver-burst-network/issues",