tarinai/js/item_dynamic_system.js
2026-07-03 00:45:22 +09:00

42 lines
1.6 KiB
JavaScript

"use strict";
// Layer: entity-runtime/items/dynamic-system
// Central dispatch table for active item behavior. Lifecycle steps should call
// this module instead of knowing every dynamic item type.
(function (global) {
function update(item, dt, worldRef) {
if (!item || item.dead) return false;
switch (item.type) {
case "firecracker":
case "flame_firecracker":
case "fire":
case "genkotsu":
case "rotator":
case "poison_block":
case "reciprocator":
case "gate_fence":
case "robot_cleaner":
case "rope":
case "rod":
return global.TarinaiItemDynamicToolSystem.update(item, dt, worldRef) !== false;
case "ball":
case "balloon":
return global.TarinaiItemDynamicBallSystem.update(item, dt, worldRef) !== false;
case "fan":
return global.TarinaiItemDynamicBallSystem.updateFan(item, dt, worldRef) !== false;
case "water":
return global.TarinaiItemDynamicBallSystem.updateWaterDropMotion(item, dt, worldRef) !== false;
case "duplicator":
return global.TarinaiItemDynamicDuplicatorSystem.update(item, dt, worldRef) !== false;
case "zunchi":
return global.TarinaiItemDynamicZunchiSystem.updateMotion(item, dt, worldRef) !== false;
default:
if (global.TarinaiItemDynamicPinSystem.isPin(item)) {
return global.TarinaiItemDynamicPinSystem.update(item, dt, worldRef) !== false;
}
return false;
}
}
global.TarinaiItemDynamicSystem = Object.freeze({ update });
})(typeof window !== "undefined" ? window : globalThis);