@urso/core 0.2.4-dev → 0.2.8

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 (147) hide show
  1. package/.babelrc +11 -11
  2. package/README.md +10 -10
  3. package/build/js/index.js +1 -1
  4. package/build/js/index.js.LICENSE.txt +31 -31
  5. package/package.json +52 -52
  6. package/src/js/app.js +77 -76
  7. package/src/js/components/_info.js +8 -8
  8. package/src/js/components/base/_info.js +3 -3
  9. package/src/js/components/base/controller.js +78 -78
  10. package/src/js/components/debug/_info.js +6 -6
  11. package/src/js/components/debug/controller.js +38 -38
  12. package/src/js/components/debug/coords.js +23 -23
  13. package/src/js/components/debug/fps.js +34 -34
  14. package/src/js/components/debug/template.js +33 -33
  15. package/src/js/components/deviceRotate/_info.js +3 -3
  16. package/src/js/components/deviceRotate/controller.js +86 -86
  17. package/src/js/components/fullscreen/_info.js +6 -6
  18. package/src/js/components/fullscreen/android.js +104 -104
  19. package/src/js/components/fullscreen/controller.js +64 -64
  20. package/src/js/components/fullscreen/desktop.js +49 -49
  21. package/src/js/components/fullscreen/ios.js +111 -111
  22. package/src/js/components/loader/_info.js +4 -4
  23. package/src/js/components/loader/controller.js +66 -66
  24. package/src/js/components/loader/template.js +70 -70
  25. package/src/js/components/soundInitialPopup/_info.js +3 -3
  26. package/src/js/components/soundInitialPopup/controller.js +42 -42
  27. package/src/js/components/soundInitialPopup/template.js +109 -109
  28. package/src/js/components/stateDriven/_info.js +3 -4
  29. package/src/js/components/stateDriven/controller.js +96 -96
  30. package/src/js/config/load.js +5 -5
  31. package/src/js/config/main.js +10 -9
  32. package/src/js/extra/_info.js +23 -23
  33. package/src/js/extra/browserEvents.js +32 -32
  34. package/src/js/index.js +8 -8
  35. package/src/js/lib/_info.js +13 -13
  36. package/src/js/lib/cache.js +98 -98
  37. package/src/js/lib/composition.js +89 -89
  38. package/src/js/lib/device.js +1276 -1276
  39. package/src/js/lib/helper.js +539 -524
  40. package/src/js/lib/loader.js +121 -121
  41. package/src/js/lib/localData.js +15 -15
  42. package/src/js/lib/logger.js +22 -22
  43. package/src/js/lib/math.js +20 -20
  44. package/src/js/lib/objectPool.js +54 -54
  45. package/src/js/lib/time.js +18 -18
  46. package/src/js/lib/tween.js +147 -147
  47. package/src/js/modules/_info.js +11 -11
  48. package/src/js/modules/assets/_info.js +7 -7
  49. package/src/js/modules/assets/baseModel.js +18 -18
  50. package/src/js/modules/assets/config.js +35 -35
  51. package/src/js/modules/assets/controller.js +39 -37
  52. package/src/js/modules/assets/models/_info.js +12 -12
  53. package/src/js/modules/assets/models/atlas.js +8 -8
  54. package/src/js/modules/assets/models/audiosprite.js +27 -27
  55. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  56. package/src/js/modules/assets/models/container.js +16 -16
  57. package/src/js/modules/assets/models/dragonBones.js +26 -26
  58. package/src/js/modules/assets/models/font.js +8 -8
  59. package/src/js/modules/assets/models/image.js +14 -14
  60. package/src/js/modules/assets/models/json.js +8 -8
  61. package/src/js/modules/assets/models/sound.js +14 -14
  62. package/src/js/modules/assets/models/spine.js +8 -8
  63. package/src/js/modules/assets/service.js +330 -330
  64. package/src/js/modules/instances/_info.js +3 -3
  65. package/src/js/modules/instances/controller.js +219 -218
  66. package/src/js/modules/logic/_info.js +4 -5
  67. package/src/js/modules/logic/config/_info.js +2 -3
  68. package/src/js/modules/logic/config/sounds.js +23 -23
  69. package/src/js/modules/logic/controller.js +48 -48
  70. package/src/js/modules/logic/sounds.js +96 -96
  71. package/src/js/modules/objects/_info.js +11 -11
  72. package/src/js/modules/objects/baseModel.js +161 -161
  73. package/src/js/modules/objects/cache.js +99 -99
  74. package/src/js/modules/objects/controller.js +121 -115
  75. package/src/js/modules/objects/create.js +233 -246
  76. package/src/js/modules/objects/find.js +140 -140
  77. package/src/js/modules/objects/models/_info.js +25 -25
  78. package/src/js/modules/objects/models/atlasImage.js +50 -50
  79. package/src/js/modules/objects/models/bitmapText.js +23 -23
  80. package/src/js/modules/objects/models/button.js +184 -184
  81. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  82. package/src/js/modules/objects/models/checkbox.js +95 -96
  83. package/src/js/modules/objects/models/collection.js +54 -54
  84. package/src/js/modules/objects/models/component.js +44 -44
  85. package/src/js/modules/objects/models/container.js +19 -19
  86. package/src/js/modules/objects/models/dragonBones.js +250 -250
  87. package/src/js/modules/objects/models/emitter.js +54 -54
  88. package/src/js/modules/objects/models/graphics.js +38 -38
  89. package/src/js/modules/objects/models/group.js +19 -19
  90. package/src/js/modules/objects/models/hitArea.js +104 -104
  91. package/src/js/modules/objects/models/image.js +34 -34
  92. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  93. package/src/js/modules/objects/models/mask.js +38 -38
  94. package/src/js/modules/objects/models/scrollbox.js +61 -61
  95. package/src/js/modules/objects/models/slider.js +199 -154
  96. package/src/js/modules/objects/models/spine.js +83 -83
  97. package/src/js/modules/objects/models/text.js +38 -38
  98. package/src/js/modules/objects/models/textInput.js +55 -55
  99. package/src/js/modules/objects/models/toggle.js +169 -169
  100. package/src/js/modules/objects/models/world.js +19 -19
  101. package/src/js/modules/objects/propertyAdapter.js +421 -421
  102. package/src/js/modules/objects/proxy.js +179 -179
  103. package/src/js/modules/objects/styles.js +116 -116
  104. package/src/js/modules/observer/_info.js +4 -4
  105. package/src/js/modules/observer/controller.js +99 -99
  106. package/src/js/modules/observer/events.js +33 -32
  107. package/src/js/modules/scenes/_info.js +8 -8
  108. package/src/js/modules/scenes/controller.js +34 -34
  109. package/src/js/modules/scenes/model.js +35 -35
  110. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  111. package/src/js/modules/scenes/resolutions.js +168 -161
  112. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  113. package/src/js/modules/scenes/service.js +84 -84
  114. package/src/js/modules/soundManager/_info.js +3 -3
  115. package/src/js/modules/soundManager/controller.js +99 -99
  116. package/src/js/modules/soundManager/soundSprite.js +202 -202
  117. package/src/js/modules/statesManager/_info.js +12 -12
  118. package/src/js/modules/statesManager/action.js +55 -55
  119. package/src/js/modules/statesManager/actions/_info.js +3 -3
  120. package/src/js/modules/statesManager/all.js +23 -23
  121. package/src/js/modules/statesManager/configStates.js +71 -71
  122. package/src/js/modules/statesManager/controller.js +131 -132
  123. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  124. package/src/js/modules/statesManager/helper.js +27 -27
  125. package/src/js/modules/statesManager/race.js +75 -75
  126. package/src/js/modules/statesManager/sequence.js +47 -47
  127. package/src/js/modules/template/_info.js +6 -6
  128. package/src/js/modules/template/controller.js +28 -28
  129. package/src/js/modules/template/model.js +11 -11
  130. package/src/js/modules/template/service.js +125 -125
  131. package/src/js/modules/template/types.js +46 -46
  132. package/src/js/modules/transport/_info.js +8 -8
  133. package/src/js/modules/transport/baseConnectionType.js +24 -24
  134. package/src/js/modules/transport/config.js +22 -22
  135. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  136. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  137. package/src/js/modules/transport/connectionTypes/xhr.js +41 -41
  138. package/src/js/modules/transport/controller.js +48 -48
  139. package/src/js/modules/transport/decorator.js +16 -16
  140. package/src/js/modules/transport/service.js +140 -138
  141. package/src/js/templates/_info.js +4 -4
  142. package/src/js/templates/groups/_info.js +1 -1
  143. package/src/js/templates/scenes/_info.js +1 -1
  144. package/webpack.config.js +47 -47
  145. package/src/js/components/stateDriven/actionConfig.js +0 -7
  146. package/src/js/modules/logic/buttons.js +0 -120
  147. package/src/js/modules/logic/config/buttons.js +0 -63
