diff options
Diffstat (limited to 'html/tower/docs/module-mechanics.html')
-rw-r--r-- | html/tower/docs/module-mechanics.html | 2286 |
1 files changed, 2286 insertions, 0 deletions
diff --git a/html/tower/docs/module-mechanics.html b/html/tower/docs/module-mechanics.html new file mode 100644 index 0000000..acfb5c7 --- /dev/null +++ b/html/tower/docs/module-mechanics.html @@ -0,0 +1,2286 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Module: mechanics</title> + + <script src="scripts/prettify/prettify.js"> </script> + <script src="scripts/prettify/lang-css.js"> </script> + <!--[if lt IE 9]> + <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> + <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> +</head> + +<body> + +<div id="main"> + + <h1 class="page-title">Module: mechanics</h1> + + + + + + +<section> + +<header> + + + + + +</header> + +<article> + <div class="container-overview"> + + + <div class="description">Combat Mechanics Module + +This module handles all combat-related game mechanics including: +1. Enemy movement and behavior +2. Tower attacks and targeting +3. Projectile and particle systems +4. Status effects and special abilities</div> + + + + + + + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line1">line 1</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + </div> + + + + + + + + + + + + + + + + + <h3 class="subsection-title">Methods</h3> + + + + + + + + <h4 class="name" id="~createDeathParticles"><span class="type-signature">(inner) </span>createDeathParticles<span class="signature">(target, cellSize)</span><span class="type-signature"> → {Array.<Object>}</span></h4> + + + + + + +<div class="description"> + Creates death effect particles for defeated entities +Implements visual feedback system +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>target</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">The defeated entity</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Size of grid cell for scaling</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line151">line 151</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + Array of particle objects +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Array.<Object></span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="~findTowersInRange"><span class="type-signature">(inner) </span>findTowersInRange<span class="signature">(enemy, towers)</span><span class="type-signature"> → {Array.<Object>}</span></h4> + + + + + + +<div class="description"> + Finds towers within enemy attack range +Implements targeting system for enemies +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>enemy</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Enemy doing the targeting</td> + </tr> + + + + <tr> + + <td class="name"><code>towers</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of potential tower targets</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line306">line 306</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + Array of towers in range +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Array.<Object></span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="~handleAOEEffect"><span class="type-signature">(inner) </span>handleAOEEffect<span class="signature">(target, tower, enemies, particles, cellSize)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles AOE (Area of Effect) damage and visual effects +Implements area damage system +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>target</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Primary target</td> + </tr> + + + + <tr> + + <td class="name"><code>tower</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Tower dealing AOE damage</td> + </tr> + + + + <tr> + + <td class="name"><code>enemies</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">All enemies for AOE calculation</td> + </tr> + + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Particle array for effects</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Grid cell size</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line401">line 401</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~handleEnemyAttack"><span class="type-signature">(inner) </span>handleEnemyAttack<span class="signature">(enemy, tower, particles, timestamp, cellSize)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles enemy attack execution and effects +Implements enemy combat mechanics +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>enemy</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Attacking enemy</td> + </tr> + + + + <tr> + + <td class="name"><code>tower</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Target tower</td> + </tr> + + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Particle array for effects</td> + </tr> + + + + <tr> + + <td class="name"><code>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game timestamp</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Grid cell size</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line324">line 324</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~handleSlowEffect"><span class="type-signature">(inner) </span>handleSlowEffect<span class="signature">(target, tower, timestamp, particles, cellSize)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles slow effect application and stacking +Implements status effect system +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>target</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Enemy to apply slow to</td> + </tr> + + + + <tr> + + <td class="name"><code>tower</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Tower applying the effect</td> + </tr> + + + + <tr> + + <td class="name"><code>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game timestamp</td> + </tr> + + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Particle array for effects</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Grid cell size</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line360">line 360</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~handleTowerAttack"><span class="type-signature">(inner) </span>handleTowerAttack<span class="signature">(tower, target, projectiles, particles, timestamp, cellSize)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles individual tower attack logic including special effects +Implements tower ability system +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>tower</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Attacking tower</td> + </tr> + + + + <tr> + + <td class="name"><code>target</code></td> + + + <td class="type"> + + +<span class="param-type">Object</span> + + + + </td> + + + + + + <td class="description last">Target enemy</td> + </tr> + + + + <tr> + + <td class="name"><code>projectiles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Projectile array</td> + </tr> + + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Particle array</td> + </tr> + + + + <tr> + + <td class="name"><code>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game timestamp</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Grid cell size</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line246">line 246</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~processEnemyAttacks"><span class="type-signature">(inner) </span>processEnemyAttacks<span class="signature">(enemies, towers, particles, timestamp, cellSize)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Processes enemy attack behaviors and targeting +Implements enemy combat AI +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>enemies</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of enemy objects</td> + </tr> + + + + <tr> + + <td class="name"><code>towers</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of tower objects</td> + </tr> + + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Particle effect array</td> + </tr> + + + + <tr> + + <td class="name"><code>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game timestamp</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Grid cell size</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line283">line 283</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~processTowerAttacks"><span class="type-signature">(inner) </span>processTowerAttacks<span class="signature">(towers, enemies, projectiles, particles, timestamp, cellSize)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Processes tower attacks and targeting +Implements combat mechanics and special abilities +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>towers</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of tower objects</td> + </tr> + + + + <tr> + + <td class="name"><code>enemies</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of enemy objects</td> + </tr> + + + + <tr> + + <td class="name"><code>projectiles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of projectile objects</td> + </tr> + + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of particle objects</td> + </tr> + + + + <tr> + + <td class="name"><code>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game timestamp</td> + </tr> + + + + <tr> + + <td class="name"><code>cellSize</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Size of grid cell for scaling</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line190">line 190</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~updateEnemies"><span class="type-signature">(inner) </span>updateEnemies<span class="signature">()</span><span class="type-signature"> → {void}</span></h4> + + + + + + +<div class="description"> + Updates all enemy states including movement, health, and status effects +Implements core game loop mechanics for enemy behavior + +Key features: +- Path following +- Health management +- Status effect processing +- Collision detection +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line25">line 25</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + +<h5>Returns:</h5> + + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">void</span> + + + </dd> +</dl> + + + + + + + + + + + + + + <h4 class="name" id="~updateParticles"><span class="type-signature">(inner) </span>updateParticles<span class="signature">(particles, timestamp, deltaTime)</span><span class="type-signature"> → {Array.<Object>}</span></h4> + + + + + + +<div class="description"> + Updates particle effects with time-based animation +Implements particle system lifecycle management +</div> + + + + + + + + + + <h5>Parameters:</h5> + + +<table class="params"> + <thead> + <tr> + + <th>Name</th> + + + <th>Type</th> + + + + + + <th class="last">Description</th> + </tr> + </thead> + + <tbody> + + + <tr> + + <td class="name"><code>particles</code></td> + + + <td class="type"> + + +<span class="param-type">Array.<Object></span> + + + + </td> + + + + + + <td class="description last">Array of particle objects</td> + </tr> + + + + <tr> + + <td class="name"><code>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game timestamp</td> + </tr> + + + + <tr> + + <td class="name"><code>deltaTime</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Time elapsed since last frame</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="mechanics.js.html">mechanics.js</a>, <a href="mechanics.js.html#line129">line 129</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + +<h5>Returns:</h5> + + +<div class="param-desc"> + Updated particles array +</div> + + + +<dl> + <dt> + Type + </dt> + <dd> + +<span class="param-type">Array.<Object></span> + + + </dd> +</dl> + + + + + + + + + + + + + +</article> + +</section> + + + + +</div> + +<nav> + <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-game.html">game</a></li><li><a href="module-gameState.html">gameState</a></li><li><a href="module-mechanics.html">mechanics</a></li><li><a href="module-path.html">path</a></li><li><a href="module-renderer.html">renderer</a></li><li><a href="module-uiHandlers.html">uiHandlers</a></li></ul> +</nav> + +<br class="clear"> + +<footer> + Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.3</a> on Mon Feb 17 2025 09:19:19 GMT-0500 (Eastern Standard Time) +</footer> + +<script> prettyPrint(); </script> +<script src="scripts/linenumber.js"> </script> +</body> +</html> \ No newline at end of file |