@urso/core 0.2.3-dev → 0.2.7

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 +41 -39
  5. package/package.json +52 -49
  6. package/src/js/app.js +76 -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 +9 -9
  32. package/src/js/extra/_info.js +23 -22
  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 +524 -513
  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 +37 -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 +218 -218
  66. package/src/js/modules/logic/_info.js +5 -5
  67. package/src/js/modules/logic/buttons.js +120 -120
  68. package/src/js/modules/logic/config/_info.js +3 -3
  69. package/src/js/modules/logic/config/buttons.js +63 -63
  70. package/src/js/modules/logic/config/sounds.js +23 -23
  71. package/src/js/modules/logic/controller.js +48 -48
  72. package/src/js/modules/logic/sounds.js +96 -96
  73. package/src/js/modules/objects/_info.js +11 -11
  74. package/src/js/modules/objects/baseModel.js +161 -161
  75. package/src/js/modules/objects/cache.js +99 -99
  76. package/src/js/modules/objects/controller.js +115 -115
  77. package/src/js/modules/objects/create.js +246 -231
  78. package/src/js/modules/objects/find.js +140 -140
  79. package/src/js/modules/objects/models/_info.js +25 -20
  80. package/src/js/modules/objects/models/atlasImage.js +50 -50
  81. package/src/js/modules/objects/models/bitmapText.js +23 -23
  82. package/src/js/modules/objects/models/button.js +184 -184
  83. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  84. package/src/js/modules/objects/models/checkbox.js +95 -0
  85. package/src/js/modules/objects/models/collection.js +54 -54
  86. package/src/js/modules/objects/models/component.js +44 -44
  87. package/src/js/modules/objects/models/container.js +19 -19
  88. package/src/js/modules/objects/models/dragonBones.js +250 -250
  89. package/src/js/modules/objects/models/emitter.js +54 -54
  90. package/src/js/modules/objects/models/graphics.js +38 -38
  91. package/src/js/modules/objects/models/group.js +19 -19
  92. package/src/js/modules/objects/models/hitArea.js +104 -104
  93. package/src/js/modules/objects/models/image.js +34 -34
  94. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  95. package/src/js/modules/objects/models/mask.js +38 -38
  96. package/src/js/modules/objects/models/scrollbox.js +62 -0
  97. package/src/js/modules/objects/models/slider.js +199 -0
  98. package/src/js/modules/objects/models/spine.js +83 -83
  99. package/src/js/modules/objects/models/text.js +38 -38
  100. package/src/js/modules/objects/models/textInput.js +55 -0
  101. package/src/js/modules/objects/models/toggle.js +169 -0
  102. package/src/js/modules/objects/models/world.js +19 -19
  103. package/src/js/modules/objects/propertyAdapter.js +421 -416
  104. package/src/js/modules/objects/proxy.js +179 -179
  105. package/src/js/modules/objects/styles.js +116 -116
  106. package/src/js/modules/observer/_info.js +4 -4
  107. package/src/js/modules/observer/controller.js +99 -99
  108. package/src/js/modules/observer/events.js +32 -28
  109. package/src/js/modules/scenes/_info.js +8 -8
  110. package/src/js/modules/scenes/controller.js +34 -34
  111. package/src/js/modules/scenes/model.js +35 -35
  112. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  113. package/src/js/modules/scenes/resolutions.js +161 -161
  114. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  115. package/src/js/modules/scenes/service.js +84 -84
  116. package/src/js/modules/soundManager/_info.js +3 -3
  117. package/src/js/modules/soundManager/controller.js +99 -99
  118. package/src/js/modules/soundManager/soundSprite.js +202 -202
  119. package/src/js/modules/statesManager/_info.js +12 -12
  120. package/src/js/modules/statesManager/action.js +55 -55
  121. package/src/js/modules/statesManager/actions/_info.js +3 -3
  122. package/src/js/modules/statesManager/all.js +23 -23
  123. package/src/js/modules/statesManager/configStates.js +71 -71
  124. package/src/js/modules/statesManager/controller.js +132 -132
  125. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  126. package/src/js/modules/statesManager/helper.js +27 -27
  127. package/src/js/modules/statesManager/race.js +75 -75
  128. package/src/js/modules/statesManager/sequence.js +47 -47
  129. package/src/js/modules/template/_info.js +6 -6
  130. package/src/js/modules/template/controller.js +28 -28
  131. package/src/js/modules/template/model.js +11 -11
  132. package/src/js/modules/template/service.js +125 -125
  133. package/src/js/modules/template/types.js +46 -41
  134. package/src/js/modules/transport/_info.js +8 -8
  135. package/src/js/modules/transport/baseConnectionType.js +24 -24
  136. package/src/js/modules/transport/config.js +22 -22
  137. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  138. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  139. package/src/js/modules/transport/connectionTypes/xhr.js +41 -41
  140. package/src/js/modules/transport/controller.js +48 -48
  141. package/src/js/modules/transport/decorator.js +16 -16
  142. package/src/js/modules/transport/service.js +138 -138
  143. package/src/js/templates/_info.js +4 -4
  144. package/src/js/templates/groups/_info.js +1 -1
  145. package/src/js/templates/scenes/_info.js +1 -1
  146. package/webpack.config.js +47 -47
  147. package/src/js/components/stateDriven/actionConfig.js +0 -7
@@ -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,9 @@
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
7
+ };
8
+
9
+ module.exports = ConfigMain;
@@ -1,22 +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
-
12
- Urso.DragonBones = require("pixi5-dragonbones");
13
-
14
- import { gsap } from 'gsap';
15
- window.gsap = gsap;
16
-
17
- import Howler from 'howler';
18
- window.Howler = Howler;
19
-
20
- Urso.Core.Extra = {
21
- BrowserEvents: require('./browserEvents.js')
22
- };
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
+ */