?? dlg_about.c
字號:
#include "raine.h"#include "rgui.h"#include "rguiproc.h"#include "gui.h"#include "dlg_about.h"#include "games.h"#include "tilemod.h"#include "palette.h"#include "sasound.h"#include "ingame.h"char about0[64];char about1[64];char about2[64];char about3[64];char about4[64];char about5[64];char about6[64];char about7[64];char about8[64];char about9[64];DIALOG about_raine[] ={ /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) */ { d_raine_window_proc,0, 0, 240, 190, GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, "About Raine"}, { d_bitmap_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL}, { x_raine_button_proc,8, 166, 32, 16, GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE, 'O', D_EXIT, 0, 0, "&Okay"}, { x_ctext_proc, 120, 54, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about0}, { x_ctext_proc, 120, 64, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about1}, { x_ctext_proc, 120, 84, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about2}, { x_ctext_proc, 120, 94, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about3}, { x_ctext_proc, 120, 104, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about4}, { x_ctext_proc, 120, 114, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about5}, { x_ctext_proc, 120, 124, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about6}, { x_ctext_proc, 120, 134, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about7}, { x_ctext_proc, 120, 144, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about8}, { x_ctext_proc, 120, 154, 1, 1, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, about9}, { cycle_proc, 70, 18, 93, 23, GUI_COL_TEXT_2, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, NULL}, { about_game_proc, 44, 166, 64, 16, GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE, 'G', D_EXIT, 0, 0, "&Game Info"}, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL}};DIALOG about_game[] ={ /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) */ { d_raine_window_proc, 0, 0, 240, 186, GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, "Game Information"}, { d_bitmap_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL}, { x_raine_button_proc, 8, 162, 32, 16, GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE, 'O', D_EXIT, 0, 0, "&Okay"}, { d_raine_textbox_proc, 8, 54, 224, 102, GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE, 0, 0, 0, 0, NULL}, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL}};// about_proc():// Setup and display the about dialogstatic int cycle_logo_pal;static char *OSName(void){ switch(os_type){ case OSTYPE_WIN3: return "Windows 3.1"; case OSTYPE_WIN95: return "Windows 95"; case OSTYPE_WIN98: return "Windows 98"; case OSTYPE_WINNT: return "Windows NT"; case OSTYPE_OS2: return "OS/2"; case OSTYPE_WARP: return "OS/2 Warp 3"; case OSTYPE_DOSEMU: return "Linux DOSEMU"; case OSTYPE_OPENDOS: return "Caldera OpenDOS"; case OSTYPE_LINUX: return "Linux"; case OSTYPE_UNIX: return "Unix"; default: return "MSDOS"; }}static char *CPUFamily(void){ switch(cpu_family){ case 3: return "386"; case 4: return "486"; case 5: return "Pentium"; case 6: return "PPro"; default: return "x86"; }}static char *CPUFPU(void){ if(cpu_fpu) return "FPU"; else return "NoFPU";}static char *CPUMMX(void){ if(cpu_mmx) return "MMX"; else return "NoMMX";}int about_proc(int msg, DIALOG *d, int c){ BITMAP *logo; int ret = x_raine_button_proc(msg, d, c); if(ret==D_CLOSE){ Unselect_Button(d); FadeGUI(); check_cpu(); sprintf(about0, EMUNAME " " VERSION " (c)1998-2001 " HANDLE); sprintf(about1, "Compiled on " __DATE__ " (" __TIME__ ")");#ifdef RAINE_DOS sprintf(about2, "DJGPP (GCC 2952) by DJ Delorie");#else#ifdef RAINE_UNIX sprintf(about2, "GNU gcc");#else #ifdef __MINGW32__ sprintf(about2, "MingW32 or CygWin");#else sprintf(about2, "MSVC++ 6.0 by Microsoft Corporation");#endif#endif#endif sprintf(about3, "Allegro " ALLEGRO_VERSION_STR " by Shawn Hargreaves"); sprintf(about4, "Starscream 0.26r by Neill Corlett"); sprintf(about5, " "); sprintf(about6, "Host System: %s", OSName()); sprintf(about7, "CPU: %s %s %s %s", CPUFamily(), CPUFPU(), CPUMMX(), cpu_vendor); sprintf(about8, " "); sprintf(about9, "http://www.rainemu.com/"); logo = make_mapped_bitmap(RaineData[RaineLogo].dat, &cycle_logo_pal, RaineData[GUIPalette].dat, 7); about_raine[1].proc = &d_bitmap_proc; about_raine[1].dp = logo; about_raine[1].x = about_raine[0].x + ((120 * text_height(gui_main_font)) / 8) - (logo->w / 2); about_raine[1].y = about_raine[0].y + (( 32 * text_height(gui_main_font)) / 8) - (logo->h / 2); about_raine[1].w = logo->w; about_raine[1].h = logo->h; ret = raine_do_dialog(about_raine, -1); destroy_mapped_bitmap(logo, 7); return D_REDRAW; } return ret;}// cycle_proc():// Colour Cycling for the 'About Raine' logoint cycle_proc(int msg, DIALOG *d, int c){ static int tt; static UINT32 ts; static UINT8 *CYC; static PALETTE cyc_pal; static int dirty_palette; UINT32 ta; switch(msg){ case MSG_START: // Startup CYC = malloc(4*192*2); for(ta=0;ta<64;ta++){ CYC[( 0<<2)+(ta<<2)+0] = 63 - ta; CYC[( 0<<2)+(ta<<2)+1] = 63; CYC[( 0<<2)+(ta<<2)+2] = ta; CYC[( 64<<2)+(ta<<2)+0] = ta; CYC[( 64<<2)+(ta<<2)+1] = 63 - ta; CYC[( 64<<2)+(ta<<2)+2] = 63; CYC[(128<<2)+(ta<<2)+0] = 63; CYC[(128<<2)+(ta<<2)+1] = ta; CYC[(128<<2)+(ta<<2)+2] = 63 - ta; } for(ta=0;ta<192;ta++){ CYC[((ta+192)<<2)+0] = CYC[(ta<<2)+0]; CYC[((ta+192)<<2)+1] = CYC[(ta<<2)+1]; CYC[((ta+192)<<2)+2] = CYC[(ta<<2)+2]; } memcpy(&cyc_pal, &gui_pal, 256*4); tt=0; ts=0; start_ingame_timer(); dirty_palette=1; break; case MSG_END: // Shutdown gui_pal[cycle_logo_pal+1].r=cyc_pal[cycle_logo_pal+1].r; gui_pal[cycle_logo_pal+1].g=cyc_pal[cycle_logo_pal+1].g; gui_pal[cycle_logo_pal+1].b=cyc_pal[cycle_logo_pal+1].b; gui_pal[cycle_logo_pal+2].r=cyc_pal[cycle_logo_pal+2].r; gui_pal[cycle_logo_pal+2].g=cyc_pal[cycle_logo_pal+2].g; gui_pal[cycle_logo_pal+2].b=cyc_pal[cycle_logo_pal+2].b; gui_pal[cycle_logo_pal+3].r=cyc_pal[cycle_logo_pal+3].r; gui_pal[cycle_logo_pal+3].g=cyc_pal[cycle_logo_pal+3].g; gui_pal[cycle_logo_pal+3].b=cyc_pal[cycle_logo_pal+3].b; gui_pal[cycle_logo_pal+4].r=cyc_pal[cycle_logo_pal+4].r; gui_pal[cycle_logo_pal+4].g=cyc_pal[cycle_logo_pal+4].g; gui_pal[cycle_logo_pal+4].b=cyc_pal[cycle_logo_pal+4].b; gui_pal[cycle_logo_pal+5].r=cyc_pal[cycle_logo_pal+5].r; gui_pal[cycle_logo_pal+5].g=cyc_pal[cycle_logo_pal+5].g; gui_pal[cycle_logo_pal+5].b=cyc_pal[cycle_logo_pal+5].b; set_palette_range(gui_pal,cycle_logo_pal+1,cycle_logo_pal+5,0); stop_ingame_timer(); free(CYC); break; case MSG_IDLE: // Update if( read_ingame_timer() != ts){ ts = read_ingame_timer(); gui_pal[cycle_logo_pal+1].r=CYC[((tt+0)<<2)]; gui_pal[cycle_logo_pal+1].g=CYC[((tt+0)<<2)+1]; gui_pal[cycle_logo_pal+1].b=CYC[((tt+0)<<2)+2]; gui_pal[cycle_logo_pal+2].r=CYC[((tt+32)<<2)]; gui_pal[cycle_logo_pal+2].g=CYC[((tt+32)<<2)+1]; gui_pal[cycle_logo_pal+2].b=CYC[((tt+32)<<2)+2]; gui_pal[cycle_logo_pal+3].r=CYC[((tt+64)<<2)]; gui_pal[cycle_logo_pal+3].g=CYC[((tt+64)<<2)+1]; gui_pal[cycle_logo_pal+3].b=CYC[((tt+64)<<2)+2]; gui_pal[cycle_logo_pal+4].r=CYC[((tt+96)<<2)]; gui_pal[cycle_logo_pal+4].g=CYC[((tt+96)<<2)+1]; gui_pal[cycle_logo_pal+4].b=CYC[((tt+96)<<2)+2]; gui_pal[cycle_logo_pal+5].r=CYC[((tt+128)<<2)]; gui_pal[cycle_logo_pal+5].g=CYC[((tt+128)<<2)+1]; gui_pal[cycle_logo_pal+5].b=CYC[((tt+128)<<2)+2]; tt++; if(tt>=192) tt=0; dirty_palette=1; SEND_MESSAGE(d,MSG_DRAW,0); } break; case MSG_DRAW: // Draw if(dirty_palette){ dirty_palette=0; set_palette_range(gui_pal,cycle_logo_pal+1,cycle_logo_pal+5,0); } //textout(screen,font,gamename,64,tt,255); break; case MSG_CLICK: // Draw rgui_cfg.gui_col_text_1 = ((rgui_cfg.gui_col_text_1>>8)&0xFFFF) | ((rgui_cfg.gui_col_text_1<<16)&0xFF0000); rgui_cfg.gui_col_text_2 = ((rgui_cfg.gui_col_text_2>>8)&0xFFFF) | ((rgui_cfg.gui_col_text_2<<16)&0xFF0000); rgui_cfg.gui_col_black = ((rgui_cfg.gui_col_black>>8)&0xFFFF) | ((rgui_cfg.gui_col_black<<16)&0xFF0000); rgui_cfg.gui_col_select = ((rgui_cfg.gui_col_select>>8)&0xFFFF) | ((rgui_cfg.gui_col_select<<16)&0xFF0000); rgui_cfg.gui_box_col_high_2 = ((rgui_cfg.gui_box_col_high_2>>8)&0xFFFF) | ((rgui_cfg.gui_box_col_high_2<<16)&0xFF0000); rgui_cfg.gui_box_col_high_1 = ((rgui_cfg.gui_box_col_high_1>>8)&0xFFFF) | ((rgui_cfg.gui_box_col_high_1<<16)&0xFF0000); rgui_cfg.gui_box_col_middle = ((rgui_cfg.gui_box_col_middle>>8)&0xFFFF) | ((rgui_cfg.gui_box_col_middle<<16)&0xFF0000); rgui_cfg.gui_box_col_low_1 = ((rgui_cfg.gui_box_col_low_1>>8)&0xFFFF) | ((rgui_cfg.gui_box_col_low_1<<16)&0xFF0000); rgui_cfg.gui_box_col_low_2 = ((rgui_cfg.gui_box_col_low_2>>8)&0xFFFF) | ((rgui_cfg.gui_box_col_low_2<<16)&0xFF0000); set_gui_palette(); set_palette_range(gui_pal,0,255,0); break; default: break; } return D_O_K;}// about_game_proc():// Setup and display the about game dialogextern struct SOUND_CHIP sound_chip_list[]; // declared in sasound / alsoundvoid add_text(char *buff,const char *format, ...){ va_list ap; va_start(ap,format); vsprintf(buff+strlen(buff),format,ap); va_end(ap);} int about_game_proc(int msg, DIALOG *d, int c){ char *text_data; BITMAP *logo,*logo_2=0; PALETTE *logo_pal; DATAFILE *company_logo; DIR_INFO *dir_list; ROM_INFO *rom_list; VIDEO_INFO *vid_info; int ret,romof,cloneof,j; UINT32 i; GAME_MAIN *game_info; ret = x_raine_button_proc(msg, d, c); if(ret==D_CLOSE){ if(current_game){ Unselect_Button(d); FadeGUI(); text_data = malloc(0x10000); text_data[0] = 0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -