def-game 2.0.0 → 2.0.1

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,10 +1,10 @@
1
1
  import { DefaultGameLogicState, GameRule, GameState, ToServer } from "./types";
2
- export declare class GameEngine<S extends DefaultGameLogicState> {
2
+ export declare class GameEngine<S extends Record<string, any>, C extends Record<string, any>, L extends DefaultGameLogicState<S, C>> {
3
3
  private rules;
4
4
  private storage;
5
- constructor(rules: GameRule<S>);
6
- executeAction(action: ToServer): GameState<S>;
7
- getState(): GameState<S>;
8
- setState(state: GameState<S>): void;
5
+ constructor(rules: GameRule<S, C, L>);
6
+ executeAction(action: ToServer<S, C>): GameState<S, C, L>;
7
+ getState(): GameState<S, C, L>;
8
+ setState(state: GameState<S, C, L>): void;
9
9
  }
10
10
  //# sourceMappingURL=simulator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/E,qBAAa,UAAU,CAAC,CAAC,SAAS,qBAAqB;IACnD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAsB;gBAEzB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAY9B,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;IAe7C,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC;IAIxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;CAGtC"}
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/E,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;IACvH,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,OAAO,CAA4B;gBAE/B,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAYpC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAezD,QAAQ,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAI9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;CAG5C"}
package/dist/types.d.ts CHANGED
@@ -1,55 +1,57 @@
1
- export type FromServerMap = Record<string, any>;
2
- export type ToServerMap = Record<string, any>;
3
- export type InteractionMapType = {
4
- [key in InteractionKey]: {
5
- fromServer: FromServerMap[key];
6
- toServer: ToServerMap[key];
1
+ type Map = Record<string, any>;
2
+ export type FromServerMap<T extends Map> = T;
3
+ export type ToServerMap<T extends Map> = T;
4
+ export type InteractionMapType<S extends Map, C extends Map> = {
5
+ [key in InteractionKey<S, C>]: {
6
+ fromServer: FromServerMap<S>[key];
7
+ toServer: ToServerMap<C>[key];
7
8
  };
8
9
  };
9
- export interface DefaultGameLogicState {
10
- forClient: ForClient;
10
+ export interface DefaultGameLogicState<S extends Map, C extends Map> {
11
+ forClient: ForClient<S, C>;
11
12
  }
12
- export type FromServerDataType = keyof FromServerMap;
13
- export type ToServerDataType = keyof ToServerMap;
14
- export type FromServerData = {
15
- type: FromServerDataType;
16
- payload: FromServerMap[FromServerDataType];
17
- };
18
- export type ToServerData = {
19
- type: ToServerDataType;
20
- payload: ToServerMap[ToServerDataType];
21
- };
22
- export type InteractionKey = Extract<keyof FromServerMap, keyof ToServerMap>;
23
- export type InteractionFromServerData = {
24
- type: InteractionKey;
25
- payload: InteractionMapType[InteractionKey]["fromServer"];
26
- };
27
- export type InteractionToServerData = {
28
- type: InteractionKey;
29
- payload: InteractionMapType[InteractionKey]["toServer"];
30
- };
31
- export type FromServer = FromServerData | InteractionFromServerData;
32
- export type ToServer = ToServerData | InteractionToServerData;
13
+ export type FromServerDataType<T extends Map> = keyof FromServerMap<T>;
14
+ export type ToServerDataType<T extends Map> = keyof ToServerMap<T>;
15
+ export type FromServerData<T extends Map> = {
16
+ type: FromServerDataType<T>;
17
+ payload: FromServerMap<T>[FromServerDataType<T>];
18
+ };
19
+ export type ToServerData<T extends Map> = {
20
+ type: ToServerDataType<T>;
21
+ payload: ToServerMap<T>[ToServerDataType<T>];
22
+ };
23
+ export type InteractionKey<S extends Map, C extends Map> = Extract<keyof FromServerMap<S>, keyof ToServerMap<C>>;
24
+ export type InteractionFromServerData<S extends Map, C extends Map> = {
25
+ type: InteractionKey<S, C>;
26
+ payload: InteractionMapType<S, C>[InteractionKey<S, C>]["fromServer"];
27
+ };
28
+ export type InteractionToServerData<S extends Map, C extends Map> = {
29
+ type: InteractionKey<S, C>;
30
+ payload: InteractionMapType<S, C>[InteractionKey<S, C>]["toServer"];
31
+ };
32
+ export type FromServer<S extends Map, C extends Map> = FromServerData<S> | InteractionFromServerData<S, C>;
33
+ export type ToServer<S extends Map, C extends Map> = ToServerData<S> | InteractionToServerData<S, C>;
33
34
  export type PlayerId = string;
34
- export type ForClient = {
35
- [key: PlayerId]: FromServer;
35
+ export type ForClient<S extends Map, C extends Map> = {
36
+ [key: PlayerId]: FromServer<S, C>;
36
37
  };
37
- export type Task<L extends DefaultGameLogicState> = {
38
+ export type Task<S extends Map, C extends Map, L extends DefaultGameLogicState<S, C>> = {
38
39
  type: string;
39
- execute: (gs: L) => TaskResult<L>;
40
+ execute: (gs: L) => TaskResult<S, C, L>;
40
41
  };
41
- export interface TaskResult<L extends DefaultGameLogicState> {
42
+ export interface TaskResult<S extends Map, C extends Map, L extends DefaultGameLogicState<S, C>> {
42
43
  type: string;
43
44
  state: L;
44
45
  }
45
- export type GameState<L extends DefaultGameLogicState> = {
46
+ export type GameState<S extends Map, C extends Map, L extends DefaultGameLogicState<S, C>> = {
46
47
  gameLogicState: L;
47
- taskQueue: Task<L>[];
48
+ taskQueue: Task<S, C, L>[];
48
49
  };
49
- export interface GameRule<L extends DefaultGameLogicState> {
50
+ export interface GameRule<S extends Map, C extends Map, L extends DefaultGameLogicState<S, C>> {
50
51
  initialGameLogicState: () => L;
51
- divider(event: ToServer): Task<L>[];
52
- prioritizeTasks(newTasks: Task<L>[], gameState: GameState<L>): GameState<L>;
53
- doTask(state: GameState<L>): GameState<L>;
52
+ divider(event: ToServer<S, C>): Task<S, C, L>[];
53
+ prioritizeTasks(newTasks: Task<S, C, L>[], gameState: GameState<S, C, L>): GameState<S, C, L>;
54
+ doTask(state: GameState<S, C, L>): GameState<S, C, L>;
54
55
  }
56
+ export {};
55
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,MAAM,MAAM,kBAAkB,GAAG;KAC5B,GAAG,IAAI,cAAc,GAAG;QACrB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/B,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;KAC9B;CACJ,CAAA;AAED,MAAM,WAAW,qBAAqB;IAClC,SAAS,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC9C,CAAA;AACD,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAC1C,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,aAAa,EAAE,MAAM,WAAW,CAAC,CAAC;AAE7E,MAAM,MAAM,yBAAyB,GAAG;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC;CAC7D,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,yBAAyB,CAAC;AACpE,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,uBAAuB,CAAC;AAE9D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAC;CAAE,CAAC;AAEzD,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,qBAAqB,IAAI;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC;AACF,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,qBAAqB;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACZ;AACD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,qBAAqB,IAAI;IACrD,cAAc,EAAE,CAAC,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;CACxB,CAAC;AACF,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,qBAAqB;IACrD,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;CAC7C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "def-game",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",