NAME
Games::Roguelike::World - Roguelike World
SYNOPSIS
package myWorld;
use base 'Games::Roguelike::World';
$r = myWorld->new(w=>80,h=>50,dispw=>40,disph=>18); # creates a world with specified width/height & map display width/height
$r->area(new Games::Roguelike::Area(name=>'1')); # create a new area in this world called "1"
$r->area->genmaze2(); # make a cavelike maze
$char = Games::Roguelike::Mob->new($r->area, sym=>'@', pov=>8); # add a mobile object with symbol '@'
$r->setvp($char); # set viewpoint to be from $char's perspective
$r->drawmap(); # draw the active area map from the current perspective
while (!((my $c = $r->getch()) eq 'q')) {
$char->kbdmove($c);
$r->drawmap();
}
DESCRIPTION
General pupose object which pulls together field of view, item, mob handling and map drawing code.
* contains a hash of Games::Roguelike::Area's for each "level" or "region" in the game
* uses the Games::Roguelike::Console library to draw the current area
* assumes the user will be using overridden Games::Roguelike::Mob's as characters in the game
* assumes the user will be using overridden Games::Roguelike::Item's as items in the game
METHODS
- new(OPT1=>VAL1, OPT2=>VAL2...)
-
Options can also all be set/get as class accessors:
vp => undef # Games::Roguelike::Mob that is the 'viewpoint' dispx, dispy => (0,1) # x/y location, of the map dispw, disph => (60,24) # width & height of the map msgx, msgy => (0,0) # x/y location of the "scrolling message box" msgw, msgh => (60, 1) # width & height of the "scrolling message box" maxlog => 80, # maximum number of rows stored message log msgoldcolor => 'gray', # color of non-curent messages (if left blank, color is left alone) wsym => '#', # default wall symbol fsym => '.', # default floor symbol dsym => '+', # default door symbol debugmap => 0, # turn on map coordinate display debug => 0, # debug level (higher = more) noview => '#+', # list of symbols that block view nomove => '#', # list of symbols that block movement area => undef, # Games::Roguelike::Area that contains the currrent map
None of these features have to be used, and can be easily ignored or overridden.
- area([name or Games::Roguelike::Area])
-
No arguments: returns the current area
Specify a scalar name: returns an area with that name
Specify an Games::Roguelike::Area object: stores that object in the area hash, overwriting any with the same name, then makes it the active area
- dprint ( msg1 [,msg2...msgn] [,level] )
-
Debug print messages
For now, hard coded to far right side of screen, at col 82, past most terminal game widths
- getch ()
-
Read one character, blocks until a char is pressed.
- getstr ([echo=>1[,empty=>0]])
-
Calls getch repeatedly, optionally echoing characters to the active console. If "empty" is not set to true, it will not return empty strings.
- refresh ()
-
Refreshes the console display.
- nbgetch ()
-
Read one character, nonblocking, returns undef if none are available.
- findfeature (symbol)
-
searches "map feature list" for the given symbol, returns coordinates if found
- dispclear ()
-
Erases the "display world", and resets the "display line" (used by dispstr)
Useful for displaying an in-game menu, inventory, ability or skill list, etc.
- dispstr (str[, line])
-
Draws a tagged string at the "displine" position and increments the "displine".
Return value: 0 (offscreen, did not draw), 1 (ok), 2 (ok, but next call will be offscreen).
- drawmap ()
-
Draws the map, usually do this after each move
- prompt (msg[, match])
-
Same as showmsg, but also shows the cursor, and gets a character response, optionally waiting until it matches.
- cursor (bool)
-
Turn on/off display of cursor for next operation.
- pushmsg (msg, color)
-
Shows a message and pushes it into the log. Use of color argument is deprecated. Prefer to use "<$color>$msg" tagged strings.
- showmsg (msg, color[, push])
-
Shows a message at msgx, msgy coorinates and optionally logs it. Also displays up to (msgh-1) old messages.
- save ([file])
-
Saves the world (!), optionally specify filename which defaults to "rll.world".
- load ([file])
-
Loads a world, optionally specify filename, returns a reference to the new world.
Console is not initialized, and is, instead, copied from the current world.
SEE ALSO
Games::Roguelike::Area, Games::Roguelike::Mob, Games::Roguelike::Console
AUTHOR
Erik Aronesty earonesty@cpan.org
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html or the included LICENSE file.