Ejemplo n.º 1
0
Archivo: gui.c Proyecto: pasoev/innfin
static void gui_render(struct engine *engine)
{
    /* Clear the gui console */
    TCOD_console_set_default_background(engine->gui->con, TCOD_black);
    TCOD_console_clear(engine->gui->con);

    /* Render health bar */
    engine->gui->render_bar(engine, 1, 1, BAR_W, "HP",
                            engine->player->life->hp,
                            engine->player->life->max_hp,
                            TCOD_white, TCOD_lighter_gray);

    /* Render XP bar */
    double next_level_xp = calc_next_level_xp(engine, engine->player);
    char xp_txt[20];
    sprintf(xp_txt, "level %d XP", engine->player->ai->xp_level);
    engine->gui->render_bar(engine, 1, 2, BAR_W, xp_txt, engine->player->ai->xp,
                            next_level_xp, TCOD_white, TCOD_lighter_gray);


    render_status(engine->gui->con, 1, 4, engine->player);

    engine->gui->render_log(engine, MSG_X, 1);
    engine->gui->render_mouse_look(engine);

    TCOD_console_blit(engine->gui->con, 0, 0, engine->window_w,
                      PANEL_H, NULL, 0, engine->window_h - PANEL_H,
                      1.f, 1.f);
}
Ejemplo n.º 2
0
void startLights() {
	LIGHT_MAP = TCOD_map_new(WINDOW_WIDTH, WINDOW_HEIGHT);
	DYNAMIC_LIGHT_CONSOLE = TCOD_console_new(WINDOW_WIDTH, WINDOW_HEIGHT);

	printf("Starting up lights...\n");

	TCOD_console_set_default_background(DYNAMIC_LIGHT_CONSOLE, TCOD_color_RGB(0, 0, 0));
	TCOD_console_set_key_color(DYNAMIC_LIGHT_CONSOLE, TCOD_color_RGB(255, 0, 255));
	TCOD_console_clear(DYNAMIC_LIGHT_CONSOLE);
}
Ejemplo n.º 3
0
Archivo: ui.c Proyecto: witheld9/Torch
void drawUi() {
    TCOD_console_clear(UI_CONSOLE);

    _drawTorchFuel();
    _drawStance();
    _drawMenu();
    _drawStats();
    _drawMessage();
    _drawCursor();
}
Ejemplo n.º 4
0
void drawDynamicLights() {
	light *ptr = DYNAMIC_LIGHTS;

	TCOD_console_clear(DYNAMIC_LIGHT_CONSOLE);
	
	while (ptr != NULL) {
		_drawDynamicLight(ptr);

		ptr = ptr->next;
	}
}
Ejemplo n.º 5
0
Archivo: ui.c Proyecto: witheld9/Torch
void setupUi() {
    UI_CONSOLE = TCOD_console_new(WINDOW_WIDTH, WINDOW_HEIGHT);

    TCOD_console_set_color_control(TCOD_COLCTRL_1, TCOD_color_RGB(200, 200, 200), TCOD_color_RGB(25, 25, 25));
    TCOD_console_set_default_background(UI_CONSOLE, TCOD_color_RGB(0, 0, 0));
    TCOD_console_set_key_color(UI_CONSOLE, TCOD_color_RGB(0, 0, 0));
    TCOD_console_clear(UI_CONSOLE);

    DISPLAY_TEXT = calloc(WINDOW_WIDTH, sizeof(char));
    DISPLAY_TEXT[0] = '\0';
}
Ejemplo n.º 6
0
void actorCleanup() {
	character *nextChar, *ptr = CHARACTERS;
	int freedActors = 0;

	while (ptr != NULL) {
		nextChar = ptr->next;
		
		if (ptr->hp <= 0) {
			deleteActor(ptr);

			freedActors ++;
		}

		ptr = nextChar;
	}

	if (freedActors) {
		printf("%i actor(s) freed.\n", freedActors);
	}

	TCOD_console_clear(ACTOR_CONSOLE);
}
Ejemplo n.º 7
0
/* renders the textfield */
void TCOD_text_render (TCOD_text_t txt, TCOD_console_t con) {
    text_t * data = (text_t*)txt;
    uint32 time;
	bool cursor_on;
	char back=0;
	int curx,cury,cursorx,cursory, curpos;
	char *ptr;
    TCOD_IFNOT(data && data->con ) return;
    time = TCOD_sys_elapsed_milli();
	cursor_on = (int)( time % data->interval ) > data->halfinterval;
    TCOD_console_set_default_background(data->con, data->back);
    TCOD_console_set_default_foreground(data->con, data->fore);
    TCOD_console_clear(data->con);

	/* compute cursor position */
	get_cursor_coords(data,&cursorx,&cursory);

	if ( cursor_on && data->ascii_cursor) {
		/* save the character under cursor position */
		back = data->text[data->cursor_pos];
		data->text[data->cursor_pos] = data->ascii_cursor;
	}
	/* render prompt */
    if (data->prompt) TCOD_console_print_rect_ex(data->con,0,0,data->w,data->h,TCOD_BKGND_SET,TCOD_LEFT,"%s",data->prompt);
	/* render text */
	curx=data->textx;
	cury=data->texty;
	ptr=data->text;
	curpos=0;
	while (*ptr) {
		if ( *ptr == '\n') {
			if ( (curx == 0 || curpos == 0 ) && curpos >= data->sel_start && curpos < data->sel_end ) {
				/* inverted colors for selected empty lines */
				TCOD_console_set_char_background(data->con, curx, cury, data->fore, TCOD_BKGND_SET);
				TCOD_console_set_char_foreground(data->con, curx, cury, data->back);
			}
			curx=0;
			cury++;
		} else {
			if ( curpos >= data->sel_start && curpos < data->sel_end ) {
				/* inverted colors for selection */
				TCOD_console_set_char_background(data->con, curx, cury, data->fore, TCOD_BKGND_SET);
				TCOD_console_set_char_foreground(data->con, curx, cury, data->back);
			}
			TCOD_console_set_char(data->con,curx,cury,*ptr);
			curx++;
			if ( curx == data->w ) {
				curx=0;
				cury++;
			}
		}
		ptr++;
		curpos++;
	}
	if ( cursor_on ) {
		if ( data->ascii_cursor) {
			/* restore the character under cursor */
			data->text[data->cursor_pos] = back;
		} else {
			/* invert colors at cursor position */
			TCOD_console_set_char_background(data->con,cursorx,cursory,data->fore,TCOD_BKGND_SET);
			TCOD_console_set_char_foreground(data->con,cursorx,cursory,data->back);
		}
	} else if (! cursor_on && ! data->ascii_cursor && data->multiline ) {
		/* normal colors for cursor ( might be inside selection ) */
		TCOD_console_set_char_background(data->con,cursorx,cursory,data->back,TCOD_BKGND_SET);
		TCOD_console_set_char_foreground(data->con,cursorx,cursory,data->fore);
	}
    TCOD_console_blit(data->con,0,0,data->w,data->h,con,data->x,data->y,1.0f,data->transparency);
}
Ejemplo n.º 8
0
int main(int argc, char **argv) {
	int iItemToPlace = ITEM_ORE_STONE;
	int iInventoryOffset = 0;
	int iInventoryPointer = 0;
	int iInventorySelection = -1;
	int iLookX = 0;
	int iLookY = 0;
	int iNewX = 0;
	int iNewY = 0;
	int iSelect = 0;
	TCOD_key_t tKey;
	char cCharCode;

	bool bTurnOver = false;

	globalsInit();

	TCOD_console_set_custom_font("terminal8x8_gs_ro.png", TCOD_FONT_TYPE_GREYSCALE | TCOD_FONT_LAYOUT_ASCII_INROW, 16, 16);
	TCOD_console_init_root(100, 75, "RogueCraft", false);
	TCOD_console_set_background_color(NULL, TCOD_black);
	TCOD_console_set_foreground_color(NULL, TCOD_light_grey);

	g_tcodMap = TCOD_map_new(DEF_WORLD_X, DEF_WORLD_Y);

	mapClear();
	generateBSPtoMap(true);
	itemPopulate(ITEM_ORE_IRON, 0, 45, 100);
	itemPopulate(ITEM_ORE_COPPER, 0, 35, 100);
	itemPopulate(ITEM_ORE_STONE_WEAK, 0, 25, 100);

	/* Populate a torch ... or three. */
	itemPopulate(25, 1, 35, 100);
	mapRemapLight(25);

	playerInit();

	TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
	iNewX = g_ego.m_stats.m_iWorldX;
	iNewY = g_ego.m_stats.m_iWorldY;

	/* Debug code for inventory management */
	inventoryAdd(&g_ego.m_inventory, 30, 1);
	inventoryAdd(&g_ego.m_inventory, 31, 1);

	g_iGameMode = MODE_INTRO;

	npcPopulate(1, 1, 55, 100);

	while (!TCOD_console_is_window_closed()) {
		tKey = TCOD_console_check_for_keypress(TCOD_KEY_PRESSED);
		cCharCode = tolower(tKey.c);

		/* Global inputs */
		switch (tKey.vk) {
			case TCODK_ESCAPE:
				if (g_iGameMode != MODE_GAME && g_iGameMode != MODE_INTRO) {
					if (g_iGameMode == MODE_LOOK) {
						iNewX = g_ego.m_stats.m_iWorldX;
						iNewY = g_ego.m_stats.m_iWorldY;
						TCOD_console_put_char(NULL, iLookX, iLookY, 0, TCOD_BKGND_NONE);
					}
					g_iGameMode = MODE_GAME;
					inventoryClear();
				}
				else {
					TCOD_console_delete(NULL);
					SDL_Quit();
					return 1;
				}
				break;
			case TCODK_PRINTSCREEN:
				TCOD_sys_save_screenshot(NULL);
				break;
			case TCODK_KP1:
				iNewX--;
				iNewY++;
				break;
			case TCODK_KP2:
				iNewY++;
				break;
			case TCODK_KP3:
				iNewX++;
				iNewY++;
				break;
			case TCODK_KP4:
				iNewX--;
				break;
			case TCODK_KP6:
				iNewX++;
				break;
			case TCODK_KP7:
				iNewX--;
				iNewY--;
				break;
			case TCODK_KP8:
				iNewY--;
				break;
			case TCODK_KP9:
				iNewX++;
				iNewY--;
				break;
			default:
				break;
		}

		/* Mode inputs */
		switch (g_iGameMode) {
			case MODE_INTRO:
				TCOD_console_clear(NULL);
				scene_intro();
				scene_intro_input(tKey, cCharCode);
				break;
			case MODE_GAME:
				mapDraw();
				inventoryDrawBorder();
				playerStatsList();
				consoleDraw();
				consoleInputDraw();

				TCOD_console_put_char(NULL, 76, 33 + iInventoryPointer, 16, TCOD_BKGND_NONE);
				TCOD_console_put_char(NULL, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, '@', TCOD_BKGND_NONE);
				iInventorySelection = inventoryList(&g_ego.m_inventory, iInventoryPointer, iInventoryOffset);
				TCOD_console_print_left(NULL, 78, 31, TCOD_BKGND_NONE, "Inventory");

				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						if (g_npcMap[iNewX][iNewY] == NULL) {
							if (g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable) {
								g_ego.m_stats.m_iWorldX = iNewX;
								g_ego.m_stats.m_iWorldY = iNewY;
								TCOD_console_put_char(NULL, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, ' ', TCOD_BKGND_NONE);
								g_itemData[g_iWorld[iNewX][iNewY]].m_vFunc(ACT_WALK_ONTO, iNewX, iNewY, NULL);
							}
							else {
								g_itemData[g_iWorld[iNewX][iNewY]].m_vFunc(ACT_WALK_INTO, iNewX, iNewY, NULL);
								iNewX = g_ego.m_stats.m_iWorldX;
								iNewY = g_ego.m_stats.m_iWorldY;
								mapMakeFOV();
								inventoryClear();
							}
						}
						else {
							/* We've bumped into an NPC. */
							g_npcMap[iNewX][iNewY]->m_vFunc(ACT_WALK_INTO, iNewX, iNewY, g_npcMap[iNewX][iNewY]);
							iNewX = g_ego.m_stats.m_iWorldX;
							iNewY = g_ego.m_stats.m_iWorldY;
						}
						TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
						TCOD_map_set_properties(g_tcodMap, iNewX, iNewY, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bTransparent, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable);
						TCOD_map_copy(g_tcodMap, g_tcodLightmap);
						mapRemapLight(25);
						playerCalcVisibility();
						bTurnOver = true;
					}
				}

				switch (cCharCode) {
					case 'q': /* Place block (why q?) */
						g_iGameMode = MODE_BLOCK;
						consoleAdd("Place where?");
						break;
					case 'o': /* Open something */
						g_iGameMode = MODE_OPEN;
						consoleAdd("Open where?");
						break;
					case 'l': /* Look around */
						g_iGameMode = MODE_LOOK;
						iLookX = g_ego.m_stats.m_iWorldX;
						iLookY = g_ego.m_stats.m_iWorldY;
						iNewX = iLookX;
						iNewY = iLookY;
						playerLook(iLookX, iLookY);
						inventoryClear();
						iInventoryOffset = 0;
						iInventoryPointer = 0;
						consoleAdd("Looking around...");
						break;
					case 'e': /* Equip selected item in inventory */
						g_itemData[iInventorySelection].m_vFunc(ACT_EQUIP, 0, 0,(void *)(iInventorySelection));
						break;
					case 'd': /* Dequip an item */
						g_iGameMode = MODE_DEQUIP;
						consoleAdd("Remove what?");
						break;
					case 14: /* Up arrow (move inventory pointer) */
						if (iInventoryPointer > 0) {
							TCOD_console_put_char(NULL, 76, 33 + iInventoryPointer, 32, TCOD_BKGND_NONE);
							iInventoryPointer--;
						}
						else
							iInventoryOffset--;
						break;
					case 17: /* Down arrow (move inventory pointer) */
						if (iInventoryPointer < 9) {
							TCOD_console_put_char(NULL, 76, 33 + iInventoryPointer, 32, TCOD_BKGND_NONE);
							iInventoryPointer++;
						}
						else
							iInventoryOffset++;
						break;
					case 64: /* Space */
						g_iGameMode = MODE_CONSOLE_INPUT;
						break;
					default:
						break;
				}
				break;
			case MODE_BLOCK:
				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						g_itemData[iItemToPlace].m_vFunc(ACT_PLACE_ONTO, iNewX, iNewY, (void *)iItemToPlace);
						mapMakeFOV();
						g_iGameMode = MODE_GAME;
						TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
						TCOD_map_set_properties(g_tcodMap, iNewX, iNewY, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bTransparent, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable);
						TCOD_map_copy(g_tcodMap, g_tcodLightmap);
						mapRemapLight(25);
						playerCalcVisibility();
						bTurnOver = true;
					}
				}
				else {
					if (cCharCode == '1')
						iItemToPlace = ITEM_ORE_STONE;
					if (cCharCode == '2')
						iItemToPlace = ITEM_ORE_IRON;
					if (cCharCode == '3')
						iItemToPlace = ITEM_ORE_COPPER;
					if (cCharCode == '4')
						iItemToPlace = ITEM_ORE_SILVER;
					if (cCharCode == '5')
						iItemToPlace = ITEM_ORE_GOLD;
				}
				break;
			case MODE_OPEN:
				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						g_itemData[g_iWorld[iNewX][iNewY]].m_vFunc(ACT_OPEN, iNewX, iNewY, NULL);
						mapMakeFOV();
						g_iGameMode = MODE_GAME;
						TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
						TCOD_map_set_properties(g_tcodMap, iNewX, iNewY, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bTransparent, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable);
						TCOD_map_copy(g_tcodMap, g_tcodLightmap);
						mapRemapLight(25);
						playerCalcVisibility();
						bTurnOver = true;
					}
				}
				break;
			case MODE_DEQUIP:
				switch (cCharCode) {
					case '1':
						iSelect = g_ego.m_equipment.m_iHand_L;
						g_ego.m_equipment.m_iHand_L = ITEM_NOTHING;
						break;
					case '2':
						iSelect = g_ego.m_equipment.m_iHand_R;
						g_ego.m_equipment.m_iHand_R = ITEM_NOTHING;
						break;
					case '3':
						iSelect = g_ego.m_equipment.m_iHead;
						g_ego.m_equipment.m_iHead = ITEM_NOTHING;
						break;
					case '4':
						iSelect = g_ego.m_equipment.m_iEar_L;
						g_ego.m_equipment.m_iEar_L = ITEM_NOTHING;
						break;
					case '5':
						iSelect = g_ego.m_equipment.m_iEar_R;
						g_ego.m_equipment.m_iEar_R = ITEM_NOTHING;
						break;
					case '6':
						iSelect = g_ego.m_equipment.m_iFace;
						g_ego.m_equipment.m_iFace = ITEM_NOTHING;
						break;
					case '7':
						iSelect = g_ego.m_equipment.m_iNeck;
						g_ego.m_equipment.m_iNeck = ITEM_NOTHING;
						break;
					case '8':
						iSelect = g_ego.m_equipment.m_iBack;
						g_ego.m_equipment.m_iBack = ITEM_NOTHING;
						break;
					case '9':
						iSelect = g_ego.m_equipment.m_iChest;
						g_ego.m_equipment.m_iChest = ITEM_NOTHING;
						break;
					case '0':
						iSelect = g_ego.m_equipment.m_iHands;
						g_ego.m_equipment.m_iHands = ITEM_NOTHING;
						break;
					case 'a':
						iSelect = g_ego.m_equipment.m_iWaist;
						g_ego.m_equipment.m_iWaist = ITEM_NOTHING;
						break;
					case 'b':
						iSelect = g_ego.m_equipment.m_iLegs;
						g_ego.m_equipment.m_iLegs = ITEM_NOTHING;
						break;
					case 'c':
						iSelect = g_ego.m_equipment.m_iFeet;
						g_ego.m_equipment.m_iFeet = ITEM_NOTHING;
						break;
					default:
						break;
				}
				if (iSelect != 0) {
					g_itemData[iSelect].m_vFunc(ACT_DEQUIP, 0, 0,(void *)(iSelect));
					g_iGameMode = MODE_GAME;
				}
				break;
			case MODE_LOOK:
				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						TCOD_console_put_char(NULL, iLookX, iLookY, 0, TCOD_BKGND_NONE);
						iLookX = iNewX;
						iLookY = iNewY;
						playerLook(iLookX, iLookY);
						inventoryClear();
						iInventoryOffset = 0;
						iInventoryPointer = 0;
					}
				}
				TCOD_console_put_char(NULL, iLookX, iLookY, 4, TCOD_BKGND_NONE);
				iInventorySelection = inventoryList(&g_itemLook, iInventoryPointer, iInventoryOffset);
				playerLook(iLookX, iLookY);
				break;
			case MODE_CONSOLE_INPUT:
				switch (tKey.vk) {
					case TCODK_ENTER:
						consoleAdd(g_cConsoleInput);
						consoleInputClear();
						g_iGameMode = MODE_GAME;
						break;
					case TCODK_BACKSPACE:
						consoleInputDel();
						break;
					default:
						if (cCharCode >= 32 && cCharCode <= 126)
							consoleInputAdd(cCharCode);
						break;
				}
				break;
			default:
				break;
		}

		if (bTurnOver) {
			npcExecute(&g_npcList);
			bTurnOver = false;
		}

		TCOD_console_flush();
	}
	return 1;
}
Ejemplo n.º 9
0
void TCODConsole::clear() {
	TCOD_console_clear(data);
}
Ejemplo n.º 10
0
int main( int argc, char *argv[] ) {
  char *font="tilesense/libtcod/fonts/courier12x12_aa_tc.png";
  int nb_char_horiz=0,nb_char_vertic=0;
  int font_flags=TCOD_FONT_TYPE_GREYSCALE|TCOD_FONT_LAYOUT_TCOD;
	TCOD_console_set_custom_font(font,font_flags,nb_char_horiz,nb_char_vertic);
	TCOD_console_init_root(80,40,"salamandeRL",false);
	
  Map room = initRoom();
  Object player = initPlayer(room);
  object_sense(player);
  
  TCOD_sys_set_fps(30);

  float elapsed = 0;
  char finished = 0;
	TCOD_key_t key = {TCODK_NONE,0};
	TCOD_console_set_foreground_color(NULL,TCOD_white);
	do {
	  key = TCOD_console_check_for_keypress(TCOD_KEY_PRESSED);
    if(key.vk != TCODK_NONE) {
      TCOD_console_clear(NULL);
    }
		
		TCOD_console_print_right(NULL,79,26,TCOD_BKGND_NONE,"last frame : %3d ms (%3d fps)", (int)(TCOD_sys_get_last_frame_length()*1000), TCOD_sys_get_fps());
		TCOD_console_print_right(NULL,79,27,TCOD_BKGND_NONE,"elapsed : %8dms %4.2fs", TCOD_sys_elapsed_milli(),TCOD_sys_elapsed_seconds());
		TCOD_console_print_left(NULL,0,27,TCOD_BKGND_NONE,"other stat stuff can go here");
		//map
    drawmap(room, player);
    TCOD_console_print_left(NULL, 
      object_position(player).x*2, object_position(player).y, 
      TCOD_BKGND_NONE,"@");
		//divider
		TCOD_console_print_left(NULL,0,28,TCOD_BKGND_NONE,
		  "--------------------------------------------------------------------------------"
		);
	  //text display
    TCOD_console_print_left(NULL,2,29,TCOD_BKGND_NONE,"we'll probably put text down here.");
		
		/* update the game screen */
		TCOD_console_flush();

    if(key.vk == TCODK_RIGHT) {
      map_turn_object(room, "@", 1);
    } else if(key.vk == TCODK_LEFT) {
      map_turn_object(room, "@", -1);
    } else if(key.vk == TCODK_CHAR) {
      switch(key.c) {
        case 'w':
          map_move_object(room, "@", (mapVec){0, -1, 0});
          break;
        case 'a':
          map_move_object(room, "@", (mapVec){-1, 0, 0});
          break;
        case 's':
          map_move_object(room, "@", (mapVec){0, 1, 0});
          break;
        case 'd':
          map_move_object(room, "@", (mapVec){1, 0, 0});
          break;
        case 'q':
          finished = 1;
          break;
        //next, handle chomping
        default:
          break;
  		}
    }

	} while (!finished && !TCOD_console_is_window_closed());
	return 0;
}