Files
counterstrikemanager/index.html
T
deepseek 4c7fe1db4c Counter-Strike esports manager: career mode + LIVE tactical top-down simulation
- 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)
2026-08-23 07:00:47 +00:00

112 lines
5.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>