mirror of
https://github.com/smogon/pokemon-showdown-client.git
synced 2026-03-21 17:50:29 -05:00
battle.js is probably PS's oldest code. It's received minor touch-ups: a refactor to prototypes early on, and then a refactor to TypeScript and classes recently, but otherwise it's had basically zero maintenance until now. That's probably why this refactor took me over a week. The biggest change is that the animation engine strewn around Pokemon, Side, and Battle has been broken out into a new class named BattleScene. Pokemon, Side, and Battle now only track state; all animation is now done in BattleScene and PokemonSprite. The fates of major classes: battle.ts:Pokemon - animation has been moved, mostly to PokemonSprite battle.ts:Side - animation has been moved, to PokemonSprite/BattleScene battle.ts:Battle - animation has been moved, mostly to BattleScene Major changes: - Many many variables have been renamed to be much clearer about what they mean. For instance, `animationDelay` is now `timeOffset`, and `activityDelay` is now `minWait`. A few bugs relating to me mixing up these two variables have also been fixed. jQuery variables named like `fooElem` have been renamed like `$foo`. - The unnecessarily complicated queue1/queue2/activeQueue system, previously used for telling the animation engine to stop after Pause was pressed, has been replaced with a simple `interruptionCount` counter. - The entire scene can now be reconstructed from scratch, which means that the `fastForward` system no longer needs to touch the DOM outside of the battle log. "Prev turn" and "Skip to turn" should be faster in 1000-turn battles now. - The animation engine now supports displaying weather and terrain simultaneously. - During a replay, Team Preview is shown for a second (instead of immediately skipping to the battle). - Various aspects of the animation engine should be much less brittle now. - Many bugs were fixed (and new ones were introduced).
130 lines
5.6 KiB
HTML
130 lines
5.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<title>Showdown!</title>
|
|
<link rel="shortcut icon" href="favicon.ico" id="dynamic-favicon" />
|
|
<link rel="stylesheet" href="style/client.css" />
|
|
<link rel="stylesheet" href="style/sim-types.css" />
|
|
<link rel="stylesheet" href="style/battle.css" />
|
|
<link rel="stylesheet" href="style/utilichart.css" />
|
|
<link rel="stylesheet" href="style/font-awesome.css" />
|
|
<meta id="viewport" name="viewport" content="width=640" />
|
|
<meta name="robots" content="noindex" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
|
<script>
|
|
function loadRemoteData(src) {
|
|
var elem = document.createElement('script');
|
|
elem.src = src.replace(/.*\/?data\//g, 'https://play.pokemonshowdown.com/data/');
|
|
document.head.appendChild(elem);
|
|
}
|
|
var Config = {testclient: true};
|
|
(function() {
|
|
if (location.search !== '') {
|
|
var m = /\?~~(([^:\/]*)(:[0-9]*)?)/.exec(location.search);
|
|
if (m) {
|
|
Config.server = {
|
|
id: m[1],
|
|
host: m[2],
|
|
port: (m[3] && parseInt(m[3].substr(1))) || 8000
|
|
};
|
|
} else {
|
|
alert('Unrecognised query string syntax: ' + location.search);
|
|
}
|
|
}
|
|
})();
|
|
</script>
|
|
<!--[if lte IE 8]><script>
|
|
Config.oldie = true;
|
|
</script><![endif]-->
|
|
</head>
|
|
<body>
|
|
<div id="header" class="header">
|
|
<img class="logo" src="pokemonshowdownbeta.png" alt="Pokémon Showdown! (beta)" width="146" height="44" /><div class="maintabbarbottom"></div>
|
|
</div>
|
|
<div class="ps-room scrollable" id="mainmenu"><div class="mainmenuwrapper">
|
|
<div class="leftmenu">
|
|
<div class="activitymenu">
|
|
<div class="pmbox">
|
|
<div class="pm-window news-embed">
|
|
<h3><button class="closebutton" tabindex="-1" aria-label="Close"><i class="fa fa-times-circle"></i></button><button class="minimizebutton" tabindex="-1" aria-label="Minimize"><i class="fa fa-minus-circle"></i></button>Latest News</h3>
|
|
<div class="pm-log" style="max-height:none">
|
|
<div class="newsentry"><h4>Test client</h4><p>Welcome to the test client! You can test client changes here!</p><p>—<strong>Zarel</strong> <small class="date">on Sep 25, 2015</small></p></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="mainmenu">
|
|
<div id="loading-message" class="mainmessage">Initializing... <noscript>FAILED<br /><br />Pokémon Showdown requires JavaScript.</noscript></div>
|
|
</div>
|
|
</div>
|
|
<div class="rightmenu">
|
|
</div>
|
|
<div class="mainmenufooter">
|
|
<small><a href="//pokemonshowdown.com/" target="_blank"><strong>Pokémon Showdown</strong></a> | <a href="http://smogon.com/" target="_blank"><strong>Smogon</strong></a><br><a href="//pokemonshowdown.com/dex/" target="_blank">Pokédex</a> | <a href="//pokemonshowdown.com/replay/" target="_blank">Replays</a> | <a href="//pokemonshowdown.com/rules" target="_blank">Rules</a></small> | <small><a href="//pokemonshowdown.com/forums/" target="_blank">Forum</a></small>
|
|
</div>
|
|
</div></div>
|
|
<script>
|
|
document.getElementById('loading-message').innerHTML += ' DONE<br />Loading libraries...';
|
|
</script>
|
|
<script src="js/lib/jquery-2.1.4.min.js"></script>
|
|
<script src="js/lib/jquery-cookie.js"></script>
|
|
<script src="js/lib/autoresize.jquery.min.js"></script>
|
|
<script src="js/lib/jquery.json-2.3.min.js"></script>
|
|
<script src="js/lib/soundmanager2-nodebug-jsmin.js"></script>
|
|
<script>
|
|
soundManager.setup({url: 'swf/'});
|
|
</script>
|
|
<script src="js/lib/html-css-sanitizer-minified.js"></script>
|
|
<script src="js/lib/lodash.core.js"></script>
|
|
<script src="js/lib/backbone.js"></script>
|
|
<script src="js/lib/d3.v3.min.js"></script>
|
|
|
|
<script>
|
|
document.getElementById('loading-message').innerHTML += ' DONE<br />Loading data...';
|
|
</script>
|
|
|
|
<script src="https://play.pokemonshowdown.com/config/config.js"></script>
|
|
<script src="js/battledata.js"></script>
|
|
<script src="data/pokedex-mini.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="data/pokedex-mini-bw.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="data/typechart.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="js/battle.js"></script>
|
|
<script src="js/lib/sockjs-0.3.4.min.js"></script>
|
|
<script src="js/lib/color-thief.min.js"></script>
|
|
|
|
<script>
|
|
document.getElementById('loading-message').innerHTML += ' DONE<br />Loading client...';
|
|
</script>
|
|
|
|
<script src="js/client.js"></script>
|
|
<script src="js/client-topbar.js"></script>
|
|
<script src="js/client-mainmenu.js"></script>
|
|
<script src="js/client-teambuilder.js"></script>
|
|
<script src="js/client-ladder.js"></script>
|
|
<script src="js/client-chat.js"></script>
|
|
<script src="js/client-chat-tournament.js"></script>
|
|
<script src="js/client-battle-tooltips.js"></script>
|
|
<script src="js/client-battle.js"></script>
|
|
<script src="js/client-rooms.js"></script>
|
|
<script src="js/storage.js"></script>
|
|
<script src="data/graphics.js"></script>
|
|
|
|
<script>
|
|
var app = new App();
|
|
</script>
|
|
|
|
<script src="data/pokedex.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="data/moves.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="data/items.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="data/abilities.js" onerror="loadRemoteData(this.src)"></script>
|
|
|
|
<script src="data/search-index.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="data/teambuilder-tables.js" onerror="loadRemoteData(this.src)"></script>
|
|
<script src="js/search.js"></script>
|
|
|
|
<script src="data/aliases.js" async="async" onerror="loadRemoteData(this.src)"></script>
|
|
|
|
</body>
|
|
</html>
|