void init_qts() { for(int i=0; i<MAXQTS; i++) reset_qt(i); strcpy(QuestTemplates[0].name,"New Default (can't change)"); qt_count=1; }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = (WNDPROC)window_proc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "Win32GL"; RegisterClass( &wc ); RECT window_rect; SetRect( &window_rect, 0, 0, mAppWindowWidth, mAppWindowHeight ); DWORD ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; DWORD style = WS_OVERLAPPEDWINDOW; AdjustWindowRectEx( &window_rect, style, FALSE, ex_style ); HWND hWnd = CreateWindowEx( ex_style, "Win32GL", "Win32GL LLQtWebKit test", style | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 80, 0, window_rect.right - window_rect.left, window_rect.bottom - window_rect.top, NULL, NULL, hInstance, NULL ); static PIXELFORMATDESCRIPTOR pfd = { sizeof( PIXELFORMATDESCRIPTOR ), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; HDC hDC = GetDC( hWnd ); GLuint pixel_format = ChoosePixelFormat( hDC, &pfd ); SetPixelFormat( hDC, pixel_format, &pfd ); HGLRC hRC = wglCreateContext( hDC ); wglMakeCurrent( hDC, hRC ); ShowWindow( hWnd,SW_SHOW ); SetForegroundWindow( hWnd ); SetFocus( hWnd ); resize_gl_screen( mAppWindowWidth, mAppWindowHeight ); GLuint texture_handle = 0; glGenTextures( 1, &texture_handle ); glBindTexture( GL_TEXTURE_2D, texture_handle ); glTexImage2D( GL_TEXTURE_2D, 0, 3, gTextureWidth, gTextureHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, 0 ); glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR ); init_qt( hWnd ); bool done = false; while( ! done ) { MSG msg; if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { if ( WM_QUIT == msg.message ) { done = true; } else { TranslateMessage( &msg ); DispatchMessage( &msg ); }; } else { draw_gl_scene( texture_handle ); SwapBuffers( hDC ); }; }; wglMakeCurrent( NULL,NULL ); wglDeleteContext( hRC ); ReleaseDC( hWnd,hDC ); DestroyWindow( hWnd ); UnregisterClass( "Win32GL", hInstance ); reset_qt(); return 0; }
int ListQTs(bool edit) { qtlist_dlg[0].dp2=lfont; int index=0; quest_template *BackupQTs = (quest_template*)zc_malloc(sizeof(quest_template)*MAXQTS); memcpy(BackupQTs,QuestTemplates,sizeof(quest_template)*qt_count); int backup_qt_count=qt_count; while(index>-1) { bool hasroom=false; if(qt_count<MAXQTS) { hasroom=true; if(edit) { strcpy(QuestTemplates[qt_count++].name,"<new template>"); } } if(is_large) large_dialog(qtlist_dlg); qtlist_dlg[2].x=int(qtlist_dlg[0].x+(edit?5:15)*(is_large?1.5:1)); qtlist_dlg[3].proc=edit?jwin_button_proc:d_dummy_proc; qtlist_dlg[4].proc=edit?jwin_button_proc:d_dummy_proc; qtlist_dlg[5].proc=edit?jwin_button_proc:d_dummy_proc; qtlist_dlg[6].x=int(qtlist_dlg[0].x+(edit?110:80)*(is_large?1.5:1)); qtlist_dlg[7].x=int(qtlist_dlg[0].x+(edit?190:160)*(is_large?1.5:1)); qtlist_dlg[8].proc=edit?d_keyboard_proc:d_dummy_proc; int ret=zc_popup_dialog(qtlist_dlg,2); index=qtlist_dlg[2].d1; int doedit=false; switch(ret) { case 2: if(edit) { doedit=true; } else { if(index>0&&!valid_zqt(QuestTemplates[index].path)) { jwin_alert("ZQuest","Invalid Quest Template",NULL,NULL,"O&K",NULL,'k',0,lfont); } else { strcpy(header.templatepath, QuestTemplates[index].path); index=-1; } } break; case 5: doedit=true; break; case 3: if(index>1&&index<qt_count-1) { zc_swap(QuestTemplates[index],QuestTemplates[index-1]); --qtlist_dlg[2].d1; index=qtlist_dlg[2].d1; } break; case 4: if(index>0&&index<qt_count-2) { zc_swap(QuestTemplates[index],QuestTemplates[index+1]); ++qtlist_dlg[2].d1; index=qtlist_dlg[2].d1; } break; case 6: if(index>0&&!valid_zqt(QuestTemplates[index].path)) { jwin_alert("ZQuest","Invalid Quest Template",NULL,NULL,"O&K",NULL,'k',0,lfont); } else { if(!edit) { strcpy(header.templatepath, QuestTemplates[index].path); } index=-1; } break; case 0: case 7: if(edit) { qt_count=backup_qt_count+1; memcpy(QuestTemplates,BackupQTs,sizeof(quest_template)*qt_count); } index=-2; break; case 8: char buf[30]; strncpy(buf,QuestTemplates[index].name,30); if(jwin_alert("Confirm Deletion", "Delete this quest template?",buf,"(The file will still exist.)","Yes","No",'y',27,lfont)==1) { for(int i=index; i<MAXQTS-1; i++) QuestTemplates[i]=QuestTemplates[i+1]; reset_qt(MAXQTS-1); --qt_count; } break; } if(edit&&hasroom) { // strcpy(QuestTemplates[--qt_count].name," "); reset_qt(--qt_count); sprintf(QuestTemplates[qt_count].name,"Untitled"); } if(index>0 && doedit) { edit_qt(index); } } zc_free(BackupQTs); return index; }