@rpgjs/common 4.2.1 → 5.0.0-alpha.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/Physic.d.ts +619 -0
- package/dist/Player.d.ts +198 -0
- package/{lib → dist}/Utils.d.ts +19 -2
- package/dist/database/Item.d.ts +10 -0
- package/dist/database/index.d.ts +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +16741 -0
- package/dist/index.js.map +1 -0
- package/dist/modules.d.ts +92 -0
- package/dist/movement/MovementManager.d.ts +84 -0
- package/dist/movement/MovementStrategy.d.ts +39 -0
- package/dist/movement/index.d.ts +12 -0
- package/dist/movement/strategies/CompositeMovement.d.ts +76 -0
- package/dist/movement/strategies/Dash.d.ts +52 -0
- package/dist/movement/strategies/IceMovement.d.ts +87 -0
- package/dist/movement/strategies/Knockback.d.ts +50 -0
- package/dist/movement/strategies/LinearMove.d.ts +43 -0
- package/dist/movement/strategies/LinearRepulsion.d.ts +55 -0
- package/dist/movement/strategies/Oscillate.d.ts +60 -0
- package/dist/movement/strategies/PathFollow.d.ts +78 -0
- package/dist/movement/strategies/ProjectileMovement.d.ts +138 -0
- package/dist/movement/strategies/SeekAvoid.d.ts +27 -0
- package/dist/rooms/Map.d.ts +109 -0
- package/dist/services/updateMap.d.ts +7 -0
- package/package.json +17 -17
- package/src/Physic.ts +1644 -0
- package/src/Player.ts +262 -26
- package/src/{gui/PrebuiltGui.ts → PrebuiltGui.ts} +1 -1
- package/src/Utils.ts +184 -123
- package/src/database/Item.ts +19 -0
- package/src/database/index.ts +1 -0
- package/src/index.ts +9 -25
- package/src/modules.ts +230 -0
- package/src/movement/MovementManager.ts +142 -0
- package/src/movement/MovementStrategy.ts +42 -0
- package/src/movement/index.ts +15 -0
- package/src/movement/strategies/CompositeMovement.ts +173 -0
- package/src/movement/strategies/Dash.ts +82 -0
- package/src/movement/strategies/IceMovement.ts +158 -0
- package/src/movement/strategies/Knockback.ts +81 -0
- package/src/movement/strategies/LinearMove.ts +58 -0
- package/src/movement/strategies/LinearRepulsion.ts +128 -0
- package/src/movement/strategies/Oscillate.ts +144 -0
- package/src/movement/strategies/PathFollow.ts +156 -0
- package/src/movement/strategies/ProjectileMovement.ts +322 -0
- package/src/movement/strategies/SeekAvoid.ts +123 -0
- package/src/rooms/Map.ts +272 -0
- package/src/services/updateMap.ts +9 -0
- package/tests/physic.spec.ts +454 -0
- package/tsconfig.json +8 -3
- package/vite.config.ts +21 -0
- package/CHANGELOG.md +0 -152
- package/LICENSE +0 -19
- package/browser/manifest.json +0 -7
- package/browser/rpg.common.js +0 -11357
- package/browser/rpg.common.umd.cjs +0 -11358
- package/lib/AbstractObject.d.ts +0 -322
- package/lib/AbstractObject.js +0 -872
- package/lib/AbstractObject.js.map +0 -1
- package/lib/Color.d.ts +0 -1
- package/lib/Color.js +0 -25
- package/lib/Color.js.map +0 -1
- package/lib/DefaultInput.d.ts +0 -2
- package/lib/DefaultInput.js +0 -26
- package/lib/DefaultInput.js.map +0 -1
- package/lib/Event.d.ts +0 -3
- package/lib/Event.js +0 -4
- package/lib/Event.js.map +0 -1
- package/lib/EventEmitter.d.ts +0 -10
- package/lib/EventEmitter.js +0 -61
- package/lib/EventEmitter.js.map +0 -1
- package/lib/Game.d.ts +0 -28
- package/lib/Game.js +0 -127
- package/lib/Game.js.map +0 -1
- package/lib/Hit.d.ts +0 -16
- package/lib/Hit.js +0 -65
- package/lib/Hit.js.map +0 -1
- package/lib/Inject.d.ts +0 -9
- package/lib/Inject.js +0 -17
- package/lib/Inject.js.map +0 -1
- package/lib/Logger.d.ts +0 -2
- package/lib/Logger.js +0 -7
- package/lib/Logger.js.map +0 -1
- package/lib/Map.d.ts +0 -174
- package/lib/Map.js +0 -263
- package/lib/Map.js.map +0 -1
- package/lib/Module.d.ts +0 -16
- package/lib/Module.js +0 -139
- package/lib/Module.js.map +0 -1
- package/lib/Player.d.ts +0 -26
- package/lib/Player.js +0 -19
- package/lib/Player.js.map +0 -1
- package/lib/Plugin.d.ts +0 -67
- package/lib/Plugin.js +0 -92
- package/lib/Plugin.js.map +0 -1
- package/lib/Scheduler.d.ts +0 -26
- package/lib/Scheduler.js +0 -90
- package/lib/Scheduler.js.map +0 -1
- package/lib/Shape.d.ts +0 -127
- package/lib/Shape.js +0 -261
- package/lib/Shape.js.map +0 -1
- package/lib/Utils.js +0 -181
- package/lib/Utils.js.map +0 -1
- package/lib/Vector2d.d.ts +0 -20
- package/lib/Vector2d.js +0 -63
- package/lib/Vector2d.js.map +0 -1
- package/lib/VirtualGrid.d.ts +0 -26
- package/lib/VirtualGrid.js +0 -68
- package/lib/VirtualGrid.js.map +0 -1
- package/lib/Worker.d.ts +0 -7
- package/lib/Worker.js +0 -13
- package/lib/Worker.js.map +0 -1
- package/lib/WorldMaps.d.ts +0 -105
- package/lib/WorldMaps.js +0 -184
- package/lib/WorldMaps.js.map +0 -1
- package/lib/gui/PrebuiltGui.js +0 -29
- package/lib/gui/PrebuiltGui.js.map +0 -1
- package/lib/index.d.ts +0 -25
- package/lib/index.js +0 -26
- package/lib/index.js.map +0 -1
- package/lib/transports/io.d.ts +0 -22
- package/lib/transports/io.js +0 -82
- package/lib/transports/io.js.map +0 -1
- package/lib/workers/move.d.ts +0 -1
- package/lib/workers/move.js +0 -57
- package/lib/workers/move.js.map +0 -1
- package/rpg.toml +0 -11
- package/src/AbstractObject.ts +0 -973
- package/src/Color.ts +0 -29
- package/src/DefaultInput.ts +0 -26
- package/src/Event.ts +0 -3
- package/src/EventEmitter.ts +0 -65
- package/src/Game.ts +0 -159
- package/src/Hit.ts +0 -70
- package/src/Inject.ts +0 -22
- package/src/Logger.ts +0 -7
- package/src/Map.ts +0 -335
- package/src/Module.ts +0 -144
- package/src/Plugin.ts +0 -100
- package/src/Scheduler.ts +0 -95
- package/src/Shape.ts +0 -302
- package/src/Vector2d.ts +0 -70
- package/src/VirtualGrid.ts +0 -78
- package/src/Worker.ts +0 -17
- package/src/WorldMaps.ts +0 -204
- package/src/transports/io.ts +0 -91
- package/src/workers/move.ts +0 -61
- /package/{lib/gui → dist}/PrebuiltGui.d.ts +0 -0
package/src/Color.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
type RGB = [number, number, number];
|
|
2
|
-
|
|
3
|
-
function hexToRGB(hex: string): RGB {
|
|
4
|
-
let r = parseInt(hex.substring(0, 2), 16);
|
|
5
|
-
let g = parseInt(hex.substring(2, 4), 16);
|
|
6
|
-
let b = parseInt(hex.substring(4, 6), 16);
|
|
7
|
-
return [r, g, b];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function RGBToHex(rgb: RGB): string {
|
|
11
|
-
let r = rgb[0].toString(16).padStart(2, '0');
|
|
12
|
-
let g = rgb[1].toString(16).padStart(2, '0');
|
|
13
|
-
let b = rgb[2].toString(16).padStart(2, '0');
|
|
14
|
-
return r + g + b;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function transitionColor(startColor: string, endColor: string, steps: number): string[] {
|
|
18
|
-
let startRGB = hexToRGB(startColor.replace('#', ''));
|
|
19
|
-
let endRGB = hexToRGB(endColor.replace('#', ''));
|
|
20
|
-
let deltaRGB = [(endRGB[0] - startRGB[0]) / steps, (endRGB[1] - startRGB[1]) / steps, (endRGB[2] - startRGB[2]) / steps];
|
|
21
|
-
|
|
22
|
-
let colors: string[] = [];
|
|
23
|
-
for (let i = 0; i < steps; i++) {
|
|
24
|
-
let color = [startRGB[0] + deltaRGB[0] * i, startRGB[1] + deltaRGB[1] * i, startRGB[2] + deltaRGB[2] * i];
|
|
25
|
-
colors.push(RGBToHex(color as any));
|
|
26
|
-
}
|
|
27
|
-
colors.push(endColor.replace('#', ''));
|
|
28
|
-
return colors;
|
|
29
|
-
}
|
package/src/DefaultInput.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Controls, Input, Control } from '@rpgjs/types'
|
|
2
|
-
|
|
3
|
-
export const DefaultInput: Controls = {
|
|
4
|
-
[Control.Up]: {
|
|
5
|
-
repeat: true,
|
|
6
|
-
bind: Input.Up
|
|
7
|
-
},
|
|
8
|
-
[Control.Down]: {
|
|
9
|
-
repeat: true,
|
|
10
|
-
bind: Input.Down
|
|
11
|
-
},
|
|
12
|
-
[Control.Right]: {
|
|
13
|
-
repeat: true,
|
|
14
|
-
bind: Input.Right
|
|
15
|
-
},
|
|
16
|
-
[Control.Left]: {
|
|
17
|
-
repeat: true,
|
|
18
|
-
bind: Input.Left
|
|
19
|
-
},
|
|
20
|
-
[Control.Action]: {
|
|
21
|
-
bind: [Input.Space, Input.Enter]
|
|
22
|
-
},
|
|
23
|
-
[Control.Back]: {
|
|
24
|
-
bind: Input.Escape
|
|
25
|
-
}
|
|
26
|
-
}
|
package/src/Event.ts
DELETED
package/src/EventEmitter.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { isPromise } from './Utils'
|
|
2
|
-
|
|
3
|
-
export class EventEmitter {
|
|
4
|
-
private listeners: {
|
|
5
|
-
[eventName: string]: Function[]
|
|
6
|
-
} = {}
|
|
7
|
-
|
|
8
|
-
private listenersOnce: {
|
|
9
|
-
[eventName: string]: Function
|
|
10
|
-
} = {}
|
|
11
|
-
|
|
12
|
-
has(name: string): boolean {
|
|
13
|
-
return !!this.listeners[name] || !!this.listenersOnce[name]
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
once(name: string, cb: Function): EventEmitter {
|
|
17
|
-
this.listenersOnce[name] = cb
|
|
18
|
-
return this
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
on(name: string, cb: Function): EventEmitter {
|
|
22
|
-
if (!this.listeners[name]) this.listeners[name] = []
|
|
23
|
-
this.listeners[name].push(cb)
|
|
24
|
-
return this
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
emit(name: string, data?: any, rest: boolean = false): Promise<any[]> {
|
|
28
|
-
const ret: any = []
|
|
29
|
-
if (this.listeners[name]) {
|
|
30
|
-
for (let listener of this.listeners[name]) {
|
|
31
|
-
if (rest) ret.push(listener(...data))
|
|
32
|
-
else ret.push(listener(data))
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (this.listenersOnce[name]) {
|
|
36
|
-
if (rest) ret.push(this.listenersOnce[name](...data))
|
|
37
|
-
else ret.push(this.listenersOnce[name](data))
|
|
38
|
-
}
|
|
39
|
-
return Promise.all(ret.map(val => {
|
|
40
|
-
if (!isPromise(val)) {
|
|
41
|
-
return Promise.resolve(val)
|
|
42
|
-
}
|
|
43
|
-
return val
|
|
44
|
-
}))
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
off(name: string, listener?: Function) {
|
|
48
|
-
if (!listener) {
|
|
49
|
-
delete this.listeners[name]
|
|
50
|
-
delete this.listenersOnce[name]
|
|
51
|
-
return
|
|
52
|
-
}
|
|
53
|
-
if (this.listeners[name]) {
|
|
54
|
-
const index = this.listeners[name].indexOf(listener)
|
|
55
|
-
if (index !== -1) {
|
|
56
|
-
this.listeners[name].splice(index, 1)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
clear() {
|
|
62
|
-
this.listeners = {}
|
|
63
|
-
this.listenersOnce = {}
|
|
64
|
-
}
|
|
65
|
-
}
|
package/src/Game.ts
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import Utils, { generateUID, isClass } from './Utils'
|
|
2
|
-
import { EventEmitter } from './EventEmitter'
|
|
3
|
-
import { RpgCommonPlayer } from './Player'
|
|
4
|
-
import { constructor, Control, Controls, Direction } from '@rpgjs/types'
|
|
5
|
-
import { RpgPlugin } from './Plugin'
|
|
6
|
-
import { GameWorker } from './Worker'
|
|
7
|
-
import { HitObject } from './Hit'
|
|
8
|
-
import { RpgShape } from './Shape'
|
|
9
|
-
import { TiledObjectClass } from '@rpgjs/tiled'
|
|
10
|
-
import { InjectContext } from './Inject'
|
|
11
|
-
|
|
12
|
-
export enum GameSide {
|
|
13
|
-
Server = 'server',
|
|
14
|
-
Client = 'client',
|
|
15
|
-
Worker = 'worker'
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export class RpgCommonGame extends EventEmitter {
|
|
19
|
-
events: any
|
|
20
|
-
world: any
|
|
21
|
-
side: GameSide
|
|
22
|
-
|
|
23
|
-
initialize(side: GameSide) {
|
|
24
|
-
this.side = side
|
|
25
|
-
this.events = {} // events for all player in map
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
get isWorker() {
|
|
29
|
-
return this.side == 'worker'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
start(world) {
|
|
33
|
-
this.world = world
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
createWorkers(options: any) {
|
|
37
|
-
return new GameWorker(options)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
addObject(_class, playerId?: string) {
|
|
41
|
-
let event
|
|
42
|
-
if (!playerId) playerId = generateUID()
|
|
43
|
-
if (isClass(_class)) {
|
|
44
|
-
if (this.side == GameSide.Client) {
|
|
45
|
-
event = new _class(this, playerId)
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
event = new _class(playerId)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
event = _class
|
|
53
|
-
}
|
|
54
|
-
return event
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
addPlayer(playerClass, playerId?: string) {
|
|
58
|
-
const player = this.addObject(playerClass, playerId)
|
|
59
|
-
return player
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
addEvent<T>(eventClass: constructor<T>, eventId?: string): T {
|
|
63
|
-
const event = this.addObject(eventClass, eventId)
|
|
64
|
-
return event
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
addShape(obj: HitObject): RpgShape {
|
|
68
|
-
const id = obj.name = (obj.name || generateUID()) as string
|
|
69
|
-
const shape = new RpgShape(obj as TiledObjectClass)
|
|
70
|
-
shape.name = id
|
|
71
|
-
return shape
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
async processInput<RpgPlayer extends RpgCommonPlayer>(playerId: string, controls?: Controls): Promise<{
|
|
75
|
-
player: RpgPlayer,
|
|
76
|
-
inputs: string[]
|
|
77
|
-
}> {
|
|
78
|
-
const player: RpgPlayer = this.world.getObject(playerId)
|
|
79
|
-
const inputs: string[] = []
|
|
80
|
-
|
|
81
|
-
if (!player) return {
|
|
82
|
-
player,
|
|
83
|
-
inputs
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const routesMove: any = []
|
|
87
|
-
|
|
88
|
-
while (player.pendingMove.length > 0) {
|
|
89
|
-
const inputData = player.pendingMove.shift()
|
|
90
|
-
|
|
91
|
-
let { input, deltaTimeInt } = inputData as any
|
|
92
|
-
let moving = false
|
|
93
|
-
|
|
94
|
-
if (controls && controls[input]) {
|
|
95
|
-
const control = controls[input]
|
|
96
|
-
const now = Date.now()
|
|
97
|
-
const inputTime = player.inputsTimestamp[input] || 0
|
|
98
|
-
|
|
99
|
-
if (inputTime >= now) {
|
|
100
|
-
continue
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (control.delay) {
|
|
104
|
-
let duration: number
|
|
105
|
-
let otherControls: (string | Control)[] = []
|
|
106
|
-
|
|
107
|
-
if (typeof control.delay == 'number') {
|
|
108
|
-
duration = control.delay
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
duration = control.delay.duration
|
|
112
|
-
if (control.delay.otherControls) {
|
|
113
|
-
otherControls = control.delay.otherControls
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
player.inputsTimestamp[input] = now + duration
|
|
118
|
-
|
|
119
|
-
for (let control of otherControls) {
|
|
120
|
-
player.inputsTimestamp[control] = now + duration
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (input == Control.Action) {
|
|
126
|
-
await player.triggerCollisionWith(RpgCommonPlayer.ACTIONS.ACTION)
|
|
127
|
-
}
|
|
128
|
-
else if (
|
|
129
|
-
input == Direction.Left ||
|
|
130
|
-
input == Direction.Right ||
|
|
131
|
-
input == Direction.Up ||
|
|
132
|
-
input == Direction.Down
|
|
133
|
-
) {
|
|
134
|
-
player.moving = true
|
|
135
|
-
moving = true
|
|
136
|
-
const isMove = await player.moveByDirection(+input, deltaTimeInt || 1)
|
|
137
|
-
if (isMove) {
|
|
138
|
-
routesMove.push(inputData)
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// TODO, is Worker
|
|
142
|
-
// verify if is server because, rpg mode causes a bug (see #184)
|
|
143
|
-
if (this.side == GameSide.Server) {
|
|
144
|
-
await RpgPlugin.emit('Server.onInput', [player, {
|
|
145
|
-
...inputData,
|
|
146
|
-
moving
|
|
147
|
-
}], true)
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
inputs.push(input)
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return {
|
|
155
|
-
player,
|
|
156
|
-
inputs
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
package/src/Hit.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { HitEllipse, HitObject, HitType } from '@rpgjs/types'
|
|
2
|
-
import SAT from 'sat'
|
|
3
|
-
import { isInstanceOf } from './Utils'
|
|
4
|
-
export { HitType, HitObject } from '@rpgjs/types'
|
|
5
|
-
|
|
6
|
-
class HitClass {
|
|
7
|
-
|
|
8
|
-
createObjectHitbox(x: number, y: number, z: number, w: number, h: number): SAT.Box {
|
|
9
|
-
return new SAT.Box(new SAT.Vector(x, y - z), w, h)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
getHitbox(obj: HitObject, offset?: { x: number, y: number }): {
|
|
13
|
-
hitbox: SAT,
|
|
14
|
-
type?: string,
|
|
15
|
-
name?: string
|
|
16
|
-
} {
|
|
17
|
-
let hitbox: SAT, type: string | undefined
|
|
18
|
-
if (!offset) offset = { x: 0, y: 0 }
|
|
19
|
-
const x = obj.x + offset.x
|
|
20
|
-
const y = obj.y + offset.y
|
|
21
|
-
if ('ellipse' in obj || obj.type == HitType.Circle) {
|
|
22
|
-
type = HitType.Circle
|
|
23
|
-
const radius = (<HitEllipse>obj).width / 2
|
|
24
|
-
hitbox = new SAT.Circle(new SAT.Vector(x + radius, y + radius), radius)
|
|
25
|
-
}
|
|
26
|
-
else if ('polygon' in obj) {
|
|
27
|
-
type = HitType.Polygon
|
|
28
|
-
hitbox = new SAT.Polygon(new SAT.Vector(x, y), obj.polygon.map(pos => new SAT.Vector(+pos.x, +pos.y)))
|
|
29
|
-
}
|
|
30
|
-
else if (!('polygon' in obj) && ('width' in obj) && ('height' in obj)) {
|
|
31
|
-
type = HitType.Box
|
|
32
|
-
hitbox = new SAT.Box(new SAT.Vector(x, y), obj.width, obj.height)
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
hitbox = new SAT.Vector(x, y)
|
|
36
|
-
type = obj.type
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
hitbox,
|
|
40
|
-
type,
|
|
41
|
-
name: obj.name
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
testPolyCollision(type: string, hit1: SAT, hit2: SAT): boolean {
|
|
46
|
-
let collided = false
|
|
47
|
-
if (type == HitType.Box) {
|
|
48
|
-
if (hit1.pos.x <= hit2.pos.x + hit2.w &&
|
|
49
|
-
hit1.pos.x + hit1.w >= hit2.pos.x &&
|
|
50
|
-
hit1.pos.y <= hit2.pos.y + hit2.h &&
|
|
51
|
-
hit1.h + hit1.pos.y >= hit2.pos.y) {
|
|
52
|
-
return true
|
|
53
|
-
}
|
|
54
|
-
return false
|
|
55
|
-
}
|
|
56
|
-
if (isInstanceOf(hit1, SAT.Box)) hit1 = hit1.toPolygon()
|
|
57
|
-
if (isInstanceOf(hit2, SAT.Box)) hit2 = hit2.toPolygon()
|
|
58
|
-
switch (type) {
|
|
59
|
-
case HitType.Circle:
|
|
60
|
-
collided = SAT.testPolygonCircle(hit1, hit2)
|
|
61
|
-
break
|
|
62
|
-
case HitType.Polygon:
|
|
63
|
-
collided = SAT.testPolygonPolygon(hit1, hit2)
|
|
64
|
-
break
|
|
65
|
-
}
|
|
66
|
-
return collided
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export const Hit = new HitClass()
|
package/src/Inject.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
type Constructor<T> = new (...args: any[]) => T;
|
|
2
|
-
type ServiceIdentifier<T> = string;
|
|
3
|
-
|
|
4
|
-
export class InjectContext {
|
|
5
|
-
private instances = new Map<ServiceIdentifier<any>, any>();
|
|
6
|
-
|
|
7
|
-
inject<T>(constructor: Constructor<T>, args: any[] = []): T {
|
|
8
|
-
const serviceName = constructor.name;
|
|
9
|
-
if (!this.instances.has(serviceName)) {
|
|
10
|
-
const instance = new constructor(this, ...args);
|
|
11
|
-
if (instance['initialize']) {
|
|
12
|
-
instance['initialize'](...args);
|
|
13
|
-
}
|
|
14
|
-
this.instances.set(serviceName, instance);
|
|
15
|
-
}
|
|
16
|
-
return this.instances.get(serviceName);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface InjectInit {
|
|
21
|
-
initialize(...args: any[]): any
|
|
22
|
-
}
|