def-game 2.2.2 → 3.0.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.
- package/dist/simulator.d.ts +3 -3
- package/dist/simulator.d.ts.map +1 -1
- package/dist/types.d.ts +54 -39
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/simulator.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { DefaultGameLogicState, GameParameters, GameRule, GameState, Player, ToServer } from "./types";
|
|
2
|
-
export declare class GameEngine<T extends Record<string, any>, S extends Record<string, any>, C extends
|
|
1
|
+
import { DefaultGameLogicState, GameParameters, GameRule, GameState, Player, ReqMap, ToServer } from "./types";
|
|
2
|
+
export declare class GameEngine<T extends Record<string, any>, S extends Record<string, any>, C extends ReqMap, L extends DefaultGameLogicState<S>, P extends GameParameters> {
|
|
3
3
|
private rules;
|
|
4
4
|
private storage;
|
|
5
5
|
constructor(rules: GameRule<T, S, C, L, P>);
|
|
6
6
|
createRoom(p: P): void;
|
|
7
7
|
join(player: Player): void;
|
|
8
|
-
executeAction(action: ToServer<
|
|
8
|
+
executeAction(action: ToServer<C>): GameState<T, S, C, L, P>;
|
|
9
9
|
getState(): GameState<T, S, C, L, P>;
|
|
10
10
|
setState(state: GameState<T, S, C, L, P>): void;
|
|
11
11
|
}
|
package/dist/simulator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAU,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAU,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGvH,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,cAAc;IAChK,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAkC;gBAErC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAa1C,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;IAMtB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM1B,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAc5D,QAAQ,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAIpC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;CAGlD"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
type Map = Record<string, any>;
|
|
2
|
+
type Merge<A, B> = {
|
|
3
|
+
[K in keyof A | keyof B]: K extends keyof B ? B[K] : K extends keyof A ? A[K] : never;
|
|
4
|
+
};
|
|
5
|
+
export interface ReqPayload {
|
|
6
|
+
senderId: PlayerId;
|
|
7
|
+
}
|
|
8
|
+
export type ReqMap = Record<string, Simple<ReqPayload> | Custom<ReqPayload>>;
|
|
9
|
+
export type Simple<T extends ReqPayload> = {
|
|
10
|
+
kind: "simple";
|
|
11
|
+
value: T;
|
|
12
|
+
};
|
|
13
|
+
export type Custom<T extends ReqPayload> = {
|
|
14
|
+
kind: "custom";
|
|
15
|
+
value: T;
|
|
16
|
+
};
|
|
2
17
|
export type FromServerMap<T extends Map> = T;
|
|
3
|
-
export type ToServerMap<T extends
|
|
4
|
-
export type
|
|
5
|
-
export type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
toServer: ToServerMap<C>[key];
|
|
9
|
-
};
|
|
18
|
+
export type ToServerMap<T extends ReqMap> = T;
|
|
19
|
+
export type CustomTaskMap<T extends Map> = T;
|
|
20
|
+
export type ExtractSimplePayload<T> = T extends Simple<infer U> ? U : never;
|
|
21
|
+
export type SimpleOnly<T extends ReqMap> = {
|
|
22
|
+
[K in keyof T as T[K] extends Simple<any> ? K : never]: ExtractSimplePayload<T[K]>;
|
|
10
23
|
};
|
|
24
|
+
export type TaskMapType<A extends ReqMap, B extends Map> = Merge<SimpleOnly<A>, CustomTaskMap<B>>;
|
|
11
25
|
export type Player = {
|
|
12
26
|
id: PlayerId;
|
|
13
27
|
name: string;
|
|
@@ -20,53 +34,54 @@ export interface GameParameters {
|
|
|
20
34
|
owner: Player;
|
|
21
35
|
joiner: Joiner;
|
|
22
36
|
}
|
|
23
|
-
export interface DefaultGameLogicState<S extends Map
|
|
24
|
-
forClient: ForClient<S
|
|
37
|
+
export interface DefaultGameLogicState<S extends Map> {
|
|
38
|
+
forClient: ForClient<S>;
|
|
25
39
|
}
|
|
26
40
|
export type FromServerDataType<T extends Map> = keyof FromServerMap<T>;
|
|
27
41
|
export type ToServerDataType<T extends Map> = keyof ToServerMap<T>;
|
|
28
42
|
export type FromServerData<T extends Map> = {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
export type
|
|
42
|
-
type: InteractionKey<S, C>;
|
|
43
|
-
payload: InteractionMapType<S, C>[InteractionKey<S, C>]["toServer"];
|
|
44
|
-
};
|
|
45
|
-
export type FromServer<S extends Map, C extends Map> = FromServerData<S> | InteractionFromServerData<S, C>;
|
|
46
|
-
export type ToServer<S extends Map, C extends Map> = ToServerData<C> | InteractionToServerData<S, C>;
|
|
43
|
+
[K in keyof T]: {
|
|
44
|
+
type: K;
|
|
45
|
+
payload: T[K];
|
|
46
|
+
};
|
|
47
|
+
}[keyof T];
|
|
48
|
+
export type ToServerData<T extends ReqMap> = {
|
|
49
|
+
[K in keyof T]: {
|
|
50
|
+
type: K;
|
|
51
|
+
payload: T[K];
|
|
52
|
+
};
|
|
53
|
+
}[keyof T];
|
|
54
|
+
export type FromServer<S extends Map> = FromServerData<S>;
|
|
55
|
+
export type ToServer<C extends ReqMap> = ToServerData<C>;
|
|
47
56
|
export type PlayerId = string;
|
|
48
|
-
export type
|
|
49
|
-
|
|
57
|
+
export type ForUI<S extends Map> = {
|
|
58
|
+
requiredAction: FromServer<S> | null;
|
|
59
|
+
notifications: FromServer<S>[];
|
|
50
60
|
};
|
|
51
|
-
export type
|
|
52
|
-
|
|
53
|
-
args: TaskMap<T>[keyof TaskMap<T>];
|
|
61
|
+
export type ForClient<S extends Map> = {
|
|
62
|
+
[key: PlayerId]: ForUI<S>;
|
|
54
63
|
};
|
|
55
|
-
export
|
|
64
|
+
export type Task<A extends ReqMap, B extends Map> = {
|
|
65
|
+
[K in keyof TaskMapType<A, B>]: {
|
|
66
|
+
type: K;
|
|
67
|
+
payload: TaskMapType<A, B>[K];
|
|
68
|
+
};
|
|
69
|
+
}[keyof TaskMapType<A, B>];
|
|
70
|
+
export interface TaskResult<S extends Map, L extends DefaultGameLogicState<S>> {
|
|
56
71
|
type: string;
|
|
57
72
|
state: L;
|
|
58
73
|
}
|
|
59
|
-
export type GameState<T extends Map, S extends Map, C extends
|
|
74
|
+
export type GameState<T extends Map, S extends Map, C extends ReqMap, L extends DefaultGameLogicState<S>, P extends GameParameters> = {
|
|
60
75
|
gameLogicState: L;
|
|
61
|
-
taskQueue: Task<T>[];
|
|
76
|
+
taskQueue: Task<C, T>[];
|
|
62
77
|
gameParameters: P | null;
|
|
63
78
|
};
|
|
64
|
-
export interface GameRule<T extends Map, S extends Map, C extends
|
|
79
|
+
export interface GameRule<T extends Map, S extends Map, C extends ReqMap, L extends DefaultGameLogicState<S>, P extends GameParameters> {
|
|
65
80
|
initialGameLogicState: () => L;
|
|
66
|
-
createRoom: (state: GameState<T, S, C, L, P>, param:
|
|
81
|
+
createRoom: (state: GameState<T, S, C, L, P>, param: GameParameters) => GameState<T, S, C, L, P>;
|
|
67
82
|
onStartGame: (state: GameState<T, S, C, L, P>, joiner: Player) => GameState<T, S, C, L, P>;
|
|
68
|
-
generateTasks(state: GameState<T, S, C, L, P>, event: ToServer<
|
|
69
|
-
prioritizeTasks(newTasks: Task<T>[], gameState: GameState<T, S, C, L, P>): GameState<T, S, C, L, P>;
|
|
83
|
+
generateTasks(state: GameState<T, S, C, L, P>, event: ToServer<C>): Task<T, S>[];
|
|
84
|
+
prioritizeTasks(newTasks: Task<T, S>[], gameState: GameState<T, S, C, L, P>): GameState<T, S, C, L, P>;
|
|
70
85
|
doTasks(state: GameState<T, S, C, L, P>): GameState<T, S, C, L, P>;
|
|
71
86
|
}
|
|
72
87
|
export {};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|