Source: src/mi_room.cc


Annotated List
Files
Globals
Hierarchy
Index
//class controls acces to rooms 

#include "mi_room.h"

void MI_ROOM::init()
{
	rooms.clear();
	last_room = NULL;
	zero_tile = '-';
	layer_w = layer_h = 0;
}

ROOM *MI_ROOM::get_room(string name)
{
	return rooms[name];
}

ROOM *MI_ROOM::create(string name)
{
	ROOM *p;
	if(get_room(name)) {
		error("Room [%s] already exists");
		return NULL;
	}
	p = new ROOM;
	p->init();
	p->zero(zero_tile);
	p->layer_size(layer_w,layer_h);
	rooms[name] = p;
	last_name = name;
	last_room = p;
	return p;
}

void MI_ROOM::destroy(string name)
{
	ROOM *p;
	p = get_room(name);
	if(p) {
		free(p);
//		rooms[name].erase(); FIXME
	}
}

void MI_ROOM::tile_bg(string name, deque &d)
{
	rooms[name]->tile_bg(d);
}

void MI_ROOM::tile_mid(string name, deque &d)
{
	rooms[name]->tile_mid(d);
}

void MI_ROOM::tile_fg(string name, deque &d)
{
	rooms[name]->tile_fg(d);
}




void MI_ROOM::layer_size(int w, int h)
{
	layer_w = w;
	layer_h = h;
	message("New layer size: [%i,%i]",w,h);
}

void MI_ROOM::layer_size(string name, int w, int h)
{
	rooms[name]->layer_size(w,h);
}

void MI_ROOM::zero(char c)
{
	zero_tile = c;
}


char MI_ROOM::zero()
{
	return zero_tile;
}

int MI_ROOM::select(string name)
{
	if(rooms[name]) {
		last_name = name;
		last_room = rooms[name];
		return 1;
	} else {
		error("Selecting not existing room [%s]", name.c_str());
		return 0;
	}
}

int MI_ROOM::tile_cw()
{
	if(last_room) {
		return last_room->layer_w;
	}
	return 0;
}

int MI_ROOM::tile_ch()
{
	if(last_room) {
		return last_room->layer_h;
	}
	return 0;
}

int MI_ROOM::tile_w()
{
	if(last_room) {
		return last_room->tile_w;
	}
	return 0;
}

int MI_ROOM::tile_h()
{
	if(last_room) {
		return last_room->tile_h;
	}
	return 0;
}

int MI_ROOM::tile(int l, int p)
{
	if(last_room) {
		return last_room->layer[l][p];
	} else {
		error("No room selected - use change_room");
		return 0;
	}
}


Generated by: georgik on armada on Sat Jul 24 07:07:15 2004, using kdoc 2.0a54.