def-game 2.3.0 → 3.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.
- package/dist/example.d.ts +2 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +96 -0
- package/dist/helper.d.ts +6 -0
- package/dist/helper.d.ts.map +1 -0
- package/dist/helper.js +34 -0
- package/dist/simulator.d.ts +3 -3
- package/dist/simulator.d.ts.map +1 -1
- package/dist/types.d.ts +61 -43
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":""}
|
package/dist/example.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const helper_1 = require("./helper");
|
|
4
|
+
const customEventHander = (r) => {
|
|
5
|
+
switch (r.type) {
|
|
6
|
+
case "login":
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
type: "authorize",
|
|
10
|
+
payload: {
|
|
11
|
+
name: "a",
|
|
12
|
+
password: "b",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
type: "authenticate",
|
|
17
|
+
payload: {
|
|
18
|
+
name: "a",
|
|
19
|
+
level: 1,
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
];
|
|
23
|
+
case "complicatedReq":
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
type: "task1",
|
|
27
|
+
payload: {
|
|
28
|
+
name: "a",
|
|
29
|
+
password: "b",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
type: "task2",
|
|
34
|
+
payload: {
|
|
35
|
+
name: "a",
|
|
36
|
+
level: 1,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "task3",
|
|
41
|
+
payload: {
|
|
42
|
+
name: "a",
|
|
43
|
+
level: 1,
|
|
44
|
+
},
|
|
45
|
+
}
|
|
46
|
+
];
|
|
47
|
+
default:
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
// no need to write process that handles simple requests
|
|
52
|
+
const _sampleGenerateTasks = (0, helper_1.simplify)(customEventHander);
|
|
53
|
+
// ------------------------------------------------------------
|
|
54
|
+
// this is how you handle tasks
|
|
55
|
+
// task cases are composed
|
|
56
|
+
// - keyof SimpleOnlyPayload<Req>
|
|
57
|
+
// - keyof Tasks
|
|
58
|
+
const _switchTask = (task) => {
|
|
59
|
+
switch (task.type) {
|
|
60
|
+
case "move":
|
|
61
|
+
return moveTaskHandler(task.payload);
|
|
62
|
+
// login is a custom request, so we need to handle it differently
|
|
63
|
+
case "authorize":
|
|
64
|
+
return authorizeTaskHandler(task.payload);
|
|
65
|
+
case "authenticate":
|
|
66
|
+
return authenticateTaskHandler(task.payload);
|
|
67
|
+
case "task1":
|
|
68
|
+
return task1Handler(task.payload);
|
|
69
|
+
case "task2":
|
|
70
|
+
return task2Handler(task.payload);
|
|
71
|
+
case "task3":
|
|
72
|
+
return task3Handler(task.payload);
|
|
73
|
+
default:
|
|
74
|
+
const _exhaustiveCheck = task;
|
|
75
|
+
console.log("unknown event", task);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const moveTaskHandler = (payload) => {
|
|
79
|
+
console.log(payload);
|
|
80
|
+
};
|
|
81
|
+
const authorizeTaskHandler = (payload) => {
|
|
82
|
+
console.log(payload);
|
|
83
|
+
};
|
|
84
|
+
const authenticateTaskHandler = (payload) => {
|
|
85
|
+
console.log(payload);
|
|
86
|
+
};
|
|
87
|
+
const task1Handler = (payload) => {
|
|
88
|
+
console.log(payload);
|
|
89
|
+
};
|
|
90
|
+
const task2Handler = (payload) => {
|
|
91
|
+
console.log(payload);
|
|
92
|
+
};
|
|
93
|
+
const task3Handler = (payload) => {
|
|
94
|
+
console.log(payload);
|
|
95
|
+
};
|
|
96
|
+
// ------------------------------------------------------------
|
package/dist/helper.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Custom, CustomOnly, ReqMap, ReqPayload, Simple, Task, ToServer } from "./types";
|
|
2
|
+
export declare const simple: <T extends ReqPayload>(payload: T) => Simple<T>;
|
|
3
|
+
export declare const custom: <T extends ReqPayload>(payload: T) => Custom<T>;
|
|
4
|
+
export type CustomEventHander<A extends ReqMap, B extends Record<string, any>> = (r: ToServer<CustomOnly<A>>) => Task<A, B>[];
|
|
5
|
+
export declare const simplify: <A extends ReqMap, B extends Record<string, any>>(h: CustomEventHander<A, B>) => (a: ToServer<A>) => Task<A, B>[];
|
|
6
|
+
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAqB,IAAI,EAAe,QAAQ,EAAE,MAAM,SAAS,CAAA;AAExH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,UAAU,EAAE,SAAS,CAAC,KAAG,MAAM,CAAC,CAAC,CAKjE,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,UAAU,EAAE,SAAS,CAAC,KAAG,MAAM,CAAC,CAAC,CAKjE,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACvE,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AAGlD,eAAO,MAAM,QAAQ,GAChB,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,MACvE,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAe3B,CAAA"}
|
package/dist/helper.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.simplify = exports.custom = exports.simple = void 0;
|
|
4
|
+
const simple = (payload) => {
|
|
5
|
+
return {
|
|
6
|
+
kind: "simple",
|
|
7
|
+
value: payload
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
exports.simple = simple;
|
|
11
|
+
const custom = (payload) => {
|
|
12
|
+
return {
|
|
13
|
+
kind: "custom",
|
|
14
|
+
value: payload
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
exports.custom = custom;
|
|
18
|
+
const simplify = (h) => (a) => {
|
|
19
|
+
switch (a.payload.kind) {
|
|
20
|
+
case "simple":
|
|
21
|
+
const key = a.type;
|
|
22
|
+
const payload = a.payload.value;
|
|
23
|
+
return [
|
|
24
|
+
{
|
|
25
|
+
type: key,
|
|
26
|
+
payload,
|
|
27
|
+
}
|
|
28
|
+
];
|
|
29
|
+
case "custom":
|
|
30
|
+
const b = a;
|
|
31
|
+
return h(b);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.simplify = simplify;
|
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,34 @@
|
|
|
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
|
-
|
|
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 ExtractCustomPayload<T> = T extends Custom<infer U> ? U : never;
|
|
22
|
+
export type SimpleOnlyPayload<T extends ReqMap> = {
|
|
23
|
+
[K in keyof T as T[K] extends Simple<any> ? K : never]: ExtractSimplePayload<T[K]>;
|
|
24
|
+
};
|
|
25
|
+
export type CustomOnlyPayload<T extends ReqMap> = {
|
|
26
|
+
[K in keyof T as T[K] extends Custom<any> ? K : never]: ExtractCustomPayload<T[K]>;
|
|
10
27
|
};
|
|
28
|
+
export type CustomOnly<T extends ReqMap> = {
|
|
29
|
+
[K in keyof T as T[K] extends Custom<any> ? K : never]: T[K];
|
|
30
|
+
};
|
|
31
|
+
export type TaskMapType<A extends ReqMap, B extends Map> = Merge<SimpleOnlyPayload<A>, CustomTaskMap<B>>;
|
|
11
32
|
export type Player = {
|
|
12
33
|
id: PlayerId;
|
|
13
34
|
name: string;
|
|
@@ -20,57 +41,54 @@ export interface GameParameters {
|
|
|
20
41
|
owner: Player;
|
|
21
42
|
joiner: Joiner;
|
|
22
43
|
}
|
|
23
|
-
export interface DefaultGameLogicState<S extends Map
|
|
24
|
-
forClient: ForClient<S
|
|
44
|
+
export interface DefaultGameLogicState<S extends Map> {
|
|
45
|
+
forClient: ForClient<S>;
|
|
25
46
|
}
|
|
26
47
|
export type FromServerDataType<T extends Map> = keyof FromServerMap<T>;
|
|
27
48
|
export type ToServerDataType<T extends Map> = keyof ToServerMap<T>;
|
|
28
49
|
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>;
|
|
50
|
+
[K in keyof T]: {
|
|
51
|
+
type: K;
|
|
52
|
+
payload: T[K];
|
|
53
|
+
};
|
|
54
|
+
}[keyof T];
|
|
55
|
+
export type ToServerData<T extends ReqMap> = {
|
|
56
|
+
[K in keyof T]: {
|
|
57
|
+
type: K;
|
|
58
|
+
payload: T[K];
|
|
59
|
+
};
|
|
60
|
+
}[keyof T];
|
|
61
|
+
export type FromServer<S extends Map> = FromServerData<S>;
|
|
62
|
+
export type ToServer<C extends ReqMap> = ToServerData<C>;
|
|
47
63
|
export type PlayerId = string;
|
|
48
|
-
export type ForUI<S extends Map
|
|
49
|
-
requiredAction: FromServer<S
|
|
50
|
-
notifications: FromServer<S
|
|
51
|
-
};
|
|
52
|
-
export type ForClient<S extends Map, C extends Map> = {
|
|
53
|
-
[key: PlayerId]: ForUI<S, C>;
|
|
64
|
+
export type ForUI<S extends Map> = {
|
|
65
|
+
requiredAction: FromServer<S> | null;
|
|
66
|
+
notifications: FromServer<S>[];
|
|
54
67
|
};
|
|
55
|
-
export type
|
|
56
|
-
|
|
57
|
-
args: TaskMap<T>[keyof TaskMap<T>];
|
|
68
|
+
export type ForClient<S extends Map> = {
|
|
69
|
+
[key: PlayerId]: ForUI<S>;
|
|
58
70
|
};
|
|
59
|
-
export
|
|
71
|
+
export type Task<A extends ReqMap, B extends Map> = {
|
|
72
|
+
[K in keyof TaskMapType<A, B>]: {
|
|
73
|
+
type: K;
|
|
74
|
+
payload: TaskMapType<A, B>[K];
|
|
75
|
+
};
|
|
76
|
+
}[keyof TaskMapType<A, B>];
|
|
77
|
+
export interface TaskResult<S extends Map, L extends DefaultGameLogicState<S>> {
|
|
60
78
|
type: string;
|
|
61
79
|
state: L;
|
|
62
80
|
}
|
|
63
|
-
export type GameState<T extends Map, S extends Map, C extends
|
|
81
|
+
export type GameState<T extends Map, S extends Map, C extends ReqMap, L extends DefaultGameLogicState<S>, P extends GameParameters> = {
|
|
64
82
|
gameLogicState: L;
|
|
65
|
-
taskQueue: Task<T>[];
|
|
83
|
+
taskQueue: Task<C, T>[];
|
|
66
84
|
gameParameters: P | null;
|
|
67
85
|
};
|
|
68
|
-
export interface GameRule<T extends Map, S extends Map, C extends
|
|
86
|
+
export interface GameRule<T extends Map, S extends Map, C extends ReqMap, L extends DefaultGameLogicState<S>, P extends GameParameters> {
|
|
69
87
|
initialGameLogicState: () => L;
|
|
70
|
-
createRoom: (state: GameState<T, S, C, L, P>, param:
|
|
88
|
+
createRoom: (state: GameState<T, S, C, L, P>, param: GameParameters) => GameState<T, S, C, L, P>;
|
|
71
89
|
onStartGame: (state: GameState<T, S, C, L, P>, joiner: Player) => GameState<T, S, C, L, P>;
|
|
72
|
-
generateTasks(state: GameState<T, S, C, L, P>, event: ToServer<
|
|
73
|
-
prioritizeTasks(newTasks: Task<T>[], gameState: GameState<T, S, C, L, P>): GameState<T, S, C, L, P>;
|
|
90
|
+
generateTasks(state: GameState<T, S, C, L, P>, event: ToServer<C>): Task<T, S>[];
|
|
91
|
+
prioritizeTasks(newTasks: Task<T, S>[], gameState: GameState<T, S, C, L, P>): GameState<T, S, C, L, P>;
|
|
74
92
|
doTasks(state: GameState<T, S, C, L, P>): GameState<T, S, C, L, P>;
|
|
75
93
|
}
|
|
76
94
|
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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"}
|