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

library for pulling together field of view, character 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 map
* assumes the user will be using overridden Games::Roguelike::Mob's as characters 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
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 ,msg3 ...] )

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.

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])

Increments the "displine" and draws a tagged string at that line position.

Automatically scrolls if the next line is past the screen.

Returns nonzero on success, 2 for "on last line", and 3 for "scrolled".

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 erik@q32.com

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.