Fixes applied and verified (Hermies Qwen, RC-0D193E): - Rubber band no longer tracks the bird after launch (bug #14, renderer.js) - Launch direction fixed: toWorld divides by camera zoom (bug #15, main.js) - Balance retune: stone hp 3400->1400, dmgFactor 0.35->0.8, plus an enemy-hit damage floor so soft lobs still kill (core.js) - New test/balance.test.mjs: RED on pre-fix constants, GREEN after Suite: 27/27 headless + 10/10 real-browser (real mouse events, real canvas). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
86 lines
3.1 KiB
HTML
86 lines
3.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
|
<title>Isle Slingers</title>
|
|
<link rel="stylesheet" href="css/style.css">
|
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><circle cx='50' cy='50' r='42' fill='%23e2452e'/><circle cx='62' cy='40' r='10' fill='white'/><circle cx='65' cy='42' r='4' fill='black'/><path d='M80 52 L98 58 L79 64 Z' fill='%23f5a623'/></svg>">
|
|
</head>
|
|
<body>
|
|
<div id="stage">
|
|
<canvas id="game"></canvas>
|
|
|
|
<div id="hud">
|
|
<div class="hud-left">
|
|
<span id="hud-level">Level 1</span>
|
|
<span id="hud-birds"></span>
|
|
</div>
|
|
<div class="hud-right">
|
|
<span id="hud-score">0</span>
|
|
<button id="btn-pause" class="hud-btn" title="Pause (P)">II</button>
|
|
<button id="btn-mute" class="hud-btn" title="Mute">🔊</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="screen-start" class="screen">
|
|
<div class="panel">
|
|
<h1 class="title">ISLE<br>SLINGERS</h1>
|
|
<p class="tagline">Slingshot showdown on the tropical isle. Pick a slinger, break a fort, pop the mogs.</p>
|
|
<button id="btn-play" class="btn big">PLAY</button>
|
|
<p class="hint">Drag from the sling to aim · release to launch · tap mid-flight to use each slinger's move</p>
|
|
<p class="credit">Original characters & art · runs fully offline</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="screen-select" class="screen">
|
|
<div class="panel wide">
|
|
<h2>Choose a perch</h2>
|
|
<div id="level-grid"></div>
|
|
<button id="btn-back-start" class="btn">Back</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="screen-pause" class="screen dim">
|
|
<div class="panel">
|
|
<h2>Paused</h2>
|
|
<div class="btnrow">
|
|
<button id="btn-pause-resume" class="btn">Resume</button>
|
|
<button id="btn-pause-restart" class="btn">Restart</button>
|
|
<button id="btn-pause-menu" class="btn">Menu</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="screen-win" class="screen dim">
|
|
<div class="panel">
|
|
<h2>Perch cleared!</h2>
|
|
<div id="win-stars"></div>
|
|
<p id="win-score" class="score-line"></p>
|
|
<div class="btnrow">
|
|
<button id="btn-next" class="btn big">Next</button>
|
|
<button id="btn-win-retry" class="btn">Replay</button>
|
|
<button id="btn-win-menu" class="btn">Menu</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="screen-lose" class="screen dim">
|
|
<div class="panel">
|
|
<h2>The mogs hold on…</h2>
|
|
<p class="tagline">Out of slingers. Take aim again.</p>
|
|
<div class="btnrow">
|
|
<button id="btn-lose-retry" class="btn big">Retry</button>
|
|
<button id="btn-lose-menu" class="btn">Menu</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="js/core.js"></script>
|
|
<script src="js/levels.js"></script>
|
|
<script src="js/audio.js"></script>
|
|
<script src="js/renderer.js"></script>
|
|
<script src="js/main.js"></script>
|
|
</body>
|
|
</html>
|