@@ -1,5 +1,5 @@
1
- require('./../components/_info.js');
2
- require('./../extra/_info.js');
3
- require('./../lib/_info.js');
4
- require('./../modules/_info.js');
5
- require('./../templates/_info.js');
1
+ require('./../components/_info.js');
2
+ require('./../extra/_info.js');
3
+ require('./../lib/_info.js');
4
+ require('./../modules/_info.js');
5
+ require('./../templates/_info.js');
@@ -1,9 +1,10 @@
1
- let ConfigMain = {
2
- title: 'Urso', //game title
3
- mode: "development", // development/production/testing
4
- extendingChain: ['Urso.Core'], //chain that will be set as Urso.Game
5
- defaultScene: 'play', //default scene to display
6
- useBinPath: false
7
- };
8
-
9
- module.exports = ConfigMain;
1
+ let ConfigMain = {
2
+ title: 'Urso', //game title
3
+ mode: "development", // development/production/testing
4
+ extendingChain: ['Urso.Core'], //chain that will be set as Urso.Game
5
+ defaultScene: 'play', //default scene to display
6
+ useBinPath: false, // use assets from bin directory
7
+ useTransport: false // use transport module for connetcting with server
8
+ };
9
+
10
+ module.exports = ConfigMain;
@@ -1,23 +1,23 @@
1
- import * as PIXI from 'pixi.js';
2
- window.PIXI = PIXI;
3
- window.PIXI.particles = require('pixi-particles');
4
-
5
- import { DropShadowFilter } from '@pixi/filter-drop-shadow';
6
- PIXI.filters['DropShadowFilter'] = DropShadowFilter;
7
-
8
-
9
- require("pixi-spine");
10
- require("pixi-projection");
11
- require("pixi-text-input");
12
-
13
- Urso.DragonBones = require("pixi5-dragonbones");
14
-
15
- import { gsap } from 'gsap';
16
- window.gsap = gsap;
17
-
18
- import Howler from 'howler';
19
- window.Howler = Howler;
20
-
21
- Urso.Core.Extra = {
22
- BrowserEvents: require('./browserEvents.js')
23
- };
1
+ import * as PIXI from 'pixi.js';
2
+ window.PIXI = PIXI;
3
+ window.PIXI.particles = require('pixi-particles');
4
+
5
+ import { DropShadowFilter } from '@pixi/filter-drop-shadow';
6
+ PIXI.filters['DropShadowFilter'] = DropShadowFilter;
7
+
8
+
9
+ require("pixi-spine");
10
+ require("pixi-projection");
11
+ require("pixi-text-input");
12
+
13
+ Urso.DragonBones = require("pixi5-dragonbones");
14
+
15
+ import { gsap } from 'gsap';
16
+ window.gsap = gsap;
17
+
18
+ import Howler from 'howler';
19
+ window.Howler = Howler;
20
+
21
+ Urso.Core.Extra = {
22
+ BrowserEvents: require('./browserEvents.js')
23
+ };
@@ -1,32 +1,32 @@
1
- class ExtraBrowserEvents {
2
- constructor() {
3
- this.singleton = true;
4
-
5
- this.RESIZE_DELAY = 250; //delay for resize event (browser will refresh his own params)
6
-
7
- this.resizeHandler = this.resizeHandler.bind(this);
8
- this.visibilitychangeHandler = this.visibilitychangeHandler.bind(this);
9
-
10
- this.init();
11
- }
12
-
13
- init() {
14
- document.addEventListener("visibilitychange", this.visibilitychangeHandler);
15
-
16
- window.addEventListener('resize', this.resizeHandler);
17
- window.addEventListener('orientationchange', this.resizeHandler);
18
- document.addEventListener('fullscreenchange', this.resizeHandler);
19
- document.addEventListener('webkitfullscreenchange', this.resizeHandler);
20
- document.addEventListener('mozfullscreenchange', this.resizeHandler);
21
- }
22
-
23
- visibilitychangeHandler() {
24
- this.emit(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_VISIBILITYCHANGE, document.visibilityState);
25
- }
26
-
27
- resizeHandler() {
28
- this.emit(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE, false, this.RESIZE_DELAY);
29
- }
30
- }
31
-
32
- module.exports = ExtraBrowserEvents;
1
+ class ExtraBrowserEvents {
2
+ constructor() {
3
+ this.singleton = true;
4
+
5
+ this.RESIZE_DELAY = 250; //delay for resize event (browser will refresh his own params)
6
+
7
+ this.resizeHandler = this.resizeHandler.bind(this);
8
+ this.visibilitychangeHandler = this.visibilitychangeHandler.bind(this);
9
+
10
+ this.init();
11
+ }
12
+
13
+ init() {
14
+ document.addEventListener("visibilitychange", this.visibilitychangeHandler);
15
+
16
+ window.addEventListener('resize', this.resizeHandler);
17
+ window.addEventListener('orientationchange', this.resizeHandler);
18
+ document.addEventListener('fullscreenchange', this.resizeHandler);
19
+ document.addEventListener('webkitfullscreenchange', this.resizeHandler);
20
+ document.addEventListener('mozfullscreenchange', this.resizeHandler);
21
+ }
22
+
23
+ visibilitychangeHandler() {
24
+ this.emit(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_VISIBILITYCHANGE, document.visibilityState);
25
+ }
26
+
27
+ resizeHandler() {
28
+ this.emit(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE, false, this.RESIZE_DELAY);
29
+ }
30
+ }
31
+
32
+ module.exports = ExtraBrowserEvents;
package/src/js/index.js CHANGED
@@ -1,8 +1,8 @@
1
- window.Urso = { Core: {} };
2
-
3
- require('./config/load.js');
4
- Urso.config = require('./config/main.js');
5
- Urso.Core.App = require('./app.js');
6
-
7
- //function to run game with engine
8
- Urso.runGame = (new Urso.Core.App()).setup;
1
+ window.Urso = { Core: {} };
2
+
3
+ require('./config/load.js');
4
+ Urso.config = require('./config/main.js');
5
+ Urso.Core.App = require('./app.js');
6
+
7
+ //function to run game with engine
8
+ Urso.runGame = (new Urso.Core.App()).setup;
@@ -1,13 +1,13 @@
1
- Urso.Core.Lib = {
2
- Cache: require('./cache.js'),
3
- Composition: require('./composition.js'),
4
- Device: require('./device.js'),
5
- Helper: require('./helper.js'),
6
- Loader: require('./loader.js'),
7
- LocalData: require('./localData.js'),
8
- Logger: require('./logger.js'),
9
- Math: require('./math.js'),
10
- ObjectPool: require('./objectPool.js'),
11
- Time: require('./time.js'),
12
- Tween: require('./tween.js')
13
- };
1
+ Urso.Core.Lib = {
2
+ Cache: require('./cache.js'),
3
+ Composition: require('./composition.js'),
4
+ Device: require('./device.js'),
5
+ Helper: require('./helper.js'),
6
+ Loader: require('./loader.js'),
7
+ LocalData: require('./localData.js'),
8
+ Logger: require('./logger.js'),
9
+ Math: require('./math.js'),
10
+ ObjectPool: require('./objectPool.js'),
11
+ Time: require('./time.js'),
12
+ Tween: require('./tween.js')
13
+ };
@@ -1,98 +1,98 @@
1
- class LibCache {
2
- constructor() {
3
- this.assetsList = {
4
- image: {},
5
- atlas: {},
6
- json: {},
7
- binary: {},
8
- spine: {},
9
- bitmapFont: {},
10
- sound: {},
11
- texture: {},
12
- file: {}
13
- };
14
- };
15
-
16
- addFile(key, someData) {
17
- this.assetsList.file[key] = someData;
18
- };
19
-
20
- addAtlas(key, someData) {
21
- this.assetsList.atlas[key] = someData;
22
- };
23
-
24
- addBinary(key, someData) {
25
- this.assetsList.binary[key] = someData;
26
- };
27
-
28
- addBitmapFont(key, someData) {
29
- this.assetsList.bitmapFont[key] = someData;
30
- };
31
-
32
- addContainer(key, someData) {
33
- this.assetsList.container[key] = someData;
34
- };
35
-
36
- addImage(key, someData) {
37
- this.assetsList.image[key] = someData;
38
- };
39
-
40
- addJson(key, someData) {
41
- this.assetsList.json[key] = someData;
42
- };
43
-
44
- addSound(key, someData) {
45
- this.assetsList.sound[key] = someData;
46
- };
47
-
48
- addTexture(key, someData) {
49
- this.assetsList.texture[key] = someData;
50
- };
51
-
52
- addSpine(key, someData) {
53
- this.assetsList.spine[key] = someData;
54
- };
55
-
56
- getFile(key) {
57
- return this.assetsList.file[key];
58
- };
59
-
60
- getAtlas(key) {
61
- return this.assetsList.atlas[key];
62
- };
63
-
64
- getBinary(key) {
65
- return this.assetsList.binary[key];
66
- };
67
-
68
- getBitmapFont(key) {
69
- return this.assetsList.bitmapFont[key];
70
- };
71
-
72
- getContainer(key) {
73
- return this.assetsList.container[key];
74
- };
75
-
76
- getImage(key) {
77
- return this.assetsList.image[key];
78
- };
79
-
80
- getJson(key) {
81
- return this.assetsList.json[key];
82
- };
83
-
84
- getSound(key) {
85
- return this.assetsList.sound[key];
86
- };
87
-
88
- getSpine(key) {
89
- return this.assetsList.spine[key];
90
- };
91
-
92
- getTexture(key) {
93
- return this.assetsList.texture[key];
94
- };
95
-
96
- };
97
-
98
- module.exports = LibCache;
1
+ class LibCache {
2
+ constructor() {
3
+ this.assetsList = {
4
+ image: {},
5
+ atlas: {},
6
+ json: {},
7
+ binary: {},
8
+ spine: {},
9
+ bitmapFont: {},
10
+ sound: {},
11
+ texture: {},
12
+ file: {}
13
+ };
14
+ };
15
+
16
+ addFile(key, someData) {
17
+ this.assetsList.file[key] = someData;
18
+ };
19
+
20
+ addAtlas(key, someData) {
21
+ this.assetsList.atlas[key] = someData;
22
+ };
23
+
24
+ addBinary(key, someData) {
25
+ this.assetsList.binary[key] = someData;
26
+ };
27
+
28
+ addBitmapFont(key, someData) {
29
+ this.assetsList.bitmapFont[key] = someData;
30
+ };
31
+
32
+ addContainer(key, someData) {
33
+ this.assetsList.container[key] = someData;
34
+ };
35
+
36
+ addImage(key, someData) {
37
+ this.assetsList.image[key] = someData;
38
+ };
39
+
40
+ addJson(key, someData) {
41
+ this.assetsList.json[key] = someData;
42
+ };
43
+
44
+ addSound(key, someData) {
45
+ this.assetsList.sound[key] = someData;
46
+ };
47
+
48
+ addTexture(key, someData) {
49
+ this.assetsList.texture[key] = someData;
50
+ };
51
+
52
+ addSpine(key, someData) {
53
+ this.assetsList.spine[key] = someData;
54
+ };
55
+
56
+ getFile(key) {
57
+ return this.assetsList.file[key];
58
+ };
59
+
60
+ getAtlas(key) {
61
+ return this.assetsList.atlas[key];
62
+ };
63
+
64
+ getBinary(key) {
65
+ return this.assetsList.binary[key];
66
+ };
67
+
68
+ getBitmapFont(key) {
69
+ return this.assetsList.bitmapFont[key];
70
+ };
71
+
72
+ getContainer(key) {
73
+ return this.assetsList.container[key];
74
+ };
75
+
76
+ getImage(key) {
77
+ return this.assetsList.image[key];
78
+ };
79
+
80
+ getJson(key) {
81
+ return this.assetsList.json[key];
82
+ };
83
+
84
+ getSound(key) {
85
+ return this.assetsList.sound[key];
86
+ };
87
+
88
+ getSpine(key) {
89
+ return this.assetsList.spine[key];
90
+ };
91
+
92
+ getTexture(key) {
93
+ return this.assetsList.texture[key];
94
+ };
95
+
96
+ };
97
+
98
+ module.exports = LibCache;
@@ -1,89 +1,89 @@
1
- // Class for creating multi inheritance.
2
- class LibComposition
3
- {
4
- // Inherit method to create base classes.
5
- static inherit(..._bases)
6
- {
7
- class classes {
8
-
9
- // The base classes
10
- get base() { return _bases; }
11
-
12
- constructor(..._args)
13
- {
14
- let index = 0;
15
-
16
- for (let b of this.base)
17
- {
18
- let obj = new b(_args[index++]);
19
- LibComposition.copy(this, obj);
20
- }
21
- }
22
-
23
- }
24
-
25
- // Copy over properties and methods
26
- for (let base of _bases)
27
- {
28
- LibComposition.copy(classes, base);
29
- LibComposition.copy(classes.prototype, base.prototype);
30
- }
31
-
32
- return classes;
33
- }
34
-
35
- // Copies the properties from one class to another
36
- static copy(_target, _source)
37
- {
38
- for (let key of Reflect.ownKeys(_source))
39
- {
40
- if (key !== "constructor" && key !== "prototype" && key !== "name")
41
- {
42
- let desc = Object.getOwnPropertyDescriptor(_source, key);
43
- Object.defineProperty(_target, key, desc);
44
- }
45
- }
46
- }
47
- }
48
-
49
- module.exports = LibComposition;
50
-
51
-
52
- /**
53
- *
54
- example:
55
-
56
-
57
- class ages
58
- {
59
- constructor(_age) { this.age = _age; }
60
- set age(_a) { this._age = _a; }
61
- get age() { return this._age; }
62
- increase() { this.age++; }
63
- }
64
-
65
- class genders
66
- {
67
- constructor(_gender) { this.gender = _gender; }
68
- set gender(_g) { this._gender = _g; }
69
- get gender() { return this._gender; }
70
- male() { this._gender = 'M'; }
71
- female() { this._gender = 'F'; }
72
- }
73
-
74
- class person extends Urso.Game.Lib.Composition.inherit(ages, genders)
75
- {
76
- constructor(...args)
77
- {
78
- super(18, 'M');
79
- this.name = args[0];
80
- }
81
-
82
- set name(_n) { this._name = _n; }
83
- get name() { return this._name; }
84
- }
85
-
86
- let p = new person('Adam');
87
- console.log(p.name, p.age, p.gender);
88
-
89
- */
1
+ // Class for creating multi inheritance.
2
+ class LibComposition
3
+ {
4
+ // Inherit method to create base classes.
5
+ static inherit(..._bases)
6
+ {
7
+ class classes {
8
+
9
+ // The base classes
10
+ get base() { return _bases; }
11
+
12
+ constructor(..._args)
13
+ {
14
+ let index = 0;
15
+
16
+ for (let b of this.base)
17
+ {
18
+ let obj = new b(_args[index++]);
19
+ LibComposition.copy(this, obj);
20
+ }
21
+ }
22
+
23
+ }
24
+
25
+ // Copy over properties and methods
26
+ for (let base of _bases)
27
+ {
28
+ LibComposition.copy(classes, base);
29
+ LibComposition.copy(classes.prototype, base.prototype);
30
+ }
31
+
32
+ return classes;
33
+ }
34
+
35
+ // Copies the properties from one class to another
36
+ static copy(_target, _source)
37
+ {
38
+ for (let key of Reflect.ownKeys(_source))
39
+ {
40
+ if (key !== "constructor" && key !== "prototype" && key !== "name")
41
+ {
42
+ let desc = Object.getOwnPropertyDescriptor(_source, key);
43
+ Object.defineProperty(_target, key, desc);
44
+ }
45
+ }
46
+ }
47
+ }
48
+
49
+ module.exports = LibComposition;
50
+
51
+
52
+ /**
53
+ *
54
+ example:
55
+
56
+
57
+ class ages
58
+ {
59
+ constructor(_age) { this.age = _age; }
60
+ set age(_a) { this._age = _a; }
61
+ get age() { return this._age; }
62
+ increase() { this.age++; }
63
+ }
64
+
65
+ class genders
66
+ {
67
+ constructor(_gender) { this.gender = _gender; }
68
+ set gender(_g) { this._gender = _g; }
69
+ get gender() { return this._gender; }
70
+ male() { this._gender = 'M'; }
71
+ female() { this._gender = 'F'; }
72
+ }
73
+
74
+ class person extends Urso.Game.Lib.Composition.inherit(ages, genders)
75
+ {
76
+ constructor(...args)
77
+ {
78
+ super(18, 'M');
79
+ this.name = args[0];
80
+ }
81
+
82
+ set name(_n) { this._name = _n; }
83
+ get name() { return this._name; }
84
+ }
85
+
86
+ let p = new person('Adam');
87
+ console.log(p.name, p.age, p.gender);
88
+
89
+ */