@nice2dev/ui-graphics 1.0.0 → 1.0.3

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 (146) hide show
  1. package/CHANGELOG.md +147 -1
  2. package/dist/cjs/animation/AnimatedPerson.js +2 -2
  3. package/dist/cjs/animation/AnimatedPerson.js.map +1 -1
  4. package/dist/cjs/animation/AnimationEditor.js +11 -6
  5. package/dist/cjs/animation/AnimationEditor.js.map +1 -1
  6. package/dist/cjs/animation/Audience.js +4 -3
  7. package/dist/cjs/animation/Audience.js.map +1 -1
  8. package/dist/cjs/animation/BodyRenderer.js +5 -2
  9. package/dist/cjs/animation/BodyRenderer.js.map +1 -1
  10. package/dist/cjs/animation/rig/RigPlayer.js +2 -2
  11. package/dist/cjs/animation/rig/RigPlayer.js.map +1 -1
  12. package/dist/cjs/animation/rig/RiggedBody.js +2 -2
  13. package/dist/cjs/animation/rig/RiggedBody.js.map +1 -1
  14. package/dist/cjs/animation/shapes/heads.js +4 -1
  15. package/dist/cjs/animation/shapes/heads.js.map +1 -1
  16. package/dist/cjs/core/LocalUI.js +1 -1
  17. package/dist/cjs/core/NiceBrushEngine.js +446 -0
  18. package/dist/cjs/core/NiceBrushEngine.js.map +1 -0
  19. package/dist/cjs/core/yjsCollaboration.js +292 -0
  20. package/dist/cjs/core/yjsCollaboration.js.map +1 -0
  21. package/dist/cjs/font/NiceFontEditor.js +89 -85
  22. package/dist/cjs/font/NiceFontEditor.js.map +1 -1
  23. package/dist/cjs/font/fontFormatUtils.js +468 -0
  24. package/dist/cjs/font/fontFormatUtils.js.map +1 -0
  25. package/dist/cjs/game/GameAsset2dEditor.js +38 -24
  26. package/dist/cjs/game/GameAsset2dEditor.js.map +1 -1
  27. package/dist/cjs/icon/NiceIconEditor.js +218 -133
  28. package/dist/cjs/icon/NiceIconEditor.js.map +1 -1
  29. package/dist/cjs/index.js +83 -1
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/nice2dev-ui-graphics.css +1 -1
  32. package/dist/cjs/photo/NiceAITools.js +446 -0
  33. package/dist/cjs/photo/NiceAITools.js.map +1 -0
  34. package/dist/cjs/photo/PhotoEditor.js +2 -2
  35. package/dist/cjs/photo/PhotoEditor.js.map +1 -1
  36. package/dist/cjs/pixel/PixelEditor.js +16 -5
  37. package/dist/cjs/pixel/PixelEditor.js.map +1 -1
  38. package/dist/cjs/pixel/PixelEditor.module.css.js +1 -1
  39. package/dist/cjs/pixel/PixelEditorMenuBar.js +2 -1
  40. package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -1
  41. package/dist/cjs/pixel/PixelEditorRightPanel.js +3 -2
  42. package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -1
  43. package/dist/cjs/pixel/PixelEditorTimeline.js +2 -1
  44. package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -1
  45. package/dist/cjs/pixel/PixelEditorToolbar.js +2 -1
  46. package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -1
  47. package/dist/cjs/pixel/SpriteGeneratorPanel.js +224 -0
  48. package/dist/cjs/pixel/SpriteGeneratorPanel.js.map +1 -0
  49. package/dist/cjs/pixel/animalGeneratorPresets.js +654 -0
  50. package/dist/cjs/pixel/animalGeneratorPresets.js.map +1 -0
  51. package/dist/cjs/pixel/buildingGeneratorPresets.js +573 -0
  52. package/dist/cjs/pixel/buildingGeneratorPresets.js.map +1 -0
  53. package/dist/cjs/pixel/characterGeneratorPresets.js +563 -0
  54. package/dist/cjs/pixel/characterGeneratorPresets.js.map +1 -0
  55. package/dist/cjs/pixel/spriteGeneratorCore.js +297 -0
  56. package/dist/cjs/pixel/spriteGeneratorCore.js.map +1 -0
  57. package/dist/cjs/pixel/usePixelEditor.js +16 -0
  58. package/dist/cjs/pixel/usePixelEditor.js.map +1 -1
  59. package/dist/cjs/texture/Nice3DTexturePainter.js +123 -79
  60. package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -1
  61. package/dist/cjs/ui/NiceUIDesigner.js +175 -62
  62. package/dist/cjs/ui/NiceUIDesigner.js.map +1 -1
  63. package/dist/cjs/ui/dist/index.js +50089 -0
  64. package/dist/cjs/ui/dist/index.js.map +1 -0
  65. package/dist/cjs/vector/NiceSvgToCode.js +427 -0
  66. package/dist/cjs/vector/NiceSvgToCode.js.map +1 -0
  67. package/dist/cjs/vector/VectorEditor.js +7 -3
  68. package/dist/cjs/vector/VectorEditor.js.map +1 -1
  69. package/dist/cjs/vector/VectorEditor.module.css.js +1 -1
  70. package/dist/cjs/vector/VectorEditorMenuBar.js +5 -1
  71. package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -1
  72. package/dist/cjs/vector/VectorEditorRightPanel.js +23 -19
  73. package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -1
  74. package/dist/esm/animation/AnimatedPerson.js +2 -2
  75. package/dist/esm/animation/AnimatedPerson.js.map +1 -1
  76. package/dist/esm/animation/AnimationEditor.js +12 -8
  77. package/dist/esm/animation/AnimationEditor.js.map +1 -1
  78. package/dist/esm/animation/Audience.js +5 -4
  79. package/dist/esm/animation/Audience.js.map +1 -1
  80. package/dist/esm/animation/BodyRenderer.js +4 -2
  81. package/dist/esm/animation/BodyRenderer.js.map +1 -1
  82. package/dist/esm/animation/rig/RigPlayer.js +4 -4
  83. package/dist/esm/animation/rig/RigPlayer.js.map +1 -1
  84. package/dist/esm/animation/rig/RiggedBody.js +2 -2
  85. package/dist/esm/animation/rig/RiggedBody.js.map +1 -1
  86. package/dist/esm/animation/shapes/heads.js +4 -2
  87. package/dist/esm/animation/shapes/heads.js.map +1 -1
  88. package/dist/esm/core/LocalUI.js +4 -4
  89. package/dist/esm/core/NiceBrushEngine.js +442 -0
  90. package/dist/esm/core/NiceBrushEngine.js.map +1 -0
  91. package/dist/esm/core/yjsCollaboration.js +283 -0
  92. package/dist/esm/core/yjsCollaboration.js.map +1 -0
  93. package/dist/esm/font/NiceFontEditor.js +89 -85
  94. package/dist/esm/font/NiceFontEditor.js.map +1 -1
  95. package/dist/esm/font/fontFormatUtils.js +461 -0
  96. package/dist/esm/font/fontFormatUtils.js.map +1 -0
  97. package/dist/esm/game/GameAsset2dEditor.js +38 -25
  98. package/dist/esm/game/GameAsset2dEditor.js.map +1 -1
  99. package/dist/esm/icon/NiceIconEditor.js +218 -133
  100. package/dist/esm/icon/NiceIconEditor.js.map +1 -1
  101. package/dist/esm/index.js +21 -11
  102. package/dist/esm/index.js.map +1 -1
  103. package/dist/esm/nice2dev-ui-graphics.css +1 -1
  104. package/dist/esm/photo/NiceAITools.js +439 -0
  105. package/dist/esm/photo/NiceAITools.js.map +1 -0
  106. package/dist/esm/photo/PhotoEditor.js +2 -2
  107. package/dist/esm/photo/PhotoEditor.js.map +1 -1
  108. package/dist/esm/pixel/PixelEditor.js +16 -6
  109. package/dist/esm/pixel/PixelEditor.js.map +1 -1
  110. package/dist/esm/pixel/PixelEditor.module.css.js +1 -1
  111. package/dist/esm/pixel/PixelEditorMenuBar.js +2 -1
  112. package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -1
  113. package/dist/esm/pixel/PixelEditorRightPanel.js +3 -2
  114. package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -1
  115. package/dist/esm/pixel/PixelEditorTimeline.js +2 -1
  116. package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -1
  117. package/dist/esm/pixel/PixelEditorToolbar.js +2 -1
  118. package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -1
  119. package/dist/esm/pixel/SpriteGeneratorPanel.js +222 -0
  120. package/dist/esm/pixel/SpriteGeneratorPanel.js.map +1 -0
  121. package/dist/esm/pixel/animalGeneratorPresets.js +647 -0
  122. package/dist/esm/pixel/animalGeneratorPresets.js.map +1 -0
  123. package/dist/esm/pixel/buildingGeneratorPresets.js +566 -0
  124. package/dist/esm/pixel/buildingGeneratorPresets.js.map +1 -0
  125. package/dist/esm/pixel/characterGeneratorPresets.js +556 -0
  126. package/dist/esm/pixel/characterGeneratorPresets.js.map +1 -0
  127. package/dist/esm/pixel/spriteGeneratorCore.js +279 -0
  128. package/dist/esm/pixel/spriteGeneratorCore.js.map +1 -0
  129. package/dist/esm/pixel/usePixelEditor.js +16 -0
  130. package/dist/esm/pixel/usePixelEditor.js.map +1 -1
  131. package/dist/esm/texture/Nice3DTexturePainter.js +123 -79
  132. package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -1
  133. package/dist/esm/ui/NiceUIDesigner.js +175 -62
  134. package/dist/esm/ui/NiceUIDesigner.js.map +1 -1
  135. package/dist/esm/ui/dist/index.js +49686 -0
  136. package/dist/esm/ui/dist/index.js.map +1 -0
  137. package/dist/esm/vector/NiceSvgToCode.js +423 -0
  138. package/dist/esm/vector/NiceSvgToCode.js.map +1 -0
  139. package/dist/esm/vector/VectorEditor.js +7 -4
  140. package/dist/esm/vector/VectorEditor.js.map +1 -1
  141. package/dist/esm/vector/VectorEditor.module.css.js +1 -1
  142. package/dist/esm/vector/VectorEditorMenuBar.js +5 -1
  143. package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -1
  144. package/dist/esm/vector/VectorEditorRightPanel.js +23 -19
  145. package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -1
  146. package/package.json +3 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animalGeneratorPresets.js","sources":["../../../src/pixel/animalGeneratorPresets.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,566 @@
