@silkweaver/build 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.js +17 -2
- package/dist/templates.js +1 -0
- package/package.json +1 -1
- package/templates/physics_ball/.engine/engine.mjs +17480 -0
- package/templates/physics_ball/.engine/version.json +4 -0
- package/templates/physics_ball/objects/obj_ball.ts +24 -0
- package/templates/physics_ball/objects/obj_paddle.ts +24 -0
- package/templates/physics_ball/objects/obj_tracker.ts +7 -0
- package/templates/physics_ball/objects/obj_wall.ts +8 -0
- package/templates/physics_ball/project.json +53 -0
- package/templates/physics_ball/rooms/room_main/room.json +77 -0
- package/templates/physics_ball/sprites/spr_ball/0.png +0 -0
- package/templates/physics_ball/sprites/spr_ball/meta.json +22 -0
- package/templates/physics_ball/sprites/spr_paddle/0.png +0 -0
- package/templates/physics_ball/sprites/spr_paddle/meta.json +17 -0
- package/templates/physics_ball/sprites/spr_tracker/0.png +0 -0
- package/templates/physics_ball/sprites/spr_tracker/meta.json +22 -0
- package/templates/physics_ball/sprites/spr_wall/0.png +0 -0
- package/templates/physics_ball/sprites/spr_wall/meta.json +22 -0
package/dist/build.js
CHANGED
|
@@ -277,7 +277,9 @@ async function generate_entry_code(project_folder, proj, asset_mode, engine_path
|
|
|
277
277
|
${var_name}.room_width = ${rm_data.width ?? 640}
|
|
278
278
|
${var_name}.room_height = ${rm_data.height ?? 480}
|
|
279
279
|
${var_name}.room_speed = ${rm_data.room_speed ?? 60}
|
|
280
|
-
${var_name}.room_persistent = ${rm_data.persistent ?? false}
|
|
280
|
+
${var_name}.room_persistent = ${rm_data.persistent ?? false}${room_physics[room_name]
|
|
281
|
+
? `\n${var_name}.physics_world = true\n${var_name}.physics_gravity_x = ${room_physics[room_name].gx}\n${var_name}.physics_gravity_y = ${room_physics[room_name].gy}`
|
|
282
|
+
: ''}
|
|
281
283
|
${var_name}.background_show_color = ${rm_data.bg_show_color ?? true}
|
|
282
284
|
${var_name}.background_solid_color = ${hex_to_bgr(rm_data.bg_color ?? '#000000')}${rm_data.creation_code && rm_data.creation_code.trim()
|
|
283
285
|
? `\n${var_name}.creation_code = () => {\n${rm_data.creation_code}\n}`
|
|
@@ -410,6 +412,14 @@ async function _load_sprite(name: string, meta_url: string, img_base: string): P
|
|
|
410
412
|
spr.mask_right = (meta.mask_x || 0) + meta.mask_w
|
|
411
413
|
spr.mask_bottom = (meta.mask_y || 0) + meta.mask_h
|
|
412
414
|
}
|
|
415
|
+
// Scale mode (how the sprite fills a scaled area) + 9-slice border insets (sprite editor).
|
|
416
|
+
if (meta.scale_mode === 'tile' || meta.scale_mode === 'nineslice' || meta.scale_mode === 'stretch') {
|
|
417
|
+
spr.scale_mode = meta.scale_mode
|
|
418
|
+
}
|
|
419
|
+
spr.slice_left = meta.slice_left || 0
|
|
420
|
+
spr.slice_top = meta.slice_top || 0
|
|
421
|
+
spr.slice_right = meta.slice_right || 0
|
|
422
|
+
spr.slice_bottom = meta.slice_bottom || 0
|
|
413
423
|
|
|
414
424
|
// Load all frames specified in meta.json
|
|
415
425
|
const frames = meta.frames || []
|
|
@@ -526,6 +536,9 @@ export default async function init(canvas: HTMLCanvasElement): Promise<void> {
|
|
|
526
536
|
// Set up rooms
|
|
527
537
|
${room_setups.join('\n')}
|
|
528
538
|
|
|
539
|
+
// Register rooms by name (room_goto('rm_x') / room_get('rm_x') / room_exists('rm_x'))
|
|
540
|
+
${room_names.map(n => `room_register_name('${n}', _room_${n})`).join('\n ')}
|
|
541
|
+
|
|
529
542
|
// Link room order
|
|
530
543
|
${room_var_names.map((v, i) => {
|
|
531
544
|
const prev = room_var_names[i - 1];
|
|
@@ -538,7 +551,9 @@ export default async function init(canvas: HTMLCanvasElement): Promise<void> {
|
|
|
538
551
|
|
|
539
552
|
const start = ${start_var}
|
|
540
553
|
if (!start) { console.error('[Game] No rooms defined.'); return }
|
|
541
|
-
|
|
554
|
+
// The physics world is (re)created per-room in room.build_for_entry() from the room's
|
|
555
|
+
// physics_world/gravity fields — so it's fresh on every entry AND every restart.
|
|
556
|
+
game_loop.start(start)
|
|
542
557
|
}
|
|
543
558
|
`;
|
|
544
559
|
return entry_code;
|
package/dist/templates.js
CHANGED
|
@@ -51,6 +51,7 @@ const TEMPLATE_REGISTRY = [
|
|
|
51
51
|
{ id: 'empty', label: 'Empty', description: 'A blank project with a single empty room.' },
|
|
52
52
|
{ id: 'platformer', label: 'Platformer', description: 'A/D to move, Space to jump — gravity, solid platforms, parent-based collision.' },
|
|
53
53
|
{ id: 'topdown', label: 'Top-down', description: 'WASD movement with parent-based wall collision (place_meeting + a _col parent).' },
|
|
54
|
+
{ id: 'physics_ball', label: 'Physics Ball', description: 'Bounce a ball on a mouse paddle for score — matter.js physics (circle/box bodies, restitution, instance_nearest).' },
|
|
54
55
|
];
|
|
55
56
|
/** Absolute path to the bundled templates directory (sibling of dist/). */
|
|
56
57
|
function templates_dir() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silkweaver/build",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "Silkweaver toolchain — compiles a project folder into a runnable game (HTML5 / desktop executable). Usable from a CLI or the IDE.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"license": "GPL-3.0",
|