tarinai/index.html
2026-06-22 02:03:19 +09:00

248 lines
16 KiB
HTML

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 64 64%27%3E%3Ctext y=%2752%27 font-size=%2752%27%3E%E3%81%9F%3C/text%3E%3C/svg%3E" />
<link rel="stylesheet" href="css/base.css?v=15.24.0" />
<link rel="stylesheet" href="css/layout.css?v=15.24.0" />
<link rel="stylesheet" href="css/panel.css?v=15.24.0" />
<link rel="stylesheet" href="css/components.css?v=15.24.0" />
<link rel="stylesheet" href="css/mobile.css?v=15.24.0" />
</head>
<body>
<div id="loadingScreen" class="loading-screen" aria-live="polite">
<div class="loading-panel">
<div class="loading-kicker">たりないコロニー</div>
<h1 class="loading-title">読み込み中…</h1>
<p id="loadingText" class="loading-text">準備しています</p>
<div id="loadingSpriteStrip" class="loading-sprite-strip" aria-hidden="true"></div>
<div class="loading-progress-track"><div id="loadingBar" class="loading-progress-bar" style="width:0%"></div></div>
<div class="loading-progress-meta"><span>進行状況</span><strong id="loadingPercent">0%</strong></div>
<p class="loading-hint">初期表示に必要な画像だけ先に読み込み、残りは後から順次ロードします。</p>
</div>
</div>
<div id="app">
<header class="topbar">
<div class="top-left">
<a class="btn room-link" href="https://host.nishi.boats/~333/">333&#x306E;&#x90E8;&#x5C4B;&#x306B;&#x79FB;&#x52D5;</a>
<div class="brand">
<h1>&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;</h1>
</div>
</div>
<div class="top-actions">
<button id="pauseBtn" class="btn primary">&#x4E00;&#x6642;&#x505C;&#x6B62;</button>
<button id="speedBtn" class="btn">&#x901F;&#x5EA6; x1</button>
<button id="ecologyBtn" class="btn">&#x305F;&#x308A;&#x306A;&#x3044;&#x306E;&#x751F;&#x614B;</button>
<div id="soundMenu" class="sound-menu">
<button id="soundBtn" class="btn sound-menu-btn" type="button" aria-haspopup="true" aria-expanded="false">音設定 ON</button>
<div id="soundPanel" class="sound-panel hidden" role="menu" aria-label="効果音設定">
<label class="sound-master"><input id="soundMasterToggle" type="checkbox" checked><span>効果音</span></label>
<div class="sound-panel-divider"></div>
<label><input type="checkbox" data-sound-category="voice"><span>たりないの声</span></label>
<label><input type="checkbox" data-sound-category="notify" checked><span>通知</span></label>
<label><input type="checkbox" data-sound-category="ops" checked><span>操作</span></label>
</div>
</div>
<button id="creditsBtn" class="btn">&#x30AF;&#x30EC;&#x30B8;&#x30C3;&#x30C8;</button>
<button id="saveBtn" class="btn">セーブ</button>
<button id="resetBtn" class="btn danger">&#x30EA;&#x30BB;&#x30C3;&#x30C8;</button>
</div>
</header>
<main class="layout">
<section class="stage-wrap">
<canvas id="gameCanvas" aria-label="&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;&#x30AD;&#x30E3;&#x30F3;&#x30D0;&#x30B9;"></canvas>
<div id="mobileModeControls" class="mobile-mode-controls" aria-label="スマホ操作モード">
<button type="button" data-mobile-mode="auto" class="active">自動</button>
<button type="button" data-mobile-mode="camera">カメラ</button>
<button type="button" data-mobile-mode="tool">道具</button>
<button type="button" data-mobile-mode="family">家系図</button>
</div>
<div id="toast" class="toast hidden"></div>
</section>
<aside class="panel">
<section id="selectedCard" class="card selected-card hidden">
<div class="selected-head">
<h2>&#x305F;&#x308A;&#x306A;&#x3044;&#x30C7;&#x30FC;&#x30BF;</h2>
<button id="selectedCloseBtn" class="selected-close" type="button" aria-label="&#x89B3;&#x5BDF;&#x3092;&#x3084;&#x3081;&#x308B;">&times;</button>
</div>
<div id="selectedInfo" class="selected-info empty">&#x672A;&#x9078;&#x629E;</div>
</section>
<section id="toolCard" class="card tool-card collapsible-card" data-card-key="tools">
<button class="panel-card-toggle" type="button" aria-expanded="true"><span class="panel-card-title">&#x9053;&#x5177;</span><span class="panel-card-state">&#x6298;&#x308A;&#x7573;&#x307F;</span></button>
<div class="panel-card-body">
<div class="tool-body">
<div id="toolPalette" class="tool-palette" aria-live="polite"></div>
<p class="hint">&#x540C;&#x3058;&#x9053;&#x5177;&#x30DC;&#x30BF;&#x30F3;&#x3092;&#x3082;&#x3046;&#x4E00;&#x5EA6;&#x62BC;&#x3059;&#x3068;&#x3001;&#x5BFE;&#x5FDC;&#x9053;&#x5177;&#x306E;&#x5927;&#x304D;&#x3055;&#x304C;&#x5C0F;&#x30FB;&#x4E2D;&#x30FB;&#x5927;&#x3067;&#x5207;&#x308A;&#x66FF;&#x308F;&#x308A;&#x307E;&#x3059;&#x3002;</p>
</div>
</div>
</section>
<section class="card colony-card collapsible-card" data-card-key="colony">
<button class="panel-card-toggle" type="button" aria-expanded="true"><span class="panel-card-title">&#x30B3;&#x30ED;&#x30CB;&#x30FC;</span><span class="panel-card-state">&#x6298;&#x308A;&#x7573;&#x307F;</span></button>
<div class="panel-card-body">
<div class="stats colony-stats">
<div class="stat"><span>&#x500B;&#x4F53;&#x6570;</span><strong id="statPop">0</strong></div>
<div class="stat"><span>&#x7D2F;&#x8A08;&#x6B7B;&#x4EA1;&#x6570;</span><strong id="statDead">0</strong></div>
<div class="stat"><span>雰囲気</span><strong id="statColonyMood">のんびり</strong></div>
</div>
<div id="colonyChartTabs" class="chart-tabs"><button data-chart="population" class="active">&#x4EBA;&#x53E3;</button><button data-chart="life">精神</button><button data-chart="environment">&#x74B0;&#x5883;</button><button data-chart="objects">&#x30AA;&#x30D6;&#x30B8;&#x30A7;&#x30AF;&#x30C8;</button></div>
<div id="colonyChartLegend" class="colony-chart-legend"></div>
<div id="colonyChart" class="colony-chart" aria-label="&#x30B3;&#x30ED;&#x30CB;&#x30FC;&#x306E;&#x63A8;&#x79FB;&#x30B0;&#x30E9;&#x30D5;" role="img"></div>
</div>
</section>
<section class="card log-card collapsible-card" data-card-key="events">
<button class="panel-card-toggle" type="button" aria-expanded="true"><span class="panel-card-title">&#x30A4;&#x30D9;&#x30F3;&#x30C8;</span><span class="panel-card-state">&#x6298;&#x308A;&#x7573;&#x307F;</span></button>
<div class="panel-card-body">
<div id="log" class="log"></div>
<div class="log-push-controls" id="logPushControls" aria-label="&#x30D7;&#x30C3;&#x30B7;&#x30E5;&#x901A;&#x77E5;&#x8A2D;&#x5B9A;">
<label class="push-master"><input id="logPushEnabled" type="checkbox"> &#x30D7;&#x30C3;&#x30B7;&#x30E5;&#x901A;&#x77E5;</label>
<div class="push-kind-grid">
<label><input type="checkbox" data-push-kind="death" checked> &#x6B7B;&#x4EA1;</label>
<label><input type="checkbox" data-push-kind="accident" checked> &#x4E8B;&#x6545;</label>
<label><input type="checkbox" data-push-kind="birth" checked> &#x8A95;&#x751F;</label>
<label><input type="checkbox" data-push-kind="fight"> &#x55A7;&#x5629;</label>
<label><input type="checkbox" data-push-kind="food"> &#x98DF;&#x4E8B;</label>
<label><input type="checkbox" data-push-kind="weather"> &#x5929;&#x6C17;</label>
<label><input type="checkbox" data-push-kind="grass"> &#x8349;</label>
<label><input type="checkbox" data-push-kind="relation"> &#x95A2;&#x4FC2;</label>
</div>
</div>
</div>
</section>
</aside>
</main>
<section class="card lineage-main-card">
<div class="lineage-head">
<h2>&#x5BB6;&#x7CFB;&#x56F3;</h2>
<div class="lineage-actions">
<button id="archiveUpdateToggleBtn" class="btn" type="button" aria-pressed="false">&#x66F4;&#x65B0; OFF</button>
<button id="archiveResetBtn" class="btn danger" type="button">&#x5BB6;&#x7CFB;&#x56F3;&#x3092;&#x30EA;&#x30BB;&#x30C3;&#x30C8;</button>
</div>
</div>
<div id="archiveContent" class="archive-content lineage-main-content"></div>
</section>
</div>
<div id="fieldDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="fieldDialogTitle">
<div class="field-dialog-panel">
<h2 id="fieldDialogTitle">&#x30D5;&#x30A3;&#x30FC;&#x30EB;&#x30C9;&#x3092;&#x9078;&#x629E;</h2>
<div class="field-choice-grid">
<button class="field-choice" data-field-type="park" type="button"><strong>&#x516C;&#x5712;</strong><span>&#x5927;</span></button>
<button class="field-choice" data-field-type="garden" type="button"><strong>&#x5EAD;</strong><span>&#x4E2D;</span></button>
<button class="field-choice" data-field-type="cage" type="button"><strong>&#x30B1;&#x30FC;&#x30B8;</strong><span>&#x5C0F;</span></button>
</div>
<div class="field-dialog-actions">
<button id="fieldCancelBtn" class="btn" type="button">&#x30AD;&#x30E3;&#x30F3;&#x30BB;&#x30EB;</button>
</div>
</div>
</div>
<div id="creditsDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="creditsDialogTitle">
<div class="field-dialog-panel credits-dialog-panel">
<h2 id="creditsDialogTitle">&#x30AF;&#x30EC;&#x30B8;&#x30C3;&#x30C8;</h2>
<div class="credits-content">
<p><strong>&#x88FD;&#x4F5C;:</strong> 333</p>
<p><strong>&#x305F;&#x308A;&#x306A;&#x3044;:</strong> &#x3080;&#x3089;&#x3055;&#x304D;&#x6C0F;</p>
<p><strong>&#x52B9;&#x679C;&#x97F3;:</strong> VOICEVOX: &#x305A;&#x3093;&#x3060;&#x3082;&#x3093;&#x3000;&#x52B9;&#x679C;&#x97F3;&#x30E9;&#x30DC;: <a href="https://soundeffect-lab.info/" target="_blank" rel="noopener">https://soundeffect-lab.info/</a></p>
<p><strong>&#x30A2;&#x30EA;&#x7D20;&#x6750;:</strong> &#x3044;&#x3089;&#x3059;&#x3068;&#x3084;: <a href="https://www.irasutoya.com/" target="_blank" rel="noopener">https://www.irasutoya.com/</a></p>
</div>
<div class="field-dialog-actions credits-actions">
<button id="creditsCloseBtn" class="btn" type="button">&#x9589;&#x3058;&#x308B;</button>
</div>
</div>
</div>
<div id="archiveResetDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="archiveResetDialogTitle">
<div class="field-dialog-panel archive-reset-dialog-panel">
<h2 id="archiveResetDialogTitle">&#x5BB6;&#x7CFB;&#x56F3;&#x3092;&#x30EA;&#x30BB;&#x30C3;&#x30C8;&#x3057;&#x307E;&#x3059;&#x304B;&#xFF1F;</h2>
<p class="hint">&#x73FE;&#x5728;&#x306E;&#x89AA;&#x5B50;&#x95A2;&#x4FC2;&#x3068;&#x4E16;&#x4EE3;&#x60C5;&#x5831;&#x3092;&#x6D88;&#x53BB;&#x3057;&#x307E;&#x3059;&#x3002;&#x500B;&#x4F53;&#x305D;&#x306E;&#x3082;&#x306E;&#x3084;&#x5EAD;&#x306E;&#x72B6;&#x614B;&#x306F;&#x6D88;&#x3048;&#x307E;&#x305B;&#x3093;&#x3002;</p>
<div class="field-dialog-actions archive-reset-actions">
<button id="archiveResetCancelBtn" class="btn" type="button">&#x30AD;&#x30E3;&#x30F3;&#x30BB;&#x30EB;</button>
<button id="archiveResetConfirmBtn" class="btn danger" type="button">&#x30EA;&#x30BB;&#x30C3;&#x30C8;&#x3059;&#x308B;</button>
</div>
</div>
</div>
<div id="ecologyDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="ecologyDialogTitle">
<div class="field-dialog-panel ecology-dialog-panel">
<h2 id="ecologyDialogTitle">&#x305F;&#x308A;&#x306A;&#x3044;&#x306E;&#x751F;&#x614B;</h2>
<div id="ecologyGrid" class="ecology-grid"></div>
<div class="field-dialog-actions">
<button id="ecologyCloseBtn" class="btn" type="button">&#x9589;&#x3058;&#x308B;</button>
</div>
</div>
</div>
<div id="logPushOverlay" class="log-push-overlay" aria-live="polite" aria-atomic="false"></div>
<script src="js/version.js?v=15.24.0" defer></script>
<script src="js/event_bus.js?v=15.24.0" defer></script>
<script src="js/performance_manager.js?v=15.24.0" defer></script>
<script src="js/registry_base.js?v=15.24.0" defer></script>
<script src="js/disease_registry.js?v=15.24.0" defer></script>
<script src="js/effect_registry.js?v=15.24.0" defer></script>
<script src="js/sound_pack.js?v=15.24.0" defer></script>
<script src="js/data.js?v=15.24.0" defer></script>
<script src="js/item_visual_registry.js?v=15.24.0" defer></script>
<script src="js/food_registry.js?v=15.24.0" defer></script>
<script src="js/input_mode_manager.js?v=15.24.0" defer></script>
<script src="js/math.js?v=15.24.0" defer></script>
<script src="js/physics_helpers.js?v=15.24.0" defer></script>
<script src="js/assets.js?v=15.24.0" defer></script>
<script src="js/audio.js?v=15.24.0" defer></script>
<script src="js/render.js?v=15.24.0" defer></script>
<script src="js/sim_core.js?v=15.24.0" defer></script>
<script src="js/items.js?v=15.24.0" defer></script>
<script src="js/ants.js?v=15.24.0" defer></script>
<script src="js/health.js?v=15.24.0" defer></script>
<script src="js/tarinai.js?v=15.24.0" defer></script>
<script src="js/tarinai_identity_social.js?v=15.24.0" defer></script>
<script src="js/tarinai_action_state.js?v=15.24.0" defer></script>
<script src="js/tarinai_disease_nest.js?v=15.24.0" defer></script>
<script src="js/tarinai_item_effects.js?v=15.24.0" defer></script>
<script src="js/tarinai_needs_items.js?v=15.24.0" defer></script>
<script src="js/tarinai_social_move_life.js?v=15.24.0" defer></script>
<script src="js/tarinai_render.js?v=15.24.0" defer></script>
<script src="js/world.js?v=15.24.0" defer></script>
<script src="js/world_view.js?v=15.24.0" defer></script>
<script src="js/family_graph.js?v=15.24.0" defer></script>
<script src="js/world_family_social.js?v=15.24.0" defer></script>
<script src="js/world_combat_effects.js?v=15.24.0" defer></script>
<script src="js/world_environment.js?v=15.24.0" defer></script>
<script src="js/world_spatial_budget.js?v=15.24.0" defer></script>
<script src="js/world_ants_system.js?v=15.24.0" defer></script>
<script src="js/weather_system.js?v=15.24.0" defer></script>
<script src="js/world_update.js?v=15.24.0" defer></script>
<script src="js/world_placement_log.js?v=15.24.0" defer></script>
<script src="js/world_bootstrap.js?v=15.24.0" defer></script>
<script src="js/text_catalog.js?v=15.24.0" defer></script>
<script src="js/ui.js?v=15.24.0" defer></script>
<script src="js/ui_log.js?v=15.24.0" defer></script>
<script src="js/ui_helpers.js?v=15.24.0" defer></script>
<script src="js/ui_selected.js?v=15.24.0" defer></script>
<script src="js/snapshot_system.js?v=15.24.0" defer></script>
<script src="js/save_system.js?v=15.24.0" defer></script>
<script src="js/patch_helpers.js?v=15.24.0" defer></script>
<script src="js/freeze_system.js?v=15.24.0" defer></script>
<script src="js/relation_event_system.js?v=15.24.0" defer></script>
<script src="js/ui_layout_dialogs.js?v=15.24.0" defer></script>
<script src="js/ui_tools.js?v=15.24.0" defer></script>
<script src="js/ui_bind.js?v=15.24.0" defer></script>
<script src="js/ui_charts.js?v=15.24.0" defer></script>
<script src="js/ui_family_data.js?v=15.24.0" defer></script>
<script src="js/ui_family_async.js?v=15.24.0" defer></script>
<script src="js/ui_family_layout.js?v=15.24.0" defer></script>
<script src="js/ui_family_paths.js?v=15.24.0" defer></script>
<script src="js/ui_family_render.js?v=15.24.0" defer></script>
<script src="js/main.js?v=15.24.0" defer></script>
<script src="js/debug_tools.js?v=15.24.0" defer></script>
</body>
</html>