diff options
Diffstat (limited to 'html/tower/docs/module-game.html')
-rw-r--r-- | html/tower/docs/module-game.html | 1553 |
1 files changed, 1553 insertions, 0 deletions
diff --git a/html/tower/docs/module-game.html b/html/tower/docs/module-game.html new file mode 100644 index 0000000..a5bf480 --- /dev/null +++ b/html/tower/docs/module-game.html @@ -0,0 +1,1553 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>JSDoc: Module: game</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: game</h1> + + + + + + +<section> + +<header> + + + + + +</header> + +<article> + <div class="container-overview"> + + + <div class="description">Main game entry point +Initializes the game state and starts the game loop</div> + + + + + + + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line4">line 4</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + </div> + + + + + + + + + + + + + + + <h3 class="subsection-title">Members</h3> + + + +<h4 class="name" id="~canvas"><span class="type-signature">(inner, constant) </span>canvas<span class="type-signature"></span></h4> + + + + +<div class="description"> + Canvas elements for rendering the game +</div> + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line12">line 12</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + +<h4 class="name" id="~draggedTowerType"><span class="type-signature">(inner) </span>draggedTowerType<span class="type-signature"></span></h4> + + + + +<div class="description"> + Drag and drop state tracking +</div> + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line22">line 22</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + +<h4 class="name" id="~lastTimestamp"><span class="type-signature">(inner) </span>lastTimestamp<span class="type-signature"></span></h4> + + + + +<div class="description"> + Game timing variables +</div> + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line16">line 16</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + <h3 class="subsection-title">Methods</h3> + + + + + + + + <h4 class="name" id="~gameLoop"><span class="type-signature">(inner) </span>gameLoop<span class="signature">(timestamp)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Main game loop using requestAnimationFrame +This is the heart of the game, running approximately 60 times per second +</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>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current time in milliseconds, provided by requestAnimationFrame + +Key concepts: +- RequestAnimationFrame for smooth animation +- Delta time for consistent motion regardless of frame rate +- Game state management</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line36">line 36</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~handleCombatPhase"><span class="type-signature">(inner) </span>handleCombatPhase<span class="signature">(timestamp, deltaTime)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles all combat phase updates including enemy movement, attacks, and collisions +</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>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game time in milliseconds</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 + +Key concepts: +- Game state updates +- Entity management (enemies, towers, projectiles) +- Particle effects +- Combat mechanics</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line69">line 69</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~handleGameOver"><span class="type-signature">(inner) </span>handleGameOver<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles game over state and prompts for restart +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line440">line 440</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~handleLevelComplete"><span class="type-signature">(inner) </span>handleLevelComplete<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Handles the transition between levels +Shows completion message and sets up next level +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line325">line 325</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~initializeEventListeners"><span class="type-signature">(inner) </span>initializeEventListeners<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Sets up all event listeners for user interaction + +Key concepts: +- Event-driven programming +- HTML5 Drag and Drop API +- DOM manipulation +- Method decoration (towers.push) +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line242">line 242</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~populateTowerPalette"><span class="type-signature">(inner) </span>populateTowerPalette<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Dynamically populates the tower palette based on TowerTypes +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line405">line 405</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~renderGame"><span class="type-signature">(inner) </span>renderGame<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Renders all game elements to the canvas using a layered approach. +This function demonstrates several key game development patterns: + +1. Canvas State Management: + - Uses save()/restore() to isolate rendering contexts + - Resets transform matrix to prevent state leaks + - Maintains clean state between rendering phases + +2. Layered Rendering Pattern: + - Renders in specific order (background → entities → UI) + - Each layer builds on top of previous layers + - Separates rendering concerns for easier maintenance + +3. Separation of Concerns: + - Each render function handles one specific type of game element + - UI rendering is isolated from game element rendering + - Clear boundaries between different rendering responsibilities + +The rendering order is important: +1. Grid (background) +2. Particles (effects under entities) +3. Projectiles (dynamic game elements) +4. Towers (static game entities) +5. Enemies (moving game entities) +6. UI (top layer) +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line154">line 154</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~restartGame"><span class="type-signature">(inner) </span>restartGame<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Restarts the game from level 1 with fresh state +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line465">line 465</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~spawnEnemies"><span class="type-signature">(inner) </span>spawnEnemies<span class="signature">(timestamp)</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Spawns new enemies at regular intervals during combat +</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>timestamp</code></td> + + + <td class="type"> + + +<span class="param-type">number</span> + + + + </td> + + + + + + <td class="description last">Current game time in milliseconds + +Key concepts: +- Time-based game events +- Enemy creation and management +- Game balance through spawn timing</td> + </tr> + + + </tbody> +</table> + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line119">line 119</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~startCombat"><span class="type-signature">(inner) </span>startCombat<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Transitions the game from placement to combat phase. +Demonstrates state machine pattern commonly used in games. + +Side effects: +- Updates game phase +- Disables UI elements +- Updates visual feedback +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line216">line 216</a> + </li></ul></dd> + + + + + + + +</dl> + + + + + + + + + + + + + + + + + + + + + + + + + + + <h4 class="name" id="~startNextLevel"><span class="type-signature">(inner) </span>startNextLevel<span class="signature">()</span><span class="type-signature"></span></h4> + + + + + + +<div class="description"> + Sets up the next level +Increases difficulty and resets the game state while preserving currency +</div> + + + + + + + + + + + + + +<dl class="details"> + + + + + + + + + + + + + + + + + + + + + + + + + + + <dt class="tag-source">Source:</dt> + <dd class="tag-source"><ul class="dummy"><li> + <a href="game.js.html">game.js</a>, <a href="game.js.html#line365">line 365</a> + </li></ul></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 |