bool TCOD_sys_init(int w,int h, char_t *buf, char_t *oldbuf, bool fullscreen) { if ( ! has_startup ) TCOD_sys_startup(); consoleWidth=w; consoleHeight=h; if (! charmap) TCOD_sys_load_font(); if ( fullscreen ) { find_resolution(); screen=SDL_SetVideoMode(actual_fullscreen_width,actual_fullscreen_height,32,SDL_FULLSCREEN); if ( screen == NULL ) TCOD_fatal_nopar("SDL : cannot set fullscreen video mode"); SDL_ShowCursor(0); actual_fullscreen_width=screen->w; actual_fullscreen_height=screen->h; fullscreen_offsetx=(actual_fullscreen_width-consoleWidth*fontWidth)/2; fullscreen_offsety=(actual_fullscreen_height-consoleHeight*fontHeight)/2; SDL_FillRect(screen,0,0); } else { screen=SDL_SetVideoMode(w*fontWidth,h*fontHeight,32,0); if ( screen == NULL ) TCOD_fatal_nopar("SDL : cannot create window"); } //if ( SDL_MUSTLOCK( charmap ) ) SDL_UnlockSurface( charmap ); SDL_EnableUNICODE(1); consoleBuffer=buf; prevConsoleBuffer=oldbuf; fullscreen_on=fullscreen; memset(key_status,0,sizeof(bool)*(TCODK_CHAR+1)); memset(ascii_updated,0,sizeof(bool)*TCOD_max_font_chars); return true; }
void TCOD_sys_set_custom_font(const char *fontFile,int nb_ch, int nb_cv, int flags) { strcpy(font_file,fontFile); if (flags==0) flags=TCOD_FONT_LAYOUT_ASCII_INCOL; fontInRow=((flags & TCOD_FONT_LAYOUT_ASCII_INROW) != 0); fontIsGreyscale = ((flags & TCOD_FONT_TYPE_GREYSCALE) != 0 ); fontTcodLayout = ((flags & TCOD_FONT_LAYOUT_TCOD) != 0 ); if ( nb_ch> 0 ) { fontNbCharHoriz=nb_ch; fontNbCharVertic=nb_cv; } else { if ( ( flags & TCOD_FONT_LAYOUT_ASCII_INROW ) || ( flags & TCOD_FONT_LAYOUT_ASCII_INCOL ) ) { fontNbCharHoriz=16; fontNbCharVertic=16; } else { fontNbCharHoriz=32; fontNbCharVertic=8; } } if ( fontTcodLayout ) fontInRow=true; check_ascii_to_tcod(); TCOD_sys_load_font(); }
bool TCOD_sys_init(int w,int h, char_t *buf, char_t *oldbuf, bool fullscreen) { FILE *f; if ( ! has_startup ) TCOD_sys_startup(); /* check if there is a user (player) config file */ f = fopen("./libtcod.cfg","r"); if ( f ) { fclose(f); /* yes, read it */ TCOD_sys_load_player_config(); if (TCOD_ctx.fullscreen) fullscreen=true; } if (! charmap) TCOD_sys_load_font(); if ( fullscreen ) { find_resolution(); if (TCOD_ctx.renderer == TCOD_RENDERER_SDL ) { screen=SDL_SetVideoMode(TCOD_ctx.actual_fullscreen_width,TCOD_ctx.actual_fullscreen_height,32,SDL_FULLSCREEN); if ( screen == NULL ) TCOD_fatal_nopar("SDL : cannot set fullscreen video mode"); } SDL_ShowCursor(0); TCOD_ctx.actual_fullscreen_width=screen->w; TCOD_ctx.actual_fullscreen_height=screen->h; TCOD_ctx.fullscreen_offsetx=(TCOD_ctx.actual_fullscreen_width-TCOD_ctx.root->w*TCOD_ctx.font_width)/2; TCOD_ctx.fullscreen_offsety=(TCOD_ctx.actual_fullscreen_height-TCOD_ctx.root->h*TCOD_ctx.font_height)/2; SDL_FillRect(screen,0,0); } else { if (TCOD_ctx.renderer == TCOD_RENDERER_SDL ) { screen=SDL_SetVideoMode(w*TCOD_ctx.font_width,h*TCOD_ctx.font_height,32,0); TCOD_LOG(("Using SDL renderer...\n")); } if ( screen == NULL ) TCOD_fatal_nopar("SDL : cannot create window"); } SDL_EnableUNICODE(1); consoleBuffer=buf; prevConsoleBuffer=oldbuf; TCOD_ctx.fullscreen=fullscreen; memset(key_status,0,sizeof(bool)*(TCODK_CHAR+1)); memset(ascii_updated,0,sizeof(bool)*TCOD_ctx.max_font_chars); return true; }