File size: 15,403 Bytes
4b04821
1c00bf3
 
 
 
31ac68f
 
1c00bf3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31ac68f
 
 
 
1c00bf3
 
31ac68f
1c00bf3
 
31ac68f
1c00bf3
31ac68f
1c00bf3
 
 
 
 
 
 
 
 
 
31ac68f
 
1c00bf3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
 
 
 
 
 
31ac68f
1c00bf3
 
 
 
31ac68f
1c00bf3
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
31ac68f
1c00bf3
31ac68f
1c00bf3
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
 
 
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
 
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
 
31ac68f
 
1c00bf3
 
 
 
 
 
 
 
 
 
 
 
 
 
31ac68f
1c00bf3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b04821
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<!doctype html>
<html lang="zh-Hant">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>帝國征途 · 回合制戰略</title>
<meta name="description" content="回合制戰略傳奇。集結軍隊、締結同盟,征服世界。" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700;800&family=Cinzel+Decorative:wght@700;900&family=Inter:wght@300;400;500;600;700&family=Noto+Serif+TC:wght@400;500;600;700&family=Noto+Sans+TC:wght@300;400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css" />
</head>
<body>

<svg class="sprite" aria-hidden="true" xmlns="http://www.w3.org/2000/svg">
  <symbol id="i-crown" viewBox="0 0 24 24"><path d="M3 8l4 4 5-7 5 7 4-4-2 11H5L3 8z"/><path d="M5 19h14"/></symbol>
  <symbol id="i-gold" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.2"/><path d="M12 7.4l1.5 3 3.3.5-2.4 2.4.6 3.3-3-1.6-3 1.6.6-3.3-2.4-2.4 3.3-.5 1.5-3z"/></symbol>
  <symbol id="i-food" viewBox="0 0 24 24"><path d="M12 21V9"/><path d="M12 9c-2.6 0-4.2-1.6-4.2-4.2C10.4 4.8 12 6.4 12 9zM12 9c2.6 0 4.2-1.6 4.2-4.2C13.6 4.8 12 6.4 12 9zM12 13.2c-2.6 0-4.2-1.6-4.2-4.2 2.6 0 4.2 1.6 4.2 4.2zM12 13.2c2.6 0 4.2-1.6 4.2-4.2-2.6 0-4.2 1.6-4.2 4.2zM12 17.4c-2.6 0-4.2-1.6-4.2-4.2 2.6 0 4.2 1.6 4.2 4.2zM12 17.4c2.6 0 4.2-1.6 4.2-4.2-2.6 0-4.2 1.6-4.2 4.2z"/></symbol>
  <symbol id="i-wood" viewBox="0 0 24 24"><rect x="3" y="6" width="18" height="4.6" rx="2.3"/><rect x="3" y="13.4" width="18" height="4.6" rx="2.3"/><circle cx="7" cy="8.3" r="1.1"/><circle cx="7" cy="15.7" r="1.1"/></symbol>
  <symbol id="i-stone" viewBox="0 0 24 24"><path d="M3.5 19l3-8.2 5.2-2.2 4.2 3.1 4.6 1-1.9 6.3H3.5z"/><path d="M6.5 10.8l5.2 3.2 4.2-2M11.7 14v5"/></symbol>
  <symbol id="i-army" viewBox="0 0 24 24"><path d="M4 14.2a8 8 0 0116 0V16H4v-1.8z"/><path d="M3.4 16h17.2M12 6.2V4"/><path d="M12 6.2c2-2.2 4.2-1.2 5.4 1"/></symbol>
  <symbol id="i-sword" viewBox="0 0 24 24"><path d="M18.4 2.6l3 3-9.2 9.2-3-3 9.2-9.2z"/><path d="M6.4 14.2l3.4 3.4M4 20l3.5-3.5"/><path d="M14.5 6.5l3 3"/></symbol>
  <symbol id="i-shield" viewBox="0 0 24 24"><path d="M12 2.8l7.5 3v5.5c0 4.6-3.1 7.8-7.5 9.4-4.4-1.6-7.5-4.8-7.5-9.4V5.8l7.5-3z"/><path d="M9 12l2.2 2.2L15.4 10"/></symbol>
  <symbol id="i-build" viewBox="0 0 24 24"><path d="M14.2 2.8l7 7-3 3-7-7 3-3z"/><path d="M11.2 8.8L3 17l4 4 8.2-8.2"/><path d="M6 19l-1 1"/></symbol>
  <symbol id="i-scroll" viewBox="0 0 24 24"><path d="M7 4h11v14H7z"/><path d="M7 4a2.2 2.2 0 00-2.2 2.2V8h2.2M18 18a2.2 2.2 0 002.2-2.2V14H18"/><path d="M10 8h5M10 11.5h5M10 15h3"/></symbol>
  <symbol id="i-dove" viewBox="0 0 24 24"><path d="M20.5 5.5c-3.2 0-5.4 1.1-7.2 3l-4 4.1c-1.9 2-2.8 3.1-3.2 5.2l4.2-1.9 3.1 3c4.3-1 7.6-5.2 7.6-10.4V5.5z"/><path d="M9.2 14.2L5 12.2"/></symbol>
  <symbol id="i-handshake" viewBox="0 0 24 24"><path d="M2.6 12.1l4.2-4.2 5 3 5-3 4.6 4.6-5.3 6.2-4.3-3.1-4.3 3.1-4.9-6.6z"/><path d="M9.2 9.6l3 2.1 3-2.1"/></symbol>
  <symbol id="i-trade" viewBox="0 0 24 24"><path d="M3.6 8h13.6l-3-3M20.4 16H6.8l3 3"/></symbol>
  <symbol id="i-close" viewBox="0 0 24 24"><path d="M6 6l12 12M18 6L6 18"/></symbol>
  <symbol id="i-map" viewBox="0 0 24 24"><path d="M3 6l6-2 6 2 6-2v14l-6 2-6-2-6 2V6z"/><path d="M9 4v14M15 6v14"/></symbol>
  <symbol id="i-save" viewBox="0 0 24 24"><path d="M5 3h11l3 3v15H5V3z"/><path d="M8 3v6h7V3M8 21v-7h8v7"/></symbol>
  <symbol id="i-help" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M9.6 9.2a2.5 2.5 0 114 2.1c-.9.7-1.6 1.2-1.6 2.4"/><circle cx="12" cy="17.3" r=".6" fill="currentColor" stroke="none"/></symbol>
  <symbol id="i-flag" viewBox="0 0 24 24"><path d="M5 21V4"/><path d="M5 4.5h12l-3 4 3 4H5"/></symbol>
  <symbol id="i-skull" viewBox="0 0 24 24"><path d="M12 2.8a8 8 0 00-5 14.2v3.2h10v-3.2a8 8 0 00-5-14.2z"/><circle cx="9" cy="11" r="1.5"/><circle cx="15" cy="11" r="1.5"/><path d="M10 17h4M9.4 21v-2M14.6 21v-2"/></symbol>
  <symbol id="i-spark" viewBox="0 0 24 24"><path d="M12 2l2.1 7.9L22 12l-7.9 2.1L12 22l-2.1-7.9L2 12l7.9-2.1L12 2z"/></symbol>
  <symbol id="i-back" viewBox="0 0 24 24"><path d="M15 4.5l-7.5 7.5L15 19.5"/></symbol>
  <symbol id="i-chevron" viewBox="0 0 24 24"><path d="M9 5l7 7-7 7"/></symbol>
  <symbol id="t-plains" viewBox="0 0 24 24"><path d="M2.5 19.5c3.2-4.6 6.3-4.6 9.5 0M12 19.5c3.2-5.2 6.3-5.2 9.5 0"/><path d="M8 11.5V4M8 6.2c-2.2 0-3.4-1.2-3.4-3.2 2.2 0 3.4 1.2 3.4 3.2zM8 6.2c2.2 0 3.4-1.2 3.4-3.2-2.2 0-3.4 1.2-3.4 3.2z"/></symbol>
  <symbol id="t-forest" viewBox="0 0 24 24"><path d="M12 2.5l5.4 7.4h-3l4.3 6.5H5.3l4.3-6.5h-3L12 2.5z"/><path d="M12 16.4V21.5"/></symbol>
  <symbol id="t-mountain" viewBox="0 0 24 24"><path d="M2.5 19.5L9 7.5l3.7 6.1 2.6-4 6.2 9.9H2.5z"/><path d="M7.4 12.5l1.6 2.4 2.4-2.4"/></symbol>
  <symbol id="t-city" viewBox="0 0 24 24"><path d="M3.5 21V8.5l3.2 2V6.2l3.2 2V3.5h4.2v4.7l3.2-2v4.3l3.2-2V21"/><path d="M3.5 21h17M9 21v-5.2h6V21"/></symbol>
  <symbol id="c-legion" viewBox="0 0 24 24"><path d="M12 1.8l8.2 3v7.1c0 5-3.4 8.8-8.2 10.3-4.8-1.5-8.2-5.3-8.2-10.3V4.8l8.2-3z"/><path d="M8.5 9h7v5.4h-7z"/><path d="M6.8 19.2v-3.4h10.4v3.4"/></symbol>
  <symbol id="c-leaf" viewBox="0 0 24 24"><path d="M20.5 3.5C10.5 3.5 5 8.5 5 15.6c0 2.3 1.2 4.9 1.2 4.9s1.8-7.4 12.3-11.5c-3.2 4.2-6.5 6.4-9.7 8.4"/></symbol>
  <symbol id="c-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="4.2"/><path d="M12 1.5v3M12 19.5v3M1.5 12h3M19.5 12h3M4.6 4.6l2.1 2.1M17.3 17.3l2.1 2.1M19.4 4.6l-2.1 2.1M6.7 17.3l-2.1 2.1"/></symbol>
  <symbol id="c-eye" viewBox="0 0 24 24"><path d="M1.8 12S6 5.8 12 5.8 22.2 12 22.2 12 18 18.2 12 18.2 1.8 12 1.8 12z"/><circle cx="12" cy="12" r="3.2"/><circle cx="12" cy="12" r=".8" fill="currentColor" stroke="none"/></symbol>
  <symbol id="c-snow" viewBox="0 0 24 24"><path d="M12 2v20M3.3 7l17.4 10M3.3 17L20.7 7M9.2 4.5L12 7l2.8-2.5M9.2 19.5L12 17l2.8 2.5M4.4 10.2l3.6-.9-.9-3.6M19.6 13.8l-3.6.9.9 3.6M4.4 13.8l3.6.9-.9 3.6M19.6 10.2l-3.6-.9.9-3.6"/></symbol>
  <symbol id="c-fang" viewBox="0 0 24 24"><path d="M4.5 2.8c2.4 6.2 3.4 10.4 2 18 3.4-2.4 4.7-4.9 5.5-9 1 4.1 2.3 6.6 5.7 9-1.4-7.6-.4-11.8 2-18-5.4 2.4-9.8 2.4-15.2 0z"/></symbol>
  <symbol id="c-wave" viewBox="0 0 24 24"><path d="M2 8.5c2.5-2.5 4.5-2.5 7 0s4.5 2.5 7 0 4.5-2.5 6 0M2 13c2.5-2.5 4.5-2.5 7 0s4.5 2.5 7 0 4.5-2.5 6 0M2 17.5c2.5-2.5 4.5-2.5 7 0s4.5 2.5 7 0 4.5-2.5 6 0"/></symbol>
  <symbol id="c-bolt" viewBox="0 0 24 24"><path d="M13.5 1.8L3.8 13.5h6.1L8.5 22.2 19 10.2h-6.2l.7-8.4z"/></symbol>
  <symbol id="c-flame" viewBox="0 0 24 24"><path d="M12 2.2c.9 4.8 6 6.3 6 12.2a6 6 0 11-12 0c0-3 1.8-5.2 3.2-7.2.1 3 1 4.2 2.8 4.2-.9-4.1 0-7.1 0-9.2z"/></symbol>
  <symbol id="c-mist" viewBox="0 0 24 24"><circle cx="12" cy="9" r="4"/><path d="M3 16.5c3-2.4 5.4-2.4 8.4 0s5.4 2.4 8.4 0M4.5 20c2.6-2 4.7-2 7.3 0s4.7 2 7.3 0"/></symbol>
  <symbol id="c-scale" viewBox="0 0 24 24"><path d="M12 2.2a6.3 6.3 0 016.3 6.3v8.8a6.3 6.3 0 01-12.6 0V8.5A6.3 6.3 0 0112 2.2z"/><path d="M5.7 10.5h12.6M5.7 14.2h12.6M7.4 7.6h9.2"/></symbol>
  <symbol id="c-skullcrest" viewBox="0 0 24 24"><path d="M12 2.3a7.8 7.8 0 00-4.9 13.9v3.1h9.8v-3.1A7.8 7.8 0 0012 2.3z"/><circle cx="9.2" cy="10.7" r="1.5"/><circle cx="14.8" cy="10.7" r="1.5"/><path d="M10 16h4M9.6 19.3v2.2M14.4 19.3v2.2"/></symbol>
