@rpgjs/client 4.3.0 → 5.0.0-alpha.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.
Files changed (323) hide show
  1. package/dist/Game/EffectManager.d.ts +5 -0
  2. package/dist/Game/Event.d.ts +4 -0
  3. package/dist/Game/Map.d.ts +7 -0
  4. package/dist/Game/Player.d.ts +4 -0
  5. package/dist/Gui/Gui.d.ts +23 -0
  6. package/{lib → dist}/RpgClient.d.ts +9 -6
  7. package/dist/RpgClientEngine.d.ts +43 -0
  8. package/dist/components/effects/index.d.ts +4 -0
  9. package/dist/components/gui/index.d.ts +3 -0
  10. package/dist/components/index.d.ts +2 -0
  11. package/dist/core/inject.d.ts +5 -0
  12. package/dist/core/setup.d.ts +6 -0
  13. package/dist/index.d.ts +13 -0
  14. package/dist/index.js +13 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/index10.js +8 -0
  17. package/dist/index10.js.map +1 -0
  18. package/dist/index11.js +10 -0
  19. package/dist/index11.js.map +1 -0
  20. package/dist/index12.js +8 -0
  21. package/dist/index12.js.map +1 -0
  22. package/dist/index13.js +17 -0
  23. package/dist/index13.js.map +1 -0
  24. package/dist/index14.js +50 -0
  25. package/dist/index14.js.map +1 -0
  26. package/dist/index15.js +191 -0
  27. package/dist/index15.js.map +1 -0
  28. package/dist/index16.js +9 -0
  29. package/dist/index16.js.map +1 -0
  30. package/dist/index17.js +387 -0
  31. package/dist/index17.js.map +1 -0
  32. package/dist/index18.js +31 -0
  33. package/dist/index18.js.map +1 -0
  34. package/dist/index19.js +24 -0
  35. package/dist/index19.js.map +1 -0
  36. package/dist/index2.js +112 -0
  37. package/dist/index2.js.map +1 -0
  38. package/dist/index20.js +2421 -0
  39. package/dist/index20.js.map +1 -0
  40. package/dist/index21.js +114 -0
  41. package/dist/index21.js.map +1 -0
  42. package/dist/index22.js +109 -0
  43. package/dist/index22.js.map +1 -0
  44. package/dist/index23.js +71 -0
  45. package/dist/index23.js.map +1 -0
  46. package/dist/index24.js +21 -0
  47. package/dist/index24.js.map +1 -0
  48. package/dist/index25.js +41 -0
  49. package/dist/index25.js.map +1 -0
  50. package/dist/index26.js +5 -0
  51. package/dist/index26.js.map +1 -0
  52. package/dist/index27.js +322 -0
  53. package/dist/index27.js.map +1 -0
  54. package/dist/index28.js +25 -0
  55. package/dist/index28.js.map +1 -0
  56. package/dist/index29.js +11 -0
  57. package/dist/index29.js.map +1 -0
  58. package/dist/index3.js +87 -0
  59. package/dist/index3.js.map +1 -0
  60. package/dist/index30.js +11 -0
  61. package/dist/index30.js.map +1 -0
  62. package/dist/index31.js +174 -0
  63. package/dist/index31.js.map +1 -0
  64. package/dist/index32.js +501 -0
  65. package/dist/index32.js.map +1 -0
  66. package/dist/index33.js +12 -0
  67. package/dist/index33.js.map +1 -0
  68. package/dist/index34.js +4403 -0
  69. package/dist/index34.js.map +1 -0
  70. package/dist/index35.js +316 -0
  71. package/dist/index35.js.map +1 -0
  72. package/dist/index36.js +61 -0
  73. package/dist/index36.js.map +1 -0
  74. package/dist/index37.js +91 -0
  75. package/dist/index37.js.map +1 -0
  76. package/dist/index38.js +20 -0
  77. package/dist/index38.js.map +1 -0
  78. package/dist/index39.js +20 -0
  79. package/dist/index39.js.map +1 -0
  80. package/dist/index4.js +54 -0
  81. package/dist/index4.js.map +1 -0
  82. package/dist/index5.js +15 -0
  83. package/dist/index5.js.map +1 -0
  84. package/dist/index6.js +17 -0
  85. package/dist/index6.js.map +1 -0
  86. package/dist/index7.js +31 -0
  87. package/dist/index7.js.map +1 -0
  88. package/dist/index8.js +90 -0
  89. package/dist/index8.js.map +1 -0
  90. package/dist/index9.js +76 -0
  91. package/dist/index9.js.map +1 -0
  92. package/dist/module.d.ts +14 -0
  93. package/dist/presets/index.d.ts +22 -0
  94. package/{lib/Presets/AnimationSpritesheet.d.ts → dist/presets/rmspritesheet.d.ts} +6 -2
  95. package/dist/services/AbstractSocket.d.ts +15 -0
  96. package/dist/services/loadMap.d.ts +14 -0
  97. package/dist/services/mmorpg.d.ts +32 -0
  98. package/dist/services/standalone.d.ts +34 -0
  99. package/package.json +25 -41
  100. package/src/Game/EffectManager.ts +20 -0
  101. package/src/Game/Event.ts +5 -0
  102. package/src/Game/Map.ts +10 -0
  103. package/src/Game/Object.ts +16 -0
  104. package/src/Game/Player.ts +5 -0
  105. package/src/Gui/Gui.ts +80 -533
  106. package/src/RpgClient.ts +9 -5
  107. package/src/RpgClientEngine.ts +135 -818
  108. package/src/components/character.ce +104 -0
  109. package/src/components/effects/animation.ce +19 -0
  110. package/src/components/effects/hit.ce +87 -0
  111. package/src/components/effects/index.ts +7 -0
  112. package/src/components/gui/dialogbox/index.ce +194 -0
  113. package/src/components/gui/dialogbox/itemMenu.ce +23 -0
  114. package/src/components/gui/dialogbox/selection.ce +67 -0
  115. package/src/components/gui/index.ts +5 -0
  116. package/src/components/index.ts +3 -0
  117. package/src/components/scenes/canvas.ce +51 -0
  118. package/src/components/scenes/draw-map.ce +56 -0
  119. package/src/components/scenes/element-map.ce +23 -0
  120. package/src/components/scenes/event-layer.ce +20 -0
  121. package/src/core/inject.ts +17 -0
  122. package/src/core/setup.ts +18 -0
  123. package/src/index.ts +13 -29
  124. package/src/module.ts +93 -0
  125. package/src/presets/index.ts +5 -0
  126. package/src/{Presets/AnimationSpritesheet.ts → presets/rmspritesheet.ts} +4 -5
  127. package/src/services/AbstractSocket.ts +14 -0
  128. package/src/services/loadMap.ts +33 -0
  129. package/src/services/mmorpg.ts +64 -0
  130. package/src/services/standalone.ts +101 -0
  131. package/src/types/canvas-engine.d.ts +26 -0
  132. package/tsconfig.json +8 -3
  133. package/vite.config.ts +34 -0
  134. package/CHANGELOG.md +0 -189
  135. package/LICENSE +0 -19
  136. package/browser/React-ece4b906.js +0 -195
  137. package/browser/index-ba657126.js +0 -44229
  138. package/browser/manifest.json +0 -21
  139. package/browser/rpg.client.js +0 -40
  140. package/browser/rpg.client.umd.cjs +0 -44456
  141. package/lib/Components/AbstractComponent.d.ts +0 -32
  142. package/lib/Components/AbstractComponent.js +0 -93
  143. package/lib/Components/AbstractComponent.js.map +0 -1
  144. package/lib/Components/BarComponent.d.ts +0 -21
  145. package/lib/Components/BarComponent.js +0 -169
  146. package/lib/Components/BarComponent.js.map +0 -1
  147. package/lib/Components/Component.d.ts +0 -124
  148. package/lib/Components/Component.js +0 -425
  149. package/lib/Components/Component.js.map +0 -1
  150. package/lib/Components/DebugComponent.d.ts +0 -11
  151. package/lib/Components/DebugComponent.js +0 -32
  152. package/lib/Components/DebugComponent.js.map +0 -1
  153. package/lib/Components/ImageComponent.d.ts +0 -11
  154. package/lib/Components/ImageComponent.js +0 -30
  155. package/lib/Components/ImageComponent.js.map +0 -1
  156. package/lib/Components/ShapeComponent.d.ts +0 -11
  157. package/lib/Components/ShapeComponent.js +0 -57
  158. package/lib/Components/ShapeComponent.js.map +0 -1
  159. package/lib/Components/TextComponent.d.ts +0 -11
  160. package/lib/Components/TextComponent.js +0 -35
  161. package/lib/Components/TextComponent.js.map +0 -1
  162. package/lib/Components/TileComponent.d.ts +0 -10
  163. package/lib/Components/TileComponent.js +0 -40
  164. package/lib/Components/TileComponent.js.map +0 -1
  165. package/lib/Effects/Animation.d.ts +0 -55
  166. package/lib/Effects/Animation.js +0 -233
  167. package/lib/Effects/Animation.js.map +0 -1
  168. package/lib/Effects/AnimationCharacter.d.ts +0 -7
  169. package/lib/Effects/AnimationCharacter.js +0 -9
  170. package/lib/Effects/AnimationCharacter.js.map +0 -1
  171. package/lib/Effects/Spinner.d.ts +0 -7
  172. package/lib/Effects/Spinner.js +0 -18
  173. package/lib/Effects/Spinner.js.map +0 -1
  174. package/lib/Effects/Timeline.d.ts +0 -151
  175. package/lib/Effects/Timeline.js +0 -369
  176. package/lib/Effects/Timeline.js.map +0 -1
  177. package/lib/Effects/TransitionScene.d.ts +0 -18
  178. package/lib/Effects/TransitionScene.js +0 -50
  179. package/lib/Effects/TransitionScene.js.map +0 -1
  180. package/lib/GameEngine.d.ts +0 -68
  181. package/lib/GameEngine.js +0 -254
  182. package/lib/GameEngine.js.map +0 -1
  183. package/lib/Gui/Gui.d.ts +0 -110
  184. package/lib/Gui/Gui.js +0 -489
  185. package/lib/Gui/Gui.js.map +0 -1
  186. package/lib/Gui/React.d.ts +0 -28
  187. package/lib/Gui/React.js +0 -147
  188. package/lib/Gui/React.js.map +0 -1
  189. package/lib/Gui/Vue.d.ts +0 -13
  190. package/lib/Gui/Vue.js +0 -114
  191. package/lib/Gui/Vue.js.map +0 -1
  192. package/lib/Interfaces/Character.d.ts +0 -6
  193. package/lib/Interfaces/Character.js +0 -2
  194. package/lib/Interfaces/Character.js.map +0 -1
  195. package/lib/Interfaces/Scene.d.ts +0 -10
  196. package/lib/Interfaces/Scene.js +0 -2
  197. package/lib/Interfaces/Scene.js.map +0 -1
  198. package/lib/KeyboardControls.d.ts +0 -367
  199. package/lib/KeyboardControls.js +0 -714
  200. package/lib/KeyboardControls.js.map +0 -1
  201. package/lib/Logger.d.ts +0 -1
  202. package/lib/Logger.js +0 -4
  203. package/lib/Logger.js.map +0 -1
  204. package/lib/Presets/AnimationSpritesheet.js +0 -39
  205. package/lib/Presets/AnimationSpritesheet.js.map +0 -1
  206. package/lib/Presets/Scene.d.ts +0 -3
  207. package/lib/Presets/Scene.js +0 -5
  208. package/lib/Presets/Scene.js.map +0 -1
  209. package/lib/Renderer.d.ts +0 -62
  210. package/lib/Renderer.js +0 -300
  211. package/lib/Renderer.js.map +0 -1
  212. package/lib/Resources.d.ts +0 -22
  213. package/lib/Resources.js +0 -38
  214. package/lib/Resources.js.map +0 -1
  215. package/lib/RpgClient.js +0 -2
  216. package/lib/RpgClient.js.map +0 -1
  217. package/lib/RpgClientEngine.d.ts +0 -257
  218. package/lib/RpgClientEngine.js +0 -677
  219. package/lib/RpgClientEngine.js.map +0 -1
  220. package/lib/Scene/EventLayer.d.ts +0 -4
  221. package/lib/Scene/EventLayer.js +0 -8
  222. package/lib/Scene/EventLayer.js.map +0 -1
  223. package/lib/Scene/Map.d.ts +0 -109
  224. package/lib/Scene/Map.js +0 -319
  225. package/lib/Scene/Map.js.map +0 -1
  226. package/lib/Scene/Scene.d.ts +0 -184
  227. package/lib/Scene/Scene.js +0 -250
  228. package/lib/Scene/Scene.js.map +0 -1
  229. package/lib/Scene/SceneData.d.ts +0 -4
  230. package/lib/Scene/SceneData.js +0 -8
  231. package/lib/Scene/SceneData.js.map +0 -1
  232. package/lib/Sound/RpgSound.d.ts +0 -11
  233. package/lib/Sound/RpgSound.js +0 -46
  234. package/lib/Sound/RpgSound.js.map +0 -1
  235. package/lib/Sound/Sound.d.ts +0 -78
  236. package/lib/Sound/Sound.js +0 -12
  237. package/lib/Sound/Sound.js.map +0 -1
  238. package/lib/Sound/Sounds.d.ts +0 -2
  239. package/lib/Sound/Sounds.js +0 -6
  240. package/lib/Sound/Sounds.js.map +0 -1
  241. package/lib/Sprite/Character.d.ts +0 -18
  242. package/lib/Sprite/Character.js +0 -131
  243. package/lib/Sprite/Character.js.map +0 -1
  244. package/lib/Sprite/Player.d.ts +0 -3
  245. package/lib/Sprite/Player.js +0 -4
  246. package/lib/Sprite/Player.js.map +0 -1
  247. package/lib/Sprite/Spritesheet.d.ts +0 -365
  248. package/lib/Sprite/Spritesheet.js +0 -13
  249. package/lib/Sprite/Spritesheet.js.map +0 -1
  250. package/lib/Sprite/Spritesheets.d.ts +0 -3
  251. package/lib/Sprite/Spritesheets.js +0 -6
  252. package/lib/Sprite/Spritesheets.js.map +0 -1
  253. package/lib/Tilemap/CommonLayer.d.ts +0 -10
  254. package/lib/Tilemap/CommonLayer.js +0 -17
  255. package/lib/Tilemap/CommonLayer.js.map +0 -1
  256. package/lib/Tilemap/ImageLayer.d.ts +0 -4
  257. package/lib/Tilemap/ImageLayer.js +0 -16
  258. package/lib/Tilemap/ImageLayer.js.map +0 -1
  259. package/lib/Tilemap/Tile.d.ts +0 -21
  260. package/lib/Tilemap/Tile.js +0 -67
  261. package/lib/Tilemap/Tile.js.map +0 -1
  262. package/lib/Tilemap/TileLayer.d.ts +0 -13
  263. package/lib/Tilemap/TileLayer.js +0 -122
  264. package/lib/Tilemap/TileLayer.js.map +0 -1
  265. package/lib/Tilemap/TileSet.d.ts +0 -7
  266. package/lib/Tilemap/TileSet.js +0 -24
  267. package/lib/Tilemap/TileSet.js.map +0 -1
  268. package/lib/Tilemap/index.d.ts +0 -28
  269. package/lib/Tilemap/index.js +0 -151
  270. package/lib/Tilemap/index.js.map +0 -1
  271. package/lib/clientEntryPoint.d.ts +0 -89
  272. package/lib/clientEntryPoint.js +0 -48
  273. package/lib/clientEntryPoint.js.map +0 -1
  274. package/lib/index.d.ts +0 -26
  275. package/lib/index.js +0 -27
  276. package/lib/index.js.map +0 -1
  277. package/lib/inject.d.ts +0 -23
  278. package/lib/inject.js +0 -30
  279. package/lib/inject.js.map +0 -1
  280. package/rpg.toml +0 -14
  281. package/src/Components/AbstractComponent.ts +0 -120
  282. package/src/Components/BarComponent.ts +0 -181
  283. package/src/Components/Component.ts +0 -515
  284. package/src/Components/DebugComponent.ts +0 -36
  285. package/src/Components/ImageComponent.ts +0 -30
  286. package/src/Components/ShapeComponent.ts +0 -64
  287. package/src/Components/TextComponent.ts +0 -33
  288. package/src/Components/TileComponent.ts +0 -43
  289. package/src/Effects/Animation.ts +0 -310
  290. package/src/Effects/AnimationCharacter.ts +0 -7
  291. package/src/Effects/Spinner.ts +0 -19
  292. package/src/Effects/Timeline.ts +0 -378
  293. package/src/Effects/TransitionScene.ts +0 -59
  294. package/src/GameEngine.ts +0 -289
  295. package/src/Gui/React.ts +0 -193
  296. package/src/Gui/Vue.ts +0 -154
  297. package/src/Interfaces/Character.ts +0 -7
  298. package/src/Interfaces/Scene.ts +0 -9
  299. package/src/KeyboardControls.ts +0 -748
  300. package/src/Logger.ts +0 -3
  301. package/src/Presets/Scene.ts +0 -3
  302. package/src/Renderer.ts +0 -334
  303. package/src/Resources.ts +0 -39
  304. package/src/Scene/EventLayer.ts +0 -9
  305. package/src/Scene/Map.ts +0 -402
  306. package/src/Scene/Scene.ts +0 -305
  307. package/src/Scene/SceneData.ts +0 -13
  308. package/src/Sound/RpgSound.ts +0 -50
  309. package/src/Sound/Sound.ts +0 -91
  310. package/src/Sound/Sounds.ts +0 -7
  311. package/src/Sprite/Character.ts +0 -157
  312. package/src/Sprite/Player.ts +0 -3
  313. package/src/Sprite/Spritesheet.ts +0 -392
  314. package/src/Sprite/Spritesheets.ts +0 -8
  315. package/src/Tilemap/CommonLayer.ts +0 -20
  316. package/src/Tilemap/ImageLayer.ts +0 -20
  317. package/src/Tilemap/Tile.ts +0 -80
  318. package/src/Tilemap/TileLayer.ts +0 -142
  319. package/src/Tilemap/TileSet.ts +0 -40
  320. package/src/Tilemap/index.ts +0 -175
  321. package/src/clientEntryPoint.ts +0 -150
  322. package/src/inject.ts +0 -34
  323. package/src/types/howler.d.ts +0 -73
