Esempio n. 1
0
static void tcod_plotChar(uchar inputChar,
			  short xLoc, short yLoc,
			  short foreRed, short foreGreen, short foreBlue,
			  short backRed, short backGreen, short backBlue) {
	
	TCOD_color_t fore;
	TCOD_color_t back;
	
	fore.r = (uint8) foreRed * 255 / 100;
	fore.g = (uint8) foreGreen * 255 / 100;
	fore.b = (uint8) foreBlue * 255 / 100;
	back.r = (uint8) backRed * 255 / 100;
	back.g = (uint8) backGreen * 255 / 100;
	back.b = (uint8) backBlue * 255 / 100;
	
	if (inputChar == STATUE_CHAR) {
		inputChar = 223;
	} else if (inputChar > 255) {
		switch (inputChar) {
#ifdef USE_UNICODE
			case FLOOR_CHAR: inputChar = 128 + 0; break;
			case CHASM_CHAR: inputChar = 128 + 1; break;
			case TRAP_CHAR: inputChar = 128 + 2; break;
			case FIRE_CHAR: inputChar = 128 + 3; break;
			case FOLIAGE_CHAR: inputChar = 128 + 4; break;
			case AMULET_CHAR: inputChar = 128 + 5; break;
			case SCROLL_CHAR: inputChar = 128 + 6; break;
			case RING_CHAR: inputChar = 128 + 7; break;
			case WEAPON_CHAR: inputChar = 128 + 8; break;
			case GEM_CHAR: inputChar = 128 + 9; break;
			case TOTEM_CHAR: inputChar = 128 + 10; break;
			case BAD_MAGIC_CHAR: inputChar = 128 + 12; break;
			case GOOD_MAGIC_CHAR: inputChar = 128 + 13; break;

			case DOWN_ARROW_CHAR: inputChar = 144 + 1; break;
			case LEFT_ARROW_CHAR: inputChar = 144 + 2; break;
			case RIGHT_ARROW_CHAR: inputChar = 144 + 3; break;
			case UP_TRIANGLE_CHAR: inputChar = 144 + 4; break;
			case DOWN_TRIANGLE_CHAR: inputChar = 144 + 5; break;
			case OMEGA_CHAR: inputChar = 144 + 6; break;
			case THETA_CHAR: inputChar = 144 + 7; break;
			case LAMDA_CHAR: inputChar = 144 + 8; break;
			case KOPPA_CHAR: inputChar = 144 + 9; break; // is this right?
			case CHARM_CHAR: inputChar = 144 + 9; break;
			case LOZENGE_CHAR: inputChar = 144 + 10; break;
			case CROSS_PRODUCT_CHAR: inputChar = 144 + 11; break;
#endif
			default: inputChar = '?'; break;
		}
	}
	TCOD_console_put_char_ex(NULL, xLoc, yLoc, (int) inputChar, fore, back);
}
Esempio n. 2
0
void vm_hw_lem1802_write(vm_t* vm, uint16_t pos)
{
	unsigned int i = 0, x = 0, y = 0, fx = 0, fy = 0;
	uint16_t val, fore, back, chr;
	TCOD_color_t foreclr, backclr;
	uint16_t location_font, location_screen;
	uint16_t char_width, char_height;
	TCOD_image_t char_image = NULL;
	uint16_t ax = 0, ay = 0;
	TCOD_color_t color_black = { 0, 0, 0 };
	TCOD_color_t color_white = { 255, 255, 255 };

	// Get the current memory-mapping positions.
	location_font = vm_hw_lem1802_mem_get_font(vm);
	location_screen = vm_hw_lem1802_mem_get_screen(vm);

	// Get the font character width / height.
	char_width = vm_hw_lem1802_mem_get_font_char_width();
	char_height = vm_hw_lem1802_mem_get_font_char_height();
	char_image = vm_hw_lem1802_mem_get_font_image();

	// Are we updating a general cell?
	if (location_screen != 0 && pos >= location_screen && pos <= location_screen + 0x17F)
	{
		// Read memory value.
		i = pos;
		val = vm->ram[i];

		// Get foreground, background and character components.
		fore = (val & 0xF000) >> 12;
		back = (val & 0x0F00) >> 8;
		chr = (val & 0x00FF);

		// Create TCOD colours.
		foreclr = vm_hw_lem1802_mem_get_palette_color(vm, fore);
		backclr = vm_hw_lem1802_mem_get_palette_color(vm, back);

		// Calculate X / Y.
		x = (i - location_screen) % HW_LEM1802_SCREEN_WIDTH;
		y = (i - location_screen) / HW_LEM1802_SCREEN_WIDTH;

		// Update TCOD.
		TCOD_console_put_char_ex(NULL, x + 1, y + 1, chr,
					 foreclr,
					 backclr
					);
	}
Esempio n. 3
0
void TCOD_console_put_char_ex_wrapper(TCOD_console_t con, int x, int y,
                                       int c, colornum_t fore, colornum_t back)
{
  TCOD_console_put_char_ex (con, x, y, c, int_to_color(fore),
                             int_to_color(back));
}
Esempio n. 4
0
void TCODConsole::putCharEx(int x, int y, int c, const TCODColor &fore, const TCODColor &back) {
	TCOD_color_t f={fore.r,fore.g,fore.b};
	TCOD_color_t b={back.r,back.g,back.b};
	TCOD_console_put_char_ex(data,x,y,c,f,b);
}