# Bugs
-- Tanks seem to get stuck on some corners
# TODOs
-- change @require to @ensure
-- AI: Don't shoot if it'll kill you or your friends
- AI: Lead shots on moving targets
- Config-driven unit-types (name, stats, properties; pointers to behavior scripts, assets)
-- DSL for AI scripts
-- Countdown to start
-- User system (so I know whose scripts are whose)
- Game scoring
-- Move game objects into namespace `tanks`
-- Move portal into namespace (ideas: `portal`, canvas tools... `easel`, or `ezl`)
- Support touch events (for iPad?)
- Migrate A* code into PathMap
-# Notes
+# Code Notes
- Replace *2 and /2 with shifts at compile-time
- Clipping will suck (masking is easy -- overflow:hidden)
- Classes should have generalize()-ed version of instance methods on them.
+
+# Other Notes
+- GA for littlestbattletanks.com: UA-20115336-1
+++ /dev/null
-<!DOCTYPE html>
-<html>
-<head>
-<title>The Littlest Battletank</title>
-<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
-<link rel="stylesheet" href="css/lttl.css" type="text/css" media="screen">
-</head>
-<body class="lttl tanks">
-
-
-<div id="overlay"></div>
-
-<div id="welcome" class="bigblue">
- <div class="box">
- <h1>The Littlest Battletank</h1>
-
- <h2>How To Play</h2>
-
- <ul id="notes">
- <li>Move your tank with <code>wasd</code> or the arrow keys.</li>
- <li>Use the mouse to aim; click to shoot (or press <code>spacebar</code>).</li>
- <li>Press <code>enter</code> to pause.</li>
- </ul>
-
- <h2 class="start">Click anywhere to start!</h2>
- </div>
-</div>
-
-<div id="ai" style="display:none" class="bigblue">
- <div class="box">
- <h2>Add Tank AI</h2>
- <textarea id="customtank"></textarea>
- <div class="ready pinkbutton rounded">Ready</div>
- </div>
-</div>
-
-<div id="viewport"></div>
-
-<div id="debug" style="display:none"><div class="inner box">
-
- <div id="config">
- <h3>config</h3>
- <!--<div><label for="bullets">bullets</label> <input id="bullets" name="bullets" value="10" type="text"></div>-->
- <div><label for="pathmap">overlay pathmap</label> <input id="pathmap" name="pathmap" value="1" type="checkbox"></div>
- <div><label for="aipaths">overlay ai paths</label> <input id="aipaths" name="aipaths" value="1" type="checkbox"></div>
- <div><label for="trajectories">trace trajectories</label> <input id="trajectories" name="trajectories" value="1" type="checkbox"></div>
- <div><label for="gridCoords">show coords on hover</label> <input id="gridCoords" name="gridCoords" value="1" type="checkbox"></div>
- </div>
-
- <ul id="info">
- <li id="state"></li>
- <li><div class="fps-sparkline"></div></li>
- <li><label for="info_fps" >fps</label> <input id="info_fps" name="fps" value="" type="text"></li>
- <li><label for="info_frame" >frame</label> <input id="info_frame" name="frame" value="" type="text"></li>
- <li><div class="sep"></div></li>
- <li><label for="info_active" >active</label> <input id="info_active" name="active" value="" type="text"></li>
- <li><label for="info_units" >units</label> <input id="info_units" name="units" value="" type="text"></li>
- <li><label for="info_bullets">bullets</label> <input id="info_bullets" name="bullets" value="" type="text"></li>
- </ul>
-
- <div class="clearer"></div>
-</div></div>
-
-<div id="scripts">
-<?php
- $PYTHONPATH = "PYTHONPATH='/Users/dsc/.python/lib/python:/usr/local/lib/python2.7/site-packages:/usr/local/lib/python2.6/site-packages'";
-
- error_reporting(E_ALL);
- echo "<!--\n";
- echo shell_exec("$PYTHONPATH commonjs src/Y src/ezl src/tanks 2>&1");
- echo "\n-->\n";
-
- include "tags.html";
-?>
-</div>
-
-</body>
-</html>
\ No newline at end of file
var ai = this.ai;
// Check to see if we should obey our last decision, and not recalc
- if ( this.forceCurrentMove && this.forceCurrentMove() && this.currentMoveLimit > NOW ) {
+ if (this.forceCurrentMove && this.forceCurrentMove() && this.currentMoveLimit > NOW) {
this.continueMove();
return this;
} else
// Try to shoot down nearby bullets
- if ( ai.shootIncoming.ready && this.ableToShoot() ) {
+ if (ai.shootIncoming.ready && this.ableToShoot()) {
var bs = this.willCollide( this.findNearLike(25, isBullet) );
// console.log('['+TICKS+':'+this.id, this, '] Shoot down bullets?', bs.size() && bs);
if ( bs.size() ) {
--- /dev/null
+../build
\ No newline at end of file
-<!DOCTYPE html>
-<html>
-<head>
-<title>The Littlest Battletank</title>
-<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
-<link rel="stylesheet" href="css/lttl.css" type="text/css" media="screen">
-</head>
-<body class="lttl tanks">
-
-
-<div id="overlay"></div>
-
-<div id="welcome" class="bigblue">
- <div class="box">
- <h1>The Littlest Battletank</h1>
-
- <h2>How To Play</h2>
-
- <ul id="notes">
- <li>Move your tank with <code>wasd</code> or the arrow keys.</li>
- <li>Use the mouse to aim; click to shoot (or press <code>spacebar</code>).</li>
- <li>Press <code>enter</code> to pause.</li>
- </ul>
-
- <h2 class="start">Click anywhere to start!</h2>
- </div>
-</div>
-
<div id="ai" style="display:none" class="bigblue">
<div class="box">
<h2>Add Tank AI</h2>
</div>
</div>
-<div id="viewport"></div>
-
<div id="debug" style="display:none"><div class="inner box">
<div id="config">
<div class="clearer"></div>
</div></div>
-
-<div id="scripts">
-<!--# include file="tags.html" -->
-</div>
-
-</body>
-</html>
\ No newline at end of file
--- /dev/null
+<script src="build/require.js" type="text/javascript"></script>
+<script src="build/future.js" type="text/javascript"></script>
+<script src="build/functional/to-function.js" type="text/javascript"></script>
+<script src="build/Y/type.js" type="text/javascript"></script>
+<script src="build/Y/core.js" type="text/javascript"></script>
+<script src="build/Y/delegate.js" type="text/javascript"></script>
+<script src="build/Y/types/function.js" type="text/javascript"></script>
+<script src="build/Y/op.js" type="text/javascript"></script>
+<script src="build/Y/utils.js" type="text/javascript"></script>
+<script src="build/Y/class.js" type="text/javascript"></script>
+<script src="build/Y/y.js" type="text/javascript"></script>
+<script src="build/Y/types/collection.js" type="text/javascript"></script>
+<script src="build/Y/types/array.js" type="text/javascript"></script>
+<script src="build/Y/types/object.js" type="text/javascript"></script>
+<script src="build/Y/types/string.js" type="text/javascript"></script>
+<script src="build/Y/types/number.js" type="text/javascript"></script>
+<script src="build/Y.js" type="text/javascript"></script>
+<script src="build/jquery.js" type="text/javascript"></script>
+<script src="build/jquery.sparkline.min.js" type="text/javascript"></script>
+<script src="build/Y/modules/y.event.js" type="text/javascript"></script>
+<script src="build/ezl/util.js" type="text/javascript"></script>
+<script src="build/ezl/loop/fps.js" type="text/javascript"></script>
+<script src="build/ezl/math/vec.js" type="text/javascript"></script>
+<script src="build/ezl/loop/cooldown.js" type="text/javascript"></script>
+<script src="build/ezl/loop/eventloop.js" type="text/javascript"></script>
+<script src="build/ezl/loc/loc.js" type="text/javascript"></script>
+<script src="build/ezl/math/rect.js" type="text/javascript"></script>
+<script src="build/ezl/math/line.js" type="text/javascript"></script>
+<script src="build/ezl/loop.js" type="text/javascript"></script>
+<script src="build/ezl/math.js" type="text/javascript"></script>
+<script src="build/ezl/loc/boundingbox.js" type="text/javascript"></script>
+<script src="build/ezl/loc/square.js" type="text/javascript"></script>
+<script src="build/ezl/loc.js" type="text/javascript"></script>
+<script src="build/ezl/layer.js" type="text/javascript"></script>
+<script src="build/ezl/shape/shape.js" type="text/javascript"></script>
+<script src="build/ezl/shape/line.js" type="text/javascript"></script>
+<script src="build/ezl/shape/polygon.js" type="text/javascript"></script>
+<script src="build/ezl/shape/circle.js" type="text/javascript"></script>
+<script src="build/ezl/shape/rect.js" type="text/javascript"></script>
+<script src="build/ezl/shape.js" type="text/javascript"></script>
+<script src="build/ezl.js" type="text/javascript"></script>
+<script src="build/jquery.hotkeys.min.js" type="text/javascript"></script>
+<script src="build/tanks/globals.js" type="text/javascript"></script>
+<script src="build/evt.js" type="text/javascript"></script>
+<script src="build/ezl/util/binaryheap.js" type="text/javascript"></script>
+<script src="build/ezl/util/astar.js" type="text/javascript"></script>
+<script src="build/tanks/config.js" type="text/javascript"></script>
+<script src="build/Y/modules/y.kv.js" type="text/javascript"></script>
+<script src="build/ezl/util/tree/quadtree.js" type="text/javascript"></script>
+<script src="build/tanks/ui/config.js" type="text/javascript"></script>
+<script src="build/tanks/thing/thing.js" type="text/javascript"></script>
+<script src="build/tanks/map/trajectory.js" type="text/javascript"></script>
+<script src="build/tanks/map/wall.js" type="text/javascript"></script>
+<script src="build/tanks/ui/grid.js" type="text/javascript"></script>
+<script src="build/tanks/thing/bullet.js" type="text/javascript"></script>
+<script src="build/tanks/thing/tank.js" type="text/javascript"></script>
+<script src="build/tanks/map/pathmap.js" type="text/javascript"></script>
+<script src="build/tanks/thing/player.js" type="text/javascript"></script>
+<script src="build/tanks/map/level.js" type="text/javascript"></script>
+<script src="build/tanks/thing.js" type="text/javascript"></script>
+<script src="build/tanks/map.js" type="text/javascript"></script>
+<script src="build/tanks/game.js" type="text/javascript"></script>
+<script src="build/tanks/ui/main.js" type="text/javascript"></script>
+<script src="build/tanks/ui.js" type="text/javascript"></script>
+<script src="build/tanks.js" type="text/javascript"></script>
--- /dev/null
+
+</body>
+</html>
--- /dev/null
+<div id="ga">
+<script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-20115336-1']);
+ _gaq.push(['_setDomainName', 'none']);
+ _gaq.push(['_setAllowLinker', true]);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+</script>
+</div>
\ No newline at end of file
--- /dev/null
+<div id="viewport"></div>
--- /dev/null
+<!DOCTYPE html>
+<html>
+<head>
+<title>The Littlest Battletank</title>
+<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+<link rel="stylesheet" href="css/lttl.css" type="text/css" media="screen">
+</head>
+<body class="lttl tanks">
+
+
+<div id="overlay"></div>
--- /dev/null
+<!--# include file="header.html" -->
+<!--# include file="welcome.html" -->
+<!--# include file="game.html" -->
+<!--# include file="debug.html" -->
+<!--# include file="scripts.html" -->
+<!--# include file="footer.html" -->
--- /dev/null
+<?php
+ include 'header.html';
+ include 'welcome.html';
+ include 'game.html';
+ include 'debug.html';
+?>
+
+<div id="scripts">
+<?php
+ $PYTHONPATH = "PYTHONPATH='/Users/dsc/.python/lib/python:/usr/local/lib/python2.7/site-packages:/usr/local/lib/python2.6/site-packages'";
+
+ error_reporting(E_ALL);
+ echo "<!--\n";
+ echo shell_exec("cd .. && $PYTHONPATH commonjs src/{Y,ezl,tanks} 2>&1");
+ echo "\n-->\n";
+
+ include "deps.html";
+?>
+</div>
+
+<?php
+ include 'footer.html';
+?>
--- /dev/null
+<div id="scripts">
+<!--# include file="deps.html" -->
+<!--# include file="ga.html" -->
+</div>
--- /dev/null
+../test
\ No newline at end of file
--- /dev/null
+<div id="welcome" class="bigblue">
+ <div class="box">
+ <h1>The Littlest Battletank</h1>
+
+ <h2>How To Play</h2>
+
+ <ul id="notes">
+ <li>Move your tank with <code>wasd</code> or the arrow keys.</li>
+ <li>Use the mouse to aim; click to shoot (or press <code>spacebar</code>).</li>
+ <li>Press <code>enter</code> to pause.</li>
+ </ul>
+
+ <h2 class="start">Click anywhere to start!</h2>
+ </div>
+</div>