From 4fdc567e089b4562a504f71f9e8104bef238f0da Mon Sep 17 00:00:00 2001 From: 33333-33333 Date: Mon, 29 Jun 2026 16:21:58 +0900 Subject: [PATCH] removed unused processesseessess --- FILES.json | 2 +- app_manifest.json | 8 +- assets/ui/favicon-64.png | Bin 5503 -> 0 bytes assets/ui/tool_water_bowl.webp | Bin 1598 -> 0 bytes css/base.css | 27 -- css/components.css | 6 - css/layout.css | 20 -- css/mobile.css | 41 --- css/panel.css | 32 --- index.html | 310 ++++++++++----------- js/ants.js | 22 +- js/assets.js | 85 ++++-- js/audio.js | 32 +-- js/collision_footprint_system.js | 18 +- js/collision_response_system.js | 151 ++++------ js/colony_situation_system.js | 3 +- js/command_dispatcher.js | 34 +-- js/constraint_system.js | 109 ++------ js/data.js | 72 +---- js/debug_tools.js | 10 +- js/deterministic_helpers.js | 1 - js/disease_registry.js | 25 -- js/event_bus.js | 12 +- js/family_graph.js | 2 +- js/ground_types.js | 7 - js/health.js | 8 - js/history_system.js | 23 +- js/impact_core_system.js | 1 - js/impact_response_system.js | 47 ++-- js/input_mode_manager.js | 2 - js/item_dynamic_ball_system.js | 14 +- js/item_dynamic_duplicator_system.js | 12 +- js/item_dynamic_pin_system.js | 25 +- js/item_dynamic_system.js | 10 +- js/item_dynamic_tool_system.js | 27 +- js/item_dynamic_zunchi_system.js | 12 +- js/item_effect_definitions.js | 12 +- js/item_food_definitions.js | 44 ++- js/item_lifecycle_decay_system.js | 16 +- js/item_lifecycle_growth_system.js | 23 +- js/item_lifecycle_legacy_system.js | 13 - js/item_lifecycle_pipeline.js | 19 +- js/item_lifecycle_runtime.js | 42 --- js/item_lifecycle_step_decay.js | 2 +- js/item_lifecycle_step_dynamic.js | 2 +- js/item_lifecycle_step_growth.js | 2 +- js/item_lifecycle_step_legacy.js | 13 - js/item_lifecycle_support.js | 60 +--- js/item_registry.js | 67 +---- js/item_render_runtime.js | 30 +- js/item_runtime.js | 29 +- js/item_tool_definitions.js | 41 +-- js/item_type_initializers.js | 17 +- js/item_update_policy.js | 11 +- js/item_update_scheduler.js | 43 ++- js/item_visual_definitions.js | 8 - js/items.js | 33 +-- js/main.js | 32 +-- js/math.js | 2 - js/mechanical_shape_bridge.js | 8 - js/mechanical_system.js | 141 ++++++---- js/patch_helpers.js | 16 -- js/perf_profiler.js | 3 +- js/physics_helpers.js | 19 +- js/physics_projection_system.js | 25 -- js/physics_shape_editor_system.js | 3 - js/physics_world_system.js | 73 ++--- js/pin_attachment_system.js | 5 - js/placement_preview_system.js | 40 +-- js/registry_base.js | 7 - js/render.js | 176 ++---------- js/restore_coordinator.js | 6 +- js/save_codec.js | 77 +---- js/save_schema.js | 43 +-- js/save_storage.js | 2 +- js/save_system.js | 13 +- js/sim_core.js | 72 +---- js/simulation.js | 16 +- js/simulation_ambient_system.js | 6 +- js/simulation_creature_system.js | 41 ++- js/simulation_environment_system.js | 13 +- js/simulation_item_ant_system.js | 15 +- js/simulation_runtime_helpers.js | 47 +--- js/simulation_systems.js | 30 +- js/snapshot_system.js | 94 +------ js/sound_pack.js | 6 +- js/structure_lifecycle.js | 7 - js/structures.js | 8 +- js/system_order.js | 12 +- js/tarinai.js | 22 +- js/tarinai_action_planner_system.js | 21 -- js/tarinai_action_spec.js | 19 -- js/tarinai_action_state.js | 39 +-- js/tarinai_behavior_state.js | 3 - js/tarinai_behavior_text.js | 17 +- js/tarinai_building_behavior.js | 5 +- js/tarinai_consumable_behavior.js | 6 +- js/tarinai_contact_item_system.js | 6 - js/tarinai_cursor_care_system.js | 1 - js/tarinai_disease_nest.js | 4 +- js/tarinai_food_interaction_system.js | 12 +- js/tarinai_forced_action_planner_system.js | 22 -- js/tarinai_forced_behavior.js | 23 +- js/tarinai_identity_social.js | 6 - js/tarinai_item_effects.js | 25 +- js/tarinai_item_interaction_context.js | 2 +- js/tarinai_item_interaction_system.js | 15 +- js/tarinai_item_targeting.js | 26 +- js/tarinai_local_environment_system.js | 1 - js/tarinai_need_planner_system.js | 10 +- js/tarinai_needs_core.js | 12 +- js/tarinai_needs_items.js | 91 +++--- js/tarinai_nest_sleep_system.js | 11 +- js/tarinai_render.js | 43 +-- js/tarinai_runtime.js | 12 +- js/tarinai_seed_factory.js | 4 +- js/tarinai_social_action_runtime.js | 10 +- js/tarinai_social_move_life.js | 6 +- js/tarinai_sunbath_system.js | 1 - js/tarinai_update_legacy_system.js | 25 -- js/tarinai_update_pipeline.js | 19 +- js/tarinai_update_policy.js | 32 +-- js/tarinai_update_step_environment.js | 3 +- js/tarinai_update_step_frame.js | 27 +- js/tarinai_update_step_legacy.js | 12 - js/tarinai_update_step_movement.js | 9 +- js/text_catalog.js | 17 +- js/ui.js | 12 +- js/ui_bind.js | 60 ++-- js/ui_charts.js | 8 +- js/ui_family_render.js | 53 ---- js/ui_ground.js | 19 +- js/ui_helpers.js | 26 +- js/ui_input_mouse.js | 3 +- js/ui_input_shared.js | 57 +--- js/ui_input_touch.js | 2 +- js/ui_layout_dialogs.js | 26 +- js/ui_log.js | 4 +- js/ui_pointer_action_system.js | 2 +- js/ui_selected.js | 12 +- js/ui_tools.js | 6 +- js/ui_tooltips.js | 29 +- js/version.js | 4 +- js/weather_system.js | 109 ++++---- js/world.js | 10 +- js/world_combat_effects.js | 28 +- js/world_environment.js | 149 ++-------- js/world_event_effects.js | 7 +- js/world_family_social.js | 85 ++---- js/world_placement_log.js | 149 ++++------ js/world_spatial_budget.js | 15 +- js/world_tool_actions.js | 64 ++--- js/world_update.js | 78 ++---- js/world_update_phases.js | 58 ---- js/world_view.js | 54 ++-- scripts/ai_inventory.py | 1 - scripts/regression_check.py | 120 ++++---- service-worker.js | 4 +- 158 files changed, 1317 insertions(+), 3351 deletions(-) delete mode 100644 assets/ui/favicon-64.png delete mode 100644 assets/ui/tool_water_bowl.webp delete mode 100644 js/item_lifecycle_legacy_system.js delete mode 100644 js/item_lifecycle_runtime.js delete mode 100644 js/item_lifecycle_step_legacy.js delete mode 100644 js/patch_helpers.js delete mode 100644 js/tarinai_action_planner_system.js delete mode 100644 js/tarinai_forced_action_planner_system.js delete mode 100644 js/tarinai_update_legacy_system.js delete mode 100644 js/tarinai_update_step_legacy.js delete mode 100644 js/world_update_phases.js diff --git a/FILES.json b/FILES.json index 0abb210..d4f8e57 100644 --- a/FILES.json +++ b/FILES.json @@ -32,7 +32,7 @@ }, { "id": "core", - "patterns": ["js/version.js", "js/event_bus.js", "js/registry_base.js", "js/disease_registry.js", "js/sound_pack.js", "js/data.js", "js/ground_types.js", "js/health.js", "js/input_mode_manager.js", "js/main.js", "js/math.js", "js/patch_helpers.js", "js/perf_profiler.js", "js/debug_tools.js"], + "patterns": ["js/version.js", "js/event_bus.js", "js/registry_base.js", "js/disease_registry.js", "js/sound_pack.js", "js/data.js", "js/ground_types.js", "js/health.js", "js/input_mode_manager.js", "js/main.js", "js/math.js", "js/perf_profiler.js", "js/debug_tools.js"], "meaning": "Bootstrap, shared constants/helpers, registries, config, profiling/debug." }, { diff --git a/app_manifest.json b/app_manifest.json index 46c3a39..89c1eab 100644 --- a/app_manifest.json +++ b/app_manifest.json @@ -1,5 +1,5 @@ { - "version": "39.15.63", + "version": "39.15.65", "css": [ "css/base.css", "css/layout.css", @@ -25,7 +25,6 @@ "js/math.js", "js/collision_footprint_system.js", "js/physics_helpers.js", - "js/placement_collision_system.js", "js/placement_preview_system.js", "js/pin_attachment_system.js", "js/physics_shape_editor_system.js", @@ -44,7 +43,6 @@ "js/items.js", "js/item_type_initializers.js", "js/item_lifecycle_support.js", - "js/item_lifecycle_runtime.js", "js/item_update_policy.js", "js/item_dynamic_tool_system.js", "js/item_dynamic_ball_system.js", @@ -81,8 +79,6 @@ "js/tarinai_building_behavior.js", "js/tarinai_action_definitions.js", "js/tarinai_needs_items.js", - "js/tarinai_forced_action_planner_system.js", - "js/tarinai_action_planner_system.js", "js/tarinai_need_planner_system.js", "js/tarinai_item_interaction_context.js", "js/tarinai_food_interaction_system.js", @@ -122,7 +118,6 @@ "js/simulation_maintenance_system.js", "js/simulation_ambient_system.js", "js/simulation_systems.js", - "js/world_update_phases.js", "js/system_order.js", "js/simulation.js", "js/colony_situation_system.js", @@ -143,7 +138,6 @@ "js/save_codec.js", "js/save_storage.js", "js/save_system.js", - "js/patch_helpers.js", "js/ui_tooltips.js", "js/ui_layout_dialogs.js", "js/ui_ground.js", diff --git a/assets/ui/favicon-64.png b/assets/ui/favicon-64.png deleted file mode 100644 index 92594d73a97edd377569fd337b1f14b406910d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5503 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 B@W227 diff --git a/assets/ui/tool_water_bowl.webp b/assets/ui/tool_water_bowl.webp deleted file mode 100644 index 3dc7384fc8807ed57bc2d7ccb5c7635cdaee5357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1598 zcmV-E2EqAKNk&FC1^@t8MM6+kP&il$0000G0001g004gg06|PpNWlRB00BRsCSV#i z$c>2H&=C=#e;fcD*|sA!@)$EO;0H}gl>l!5uK;)M@soSf{-r1B{okp}714hOZretZ z?7&I7n7w!Z5dO7QtaLLCyV%x5-IPrPjg<~~8Sm|RY|D4KgRU=6m+L&9PJJKpp=+^r z+KuC>@I=`s$C40?Z#?qcg1VSXwwNL`o|{ndc5mbPSU&8Hn{c7FQlz>Ni^*DMG!!}N zy`g|w26#XFp@#hR;7fDxnOwN!;4?i$D~Fg89VMN(kUW=6c{I-ng3UrSW`+*PJQ^d$ zRK$Z}OrGa5V?;wi;z&|OG}M=omJQ{@gW-QC*%+i@>VL0YTcK%)```UaF0__?rDP-k zh9;#B>vWJ;9$G#;tB4odObFD01?q$xU1xIioXOEC1ZFyZ9T*_#@bCc1 zTjbU1^2ngr71&%F49s4J^1yg5xkTp{=5qxr+d*ySSC&GHs#4v6HRnAm%<~~ERa z773h!cxpq_lVI7H*HS^%3<7%H%qy-~S{j5=?(DQ1rn57f_w-WpI`1mb@bV(KVfo;C z7QJ%YP3&Nl*Qssku${6AezIT3|FYrlssaF3P&gn?1ONcA7yz9CDu4ih06tYHkVT`S zp_7YkTsQ?pv4Cq9+wcz-y;9_(>*%+=U}pSKKfCo_^8xzh`xWoA(Pz{F=mFA+`-A&c zh;wCJV`j5&&XeUh;?m0c_2Y=NkEb_E~leyu=eH4)l$zYxi(uad;o|4UZFeFea_SPS|T5f#~` zx<)uu2`6r3|0%qawKooiq+IAESqmzK;-+vr>9tK;fB^pewCDf;5r3qdP67OtQU;`< zaIK)#gzPn=0$(&-(Q5}w7EY)ZpHg4g%JYKj_yiTWP$W(m$fdB}xz`0Ots%K-$Pe}y zG>fOJ|0R9k!3*CoLMQY-A077mdTJwVxZMoAKACa{-%g(&9}v*a;ki(YLw^&q0Kx}= zFFf)Xuz&ae;sWVG;x?^zW=$v2h<qkU=d%JHo20M9 zw~Dv`*lrr}6k*_A)Zq8x9=oEmOVB612#HP{1gBoft~(UqSNwWwLeiEqjJIc-VLGs# zKW8YEosc-5>B3qpEi-|5LfF_?Xq1=C|BEjuh)t!@D;K)^a+dNpXeYL8WsMbCTFyv` zbP8x-wkyUQA1^89RA;`pC=FjxTy^7tPX3!%h|&rD;4reT^Lt*n9)-l~AftN_iNhoO zmFxbd*ZmR@nAC6dzW<$obV0Iq;qF2LbB}>WXi+FR7|EvNoyF=5K~Jy*Li0fR1$@fz zl`&|Ftypp+61b8`8gIA=0%@?3kKa84*O9rrwZy|QfmITTW4wPf0#HxIFjoz>t(qm5 zrNtPHK0hMjgk~_k8O7ijJ-=@m3KmEofbt8Jx^@_qVwlKf({E6*Q!W!2Kak7-4%u% zilMTYH1W~LRBWG0RBlWJjY{&uo%j27!wlW4IRr2{?Q3ae-~Zc$cpmiXKP*VI&|YBI z@c>zDuUlk8#YfRMIR@>~+`)qIP&!Hr7gAk>j(OC@D{4F1B$w#{!cak=VqT!*D`OuA z=^Ets*Jw$311&dC0p406Cd%J2UssS z==JKtSK=H>NT`ZPm!$U|e=o