1
+ import { createPartData, registerParts } from './spriteGeneratorCore.js';
2
+
3
+ /**
4
+ * buildingGeneratorPresets.ts — Modular building generator.
5
+ *
6
+ * Buildings are assembled from stackable floors: foundation, wall floors,
7
+ * roof. Each floor has layout, style and colour options.
8
+ * Doors, windows, chimneys are placed as decoration parts.
9
+ */
10
+ /* ════════════════════════════════════════════════════════════════
11
+ COLOUR PALETTES
12
+ ════════════════════════════════════════════════════════════════ */
13
+ const WALL_PALETTES = {
14
+ stone: ['#a0a0a0', '#808080', '#606060', '#404040'],
15
+ brick: ['#c06040', '#a04830', '#803020', '#602018'],
16
+ wood: ['#c09060', '#a07848', '#806038', '#604828'],
17
+ sandstone: ['#e0c890', '#c8b070', '#b09850', '#988038'],
18
+ marble: ['#f0f0f0', '#d8d8e0', '#c0c0c8', '#a8a8b0'],
19
+ darkStone: ['#585860', '#404048', '#303038', '#202028'],
20
+ };
21
+ const ROOF_PALETTES = {
22
+ redTile: ['#c04030', '#a03020', '#802018', '#601010'],
23
+ darkTile: ['#505058', '#404048', '#303038', '#202028'],
24
+ thatch: ['#c0a040', '#a08830', '#807020', '#605818'],
25
+ blue: ['#4060b0', '#304890', '#203870', '#182850'],
26
+ green: ['#408040', '#306830', '#205020', '#103810'],
27
+ };
28
+ /* ════════════════════════════════════════════════════════════════
29
+ BUILDING PARTS — transparent shorthand
30
+ ════════════════════════════════════════════════════════════════ */
31
+ const _ = -1;
32
+ /* ── Foundations ── */
33
+ const FOUNDATION_STONE = createPartData(16, 4, [
34
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
35
+ [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0],
36
+ [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
37
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
38
+ ], ['#a0a0a0', '#606060']);
39
+ const FOUNDATION_BRICK = createPartData(16, 4, [
40
+ [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
41
+ [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0],
42
+ [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
43
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
44
+ ], ['#c06040', '#803020']);
45
+ const FOUNDATION_WOOD = createPartData(16, 3, [
46
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
47
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
48
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
49
+ ], ['#c09060', '#604828']);
50
+ /* ── Wall sections (one floor height) ── */
51
+ const WALL_STONE_SECTION = createPartData(16, 8, [
52
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
53
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
54
+ [0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0],
55
+ [0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0],
56
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
57
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
58
+ [0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0],
59
+ [0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0],
60
+ ], ['#a0a0a0', '#808080', '#606060']);
61
+ const WALL_BRICK_SECTION = createPartData(16, 8, [
62
+ [2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0],
63
+ [0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0],
64
+ [2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0],
65
+ [0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0],
66
+ [2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0],
67
+ [0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0],
68
+ [2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0],
69
+ [0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0],
70
+ ], ['#c06040', '#a04830', '#803020']);
71
+ const WALL_WOOD_SECTION = createPartData(16, 8, [
72
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
73
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
74
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
75
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
76
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
77
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
78
+ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
79
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
80
+ ], ['#c09060', '#806038']);
81
+ const WALL_HALFTIMBER_SECTION = createPartData(16, 8, [
82
+ [2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2],
83
+ [2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2],
84
+ [2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2],
85
+ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
86
+ [2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2],
87
+ [2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2],
88
+ [2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2],
89
+ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
90
+ ], ['#f0e8d0', '#e0d8c0', '#806038']);
91
+ /* ── Roofs ── */
92
+ const ROOF_TRIANGLE = createPartData(20, 8, [
93
+ [_, _, _, _, _, _, _, _, _, 0, 0, _, _, _, _, _, _, _, _, _],
94
+ [_, _, _, _, _, _, _, _, 0, 1, 1, 0, _, _, _, _, _, _, _, _],
95
+ [_, _, _, _, _, _, _, 0, 1, 1, 1, 1, 0, _, _, _, _, _, _, _],
96
+ [_, _, _, _, _, _, 0, 1, 1, 1, 1, 1, 1, 0, _, _, _, _, _, _],
97
+ [_, _, _, _, _, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, _, _, _, _, _],
98
+ [_, _, _, _, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, _, _, _, _],
99
+ [_, _, _, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, _, _, _],
100
+ [_, _, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, _, _],
101
+ ], ['#c04030', '#a03020', '#602018']);
102
+ const ROOF_FLAT = createPartData(18, 4, [
103
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
104
+ [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
105
+ [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
106
+ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
107
+ ], ['#505058', '#404048', '#303038']);
108
+ const ROOF_PAGODA = createPartData(22, 6, [
109
+ [_, _, _, _, _, _, _, _, _, _, 0, 0, _, _, _, _, _, _, _, _, _, _],
110
+ [_, _, _, _, _, _, _, _, 0, 0, 1, 1, 0, 0, _, _, _, _, _, _, _, _],
111
+ [_, _, _, _, _, _, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, _, _, _, _, _, _],
112
+ [_, _, _, _, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, _, _, _, _],
113
+ [_, _, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, _, _],
114
+ [0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0],
115
+ ], ['#c04030', '#a03020', '#602018']);
116
+ const ROOF_DOME = createPartData(18, 8, [
117
+ [_, _, _, _, _, _, _, 0, 0, 0, 0, _, _, _, _, _, _, _],
118
+ [_, _, _, _, _, 0, 0, 1, 1, 1, 1, 0, 0, _, _, _, _, _],
119
+ [_, _, _, _, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, _, _, _, _],
120
+ [_, _, _, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, _, _, _],
121
+ [_, _, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, _, _],
122
+ [_, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, _],
123
+ [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
124
+ [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0],
125
+ ], ['#4060b0', '#304890', '#203870']);
126
+ /* ── Doors ── */
127
+ const DOOR_WOOD = createPartData(4, 6, [
128
+ [_, 0, 0, _],
129
+ [0, 1, 1, 0],
130
+ [0, 1, 1, 0],
131
+ [0, 1, 2, 0],
132
+ [0, 1, 1, 0],
133
+ [0, 1, 1, 0],
134
+ ], ['#604828', '#c09060', '#f0d060']);
135
+ const DOOR_ARCH = createPartData(6, 8, [
136
+ [_, _, 0, 0, _, _],
137
+ [_, 0, 1, 1, 0, _],
138
+ [0, 1, 1, 1, 1, 0],
139
+ [0, 1, 1, 1, 1, 0],
140
+ [0, 1, 1, 1, 1, 0],
141
+ [0, 1, 1, 2, 1, 0],
142
+ [0, 1, 1, 1, 1, 0],
143
+ [0, 1, 1, 1, 1, 0],
144
+ ], ['#604828', '#a07848', '#f0d060']);
145
+ const DOOR_DOUBLE = createPartData(8, 7, [
146
+ [_, 0, 0, 0, 0, 0, 0, _],
147
+ [0, 1, 1, 0, 0, 1, 1, 0],
148
+ [0, 1, 1, 0, 0, 1, 1, 0],
149
+ [0, 1, 2, 0, 0, 2, 1, 0],
150
+ [0, 1, 1, 0, 0, 1, 1, 0],
151
+ [0, 1, 1, 0, 0, 1, 1, 0],
152
+ [0, 0, 0, 0, 0, 0, 0, 0],
153
+ ], ['#604828', '#c09060', '#f0d060']);
154
+ /* ── Windows ── */
155
+ const WINDOW_SIMPLE = createPartData(4, 4, [
156
+ [0, 0, 0, 0],
157
+ [0, 1, 1, 0],
158
+ [0, 1, 1, 0],
159
+ [0, 0, 0, 0],
160
+ ], ['#404040', '#88c8ff']);
161
+ const WINDOW_CROSS = createPartData(4, 4, [
162
+ [0, 0, 0, 0],
163
+ [0, 1, 0, 1],
164
+ [0, 0, 0, 0],
165
+ [0, 1, 0, 1],
166
+ ], ['#404040', '#88c8ff']);
167
+ const WINDOW_ARCH = createPartData(4, 5, [
168
+ [_, 0, 0, _],
169
+ [0, 1, 1, 0],
170
+ [0, 1, 1, 0],
171
+ [0, 0, 0, 0],
172
+ [0, 1, 1, 0],
173
+ ], ['#404040', '#88c8ff']);
174
+ const WINDOW_ROUND = createPartData(4, 4, [
175
+ [_, 0, 0, _],
176
+ [0, 1, 1, 0],
177
+ [0, 1, 1, 0],
178
+ [_, 0, 0, _],
179
+ ], ['#404040', '#88c8ff']);
180
+ /* ── Chimneys ── */
181
+ const CHIMNEY_BRICK = createPartData(4, 6, [
182
+ [_, 2, 2, _],
183
+ [0, 0, 0, 0],
184
+ [0, 1, 1, 0],
185
+ [0, 1, 1, 0],
186
+ [0, 1, 1, 0],
187
+ [0, 0, 0, 0],
188
+ ], ['#c06040', '#a04830', '#606060']);
189
+ const CHIMNEY_STONE = createPartData(3, 5, [
190
+ [_, 2, _],
191
+ [0, 0, 0],
192
+ [0, 1, 0],
193
+ [0, 1, 0],
194
+ [0, 0, 0],
195
+ ], ['#808080', '#a0a0a0', '#505050']);
196
+ /* ── Decorations ── */
197
+ const BALCONY = createPartData(8, 3, [
198
+ [0, 0, 0, 0, 0, 0, 0, 0],
199
+ [0, _, 0, _, _, 0, _, 0],
200
+ [0, 0, 0, 0, 0, 0, 0, 0],
201
+ ], ['#808080']);
202
+ const BANNER = createPartData(4, 6, [
203
+ [_, 0, 0, _],
204
+ [_, 1, 1, _],
205
+ [_, 1, 1, _],
206
+ [_, 1, 1, _],
207
+ [_, 1, 1, _],
208
+ [_, _, 1, _],
209
+ ], ['#806038', '#d04040']);
210
+ const TOWER_TOP = createPartData(8, 4, [
211
+ [0, _, 0, _, 0, _, 0, _],
212
+ [0, 0, 0, 0, 0, 0, 0, 0],
213
+ [0, 1, 1, 1, 1, 1, 1, 0],
214
+ [0, 1, 1, 1, 1, 1, 1, 0],
215
+ ], ['#808080', '#a0a0a0']);
216
+ const SHOP_AWNING = createPartData(14, 4, [
217
+ [_, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _],
218
+ [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
219
+ [_, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, _],
220
+ [_, _, 0, _, 0, _, 0, _, 0, _, 0, _, _, _],
221
+ ], ['#d04040', '#f0f0f0']);
222
+ /* ════════════════════════════════════════════════════════════════
223
+ REGISTER BUILDING PARTS
224
+ ════════════════════════════════════════════════════════════════ */
225
+ const BUILDING_PARTS = [
226
+ // ── Foundations ──
227
+ {
228
+ id: 'foundation-stone', name: 'Stone Foundation', category: 'foundation', slot: 'foundation',
229
+ anchorX: 8, anchorY: 0, zOrder: 0, tags: ['stone', 'foundation'],
230
+ pixels: { S: FOUNDATION_STONE }, recolorableIndices: [0, 1],
231
+ },
232
+ {
233
+ id: 'foundation-brick', name: 'Brick Foundation', category: 'foundation', slot: 'foundation',
234
+ anchorX: 8, anchorY: 0, zOrder: 0, tags: ['brick', 'foundation'],
235
+ pixels: { S: FOUNDATION_BRICK }, recolorableIndices: [0, 1],
236
+ },
237
+ {
238
+ id: 'foundation-wood', name: 'Wood Foundation', category: 'foundation', slot: 'foundation',
239
+ anchorX: 8, anchorY: 0, zOrder: 0, tags: ['wood', 'foundation'],
240
+ pixels: { S: FOUNDATION_WOOD }, recolorableIndices: [0, 1],
241
+ },
242
+ // ── Walls ──
243
+ {
244
+ id: 'wall-stone', name: 'Stone Wall', category: 'wall', slot: 'wall',
245
+ anchorX: 8, anchorY: 0, zOrder: 1, tags: ['stone', 'wall'],
246
+ pixels: { S: WALL_STONE_SECTION }, recolorableIndices: [0, 1, 2],
247
+ },
248
+ {
249
+ id: 'wall-brick', name: 'Brick Wall', category: 'wall', slot: 'wall',
250
+ anchorX: 8, anchorY: 0, zOrder: 1, tags: ['brick', 'wall'],
251
+ pixels: { S: WALL_BRICK_SECTION }, recolorableIndices: [0, 1, 2],
252
+ },
253
+ {
254
+ id: 'wall-wood', name: 'Wood Wall', category: 'wall', slot: 'wall',
255
+ anchorX: 8, anchorY: 0, zOrder: 1, tags: ['wood', 'wall'],
256
+ pixels: { S: WALL_WOOD_SECTION }, recolorableIndices: [0, 1],
257
+ },
258
+ {
259
+ id: 'wall-halftimber', name: 'Half-timber Wall', category: 'wall', slot: 'wall',
260
+ anchorX: 8, anchorY: 0, zOrder: 1, tags: ['halftimber', 'medieval', 'wall'],
261
+ pixels: { S: WALL_HALFTIMBER_SECTION }, recolorableIndices: [0, 1, 2],
262
+ },
263
+ // ── Roofs ──
264
+ {
265
+ id: 'roof-triangle', name: 'Triangle Roof', category: 'roof', slot: 'roof',
266
+ anchorX: 10, anchorY: 7, zOrder: 10, tags: ['triangle', 'classic'],
267
+ pixels: { S: ROOF_TRIANGLE }, recolorableIndices: [0, 1, 2],
268
+ },
269
+ {
270
+ id: 'roof-flat', name: 'Flat Roof', category: 'roof', slot: 'roof',
271
+ anchorX: 9, anchorY: 3, zOrder: 10, tags: ['flat', 'modern'],
272
+ pixels: { S: ROOF_FLAT }, recolorableIndices: [0, 1, 2],
273
+ },
274
+ {
275
+ id: 'roof-pagoda', name: 'Pagoda Roof', category: 'roof', slot: 'roof',
276
+ anchorX: 11, anchorY: 5, zOrder: 10, tags: ['pagoda', 'asian', 'curved'],
277
+ pixels: { S: ROOF_PAGODA }, recolorableIndices: [0, 1, 2],
278
+ },
279
+ {
280
+ id: 'roof-dome', name: 'Dome Roof', category: 'roof', slot: 'roof',
281
+ anchorX: 9, anchorY: 7, zOrder: 10, tags: ['dome', 'round', 'church'],
282
+ pixels: { S: ROOF_DOME }, recolorableIndices: [0, 1, 2],
283
+ },
284
+ // ── Doors ──
285
+ {
286
+ id: 'door-wood', name: 'Wooden Door', category: 'door', slot: 'door',
287
+ anchorX: 2, anchorY: 0, zOrder: 5, tags: ['wood', 'simple'],
288
+ pixels: { S: DOOR_WOOD }, recolorableIndices: [0, 1, 2],
289
+ },
290
+ {
291
+ id: 'door-arch', name: 'Arch Door', category: 'door', slot: 'door',
292
+ anchorX: 3, anchorY: 0, zOrder: 5, tags: ['arch', 'medieval'],
293
+ pixels: { S: DOOR_ARCH }, recolorableIndices: [0, 1, 2],
294
+ },
295
+ {
296
+ id: 'door-double', name: 'Double Door', category: 'door', slot: 'door',
297
+ anchorX: 4, anchorY: 0, zOrder: 5, tags: ['double', 'grand'],
298
+ pixels: { S: DOOR_DOUBLE }, recolorableIndices: [0, 1, 2],
299
+ },
300
+ // ── Windows ──
301
+ {
302
+ id: 'window-simple', name: 'Simple Window', category: 'window', slot: 'window',
303
+ anchorX: 2, anchorY: 2, zOrder: 5, tags: ['simple', 'basic'],
304
+ pixels: { S: WINDOW_SIMPLE }, recolorableIndices: [0, 1],
305
+ },
306
+ {
307
+ id: 'window-cross', name: 'Cross Window', category: 'window', slot: 'window',
308
+ anchorX: 2, anchorY: 2, zOrder: 5, tags: ['cross', 'medieval'],
309
+ pixels: { S: WINDOW_CROSS }, recolorableIndices: [0, 1],
310
+ },
311
+ {
312
+ id: 'window-arch', name: 'Arch Window', category: 'window', slot: 'window',
313
+ anchorX: 2, anchorY: 2, zOrder: 5, tags: ['arch', 'gothic'],
314
+ pixels: { S: WINDOW_ARCH }, recolorableIndices: [0, 1],
315
+ },
316
+ {
317
+ id: 'window-round', name: 'Round Window', category: 'window', slot: 'window',
318
+ anchorX: 2, anchorY: 2, zOrder: 5, tags: ['round', 'porthole'],
319
+ pixels: { S: WINDOW_ROUND }, recolorableIndices: [0, 1],
320
+ },
321
+ // ── Chimneys ──
322
+ {
323
+ id: 'chimney-brick', name: 'Brick Chimney', category: 'chimney', slot: 'chimney',
324
+ anchorX: 2, anchorY: 5, zOrder: 12, tags: ['brick', 'chimney'],
325
+ pixels: { S: CHIMNEY_BRICK }, recolorableIndices: [0, 1, 2],
326
+ },
327
+ {
328
+ id: 'chimney-stone', name: 'Stone Chimney', category: 'chimney', slot: 'chimney',
329
+ anchorX: 1, anchorY: 4, zOrder: 12, tags: ['stone', 'chimney'],
330
+ pixels: { S: CHIMNEY_STONE }, recolorableIndices: [0, 1, 2],
331
+ },
332
+ // ── Decorations ──
333
+ {
334
+ id: 'deco-balcony', name: 'Balcony', category: 'decoration', slot: 'wall',
335
+ anchorX: 4, anchorY: 0, zOrder: 6, tags: ['balcony', 'decoration'],
336
+ pixels: { S: BALCONY }, recolorableIndices: [0],
337
+ },
338
+ {
339
+ id: 'deco-banner', name: 'Banner', category: 'decoration', slot: 'wall',
340
+ anchorX: 2, anchorY: 0, zOrder: 7, tags: ['banner', 'decoration', 'flag'],
341
+ pixels: { S: BANNER }, recolorableIndices: [0, 1],
342
+ },
343
+ {
344
+ id: 'deco-tower-top', name: 'Tower Battlements', category: 'decoration', slot: 'roof',
345
+ anchorX: 4, anchorY: 3, zOrder: 11, tags: ['tower', 'castle', 'battlements'],
346
+ pixels: { S: TOWER_TOP }, recolorableIndices: [0, 1],
347
+ },
348
+ {
349
+ id: 'deco-shop-awning', name: 'Shop Awning', category: 'decoration', slot: 'wall',
350
+ anchorX: 7, anchorY: 0, zOrder: 6, tags: ['shop', 'awning', 'market'],
351
+ pixels: { S: SHOP_AWNING }, recolorableIndices: [0, 1],
352
+ },
353
+ ];
354
+ /** Assemble a building from config into a SpriteAssembly */
355
+ function assembleBuildingFromConfig(config) {
356
+ var _a;
357
+ const floorHeight = 8;
358
+ const foundationHeight = 4;
359
+ const roofHeight = 8;
360
+ const totalHeight = foundationHeight + config.floors.length * floorHeight + roofHeight + 4;
361
+ const parts = [];
362
+ // Foundation at bottom
363
+ const baseY = totalHeight - foundationHeight;
364
+ parts.push({ partId: config.foundationId, offsetX: 0, offsetY: baseY });
365
+ // Floors bottom-up
366
+ for (let i = 0; i < config.floors.length; i++) {
367
+ const floor = config.floors[i];
368
+ const floorY = baseY - (i + 1) * floorHeight;
369
+ // Wall
370
+ parts.push({
371
+ partId: floor.wallId,
372
+ offsetX: 0,
373
+ offsetY: floorY,
374
+ colorOverrides: floor.colorOverrides,
375
+ });
376
+ // Windows
377
+ for (const wx of floor.windowPositions) {
378
+ const winId = floor.windowIds[0] || 'window-simple';
379
+ parts.push({ partId: winId, offsetX: wx, offsetY: floorY + 2 });
380
+ }
381
+ // Door (only ground floor typically)
382
+ if (floor.doorId && floor.doorPosition !== undefined) {
383
+ parts.push({ partId: floor.doorId, offsetX: floor.doorPosition, offsetY: floorY + 2 });
384
+ }
385
+ // Decorations
386
+ if (floor.decorationIds) {
387
+ for (const dId of floor.decorationIds) {
388
+ parts.push({ partId: dId, offsetX: 0, offsetY: floorY });
389
+ }
390
+ }
391
+ }
392
+ // Roof
393
+ const roofY = baseY - config.floors.length * floorHeight - roofHeight;
394
+ parts.push({ partId: config.roofId, offsetX: -2, offsetY: roofY });
395
+ // Chimney
396
+ if (config.chimneyId) {
397
+ parts.push({
398
+ partId: config.chimneyId,
399
+ offsetX: (_a = config.chimneyPosition) !== null && _a !== void 0 ? _a : (config.width - 6),
400
+ offsetY: roofY - 3,
401
+ });
402
+ }
403
+ return {
404
+ id: `building-${config.name.toLowerCase().replace(/\s+/g, '-')}`,
405
+ name: config.name,
406
+ parts,
407
+ canvasWidth: Math.max(config.width, 24),
408
+ canvasHeight: totalHeight,
409
+ projection: 'sideView',
410
+ };
411
+ }
412
+ const BUILDING_PRESETS = [
413
+ {
414
+ id: 'preset-cottage', name: 'Cottage', description: 'Simple wooden cottage',
415
+ tags: ['wood', 'simple', 'village'],
416
+ config: {
417
+ name: 'Cottage', foundationId: 'foundation-wood', roofId: 'roof-triangle',
418
+ chimneyId: 'chimney-brick', chimneyPosition: 12, width: 16,
419
+ floors: [{
420
+ wallId: 'wall-wood',
421
+ windowIds: ['window-simple'],
422
+ windowPositions: [2, 10],
423
+ doorId: 'door-wood', doorPosition: 6,
424
+ }],
425
+ },
426
+ },
427
+ {
428
+ id: 'preset-house', name: 'Town House', description: 'Two-story brick house',
429
+ tags: ['brick', 'town', 'residential'],
430
+ config: {
431
+ name: 'Town House', foundationId: 'foundation-brick', roofId: 'roof-triangle',
432
+ chimneyId: 'chimney-brick', chimneyPosition: 11, width: 16,
433
+ floors: [
434
+ {
435
+ wallId: 'wall-brick',
436
+ windowIds: ['window-cross'],
437
+ windowPositions: [2, 10],
438
+ doorId: 'door-wood', doorPosition: 6,
439
+ },
440
+ {
441
+ wallId: 'wall-brick',
442
+ windowIds: ['window-cross'],
443
+ windowPositions: [2, 6, 10],
444
+ },
445
+ ],
446
+ },
447
+ },
448
+ {
449
+ id: 'preset-castle-tower', name: 'Castle Tower', description: 'Medieval stone tower',
450
+ tags: ['stone', 'castle', 'medieval', 'tower'],
451
+ config: {
452
+ name: 'Castle Tower', foundationId: 'foundation-stone', roofId: 'roof-flat',
453
+ width: 16,
454
+ floors: [
455
+ {
456
+ wallId: 'wall-stone',
457
+ windowIds: ['window-arch'],
458
+ windowPositions: [6],
459
+ doorId: 'door-arch', doorPosition: 5,
460
+ },
461
+ {
462
+ wallId: 'wall-stone',
463
+ windowIds: ['window-arch'],
464
+ windowPositions: [3, 9],
465
+ },
466
+ {
467
+ wallId: 'wall-stone',
468
+ windowIds: ['window-arch'],
469
+ windowPositions: [3, 9],
470
+ decorationIds: ['deco-banner'],
471
+ },
472
+ ],
473
+ },
474
+ },
475
+ {
476
+ id: 'preset-shop', name: 'Shop', description: 'Market shop with awning',
477
+ tags: ['wood', 'shop', 'market', 'town'],
478
+ config: {
479
+ name: 'Shop', foundationId: 'foundation-wood', roofId: 'roof-triangle',
480
+ width: 16,
481
+ floors: [{
482
+ wallId: 'wall-halftimber',
483
+ windowIds: ['window-simple'],
484
+ windowPositions: [2, 10],
485
+ doorId: 'door-double', doorPosition: 4,
486
+ decorationIds: ['deco-shop-awning'],
487
+ }],
488
+ },
489
+ },
490
+ {
491
+ id: 'preset-inn', name: 'Inn', description: 'Half-timber two-story inn',
492
+ tags: ['halftimber', 'inn', 'medieval', 'town'],
493
+ config: {
494
+ name: 'Inn', foundationId: 'foundation-stone', roofId: 'roof-triangle',
495
+ chimneyId: 'chimney-stone', chimneyPosition: 12, width: 16,
496
+ floors: [
497
+ {
498
+ wallId: 'wall-halftimber',
499
+ windowIds: ['window-simple'],
500
+ windowPositions: [2, 10],
501
+ doorId: 'door-double', doorPosition: 4,
502
+ },
503
+ {
504
+ wallId: 'wall-halftimber',
505
+ windowIds: ['window-cross'],
506
+ windowPositions: [2, 6, 10],
507
+ decorationIds: ['deco-balcony'],
508
+ },
509
+ ],
510
+ },
511
+ },
512
+ {
513
+ id: 'preset-temple', name: 'Temple', description: 'Domed temple building',
514
+ tags: ['stone', 'temple', 'church', 'dome'],
515
+ config: {
516
+ name: 'Temple', foundationId: 'foundation-stone', roofId: 'roof-dome',
517
+ width: 18,
518
+ floors: [
519
+ {
520
+ wallId: 'wall-stone',
521
+ windowIds: ['window-round'],
522
+ windowPositions: [3, 11],
523
+ doorId: 'door-arch', doorPosition: 6,
524
+ },
525
+ {
526
+ wallId: 'wall-stone',
527
+ windowIds: ['window-arch'],
528
+ windowPositions: [3, 7, 11],
529
+ },
530
+ ],
531
+ },
532
+ },
533
+ {
534
+ id: 'preset-pagoda', name: 'Pagoda', description: 'Multi-story pagoda tower',
535
+ tags: ['wood', 'pagoda', 'asian', 'tower'],
536
+ config: {
537
+ name: 'Pagoda', foundationId: 'foundation-stone', roofId: 'roof-pagoda',
538
+ width: 16,
539
+ floors: [
540
+ {
541
+ wallId: 'wall-wood',
542
+ windowIds: ['window-arch'],
543
+ windowPositions: [3, 9],
544
+ doorId: 'door-arch', doorPosition: 6,
545
+ },
546
+ {
547
+ wallId: 'wall-wood',
548
+ windowIds: ['window-arch'],
549
+ windowPositions: [3, 9],
550
+ },
551
+ {
552
+ wallId: 'wall-wood',
553
+ windowIds: ['window-round'],
554
+ windowPositions: [6],
555
+ },
556
+ ],
557
+ },
558
+ },
559
+ ];
560
+ /** Initialize: register all building parts */
561
+ function initBuildingParts() {
562
+ registerParts(BUILDING_PARTS);
563
+ }
564
+
565
+ export { BUILDING_PARTS, BUILDING_PRESETS, ROOF_PALETTES, WALL_PALETTES, assembleBuildingFromConfig, initBuildingParts };
566
+ //# sourceMappingURL=buildingGeneratorPresets.js.map