- Full manager sim: 28 orgs / 168 players, calendar, transfers, youth scouting, loans, training, board confidence - Simulation Mode with real-time micro-engine (live.js): A* pathfinding on map geometry, raycast ballistics (spread/falloff/armor/headshots), smokes/flashes/HE that matter, plant/defuse/retake AI, clutch detection - Canvas renderer (viz.js): follow/radar cameras, HP bars, CS2-style kill feed, callouts, synthesized Web-Audio SFX, speed x1-x3, AUTO-SPECTATE hands-free series playback - Round results flow from the firefight back into the career engine (score, economy, box score, MVP) - Playwright + Node VM test suites included (test/, plus external pwtest harness)
112 lines
5.9 KiB
HTML
112 lines
5.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>CS Manager 2026 — Counter-Strike Esports Manager</title>
|
||
<link rel="stylesheet" href="css/style.css?v=10">
|
||
</head>
|
||
<body>
|
||
|
||
<!-- ===== TITLE / NEW GAME ===== -->
|
||
<div id="titleScreen" class="screen-full">
|
||
<div class="title-hero">
|
||
<div class="title-logo">CS<span>MANAGER</span> 2026</div>
|
||
<div class="title-sub">Counter-Strike Esports Organization Manager</div>
|
||
<div class="title-menu">
|
||
<button class="btn btn-accent btn-big" onclick="Main.continueGame()" id="btnContinue" style="display:none">▶ Continue Career</button>
|
||
<button class="btn btn-primary btn-big" onclick="UI.showNewGame()">+ New Career</button>
|
||
<button class="btn btn-ghost" onclick="Main.importSave()">Load from file…</button>
|
||
</div>
|
||
<div class="title-foot">No story mode. No game over. Just you, your team, and the long road to legend.</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== NEW GAME WIZARD ===== -->
|
||
<div id="newGameScreen" class="screen-full" style="display:none">
|
||
<div class="wizard">
|
||
<h2 id="wizTitle">Choose Your Organization</h2>
|
||
<p class="muted" id="wizHint"></p>
|
||
<div id="wizStep1">
|
||
<div class="diff-row" id="diffRow">
|
||
<label><input type="radio" name="difficulty" value="easy"><b>Rookie</b><span>Generous budget · forgiving board</span></label>
|
||
<label><input type="radio" name="difficulty" value="normal" checked><b>Pro</b><span>Balanced finances & market</span></label>
|
||
<label><input type="radio" name="difficulty" value="hard"><b>Legend</b><span>Tight budget · aggressive rivals</span></label>
|
||
</div>
|
||
<h3>Take over an existing organization…</h3>
|
||
<div id="teamPickList" class="team-pick-list"></div>
|
||
<div class="or-sep">— or —</div>
|
||
<div class="custom-org">
|
||
<h3>Create a new organization</h3>
|
||
<div class="form-grid">
|
||
<label>Name <input id="cName" type="text" maxlength="24" placeholder="e.g. Northern Lights"></label>
|
||
<label>Tag <input id="cTag" type="text" maxlength="4" placeholder="NLHT"></label>
|
||
<label>Region
|
||
<select id="cRegion"><option>Europe</option><option>Americas</option><option>Asia</option><option>Oceania</option><option>CIS</option></select>
|
||
</label>
|
||
<label>Budget tier
|
||
<select id="cBudget"><option value="small">Small — $250K</option><option value="mid" selected>Mid — $600K</option><option value="big">Backed — $1.5M</option></select>
|
||
</label>
|
||
</div>
|
||
<button class="btn btn-accent btn-big" onclick="Game.startCustom()">Start with a fresh roster of prospects →</button>
|
||
<p class="muted small">You'll draft 5 hungry semi-pros and build everything yourself. Harder start, bigger legacy.</p>
|
||
</div>
|
||
</div>
|
||
<button class="btn btn-ghost" onclick="UI.backToTitle()">← Back</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== GAME SHELL ===== -->
|
||
<div id="gameShell" style="display:none">
|
||
<header id="topbar">
|
||
<div class="org-badge" id="orgBadge"></div>
|
||
<div class="tb-stats">
|
||
<div class="tb-stat" title="Club balance"><span class="ic">💰</span><b id="tbMoney"></b></div>
|
||
<div class="tb-stat" title="Weekly net income"><span class="ic" id="tbNetIc">📈</span><b id="tbNet"></b></div>
|
||
<div class="tb-stat" title="Fans"><span class="ic">👥</span><b id="tbFans"></b></div>
|
||
<div class="tb-stat" title="World ranking"><span class="ic">🏆</span><b id="tbRank"></b></div>
|
||
<div class="tb-stat" title="Board confidence"><span class="ic">🎩</span><b id="tbBoard"></b></div>
|
||
</div>
|
||
<div class="tb-date"><span id="tbDate"></span><span class="muted small" id="tbNextMatch"></span></div>
|
||
<div class="tb-actions">
|
||
<button class="btn btn-accent" onclick="UI.advance()" title="Advance one week">Advance ▶▶</button>
|
||
<button class="btn btn-ghost icon-btn" onclick="UI.saveModal()" title="Save / Load / Menu">☰</button>
|
||
</div>
|
||
</header>
|
||
|
||
<nav id="sidebar">
|
||
<button data-route="dashboard" class="nav-btn active" onclick="UI.go('dashboard')"><span class="ic">🏠</span>Dashboard</button>
|
||
<button data-route="squad" class="nav-btn" onclick="UI.go('squad')"><span class="ic">🎮</span>Squad</button>
|
||
<button data-route="training" class="nav-btn" onclick="UI.go('training')"><span class="ic">🎯</span>Training</button>
|
||
<button data-route="transfers" class="nav-btn" onclick="UI.go('transfers')"><span class="ic">🔁</span>Transfers</button>
|
||
<button data-route="tournaments" class="nav-btn" onclick="UI.go('tournaments')"><span class="ic">🏆</span>Tournaments</button>
|
||
<button data-route="matches" class="nav-btn" onclick="UI.go('matches')"><span class="ic">📊</span>Matches</button>
|
||
<button data-route="staff" class="nav-btn" onclick="UI.go('staff')"><span class="ic">🧠</span>Staff</button>
|
||
<button data-route="finance" class="nav-btn" onclick="UI.go('finance')"><span class="ic">💼</span>Finances</button>
|
||
<button data-route="rankings" class="nav-btn" onclick="UI.go('rankings')"><span class="ic">🌍</span>Rankings</button>
|
||
<button data-route="inbox" class="nav-btn" onclick="UI.go('inbox')"><span class="ic">✉️</span>Inbox <b id="inboxCount" class="pill" style="display:none"></b></button>
|
||
</nav>
|
||
|
||
<main id="view"></main>
|
||
</div>
|
||
|
||
<!-- ===== MATCH SIMULATION OVERLAY ===== -->
|
||
<div id="simOverlay" class="screen-full" style="display:none">
|
||
<div id="simWrap"></div>
|
||
</div>
|
||
|
||
<!-- modals & toasts -->
|
||
<div id="modalRoot"></div>
|
||
<div id="toastRoot"></div>
|
||
|
||
<script src="js/util.js?v=10"></script>
|
||
<script src="js/data.js?v=10"></script>
|
||
<script src="js/game.js?v=10"></script>
|
||
<script src="js/match.js?v=10"></script>
|
||
<script src="js/ui.js?v=10"></script>
|
||
<script src="js/live.js?v=10"></script>
|
||
<script src="js/viz.js?v=10"></script>
|
||
<script src="js/main.js?v=10"></script>
|
||
</body>
|
||
</html>
|