@@ -1,378 +0,0 @@
1
- import { TransformOptions, FrameOptions } from '../Sprite/Spritesheet'
2
-
3
- type EasingFunction = (time: number, _from: number, to: number, duration: number) => number;
4
-
5
- export const Ease: Record<string, EasingFunction> = {
6
- linear: (time: number, _from: number, to: number, duration: number): number => {
7
- return _from + (to - _from) * time / duration;
8
- },
9
- easeInQuad: (time: number, _from: number, to: number, duration: number): number => {
10
- time /= duration;
11
- return (to - _from) * time * time + _from;
12
- },
13
- easeOutQuad: (time: number, _from: number, to: number, duration: number): number => {
14
- time /= duration;
15
- return -(to - _from) * time * (time - 2) + _from;
16
- },
17
- easeInOutQuad: (time: number, _from: number, to: number, duration: number): number => {
18
- time /= duration / 2;
19
- if (time < 1) return ((to - _from) / 2) * time * time + _from;
20
- time--;
21
- return -((to - _from) / 2) * (time * (time - 2) - 1) + _from;
22
- },
23
- easeInCubic: (time: number, _from: number, to: number, duration: number): number => {
24
- time /= duration;
25
- return (to - _from) * time * time * time + _from;
26
- },
27
- easeOutCubic: (time: number, _from: number, to: number, duration: number): number => {
28
- time /= duration;
29
- time--;
30
- return (to - _from) * (time * time * time + 1) + _from;
31
- },
32
- easeInOutCubic: (time: number, _from: number, to: number, duration: number): number => {
33
- time /= duration / 2;
34
- if (time < 1) return (to - _from) / 2 * time * time * time + _from;
35
- time -= 2;
36
- return (to - _from) / 2 * (time * time * time + 2) + _from;
37
- },
38
- easeInQuart: (time: number, _from: number, to: number, duration: number): number => {
39
- time /= duration;
40
- return (to - _from) * time * time * time * time + _from;
41
- },
42
- easeOutQuart: (time: number, _from: number, to: number, duration: number): number => {
43
- time /= duration;
44
- time--;
45
- return -(to - _from) * (time * time * time * time - 1) + _from;
46
- },
47
- easeInOutQuart: (time: number, _from: number, to: number, duration: number): number => {
48
- time /= duration / 2;
49
- if (time < 1) return (to - _from) / 2 * time * time * time * time + _from;
50
- time -= 2;
51
- return -(to - _from) / 2 * (time * time * time * time - 2) + _from;
52
- },
53
- easeInQuint: (time: number, _from: number, to: number, duration: number): number => {
54
- time /= duration;
55
- return (to - _from) * time * time * time * time * time + _from;
56
- },
57
- easeOutQuint: (time: number, _from: number, to: number, duration: number): number => {
58
- time /= duration;
59
- time--;
60
- return (to - _from) * (time * time * time * time * time + 1) + _from;
61
- },
62
- easeInOutQuint: (time: number, _from: number, to: number, duration: number): number => {
63
- time /= duration / 2;
64
- if (time < 1) return (to - _from) / 2 * time * time * time * time * time + _from;
65
- time -= 2;
66
- return (to - _from) / 2 * (time * time * time * time * time + 2) + _from;
67
- },
68
- easeInSine: (time: number, _from: number, to: number, duration: number): number => {
69
- return -(to - _from) * Math.cos(time / duration * (Math.PI / 2)) + (to - _from) + _from;
70
- },
71
- easeOutSine: (time: number, _from: number, to: number, duration: number): number => {
72
- return (to - _from) * Math.sin(time / duration * (Math.PI / 2)) + _from;
73
- },
74
- easeInOutSine: (time: number, _from: number, to: number, duration: number): number => {
75
- return -(to - _from) / 2 * (Math.cos(Math.PI * time / duration) - 1) + _from;
76
- },
77
- easeInExpo: (time: number, _from: number, to: number, duration: number): number => {
78
- return time === 0 ? _from : (to - _from) * Math.pow(2, 10 * (time / duration - 1)) + _from;
79
- },
80
- easeOutExpo: (time: number, _from: number, to: number, duration: number): number => {
81
- return time === duration ? to : (to - _from) * (-Math.pow(2, -10 * time / duration) + 1) + _from;
82
- },
83
- easeInOutExpo: (time: number, _from: number, to: number, duration: number): number => {
84
- if (time === 0) return _from;
85
- if (time === duration) return to;
86
- time /= duration / 2;
87
- if (time < 1) return (to - _from) / 2 * Math.pow(2, 10 * (time - 1)) + _from;
88
- return (to - _from) / 2 * (-Math.pow(2, -10 * --time) + 2) + _from;
89
- },
90
- easeInCirc: (time: number, _from: number, to: number, duration: number): number => {
91
- time /= duration;
92
- return -(to - _from) * (Math.sqrt(1 - time * time) - 1) + _from;
93
- },
94
- easeOutCirc: (time: number, _from: number, to: number, duration: number): number => {
95
- time /= duration;
96
- time--;
97
- return (to - _from) * Math.sqrt(1 - time * time) + _from;
98
- },
99
- easeInOutCirc: (time: number, _from: number, to: number, duration: number): number => {
100
- time /= duration / 2;
101
- if (time < 1) return -(to - _from) / 2 * (Math.sqrt(1 - time * time) - 1) + _from;
102
- time -= 2;
103
- return (to - _from) / 2 * (Math.sqrt(1 - time * time) + 1) + _from;
104
- },
105
- easeInElastic: (time: number, _from: number, to: number, duration: number, amplitude = 0, period = 0): number => {
106
- if (time === 0) return _from;
107
- time /= duration;
108
- if (time === 1) return to;
109
- if (period === 0) period = duration * 0.3;
110
- let s: number;
111
- if (amplitude < Math.abs(to - _from)) {
112
- amplitude = to - _from;
113
- s = period / 4;
114
- } else {
115
- s = period / (2 * Math.PI) * Math.asin((to - _from) / amplitude);
116
- }
117
- time--;
118
- return -(amplitude * Math.pow(2, 10 * time) * Math.sin((time * duration - s) * (2 * Math.PI) / period)) + _from;
119
- },
120
- easeOutElastic: (time: number, _from: number, to: number, duration: number, amplitude = 0, period = 0): number => {
121
- if (time === 0) return _from;
122
- time /= duration;
123
- if (time === 1) return to;
124
- if (period === 0) period = duration * 0.3;
125
- let s: number;
126
- if (amplitude < Math.abs(to - _from)) {
127
- amplitude = to - _from;
128
- s = period / 4;
129
- } else {
130
- s = period / (2 * Math.PI) * Math.asin((to - _from) / amplitude);
131
- }
132
- return amplitude * Math.pow(2, -10 * time) * Math.sin((time * duration - s) * (2 * Math.PI) / period) + (to - _from) + _from;
133
- },
134
- easeInOutElastic: (time: number, _from: number, to: number, duration: number, amplitude = 0, period = 0): number => {
135
- if (time === 0) return _from;
136
- time /= duration / 2;
137
- if (time === 2) return to;
138
- if (period === 0) period = duration * (0.3 * 1.5);
139
- let s: number;
140
- if (amplitude < Math.abs(to - _from)) {
141
- amplitude = to - _from;
142
- s = period / 4;
143
- } else {
144
- s = period / (2 * Math.PI) * Math.asin((to - _from) / amplitude);
145
- }
146
- if (time < 1) {
147
- time--;
148
- return -0.5 * (amplitude * Math.pow(2, 10 * time) * Math.sin((time * duration - s) * (2 * Math.PI) / period)) + _from;
149
- }
150
- time--;
151
- return amplitude * Math.pow(2, -10 * time) * Math.sin((time * duration - s) * (2 * Math.PI) / period) * 0.5 + (to - _from) + _from;
152
- },
153
- // ...
154
-
155
- easeInBack: (time: number, _from: number, to: number, duration: number, s = 1.70158): number => {
156
- time /= duration;
157
- return (to - _from) * time * time * ((s + 1) * time - s) + _from;
158
- },
159
- easeOutBack: (time: number, _from: number, to: number, duration: number, s = 1.70158): number => {
160
- time = time / duration - 1;
161
- return (to - _from) * (time * time * ((s + 1) * time + s) + 1) + _from;
162
- },
163
- easeInOutBack: (time: number, _from: number, to: number, duration: number, s = 1.70158): number => {
164
- s *= 1.525;
165
- time /= duration / 2;
166
- if (time < 1) return (to - _from) / 2 * (time * time * ((s + 1) * time - s)) + _from;
167
- time -= 2;
168
- return (to - _from) / 2 * (time * time * ((s + 1) * time + s) + 2) + _from;
169
- },
170
- easeInBounce: (time: number, _from: number, to: number, duration: number): number => {
171
- return (to - _from) - Ease.easeOutBounce(duration - time, 0, to - _from, duration) + _from;
172
- },
173
- easeOutBounce: (time: number, _from: number, to: number, duration: number): number => {
174
- time /= duration;
175
- let multiplier = 7.5625;
176
- if (time < (1 / 2.75)) {
177
- return (to - _from) * (multiplier * time * time) + _from;
178
- } else if (time < (2 / 2.75)) {
179
- time -= (1.5 / 2.75);
180
- return (to - _from) * (multiplier * time * time + 0.75) + _from;
181
- } else if (time < (2.5 / 2.75)) {
182
- time -= (2.25 / 2.75);
183
- return (to - _from) * (multiplier * time * time + 0.9375) + _from;
184
- } else {
185
- time -= (2.625 / 2.75);
186
- return (to - _from) * (multiplier * time * time + 0.984375) + _from;
187
- }
188
- },
189
- easeInOutBounce: (time: number, _from: number, to: number, duration: number): number => {
190
- if (time < duration / 2) return Ease.easeInBounce(time * 2, 0, to - _from, duration) * 0.5 + _from;
191
- return Ease.easeOutBounce(time * 2 - duration, 0, to - _from, duration) * 0.5 + (to - _from) * 0.5 + _from;
192
- }
193
- }
194
-
195
- type EaseType = (t: number, b: number, c: number, d: number) => number
196
-
197
- /**
198
- * Creates a new instance of the Timeline class, which allows for complex animations and control over keyframes.
199
- *
200
- * @constructor
201
- * @title new Timeline(options?)
202
- * @param {object} [options] - Optional configuration object for the Timeline.
203
- * @param {number} [options.keyframes=10] - Specifies the number of keyframes for the animation. Defaults to 10. The larger the keyframes, the smoother the animation, but the more resource-intensive it is, as the loop to browse the array will take longer.
204
- * @memberof Timeline
205
- * @since 4.0.0
206
- * @example
207
- *
208
- * ```ts
209
- * const timeline = new Timeline({ keyframes: 20 });
210
- * ```
211
- */
212
- interface TimelineOptions {
213
- keyframes?: number
214
- }
215
-
216
- export class Timeline {
217
- private time: number = 0
218
- private animation: FrameOptions[][] = []
219
- private keyframes: number = 10
220
-
221
- constructor(options?: TimelineOptions) {
222
- if (options) {
223
- if (options.keyframes) this.keyframes = options.keyframes
224
- }
225
- }
226
-
227
- /**
228
- * Allows you to create complex animations more easily. For example, to display a movement with an Easing function
229
- *
230
- * ```ts
231
- * import { Timeline, Ease } from '@rpgjs/client'
232
- *
233
- * new Timeline()
234
- * .add(30, ({ scale }) => [{
235
- * frameX: 0,
236
- * frameY: 1,
237
- * scale: [scale]
238
- * }], {
239
- * scale: {
240
- * from: 0,
241
- * to: 1,
242
- * easing: Ease.easeOutBounce
243
- * }
244
- * })
245
- * .add(100)
246
- * .create()
247
- * ```
248
- *
249
- * Here we say
250
- *
251
- * - Duration in frames, allowing you to specify the duration of each animation step. If the timeline respects a specific frame rate, e.g. 60 frames per second, 40 frames correspond to an animation duration of 2/3 of a second for each step.
252
- * - A function that will be called every 1 frame with the `scale` property defined in transform
253
- * - An object of transformation. Define the properties of your choice to be passed to the callback function
254
- * - `to`: the starting value
255
- * - `from`: the end value
256
- * - `easing`: An easing function (By default, it is a linear function)
257
- *
258
- * Note that if you just put a duration (`add(100)`), it will only put a pause on the animation
259
- *
260
- * Easing functions available but you can create your own
261
- *
262
- * ```ts
263
- * function myEase(t: number, b: number, c: number, d: number): number { }
264
- * ```
265
- *
266
- * `t`: current time
267
- * `b`: start value
268
- * `c`: end value
269
- * `d`: duration
270
- *
271
- * @title Add Animation in timeline
272
- * @enum {Function}
273
- *
274
- * Ease.linear | linear
275
- * Ease.easeInQuad | easeInQuad
276
- * Ease.easeOutQuad | easeOutQuad
277
- * Ease.easeInOutQuad | easeInOutQuad
278
- * Ease.easeInCubic | easeInCubic
279
- * Ease.easeOutCubic | easeOutCubic
280
- * Ease.easeInOutCubic | easeInOutCubic
281
- * Ease.easeInQuart | easeInQuart
282
- * Ease.easeOutQuart | easeOutQuart
283
- * Ease.easeInOutQuart | easeInOutQuart
284
- * Ease.easeInQuint | easeInQuint
285
- * Ease.easeOutQuint | easeOutQuint
286
- * Ease.easeInOutQuint | easeInOutQuint
287
- * Ease.easeInSine | easeInSine
288
- * Ease.easeOutSine | easeOutSine
289
- * Ease.easeInOutSine | easeInOutSine
290
- * Ease.easeInExpo | easeInExpo
291
- * Ease.easeOutExpo | easeOutExpo
292
- * Ease.easeInOutExpo | easeInOutExpo
293
- * Ease.easeInCirc | easeInCirc
294
- * Ease.easeOutCirc | easeOutCirc
295
- * Ease.easeInOutCirc | easeInOutCirc
296
- * Ease.easeInElastic | easeInElastic
297
- * Ease.easeOutElastic | easeOutElastic
298
- * Ease.easeInOutElastic | easeInOutElastic
299
- * Ease.easeInBack | easeInBack
300
- * Ease.easeOutBack | easeOutBack
301
- * Ease.easeInOutBack | easeInOutBack
302
- * Ease.easeInBounce | easeInBounce
303
- * Ease.easeOutBounce | easeOutBounce
304
- * @method timeline.add(duration,cb?,transform?)
305
- * @param {number} duration
306
- * @param { (obj?: number, time?: number) => TransformOptions[] } [cb]
307
- * @param { [property: string]: { to:number, from: number: easing?: Function } } [transform]
308
- * @returns {Timeline}
309
- * @memberof Timeline
310
- */
311
- add(duration: number, cb?: (obj?: any, time?: number) => TransformOptions[], transform?: {
312
- [property: string]: {
313
- to: number,
314
- from: number,
315
- easing?: EaseType
316
- }
317
- }): Timeline {
318
- if (!cb) {
319
- this.animation.push([{
320
- time: duration + this.time,
321
- }])
322
- this.time += duration
323
- return this
324
- }
325
- for (let k = 0; k < this.keyframes; k++) {
326
- const i = Math.floor((duration / (this.keyframes - 1)) * k)
327
- let anim
328
- const obj = {}
329
- for (let prop in transform) {
330
- const param = transform[prop]
331
- const cbEasing = param.easing || Ease.linear
332
- obj[prop] = cbEasing(i, param.from, param.to, duration)
333
- }
334
- const ret = cb(obj, i)
335
- anim = ret.map(el => {
336
- (el as any).time = i + this.time
337
- return el
338
- })
339
- this.animation.push(anim)
340
- }
341
- this.time += duration
342
- return this
343
- }
344
-
345
- /**
346
- * Allows you to create the animation array to assign to the `animations` property in the Spritesheet
347
- *
348
- * ```ts
349
- * import { Spritesheet, Timeline } from '@rpgjs/server'
350
- *
351
- * @Spritesheet({
352
- * id: 'sprite',
353
- * image: require('./sprite.png'),
354
- * width: 192,
355
- * height: 228,
356
- * framesHeight: 6,
357
- * framesWidth: 6,
358
- * anchor: [0.5],
359
- * textures: {
360
- * myanim: {
361
- * animations: new Timeline()
362
- * .add(SEE THE ADD METHOD)
363
- * .create()
364
- * }
365
- * }
366
- * })
367
- * export class MyAnim {}
368
- * ```
369
- *
370
- * @title Create the animation array
371
- * @method timeline.create()
372
- * @returns {FrameOptions[][]} The animation array
373
- * @memberof Timeline
374
- */
375
- create(): FrameOptions[][] {
376
- return this.animation
377
- }
378
- }
@@ -1,59 +0,0 @@
1
- import { Subscription } from "rxjs";
2
- import { RpgClientEngine } from "../RpgClientEngine";
3
- import { FrameOptions } from "../Sprite/Spritesheet";
4
- import { Timeline } from "./Timeline";
5
- import { Container } from "pixi.js"
6
- import { InjectContext } from "@rpgjs/common";
7
-
8
- export class TransitionScene {
9
- private frameIndex: number = 0
10
- private animations: FrameOptions[][] = []
11
- private updateSubscription: Subscription
12
- private complete: Function = () => {}
13
- private clientEngine: RpgClientEngine = this.context.inject(RpgClientEngine)
14
-
15
- constructor(private context: InjectContext, private container: Container) { }
16
-
17
- addFadeIn() {
18
- return this.addFading(1, 0)
19
- }
20
-
21
- addFadeOut() {
22
- return this.addFading(0, 1)
23
- }
24
-
25
- private addFading(from: number, to: number) {
26
- this.animations = new Timeline()
27
- .add(15, ({ opacity }) => [{
28
- opacity
29
- }], {
30
- opacity: {
31
- from,
32
- to
33
- }
34
- })
35
- .create()
36
- return this
37
- }
38
-
39
- onComplete(cb: Function) {
40
- this.complete = cb
41
- return this
42
- }
43
-
44
- start() {
45
- this.updateSubscription = this.clientEngine.tick.subscribe(() => this.update())
46
- }
47
-
48
- private update() {
49
- const animationFrame = this.animations[this.frameIndex]
50
- if (!animationFrame) {
51
- this.complete()
52
- this.updateSubscription.unsubscribe()
53
- return
54
- }
55
- const frame = animationFrame[0]
56
- this.container.alpha = frame.opacity as number
57
- this.frameIndex++
58
- }
59
- }