UNPKG

rot-js

Version:

A roguelike toolkit in JavaScript

46 lines (34 loc) 2.24 kB
<h2>Map generation</h2> <p>There are several map generator tools in <strong>rot.js</strong>; they all share the same usage pattern. You first need to instantialize the proper <code>ROT.Map.*</code> object and pass size (plus any additional relevant options) to its constructor; you can then call the main <code>create</code> method (repeatedly, if you want).</p> <p>This toolkit does not force usage of any particular memory structure to store the map data. Instead, the map creation process is <em>callback-based</em>: you supply a callback function as an argument to the <code>create</code> method; the map creator will call your function repeatedly and pass it the generated map information. Your callback should accept these arguments:</p> <ul> <li><code>x</code> &ndash; horizontal coordinate of a map's cell</li> <li><code>y</code> &ndash; vertical coordinate of a map's cell</li> <li><code>value</code> &ndash; integer value corresponding to the type of generated cell (different values might be supplied by different map generators)</li> </ul> <p>These examples use the simplest map generator, <code>Arena</code>: a fully dug room.</p> <div class="example"> var map = new ROT.Map.Arena(3, 3); var userCallback = function(x, y, value) { SHOW(ROT.Util.format("Value %s generated at [%s,%s]", value, x, y)); } map.create(userCallback); </div> <p>We can use <code><a href="#display">ROT.Display</a></code> to show the generated map (although it would make more sense to store the generated data as well). For debugging purposes, <code>ROT.Display</code> provides a built-in convenience method <code>DEBUG</code>, which works as a universal debugging callback.</p> <div class="example"> var map = new ROT.Map.Arena(10, 5); var display1 = new ROT.Display({width:10, height:5, fontSize:18}); SHOW(display1.getContainer()); map.create(function(x, y, wall) { display1.draw(x, y, wall ? "#" : "."); }); /* debugging with small font */ var display2 = new ROT.Display({width:10, height:5, fontSize:8}); SHOW(display2.getContainer()); map.create(display2.DEBUG); </div> <p>Read more about various types of generators: <a href="#map/maze">Maze</a>, <a href="#map/cellular">Cellular</a> and <a href="#map/dungeon">Dungeon</a>.</p>