2011-11-22 21:28:15 +00:00
|
|
|
|
/*
|
|
|
|
|
===========================================================================
|
|
|
|
|
|
|
|
|
|
Doom 3 GPL Source Code
|
2011-12-06 18:20:15 +00:00
|
|
|
|
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
|
2011-11-22 21:28:15 +00:00
|
|
|
|
|
2011-12-06 16:14:59 +00:00
|
|
|
|
This file is part of the Doom 3 GPL Source Code ("Doom 3 Source Code").
|
2011-11-22 21:28:15 +00:00
|
|
|
|
|
|
|
|
|
Doom 3 Source Code is free software: you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
|
|
Doom 3 Source Code is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
|
|
|
|
|
|
|
|
|
|
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
|
|
|
|
|
|
|
|
|
===========================================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "../../idlib/precompiled.h"
|
|
|
|
|
#pragma hdrstop
|
|
|
|
|
|
|
|
|
|
#include "qe3.h"
|
|
|
|
|
|
|
|
|
|
BOOL CALLBACK EditCommandDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char key[1024];
|
|
|
|
|
char value[1024];
|
|
|
|
|
const char *temp;
|
|
|
|
|
int index;
|
|
|
|
|
HWND hOwner;
|
2011-12-06 18:20:15 +00:00
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
hOwner = GetParent (hwndDlg);
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
index = SendDlgItemMessage (hOwner, IDC_CMD_LIST, LB_GETCURSEL, 0, 0);
|
2011-12-06 18:20:15 +00:00
|
|
|
|
if (index >= 0)
|
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
SendDlgItemMessage(hOwner, IDC_CMD_LIST, LB_GETTEXT, index, (LPARAM) (LPCTSTR) key);
|
|
|
|
|
temp = ValueForKey (g_qeglobals.d_project_entity, key);
|
|
|
|
|
strcpy (value, temp);
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_CMDMENUTEXT, key);
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_CMDCOMMAND, value);
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
2011-11-22 21:28:15 +00:00
|
|
|
|
return FALSE;
|
|
|
|
|
break;
|
|
|
|
|
|
2011-12-06 18:20:15 +00:00
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDOK:
|
|
|
|
|
if (!GetDlgItemText(hwndDlg, IDC_CMDMENUTEXT, key, 64))
|
|
|
|
|
{
|
|
|
|
|
common->Printf ("Command not added\n");
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!GetDlgItemText(hwndDlg, IDC_CMDCOMMAND, value, 64))
|
|
|
|
|
{
|
|
|
|
|
common->Printf ("Command not added\n");
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//if (key[0] == 'b' && key[1] == 's' && key[2] == 'p')
|
|
|
|
|
//{
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, key, value);
|
|
|
|
|
FillBSPMenu ();
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
// common->Printf ("BSP commands must be preceded by \"bsp\"");
|
|
|
|
|
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CALLBACK AddCommandDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char key[64];
|
|
|
|
|
char value[128];
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDOK:
|
|
|
|
|
if (!GetDlgItemText(hwndDlg, IDC_CMDMENUTEXT, key, 64))
|
|
|
|
|
{
|
|
|
|
|
common->Printf ("Command not added\n");
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!GetDlgItemText(hwndDlg, IDC_CMDCOMMAND, value, 64))
|
|
|
|
|
{
|
|
|
|
|
common->Printf ("Command not added\n");
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (key[0] == 'b' && key[1] == 's' && key[2] == 'p')
|
|
|
|
|
{
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, key, value);
|
|
|
|
|
FillBSPMenu ();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
common->Printf ("BSP commands must be preceded by \"bsp\"");
|
|
|
|
|
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UpdateBSPCommandList (HWND hwndDlg)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
SendDlgItemMessage(hwndDlg, IDC_CMD_LIST, LB_RESETCONTENT, 0 , 0);
|
|
|
|
|
|
|
|
|
|
i = 0;
|
|
|
|
|
int count = g_qeglobals.d_project_entity->epairs.GetNumKeyVals();
|
|
|
|
|
for (int j = 0; j < count; j++) {
|
|
|
|
|
if (g_qeglobals.d_project_entity->epairs.GetKeyVal(j)->GetKey()[0] == 'b' && g_qeglobals.d_project_entity->epairs.GetKeyVal(j)->GetKey()[1] == 's' && g_qeglobals.d_project_entity->epairs.GetKeyVal(j)->GetKey()[2] == 'p') {
|
|
|
|
|
SendDlgItemMessage(hwndDlg, IDC_CMD_LIST, LB_ADDSTRING, i , (LPARAM) g_qeglobals.d_project_entity->epairs.GetKeyVal(j)->GetKey().c_str());
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// FIXME: turn this into an MFC dialog
|
|
|
|
|
BOOL CALLBACK ProjectDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char key[1024];
|
|
|
|
|
char value[1024];
|
|
|
|
|
int index;
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_PRJBASEPATH, ValueForKey (g_qeglobals.d_project_entity, "basepath"));
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_PRJMAPSPATH, ValueForKey (g_qeglobals.d_project_entity, "mapspath"));
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_PRJRSHCMD, ValueForKey (g_qeglobals.d_project_entity, "rshcmd"));
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_PRJREMOTEBASE, ValueForKey (g_qeglobals.d_project_entity, "remotebasepath"));
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_PRJENTITYPATH, ValueForKey (g_qeglobals.d_project_entity, "entitypath"));
|
|
|
|
|
SetDlgItemText(hwndDlg, IDC_PRJTEXPATH, ValueForKey (g_qeglobals.d_project_entity, "texturepath"));
|
|
|
|
|
UpdateBSPCommandList (hwndDlg);
|
|
|
|
|
// Timo
|
|
|
|
|
// additional fields
|
|
|
|
|
CheckDlgButton( hwndDlg, IDC_CHECK_BPRIMIT, (g_qeglobals.m_bBrushPrimitMode) ? BST_CHECKED : BST_UNCHECKED );
|
|
|
|
|
// SendMessage( ::GetDlgItem( hwndDlg, IDC_CHECK_BPRIMIT ), BM_SETCHECK, (WPARAM) g_qeglobals.m_bBrushPrimitMode, 0 );
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
2011-12-06 18:20:15 +00:00
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDC_ADDCMD:
|
|
|
|
|
// DialogBox(g_qeglobals.d_hInstance, (char *)IDD_ADDCMD, g_qeglobals.d_hwndMain, AddCommandDlgProc);
|
|
|
|
|
DialogBox(g_qeglobals.d_hInstance, (char *)IDD_ADDCMD, hwndDlg, AddCommandDlgProc);
|
|
|
|
|
UpdateBSPCommandList (hwndDlg);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case IDC_EDITCMD:
|
|
|
|
|
// DialogBox(g_qeglobals.d_hInstance, (char *)IDD_ADDCMD, g_qeglobals.d_hwndMain, EditCommandDlgProc);
|
|
|
|
|
DialogBox(g_qeglobals.d_hInstance, (char *)IDD_ADDCMD, hwndDlg, EditCommandDlgProc);
|
|
|
|
|
UpdateBSPCommandList (hwndDlg);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case IDC_REMCMD:
|
|
|
|
|
index = SendDlgItemMessage (hwndDlg, IDC_CMD_LIST, LB_GETCURSEL, 0, 0);
|
|
|
|
|
SendDlgItemMessage(hwndDlg, IDC_CMD_LIST, LB_GETTEXT, index, (LPARAM) (LPCTSTR) key);
|
|
|
|
|
DeleteKey (g_qeglobals.d_project_entity, key);
|
|
|
|
|
common->Printf ("Selected %d\n", index);
|
|
|
|
|
UpdateBSPCommandList (hwndDlg);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case IDOK:
|
|
|
|
|
GetDlgItemText(hwndDlg, IDC_PRJBASEPATH, value, 1024);
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, "basepath", value);
|
|
|
|
|
GetDlgItemText(hwndDlg, IDC_PRJMAPSPATH, value, 1024);
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, "mapspath", value);
|
|
|
|
|
GetDlgItemText(hwndDlg, IDC_PRJRSHCMD, value, 1024);
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, "rshcmd", value);
|
|
|
|
|
GetDlgItemText(hwndDlg, IDC_PRJREMOTEBASE, value, 1024);
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, "remotebasepath", value);
|
|
|
|
|
GetDlgItemText(hwndDlg, IDC_PRJENTITYPATH, value, 1024);
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, "entitypath", value);
|
|
|
|
|
GetDlgItemText(hwndDlg, IDC_PRJTEXPATH, value, 1024);
|
|
|
|
|
SetKeyValue (g_qeglobals.d_project_entity, "texturepath", value);
|
|
|
|
|
// Timo
|
|
|
|
|
// read additional fields
|
|
|
|
|
if ( IsDlgButtonChecked( hwndDlg, IDC_CHECK_BPRIMIT ) )
|
|
|
|
|
{
|
|
|
|
|
g_qeglobals.m_bBrushPrimitMode = TRUE;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
g_qeglobals.m_bBrushPrimitMode = FALSE;
|
|
|
|
|
}
|
|
|
|
|
SetKeyValue ( g_qeglobals.d_project_entity, "brush_primit", ( g_qeglobals.m_bBrushPrimitMode ? "1" : "0" ) );
|
|
|
|
|
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
QE_SaveProject(g_strProject);
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DoProjectSettings()
|
|
|
|
|
{
|
|
|
|
|
DialogBox(g_qeglobals.d_hInstance, (char *)IDD_PROJECT, g_pParentWnd->GetSafeHwnd(), ProjectDlgProc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CALLBACK GammaDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char sz[256];
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
2011-12-06 18:20:15 +00:00
|
|
|
|
sprintf(sz, "%1.1f", g_qeglobals.d_savedinfo.fGamma);
|
2011-11-22 21:28:15 +00:00
|
|
|
|
SetWindowText(GetDlgItem(hwndDlg, IDC_G_EDIT), sz);
|
|
|
|
|
return TRUE;
|
2011-12-06 18:20:15 +00:00
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDOK:
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_G_EDIT), sz, 255);
|
|
|
|
|
g_qeglobals.d_savedinfo.fGamma = atof(sz);
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DoGamma(void)
|
|
|
|
|
{
|
|
|
|
|
if ( DialogBox(g_qeglobals.d_hInstance, (char *)IDD_GAMMA, g_pParentWnd->GetSafeHwnd(), GammaDlgProc))
|
|
|
|
|
{
|
|
|
|
|
}
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
2011-11-22 21:28:15 +00:00
|
|
|
|
|
|
|
|
|
//================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SelectBrush (int entitynum, int brushnum)
|
|
|
|
|
{
|
|
|
|
|
entity_t *e;
|
|
|
|
|
brush_t *b;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
if (entitynum == 0)
|
|
|
|
|
e = world_entity;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
e = entities.next;
|
|
|
|
|
while (--entitynum)
|
|
|
|
|
{
|
|
|
|
|
e=e->next;
|
|
|
|
|
if (e == &entities)
|
|
|
|
|
{
|
|
|
|
|
Sys_Status ("No such entity.", 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
b = e->brushes.onext;
|
|
|
|
|
if (b == &e->brushes)
|
|
|
|
|
{
|
|
|
|
|
Sys_Status ("No such brush.", 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
while (brushnum--)
|
|
|
|
|
{
|
|
|
|
|
b=b->onext;
|
|
|
|
|
if (b == &e->brushes)
|
|
|
|
|
{
|
|
|
|
|
Sys_Status ("No such brush.", 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Brush_RemoveFromList (b);
|
|
|
|
|
Brush_AddToList (b, &selected_brushes);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sys_UpdateWindows (W_ALL);
|
|
|
|
|
for (i=0 ; i<3 ; i++)
|
|
|
|
|
{
|
2011-12-06 18:20:15 +00:00
|
|
|
|
if (g_pParentWnd->GetXYWnd())
|
|
|
|
|
g_pParentWnd->GetXYWnd()->GetOrigin()[i] = (b->mins[i] + b->maxs[i])/2;
|
|
|
|
|
|
|
|
|
|
if (g_pParentWnd->GetXZWnd())
|
|
|
|
|
g_pParentWnd->GetXZWnd()->GetOrigin()[i] = (b->mins[i] + b->maxs[i])/2;
|
|
|
|
|
|
|
|
|
|
if (g_pParentWnd->GetYZWnd())
|
|
|
|
|
g_pParentWnd->GetYZWnd()->GetOrigin()[i] = (b->mins[i] + b->maxs[i])/2;
|
2011-11-22 21:28:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Sys_Status ("Selected.", 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
=================
|
|
|
|
|
GetSelectionIndex
|
|
|
|
|
=================
|
|
|
|
|
*/
|
|
|
|
|
void GetSelectionIndex (int *ent, int *brush)
|
|
|
|
|
{
|
|
|
|
|
brush_t *b, *b2;
|
|
|
|
|
entity_t *entity;
|
|
|
|
|
|
|
|
|
|
*ent = *brush = 0;
|
|
|
|
|
|
|
|
|
|
b = selected_brushes.next;
|
|
|
|
|
if (b == &selected_brushes)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// find entity
|
|
|
|
|
if (b->owner != world_entity)
|
|
|
|
|
{
|
|
|
|
|
(*ent)++;
|
2011-12-06 18:20:15 +00:00
|
|
|
|
for (entity = entities.next ; entity != &entities
|
2011-11-22 21:28:15 +00:00
|
|
|
|
; entity=entity->next, (*ent)++)
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// find brush
|
2011-12-06 18:20:15 +00:00
|
|
|
|
for (b2=b->owner->brushes.onext
|
2011-11-22 21:28:15 +00:00
|
|
|
|
; b2 != b && b2 != &b->owner->brushes
|
|
|
|
|
; b2=b2->onext, (*brush)++)
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CALLBACK FindBrushDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char entstr[256];
|
|
|
|
|
char brushstr[256];
|
|
|
|
|
HWND h;
|
|
|
|
|
int ent, brush;
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
// set entity and brush number
|
|
|
|
|
GetSelectionIndex (&ent, &brush);
|
|
|
|
|
sprintf (entstr, "%i", ent);
|
|
|
|
|
sprintf (brushstr, "%i", brush);
|
|
|
|
|
SetWindowText(GetDlgItem(hwndDlg, IDC_FIND_ENTITY), entstr);
|
|
|
|
|
SetWindowText(GetDlgItem(hwndDlg, IDC_FIND_BRUSH), brushstr);
|
|
|
|
|
|
|
|
|
|
h = GetDlgItem(hwndDlg, IDC_FIND_ENTITY);
|
|
|
|
|
SetFocus (h);
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
2011-12-06 18:20:15 +00:00
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDOK:
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_FIND_ENTITY), entstr, 255);
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_FIND_BRUSH), brushstr, 255);
|
|
|
|
|
SelectBrush (atoi(entstr), atoi(brushstr));
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
return TRUE;
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
2011-11-22 21:28:15 +00:00
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DoFind(void)
|
|
|
|
|
{
|
|
|
|
|
DialogBox(g_qeglobals.d_hInstance, (char *)IDD_FINDBRUSH, g_pParentWnd->GetSafeHwnd(), FindBrushDlgProc);
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
/*
|
|
|
|
|
===================================================
|
|
|
|
|
|
|
|
|
|
ARBITRARY ROTATE
|
|
|
|
|
|
|
|
|
|
===================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CALLBACK RotateDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char str[256];
|
|
|
|
|
HWND h;
|
|
|
|
|
float v;
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
h = GetDlgItem(hwndDlg, IDC_FIND_ENTITY);
|
|
|
|
|
SetFocus (h);
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
2011-12-06 18:20:15 +00:00
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDOK:
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_ROTX), str, 255);
|
|
|
|
|
v = atof(str);
|
|
|
|
|
if (v)
|
|
|
|
|
Select_RotateAxis (0, v);
|
|
|
|
|
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_ROTY), str, 255);
|
|
|
|
|
v = atof(str);
|
|
|
|
|
if (v)
|
|
|
|
|
Select_RotateAxis (1, v);
|
|
|
|
|
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_ROTZ), str, 255);
|
|
|
|
|
v = atof(str);
|
|
|
|
|
if (v)
|
|
|
|
|
Select_RotateAxis (2, v);
|
|
|
|
|
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
return TRUE;
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
2011-11-22 21:28:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DoRotate(void)
|
|
|
|
|
{
|
|
|
|
|
DialogBox(g_qeglobals.d_hInstance, (char *)IDD_ROTATE, g_pParentWnd->GetSafeHwnd(), RotateDlgProc);
|
|
|
|
|
}
|
2011-12-06 18:20:15 +00:00
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
/*
|
|
|
|
|
===================================================
|
|
|
|
|
|
|
|
|
|
ARBITRARY SIDES
|
|
|
|
|
|
|
|
|
|
===================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
bool g_bDoCone = false;
|
|
|
|
|
bool g_bDoSphere = false;
|
|
|
|
|
BOOL CALLBACK SidesDlgProc (
|
2011-12-06 18:20:15 +00:00
|
|
|
|
HWND hwndDlg, // handle to dialog box
|
|
|
|
|
UINT uMsg, // message
|
|
|
|
|
WPARAM wParam, // first message parameter
|
|
|
|
|
LPARAM lParam // second message parameter
|
2011-11-22 21:28:15 +00:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
char str[256];
|
|
|
|
|
HWND h;
|
|
|
|
|
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
h = GetDlgItem(hwndDlg, IDC_SIDES);
|
|
|
|
|
SetFocus (h);
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
2011-12-06 18:20:15 +00:00
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
switch (LOWORD(wParam)) {
|
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case IDOK:
|
|
|
|
|
GetWindowText(GetDlgItem(hwndDlg, IDC_SIDES), str, 255);
|
2011-12-06 18:20:15 +00:00
|
|
|
|
if (g_bDoCone)
|
2011-11-22 21:28:15 +00:00
|
|
|
|
Brush_MakeSidedCone(atoi(str));
|
2011-12-06 18:20:15 +00:00
|
|
|
|
else if (g_bDoSphere)
|
2011-11-22 21:28:15 +00:00
|
|
|
|
Brush_MakeSidedSphere(atoi(str));
|
2011-12-06 18:20:15 +00:00
|
|
|
|
else
|
2011-11-22 21:28:15 +00:00
|
|
|
|
Brush_MakeSided (atoi(str));
|
|
|
|
|
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
EndDialog(hwndDlg, 0);
|
|
|
|
|
break;
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
2011-11-22 21:28:15 +00:00
|
|
|
|
default:
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DoSides(bool bCone, bool bSphere, bool bTorus)
|
|
|
|
|
{
|
|
|
|
|
g_bDoCone = bCone;
|
|
|
|
|
g_bDoSphere = bSphere;
|
|
|
|
|
//g_bDoTorus = bTorus;
|
|
|
|
|
DialogBox(g_qeglobals.d_hInstance, (char *)IDD_SIDES, g_pParentWnd->GetSafeHwnd(), SidesDlgProc);
|
2011-12-06 18:20:15 +00:00
|
|
|
|
}
|
2011-11-22 21:28:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//======================================================================
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
===================
|
|
|
|
|
DoAbout
|
|
|
|
|
===================
|
|
|
|
|
*/
|
|
|
|
|
BOOL CALLBACK AboutDlgProc( HWND hwndDlg,
|
2011-12-06 18:20:15 +00:00
|
|
|
|
UINT uMsg,
|
|
|
|
|
WPARAM wParam,
|
|
|
|
|
LPARAM lParam )
|
2011-11-22 21:28:15 +00:00
|
|
|
|
{
|
|
|
|
|
switch (uMsg)
|
2011-12-06 18:20:15 +00:00
|
|
|
|
{
|
2011-11-22 21:28:15 +00:00
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
|
{
|
|
|
|
|
char buffer[1024];
|
|
|
|
|
idStr::snPrintf(buffer, 1024, "DOOM Radiant Build %d\nCopyright <20>1999-2004 Id Software, Inc.\n", BUILD_NUMBER);
|
|
|
|
|
// SetDlgItemText( hwndDlg, IDC_ABOUT_INFO, buffer);
|
|
|
|
|
|
|
|
|
|
idStr::snPrintf( buffer, 1024, "Renderer:\t%s", qglGetString( GL_RENDERER ) );
|
|
|
|
|
SetDlgItemText( hwndDlg, IDC_ABOUT_GLRENDERER, buffer );
|
|
|
|
|
|
|
|
|
|
idStr::snPrintf( buffer, 1024, "Version:\t\t%s", qglGetString( GL_VERSION ) );
|
|
|
|
|
SetDlgItemText( hwndDlg, IDC_ABOUT_GLVERSION, buffer );
|
|
|
|
|
|
|
|
|
|
idStr::snPrintf( buffer, 1024, "Vendor:\t\t%s", qglGetString( GL_VENDOR ) );
|
|
|
|
|
SetDlgItemText( hwndDlg, IDC_ABOUT_GLVENDOR, buffer);
|
|
|
|
|
|
|
|
|
|
char extensions[4096];
|
|
|
|
|
idStr::snPrintf( extensions, 4096, "%s", qglGetString( GL_EXTENSIONS ) );
|
|
|
|
|
HWND hWndExtensions = GetDlgItem( hwndDlg, IDC_ABOUT_GLEXTENSIONS );
|
|
|
|
|
|
|
|
|
|
char *start = extensions;
|
|
|
|
|
char *end;
|
|
|
|
|
do {
|
|
|
|
|
end = strchr(start, ' ');
|
|
|
|
|
if ( end ) {
|
|
|
|
|
*end = 0;
|
|
|
|
|
}
|
|
|
|
|
SendMessage( hWndExtensions, LB_ADDSTRING, 0, (LPARAM)start );
|
|
|
|
|
start = end + 1;
|
|
|
|
|
} while ( end );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case WM_CLOSE:
|
|
|
|
|
EndDialog( hwndDlg, 1 );
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
case WM_COMMAND:
|
|
|
|
|
if ( LOWORD( wParam ) == IDOK )
|
|
|
|
|
EndDialog(hwndDlg, 1);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DoAbout(void)
|
|
|
|
|
{
|
|
|
|
|
DialogBox( g_qeglobals.d_hInstance, ( char * ) IDD_ABOUT, g_pParentWnd->GetSafeHwnd(), AboutDlgProc );
|
|
|
|
|
}
|