</svg>

<div id="app">

  <!-- ═══════════════ MENU ═══════════════ -->
  <section id="screen-menu" class="screen active">
    <div class="menu-bg" aria-hidden="true"></div>
    <div class="menu-veil" aria-hidden="true"></div>
    <div class="menu-embers" aria-hidden="true"></div>
    <div class="menu-grid">
      <div class="menu-copy">
        <div class="crest-mark">
          <svg class="ico"><use href="#i-crown"/></svg>
        </div>
        <p class="eyebrow">回合制戰略傳奇</p>
        <h1 class="wordmark">帝國</h1>
        <p class="wordmark-cn">征 途 無 疆</p>
        <p class="tagline">集結軍隊,締結同盟。<br><em>征服世界。</em></p>
        <div class="menu-actions">
          <button id="btn-new" class="btn btn-primary btn-lg">
            <svg class="ico"><use href="#i-sword"/></svg><span>新的征程<small>開啟新王朝</small></span>
          </button>
          <button id="btn-continue" class="btn btn-ghost btn-lg hidden">
            <svg class="ico"><use href="#i-crown"/></svg><span>繼續王朝<small>重返王座</small></span>
          </button>
          <button id="btn-help" class="btn btn-quiet">遊戲指南</button>
        </div>
        <div class="menu-facts">
          <span><b>2</b> 世界地圖</span><i></i><span><b>6</b> 勢力</span><i></i><span><b>3</b> 每回合行動</span>
        </div>
      </div>
      <div class="menu-portrait">
        <div class="portrait-frame">
          <div class="portrait-img" style="background-image:url('assets/images/emperor.png')"></div>
          <div class="portrait-vignette"></div>
          <div class="portrait-plaque">
            <span class="plaque-kicker">王 座 靜 候</span>
            <span class="plaque-name">登 上 王 座</span>
          </div>
          <i class="corner tl"></i><i class="corner tr"></i><i class="corner bl"></i><i class="corner br"></i>
        </div>
      </div>
    </div>
    <footer class="menu-foot">
      <span class="foot-line"></span>
      <span>「權力不會自己走上王座」</span>
      <span class="foot-line"></span>
    </footer>
  </section>

  <!-- ═══════════════ SETUP ═══════════════ -->
  <section id="screen-setup" class="screen">
    <div class="setup-bg" aria-hidden="true"></div>
    <header class="setup-head">
      <button id="btn-setup-back" class="btn btn-icon" aria-label="返回"><svg class="ico"><use href="#i-back"/></svg></button>
      <div class="setup-title">
        <p class="eyebrow">開創你的帝國</p>
        <h2>書寫你的王朝</h2>
      </div>
      <div class="steps">
        <span class="step active"><b>I</b>世界</span><span class="step-line"></span>
        <span class="step active"><b>II</b>勢力</span><span class="step-line"></span>
        <span class="step active"><b>III</b>稱號</span>
      </div>
    </header>

    <div class="setup-body">
      <div class="setup-col setup-worlds">
        <div class="section-label"><span>01</span> 選擇世界</div>
        <div id="map-options" class="map-options"></div>
      </div>

      <div class="setup-col setup-factions">
        <div class="section-label"><span>02</span> 選擇勢力</div>
        <div id="faction-options" class="faction-options"></div>
      </div>

      <aside class="setup-col setup-identity">
        <div class="section-label"><span>03</span> 你的傳奇</div>
        <div class="identity-card">
          <div class="identity-portrait">
            <div class="identity-img"></div>
            <div class="identity-badge" id="identity-crest"><svg class="ico"><use href="#c-legion"/></svg></div>
          </div>
          <div class="identity-fields">
            <label>君主之名 <input id="in-leader" maxlength="20" placeholder="你的名字" autocomplete="off" /></label>
            <label>國號 <input id="in-nation" maxlength="24" placeholder="你的帝國" autocomplete="off" /></label>
            <label>格言 <input id="in-slogan" maxlength="40" placeholder="榮耀就在前方!" autocomplete="off" /></label>
          </div>
        </div>
        <div id="setup-summary" class="setup-summary"></div>
        <button id="btn-begin" class="btn btn-primary btn-block btn-lg" disabled>
          <svg class="ico"><use href="#i-crown"/></svg><span>登基稱帝</span>
        </button>
        <p class="setup-hint">每回合有 3 個行動。征服所有疆域即可統治世界。</p>
      </aside>
    </div>
  </section>

  <!-- ═══════════════ GAME ═══════════════ -->
  <section id="screen-game" class="screen">
    <header class="topbar">
      <button id="btn-game-menu" class="brand" title="返回主選單">
        <svg class="ico crown"><use href="#i-crown"/></svg>
        <span class="brand-word">帝國</span>
      </button>
      <div class="resources" id="resource-bar"></div>
      <div class="turn-cluster">
        <div class="turn-info">
          <span class="turn-label">回合 <b id="turn-num">1</b></span>
          <span class="action-pips" id="action-pips"></span>
        </div>
        <button id="btn-end-turn" class="btn btn-primary btn-end">
          <span>結束回合</span><svg class="ico"><use href="#i-chevron"/></svg>
        </button>
      </div>
    </header>

    <div class="game-grid">
      <aside class="side-left">
        <div class="sovereign-card" id="sovereign-card"></div>
        <div class="panel stats-panel" id="stats-panel"></div>
        <div class="panel objective-panel" id="objective-panel"></div>
        <div class="panel relations-panel">
          <div class="panel-head"><h3>列強</h3><button class="mini-link" data-open="diplomacy">外交</button></div>
          <div id="relations-list" class="relations-list"></div>
        </div>
      </aside>

      <main class="map-panel">
        <div class="map-head">
          <div class="map-title">
            <p class="eyebrow">戰爭地圖</p>
            <h2 id="map-name">大陸王座</h2>
          </div>
          <div class="map-tools">
            <div class="legend" id="map-legend"></div>
            <button class="btn btn-icon" data-open="chronicle" title="編年史"><svg class="ico"><use href="#i-scroll"/></svg></button>
            <button class="btn btn-icon" id="btn-save" title="存檔"><svg class="ico"><use href="#i-save"/></svg></button>
            <button class="btn btn-icon" data-open="help" title="指南"><svg class="ico"><use href="#i-help"/></svg></button>
          </div>
        </div>
        <div class="map-stage" id="map-stage">
          <div class="map-parchment" aria-hidden="true"></div>
          <div class="map-compass" aria-hidden="true">
            <svg viewBox="0 0 100 100"><circle cx="50" cy="50" r="34"/><path d="M50 8l6 34-6 8-6-8 6-34z"/><path d="M50 92l-6-34 6-8 6 8-6 34z"/><path d="M8 50l34-6 8 6-8 6-34-6z" opacity=".55"/><path d="M92 50l-34 6-8-6 8-6 34 6z" opacity=".55"/></svg>
            <span>N</span>
          </div>
          <svg id="map-svg" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="世界地圖"></svg>
          <div class="map-hint" id="map-hint">點選疆域以查看詳情</div>
          <div class="map-tooltip" id="map-tooltip"></div>
        </div>
        <div class="map-foot">
          <div class="turn-status" id="turn-status"></div>
          <button class="chronicle-peek" data-open="chronicle">
            <svg class="ico"><use href="#i-scroll"/></svg>
            <span id="latest-log">你的故事從這裡開始……</span>
          </button>
        </div>
      </main>

      <aside class="side-right" id="council-panel"></aside>
    </div>
  </section>

  <div id="modal-root" class="modal-root" aria-live="polite"></div>
  <div id="toast-root" class="toast-root"></div>
</div>

<script type="module" src="js/main.js"></script>
</body>
</html>