00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "stdafx.h"
00026 #include "Radiant.h"
00027 #include "qe3.h"
00028 #include "ZWnd.h"
00029 #include "CamWnd.h"
00030 #include "TexWnd.h"
00031 #include "EditWnd.h"
00032 #include "entityw.h"
00033 #include "PrefsDlg.h"
00034 #include "MapInfo.h"
00035 #include "MainFrm.h"
00036 #include "RotateDlg.h"
00037 #include "EntityListDlg.h"
00038 #include "ScriptDlg.h"
00039 #include "NewProjDlg.h"
00040 #include "CommandsDlg.h"
00041 #include "ScaleDialog.h"
00042 #include "FindTextureDlg.h"
00043 #include "SurfaceDlg.h"
00044 #include "shlobj.h"
00045 #include "DialogTextures.h"
00046 #include "PatchDensityDlg.h"
00047 #include "DialogThick.h"
00048 #include "PatchDialog.h"
00049 #include "Undo.h"
00050 #include "NameDlg.h"
00051 #include "../libs/pakstuff.h"
00052 #include "splines/splines.h"
00053 #include "dlgcamera.h"
00054
00055 #ifdef _DEBUG
00056 #define new DEBUG_NEW
00057 #undef THIS_FILE
00058 static char THIS_FILE[] = __FILE__;
00059 #endif
00060
00061
00062
00063 CString g_strAppPath;
00064 CEdit* g_pEdit = NULL;
00065 CMainFrame* g_pParentWnd = NULL;
00066 CPrefsDlg g_Preferences;
00067 CPrefsDlg& g_PrefsDlg = g_Preferences;
00068 int g_nUpdateBits = 0;
00069 bool g_bScreenUpdates = true;
00070
00071
00072
00073
00074 CString g_strProject;
00075
00076
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 #define SPEED_MOVE 32
00092 #define SPEED_TURN 22.5
00093
00094
00095 SCommandInfo g_Commands[] =
00096 {
00097 {"ToggleOutlineDraw", 'J', 0x00, ID_SELECTION_NOOUTLINE},
00098 {"CSGMerge", 'U', 0x04, ID_SELECTION_CSGMERGE},
00099 {"CSGSubtract", 'U', 0x01, ID_SELECTION_CSGSUBTRACT},
00100 {"ViewGroups", 'G', 0x00, ID_VIEW_GROUPS},
00101 {"HideSelected", 'H', 0x00, ID_VIEW_HIDESHOW_HIDESELECTED},
00102 {"ShowHidden", 'H', 0x01, ID_VIEW_HIDESHOW_SHOWHIDDEN},
00103 {"BendMode", 'B', 0x00, ID_PATCH_BEND},
00104 {"FitFace", 'B', 0x04, ID_FITFACE},
00105 {"FitBrush", 'B', 0x01, ID_FITBRUSH},
00106 {"FreezePatchVertices", 'F', 0x00, ID_CURVE_FREEZE},
00107 {"UnFreezePatchVertices", 'F', 0x04, ID_CURVE_UNFREEZE},
00108 {"UnFreezeAllPatchVertices", 'F', 0x05, ID_CURVE_UNFREEZEALL},
00109 {"ViewTextures", 'T', 0, ID_VIEW_TEXTURE},
00110 {"ThickenPatch", 'T', 0x04, ID_CURVE_THICKEN},
00111 {"MakeOverlayPatch", 'Y', 0, ID_CURVE_OVERLAY_SET},
00112 {"ClearPatchOverlays", 'Y', 0x02, ID_CURVE_OVERLAY_CLEAR},
00113 {"SurfaceInspector", 'S', 0, ID_TEXTURES_INSPECTOR},
00114 {"PatchInspector", 'S', 0x01, ID_PATCH_INSPECTOR},
00115 {"ToggleShowPatches", 'P', 0x05, ID_CURVE_CYCLECAP},
00116 {"ToggleShowPatches", 'P', 0x04, ID_VIEW_SHOWCURVES},
00117 {"RedisperseRows", 'E', 0x04, ID_CURVE_REDISPERSE_ROWS},
00118 {"RedisperseCols", 'E', 0x05, ID_CURVE_REDISPERSE_COLS},
00119 {"InvertCurveTextureX", 'I', 0x05, ID_CURVE_NEGATIVETEXTUREY},
00120 {"InvertCurveTextureY", 'I', 0x01, ID_CURVE_NEGATIVETEXTUREX},
00121 {"InvertCurve", 'I', 0x04, ID_CURVE_NEGATIVE},
00122 {"IncPatchColumn", VK_ADD, 0x05, ID_CURVE_INSERTCOLUMN},
00123 {"IncPatchRow", VK_ADD, 0x04, ID_CURVE_INSERTROW},
00124 {"DecPatchColumn", VK_SUBTRACT, 0x05, ID_CURVE_DELETECOLUMN},
00125 {"DecPatchRow", VK_SUBTRACT, 0x04, ID_CURVE_DELETEROW},
00126 {"Patch TAB", VK_TAB, 0x00, ID_PATCH_TAB},
00127 {"Patch TAB", VK_TAB, 0x01, ID_PATCH_TAB},
00128 {"SelectNudgeDown", VK_DOWN, 0x02, ID_SELECTION_SELECT_NUDGEDOWN},
00129 {"EntityColor",'K', 0, ID_MISC_SELECTENTITYCOLOR},
00130 {"CameraForward", VK_UP, 0, ID_CAMERA_FORWARD},
00131 {"CameraBack", VK_DOWN, 0, ID_CAMERA_BACK},
00132 {"CameraLeft", VK_LEFT, 0, ID_CAMERA_LEFT},
00133 {"CameraRight", VK_RIGHT, 0, ID_CAMERA_RIGHT},
00134 {"CameraUp", 'D', 0, ID_CAMERA_UP},
00135 {"CameraDown", 'C', 0, ID_CAMERA_DOWN},
00136 {"CameraAngleUp", 'A', 0, ID_CAMERA_ANGLEUP},
00137 {"CameraAngleDown", 'Z', 0, ID_CAMERA_ANGLEDOWN},
00138 {"CameraStrafeRight", VK_PERIOD, 0, ID_CAMERA_STRAFERIGHT},
00139 {"CameraStrafeLeft", VK_COMMA, 0, ID_CAMERA_STRAFELEFT},
00140 {"ToggleGrid", '0', 0, ID_GRID_TOGGLE},
00141 {"SetGrid1", '1', 0, ID_GRID_1},
00142 {"SetGrid2", '2', 0, ID_GRID_2},
00143 {"SetGrid4", '3', 0, ID_GRID_4},
00144 {"SetGrid8", '4', 0, ID_GRID_8},
00145 {"SetGrid16", '5', 0, ID_GRID_16},
00146 {"SetGrid32", '6', 0, ID_GRID_32},
00147 {"SetGrid64", '7', 0, ID_GRID_64},
00148 {"DragEdges", 'E', 0, ID_SELECTION_DRAGEDGES},
00149 {"DragVertices", 'V', 0, ID_SELECTION_DRAGVERTECIES},
00150 {"ViewEntityInfo", 'N', 0, ID_VIEW_ENTITY},
00151 {"ViewConsole", 'O', 0, ID_VIEW_CONSOLE},
00152 {"CloneSelection", VK_SPACE, 0, ID_SELECTION_CLONE},
00153 {"DeleteSelection", VK_BACK, 0, ID_SELECTION_DELETE},
00154 {"UnSelectSelection", VK_ESCAPE, 0, ID_SELECTION_DESELECT},
00155 {"CenterView", VK_END, 0, ID_VIEW_CENTER},
00156 {"ZoomOut", VK_INSERT, 0, ID_VIEW_ZOOMOUT},
00157 {"ZoomIn", VK_DELETE, 0, ID_VIEW_ZOOMIN},
00158 {"UpFloor", VK_PRIOR, 0, ID_VIEW_UPFLOOR},
00159 {"DownFloor", VK_NEXT, 0, ID_VIEW_DOWNFLOOR},
00160 {"ToggleClipper", 'X', 0, ID_VIEW_CLIPPER},
00161 {"ToggleCrosshairs", 'X', 0x01, ID_VIEW_CROSSHAIR},
00162 {"TogTexLock", 'T', 0x01, ID_TOGGLE_LOCK},
00163 {"TogTexRotLock", 'R', 0x01, ID_TOGGLE_ROTATELOCK},
00164 {"ToggleRealtime", 'R', 0x04, ID_VIEW_CAMERAUPDATE},
00165 {"RaiseLowerTerrain", 'T', 0x06, ID_TERRAIN_RAISELOWERTERRAIN},
00166 {"EntityList", 'L', 0, ID_EDIT_ENTITYINFO},
00167 {"Preferences", 'P', 0, ID_PREFS},
00168 {"ToggleCamera", 'C', 0x05, ID_TOGGLECAMERA},
00169 {"ToggleConsole", 'O', 0, ID_TOGGLECONSOLE},
00170 {"ToggleView", 'V', 0x05, ID_TOGGLEVIEW},
00171 {"ToggleZ", 'Z', 0x05, ID_TOGGLEZ},
00172 {"ConnectSelection", 'K', 0x04, ID_SELECTION_CONNECT},
00173 {"Brush3Sided", '3', 0x04, ID_BRUSH_3SIDED},
00174 {"Brush4Sided", '4', 0x04, ID_BRUSH_4SIDED},
00175 {"Brush5Sided", '5', 0x04, ID_BRUSH_5SIDED},
00176 {"Brush6Sided", '6', 0x04, ID_BRUSH_6SIDED},
00177 {"Brush7Sided", '7', 0x04, ID_BRUSH_7SIDED},
00178 {"Brush8Sided", '8', 0x04, ID_BRUSH_8SIDED},
00179 {"Brush9Sided", '9', 0x04, ID_BRUSH_9SIDED},
00180 {"ShowDetail", 'D', 0x04, ID_VIEW_SHOWDETAIL},
00181 {"MakeDetail", 'M', 0x05, ID_CURVE_MATRIX_TRANSPOSE},
00182 {"MakeDetail", 'M', 0x04, ID_SELECTION_MAKE_DETAIL},
00183 {"MapInfo", 'M', 0, ID_EDIT_MAPINFO},
00184 {"NextLeakSpot", 'K', 0x05, ID_MISC_NEXTLEAKSPOT},
00185 {"PrevLeakSpot", 'L', 0x05, ID_MISC_PREVIOUSLEAKSPOT},
00186 {"FileOpen", 'O', 0x04, ID_FILE_OPEN},
00187 {"FileSave", 'S', 0x04, ID_FILE_SAVE},
00188 {"Exit", 'X', 0x04, ID_FILE_EXIT},
00189 {"NextView", VK_TAB, 0x04, ID_VIEW_NEXTVIEW},
00190 {"ClipSelected", VK_RETURN, 0x00, ID_CLIP_SELECTED},
00191 {"SplitSelected", VK_RETURN, 0x01, ID_SPLIT_SELECTED},
00192 {"FlipClip", VK_RETURN, 0x04, ID_FLIP_CLIP},
00193 {"MouseRotate", 'R', 0x00, ID_SELECT_MOUSEROTATE},
00194 {"Copy", 'C', 0x04, ID_EDIT_COPYBRUSH},
00195 {"Paste", 'V', 0x04, ID_EDIT_PASTEBRUSH},
00196 {"Undo", 'Z', 0x04, ID_EDIT_UNDO},
00197 {"Redo", 'Y', 0x04, ID_EDIT_REDO},
00198 {"ZZoomOut", VK_INSERT, 0x04, ID_VIEW_ZZOOMOUT},
00199 {"ZZoomIn", VK_DELETE, 0x04, ID_VIEW_ZZOOMIN},
00200 {"TexDecrement", VK_SUBTRACT, 0x01, ID_SELECTION_TEXTURE_DEC},
00201 {"TexIncrement", VK_ADD, 0x01, ID_SELECTION_TEXTURE_INC},
00202 {"TextureFit", '5', 0x01, ID_SELECTION_TEXTURE_FIT},
00203 {"TexRotateClock", VK_NEXT, 0x01, ID_SELECTION_TEXTURE_ROTATECLOCK},
00204 {"TexRotateCounter", VK_PRIOR, 0x01, ID_SELECTION_TEXTURE_ROTATECOUNTER},
00205 {"TexScaleUp", VK_UP, 0x04, ID_SELECTION_TEXTURE_SCALEUP},
00206 {"TexScaleDown", VK_DOWN, 0x04, ID_SELECTION_TEXTURE_SCALEDOWN},
00207 {"TexShiftLeft", VK_LEFT, 0x01, ID_SELECTION_TEXTURE_SHIFTLEFT},
00208 {"TexShiftRight", VK_RIGHT, 0x01, ID_SELECTION_TEXTURE_SHIFTRIGHT},
00209 {"TexShiftUp", VK_UP, 0x01, ID_SELECTION_TEXTURE_SHIFTUP},
00210 {"TexShiftDown", VK_DOWN, 0x01, ID_SELECTION_TEXTURE_SHIFTDOWN},
00211 {"GridDown", 219, 0x00, ID_GRID_PREV},
00212 {"GridUp", 221, 0x00, ID_GRID_NEXT},
00213 {"TexScaleLeft", VK_LEFT, 0x04, ID_SELECTION_TEXTURE_SCALELEFT},
00214 {"TexScaleRight", VK_RIGHT, 0x04, ID_SELECTION_TEXTURE_SCALERIGHT},
00215 {"CubicClipZoomOut", 219, 0x04, ID_VIEW_CUBEOUT},
00216 {"CubicClipZoomIn", 221, 0x04, ID_VIEW_CUBEIN},
00217 {"ToggleCubicClip", 220, 0x04, ID_VIEW_CUBICCLIPPING},
00218
00219 {"MoveSelectionDOWN", VK_SUBTRACT, 0x00, ID_SELECTION_MOVEDOWN},
00220 {"MoveSelectionUP", VK_ADD, 0x00, ID_SELECTION_MOVEUP},
00221 {"DumpSelectedBrush", 'D', 0x01, ID_SELECTION_PRINT},
00222 {"ToggleSizePaint", 'Q', 0x08, ID_SELECTION_TOGGLESIZEPAINT},
00223 {"SelectNudgeLeft", VK_LEFT, 0x02, ID_SELECTION_SELECT_NUDGELEFT},
00224 {"SelectNudgeRight", VK_RIGHT, 0x02, ID_SELECTION_SELECT_NUDGERIGHT},
00225 {"SelectNudgeUp", VK_UP, 0x02, ID_SELECTION_SELECT_NUDGEUP},
00226 {"CycleCapTexturePatch", 'N', 0x05, ID_CURVE_CYCLECAP},
00227 {"NaturalizePatch", 'N', 0x04, ID_PATCH_NATURALIZE},
00228 {"SnapPatchToGrid", 'G', 0x04, ID_SELECT_SNAPTOGRID},
00229 {"ShowAllTextures", 'A', 0x04, ID_TEXTURES_SHOWALL},
00230 {"SelectAllOfType", 'A', 0x01, ID_SELECT_ALL},
00231 {"CapCurrentCurve", 'C', 0x01, ID_CURVE_CAP},
00232 {"MakeStructural", 'S', 0x05, ID_SELECTION_MAKE_STRUCTURAL}
00233
00234 };
00235
00236 int g_nCommandCount = sizeof(g_Commands) / sizeof(SCommandInfo);
00237
00238 SKeyInfo g_Keys[] =
00239 {
00240 {"Space", VK_SPACE},
00241 {"Backspace", VK_BACK},
00242 {"Escape", VK_ESCAPE},
00243 {"End", VK_END},
00244 {"Insert", VK_INSERT},
00245 {"Delete", VK_DELETE},
00246 {"PageUp", VK_PRIOR},
00247 {"PageDown", VK_NEXT},
00248 {"Up", VK_UP},
00249 {"Down", VK_DOWN},
00250 {"Left", VK_LEFT},
00251 {"Right", VK_RIGHT},
00252 {"F1", VK_F1},
00253 {"F2", VK_F2},
00254 {"F3", VK_F3},
00255 {"F4", VK_F4},
00256 {"F5", VK_F5},
00257 {"F6", VK_F6},
00258 {"F7", VK_F7},
00259 {"F8", VK_F8},
00260 {"F9", VK_F9},
00261 {"F10", VK_F10},
00262 {"F11", VK_F11},
00263 {"F12", VK_F12},
00264 {"Tab", VK_TAB},
00265 {"Return", VK_RETURN},
00266 {"Comma", VK_COMMA},
00267 {"Period", VK_PERIOD},
00268 {"Plus", VK_ADD},
00269 {"Multiply", VK_MULTIPLY},
00270 {"Subtract", VK_SUBTRACT},
00271 {"NumPad0", VK_NUMPAD0},
00272 {"NumPad1", VK_NUMPAD1},
00273 {"NumPad2", VK_NUMPAD2},
00274 {"NumPad3", VK_NUMPAD3},
00275 {"NumPad4", VK_NUMPAD4},
00276 {"NumPad5", VK_NUMPAD5},
00277 {"NumPad6", VK_NUMPAD6},
00278 {"NumPad7", VK_NUMPAD7},
00279 {"NumPad8", VK_NUMPAD8},
00280 {"NumPad9", VK_NUMPAD9},
00281 {"[", 219},
00282 {"]", 221},
00283 {"\\", 220}
00284 };
00285
00286 int g_nKeyCount = sizeof(g_Keys) / sizeof(SKeyInfo);
00287
00288 const int CMD_TEXTUREWAD_END = CMD_TEXTUREWAD + 127;
00289 const int CMD_BSPCOMMAND_END = CMD_BSPCOMMAND + 127;
00290 const int IDMRU_END = IDMRU+9;
00291
00292 const int g_msgBSPDone = RegisterWindowMessage("_BSPDone");
00293 const int g_msgBSPStatus = RegisterWindowMessage("_BSPStatus");
00294
00295 IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
00296
00297 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
00298
00299 ON_WM_PARENTNOTIFY()
00300 ON_WM_CREATE()
00301 ON_WM_TIMER()
00302 ON_WM_DESTROY()
00303 ON_WM_CLOSE()
00304 ON_WM_KEYDOWN()
00305 ON_WM_SIZE()
00306 ON_COMMAND(ID_VIEW_CAMERATOGGLE, ToggleCamera)
00307 ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
00308 ON_COMMAND(ID_FILE_EXIT, OnFileExit)
00309 ON_COMMAND(ID_FILE_LOADPROJECT, OnFileLoadproject)
00310 ON_COMMAND(ID_FILE_NEW, OnFileNew)
00311 ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
00312 ON_COMMAND(ID_FILE_POINTFILE, OnFilePointfile)
00313 ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
00314 ON_COMMAND(ID_FILE_PRINT_PREVIEW, OnFilePrintPreview)
00315 ON_COMMAND(ID_FILE_SAVE, OnFileSave)
00316 ON_COMMAND(ID_FILE_SAVEAS, OnFileSaveas)
00317 ON_COMMAND(ID_VIEW_100, OnView100)
00318 ON_COMMAND(ID_VIEW_CENTER, OnViewCenter)
00319 ON_COMMAND(ID_VIEW_CONSOLE, OnViewConsole)
00320 ON_COMMAND(ID_VIEW_DOWNFLOOR, OnViewDownfloor)
00321 ON_COMMAND(ID_VIEW_ENTITY, OnViewEntity)
00322 ON_COMMAND(ID_VIEW_FRONT, OnViewFront)
00323 ON_COMMAND(ID_VIEW_SHOWBLOCKS, OnViewShowblocks)
00324 ON_COMMAND(ID_VIEW_SHOWCLIP, OnViewShowclip)
00325 ON_COMMAND(ID_VIEW_SHOWCOORDINATES, OnViewShowcoordinates)
00326 ON_COMMAND(ID_VIEW_SHOWDETAIL, OnViewShowdetail)
00327 ON_COMMAND(ID_VIEW_SHOWENT, OnViewShowent)
00328 ON_COMMAND(ID_VIEW_SHOWLIGHTS, OnViewShowlights)
00329 ON_COMMAND(ID_VIEW_SHOWNAMES, OnViewShownames)
00330 ON_COMMAND(ID_VIEW_SHOWPATH, OnViewShowpath)
00331 ON_COMMAND(ID_VIEW_SHOWWATER, OnViewShowwater)
00332 ON_COMMAND(ID_VIEW_SHOWWORLD, OnViewShowworld)
00333 ON_COMMAND(ID_VIEW_TEXTURE, OnViewTexture)
00334 ON_COMMAND(ID_VIEW_UPFLOOR, OnViewUpfloor)
00335 ON_COMMAND(ID_VIEW_XY, OnViewXy)
00336 ON_COMMAND(ID_VIEW_Z100, OnViewZ100)
00337 ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
00338 ON_COMMAND(ID_VIEW_ZOOMOUT, OnViewZoomout)
00339 ON_COMMAND(ID_VIEW_ZZOOMIN, OnViewZzoomin)
00340 ON_COMMAND(ID_VIEW_ZZOOMOUT, OnViewZzoomout)
00341 ON_COMMAND(ID_VIEW_SIDE, OnViewSide)
00342 ON_COMMAND(ID_TEXTURES_SHOWINUSE, OnTexturesShowinuse)
00343 ON_COMMAND(ID_TEXTURES_INSPECTOR, OnTexturesInspector)
00344 ON_COMMAND(ID_MISC_BENCHMARK, OnMiscBenchmark)
00345 ON_COMMAND(ID_MISC_FINDBRUSH, OnMiscFindbrush)
00346 ON_COMMAND(ID_MISC_GAMMA, OnMiscGamma)
00347 ON_COMMAND(ID_MISC_NEXTLEAKSPOT, OnMiscNextleakspot)
00348 ON_COMMAND(ID_MISC_PREVIOUSLEAKSPOT, OnMiscPreviousleakspot)
00349 ON_COMMAND(ID_MISC_PRINTXY, OnMiscPrintxy)
00350 ON_COMMAND(ID_MISC_SELECTENTITYCOLOR, OnMiscSelectentitycolor)
00351 ON_COMMAND(ID_TEXTUREBK, OnTexturebk)
00352 ON_COMMAND(ID_COLORS_MAJOR, OnColorsMajor)
00353 ON_COMMAND(ID_COLORS_MINOR, OnColorsMinor)
00354 ON_COMMAND(ID_COLORS_XYBK, OnColorsXybk)
00355 ON_COMMAND(ID_BRUSH_3SIDED, OnBrush3sided)
00356 ON_COMMAND(ID_BRUSH_4SIDED, OnBrush4sided)
00357 ON_COMMAND(ID_BRUSH_5SIDED, OnBrush5sided)
00358 ON_COMMAND(ID_BRUSH_6SIDED, OnBrush6sided)
00359 ON_COMMAND(ID_BRUSH_7SIDED, OnBrush7sided)
00360 ON_COMMAND(ID_BRUSH_8SIDED, OnBrush8sided)
00361 ON_COMMAND(ID_BRUSH_9SIDED, OnBrush9sided)
00362 ON_COMMAND(ID_BRUSH_ARBITRARYSIDED, OnBrushArbitrarysided)
00363 ON_COMMAND(ID_BRUSH_FLIPX, OnBrushFlipx)
00364 ON_COMMAND(ID_BRUSH_FLIPY, OnBrushFlipy)
00365 ON_COMMAND(ID_BRUSH_FLIPZ, OnBrushFlipz)
00366 ON_COMMAND(ID_BRUSH_ROTATEX, OnBrushRotatex)
00367 ON_COMMAND(ID_BRUSH_ROTATEY, OnBrushRotatey)
00368 ON_COMMAND(ID_BRUSH_ROTATEZ, OnBrushRotatez)
00369 ON_COMMAND(ID_REGION_OFF, OnRegionOff)
00370 ON_COMMAND(ID_REGION_SETBRUSH, OnRegionSetbrush)
00371 ON_COMMAND(ID_REGION_SETSELECTION, OnRegionSetselection)
00372 ON_COMMAND(ID_REGION_SETTALLBRUSH, OnRegionSettallbrush)
00373 ON_COMMAND(ID_REGION_SETXY, OnRegionSetxy)
00374 ON_COMMAND(ID_SELECTION_ARBITRARYROTATION, OnSelectionArbitraryrotation)
00375 ON_COMMAND(ID_SELECTION_CLONE, OnSelectionClone)
00376 ON_COMMAND(ID_SELECTION_CONNECT, OnSelectionConnect)
00377 ON_COMMAND(ID_SELECTION_CSGSUBTRACT, OnSelectionCsgsubtract)
00378 ON_COMMAND(ID_SELECTION_CSGMERGE, OnSelectionCsgmerge)
00379 ON_COMMAND(ID_SELECTION_NOOUTLINE, OnSelectionNoOutline)
00380 ON_COMMAND(ID_SELECTION_DELETE, OnSelectionDelete)
00381 ON_COMMAND(ID_SELECTION_DESELECT, OnSelectionDeselect)
00382 ON_COMMAND(ID_SELECTION_DRAGEDGES, OnSelectionDragedges)
00383 ON_COMMAND(ID_SELECTION_DRAGVERTECIES, OnSelectionDragvertecies)
00384 ON_COMMAND(ID_SELECTION_MAKE_DETAIL, OnSelectionMakeDetail)
00385 ON_COMMAND(ID_SELECTION_MAKE_STRUCTURAL, OnSelectionMakeStructural)
00386 ON_COMMAND(ID_SELECTION_MAKEHOLLOW, OnSelectionMakehollow)
00387 ON_COMMAND(ID_SELECTION_SELECTCOMPLETETALL, OnSelectionSelectcompletetall)
00388 ON_COMMAND(ID_SELECTION_SELECTINSIDE, OnSelectionSelectinside)
00389 ON_COMMAND(ID_SELECTION_SELECTPARTIALTALL, OnSelectionSelectpartialtall)
00390 ON_COMMAND(ID_SELECTION_SELECTTOUCHING, OnSelectionSelecttouching)
00391 ON_COMMAND(ID_SELECTION_UNGROUPENTITY, OnSelectionUngroupentity)
00392 ON_COMMAND(ID_TEXTURES_POPUP, OnTexturesPopup)
00393 ON_COMMAND(ID_SPLINES_POPUP, OnSplinesPopup)
00394 ON_COMMAND(ID_POPUP_SELECTION, OnPopupSelection)
00395 ON_COMMAND(ID_VIEW_CHANGE, OnViewChange)
00396 ON_COMMAND(ID_VIEW_CAMERAUPDATE, OnViewCameraupdate)
00397 ON_COMMAND(ID_TERRAIN_RAISELOWERTERRAIN, OnRaiseLowerTerrain)
00398 ON_UPDATE_COMMAND_UI(ID_VIEW_CAMERAUPDATE, OnUpdateViewCameraupdate)
00399 ON_WM_SIZING()
00400 ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
00401 ON_COMMAND(ID_VIEW_CLIPPER, OnViewClipper)
00402 ON_COMMAND(ID_CAMERA_ANGLEDOWN, OnCameraAngledown)
00403 ON_COMMAND(ID_CAMERA_ANGLEUP, OnCameraAngleup)
00404 ON_COMMAND(ID_CAMERA_BACK, OnCameraBack)
00405 ON_COMMAND(ID_CAMERA_DOWN, OnCameraDown)
00406 ON_COMMAND(ID_CAMERA_FORWARD, OnCameraForward)
00407 ON_COMMAND(ID_CAMERA_LEFT, OnCameraLeft)
00408 ON_COMMAND(ID_CAMERA_RIGHT, OnCameraRight)
00409 ON_COMMAND(ID_CAMERA_STRAFELEFT, OnCameraStrafeleft)
00410 ON_COMMAND(ID_CAMERA_STRAFERIGHT, OnCameraStraferight)
00411 ON_COMMAND(ID_CAMERA_UP, OnCameraUp)
00412 ON_COMMAND(ID_GRID_TOGGLE, OnGridToggle)
00413 ON_COMMAND(ID_PREFS, OnPrefs)
00414 ON_COMMAND(ID_TOGGLECAMERA, OnTogglecamera)
00415 ON_COMMAND(ID_TOGGLECONSOLE, OnToggleconsole)
00416 ON_COMMAND(ID_TOGGLEVIEW, OnToggleview)
00417 ON_COMMAND(ID_TOGGLEZ, OnTogglez)
00418 ON_COMMAND(ID_TOGGLE_LOCK, OnToggleLock)
00419 ON_COMMAND(ID_EDIT_MAPINFO, OnEditMapinfo)
00420 ON_COMMAND(ID_EDIT_ENTITYINFO, OnEditEntityinfo)
00421 ON_COMMAND(ID_BRUSH_SCRIPTS, OnBrushScripts)
00422 ON_COMMAND(ID_VIEW_NEXTVIEW, OnViewNextview)
00423 ON_COMMAND(ID_HELP_COMMANDLIST, OnHelpCommandlist)
00424 ON_COMMAND(ID_FILE_NEWPROJECT, OnFileNewproject)
00425 ON_COMMAND(ID_FLIP_CLIP, OnFlipClip)
00426 ON_COMMAND(ID_CLIP_SELECTED, OnClipSelected)
00427 ON_COMMAND(ID_SPLIT_SELECTED, OnSplitSelected)
00428 ON_COMMAND(ID_TOGGLEVIEW_XZ, OnToggleviewXz)
00429 ON_COMMAND(ID_TOGGLEVIEW_YZ, OnToggleviewYz)
00430 ON_COMMAND(ID_COLORS_BRUSH, OnColorsBrush)
00431 ON_COMMAND(ID_COLORS_CLIPPER, OnColorsClipper)
00432 ON_COMMAND(ID_COLORS_GRIDTEXT, OnColorsGridtext)
00433 ON_COMMAND(ID_COLORS_SELECTEDBRUSH, OnColorsSelectedbrush)
00434 ON_COMMAND(ID_COLORS_GRIDBLOCK, OnColorsGridblock)
00435 ON_COMMAND(ID_COLORS_VIEWNAME, OnColorsViewname)
00436 ON_COMMAND(ID_COLOR_SETORIGINAL, OnColorSetoriginal)
00437 ON_COMMAND(ID_COLOR_SETQER, OnColorSetqer)
00438 ON_COMMAND(ID_COLOR_SETBLACK, OnColorSetblack)
00439 ON_COMMAND(ID_SNAPTOGRID, OnSnaptogrid)
00440 ON_COMMAND(ID_SELECT_SCALE, OnSelectScale)
00441 ON_COMMAND(ID_SELECT_MOUSEROTATE, OnSelectMouserotate)
00442 ON_COMMAND(ID_EDIT_COPYBRUSH, OnEditCopybrush)
00443 ON_COMMAND(ID_EDIT_PASTEBRUSH, OnEditPastebrush)
00444 ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
00445 ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
00446 ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
00447 ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
00448 ON_COMMAND(ID_SELECTION_INVERT, OnSelectionInvert)
00449 ON_COMMAND(ID_SELECTION_TEXTURE_DEC, OnSelectionTextureDec)
00450 ON_COMMAND(ID_SELECTION_TEXTURE_FIT, OnSelectionTextureFit)
00451 ON_COMMAND(ID_SELECTION_TEXTURE_INC, OnSelectionTextureInc)
00452 ON_COMMAND(ID_SELECTION_TEXTURE_ROTATECLOCK, OnSelectionTextureRotateclock)
00453 ON_COMMAND(ID_SELECTION_TEXTURE_ROTATECOUNTER, OnSelectionTextureRotatecounter)
00454 ON_COMMAND(ID_SELECTION_TEXTURE_SCALEDOWN, OnSelectionTextureScaledown)
00455 ON_COMMAND(ID_SELECTION_TEXTURE_SCALEUP, OnSelectionTextureScaleup)
00456 ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTDOWN, OnSelectionTextureShiftdown)
00457 ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTLEFT, OnSelectionTextureShiftleft)
00458 ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTRIGHT, OnSelectionTextureShiftright)
00459 ON_COMMAND(ID_SELECTION_TEXTURE_SHIFTUP, OnSelectionTextureShiftup)
00460 ON_COMMAND(ID_GRID_NEXT, OnGridNext)
00461 ON_COMMAND(ID_GRID_PREV, OnGridPrev)
00462 ON_COMMAND(ID_SELECTION_TEXTURE_SCALELEFT, OnSelectionTextureScaleLeft)
00463 ON_COMMAND(ID_SELECTION_TEXTURE_SCALERIGHT, OnSelectionTextureScaleRight)
00464 ON_COMMAND(ID_TEXTURE_REPLACEALL, OnTextureReplaceall)
00465 ON_COMMAND(ID_SCALELOCKX, OnScalelockx)
00466 ON_COMMAND(ID_SCALELOCKY, OnScalelocky)
00467 ON_COMMAND(ID_SCALELOCKZ, OnScalelockz)
00468 ON_COMMAND(ID_SELECT_MOUSESCALE, OnSelectMousescale)
00469 ON_COMMAND(ID_VIEW_CUBICCLIPPING, OnViewCubicclipping)
00470 ON_COMMAND(ID_FILE_IMPORT, OnFileImport)
00471 ON_COMMAND(ID_FILE_PROJECTSETTINGS, OnFileProjectsettings)
00472 ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT, OnUpdateFileImport)
00473 ON_COMMAND(ID_VIEW_CUBEIN, OnViewCubein)
00474 ON_COMMAND(ID_VIEW_CUBEOUT, OnViewCubeout)
00475 ON_COMMAND(ID_FILE_SAVEREGION, OnFileSaveregion)
00476 ON_UPDATE_COMMAND_UI(ID_FILE_SAVEREGION, OnUpdateFileSaveregion)
00477 ON_COMMAND(ID_SELECTION_MOVEDOWN, OnSelectionMovedown)
00478 ON_COMMAND(ID_SELECTION_MOVEUP, OnSelectionMoveup)
00479 ON_COMMAND(ID_TOOLBAR_MAIN, OnToolbarMain)
00480 ON_COMMAND(ID_TOOLBAR_TEXTURE, OnToolbarTexture)
00481 ON_COMMAND(ID_SELECTION_PRINT, OnSelectionPrint)
00482 ON_COMMAND(ID_SELECTION_TOGGLESIZEPAINT, OnSelectionTogglesizepaint)
00483 ON_COMMAND(ID_BRUSH_MAKECONE, OnBrushMakecone)
00484 ON_COMMAND(ID_TEXTURES_LOAD, OnTexturesLoad)
00485 ON_COMMAND(ID_TOGGLE_ROTATELOCK, OnToggleRotatelock)
00486 ON_COMMAND(ID_CURVE_BEVEL, OnCurveBevel)
00487 ON_COMMAND(ID_CURVE_CYLINDER, OnCurveCylinder)
00488 ON_COMMAND(ID_CURVE_EIGHTHSPHERE, OnCurveEighthsphere)
00489 ON_COMMAND(ID_CURVE_ENDCAP, OnCurveEndcap)
00490 ON_COMMAND(ID_CURVE_HEMISPHERE, OnCurveHemisphere)
00491 ON_COMMAND(ID_CURVE_INVERTCURVE, OnCurveInvertcurve)
00492 ON_COMMAND(ID_CURVE_QUARTER, OnCurveQuarter)
00493 ON_COMMAND(ID_CURVE_SPHERE, OnCurveSphere)
00494 ON_COMMAND(ID_FILE_IMPORTMAP, OnFileImportmap)
00495 ON_COMMAND(ID_FILE_EXPORTMAP, OnFileExportmap)
00496 ON_COMMAND(ID_EDIT_LOADPREFAB, OnEditLoadprefab)
00497 ON_COMMAND(ID_VIEW_SHOWCURVES, OnViewShowcurves)
00498 ON_COMMAND(ID_SELECTION_SELECT_NUDGEDOWN, OnSelectionSelectNudgedown)
00499 ON_COMMAND(ID_SELECTION_SELECT_NUDGELEFT, OnSelectionSelectNudgeleft)
00500 ON_COMMAND(ID_SELECTION_SELECT_NUDGERIGHT, OnSelectionSelectNudgeright)
00501 ON_COMMAND(ID_SELECTION_SELECT_NUDGEUP, OnSelectionSelectNudgeup)
00502 ON_WM_SYSKEYDOWN()
00503 ON_COMMAND(ID_TEXTURES_LOADLIST, OnTexturesLoadlist)
00504 ON_COMMAND(ID_DONTSELECTCURVE, OnDontselectcurve)
00505 ON_COMMAND(ID_CONVERTCURVES, OnConvertcurves)
00506 ON_COMMAND(ID_DYNAMIC_LIGHTING, OnDynamicLighting)
00507 ON_COMMAND(ID_CURVE_SIMPLEPATCHMESH, OnCurveSimplepatchmesh)
00508 ON_COMMAND(ID_PATCH_SHOWBOUNDINGBOX, OnPatchToggleBox)
00509 ON_COMMAND(ID_PATCH_WIREFRAME, OnPatchWireframe)
00510 ON_COMMAND(ID_CURVE_PATCHCONE, OnCurvePatchcone)
00511 ON_COMMAND(ID_CURVE_PATCHTUBE, OnCurvePatchtube)
00512 ON_COMMAND(ID_PATCH_WELD, OnPatchWeld)
00513 ON_COMMAND(ID_CURVE_PATCHBEVEL, OnCurvePatchbevel)
00514 ON_COMMAND(ID_CURVE_PATCHENDCAP, OnCurvePatchendcap)
00515 ON_COMMAND(ID_CURVE_PATCHINVERTEDBEVEL, OnCurvePatchinvertedbevel)
00516 ON_COMMAND(ID_CURVE_PATCHINVERTEDENDCAP, OnCurvePatchinvertedendcap)
00517 ON_COMMAND(ID_PATCH_DRILLDOWN, OnPatchDrilldown)
00518 ON_COMMAND(ID_CURVE_INSERTCOLUMN, OnCurveInsertcolumn)
00519 ON_COMMAND(ID_CURVE_INSERTROW, OnCurveInsertrow)
00520 ON_COMMAND(ID_CURVE_DELETECOLUMN, OnCurveDeletecolumn)
00521 ON_COMMAND(ID_CURVE_DELETEROW, OnCurveDeleterow)
00522 ON_COMMAND(ID_CURVE_INSERT_ADDCOLUMN, OnCurveInsertAddcolumn)
00523 ON_COMMAND(ID_CURVE_INSERT_ADDROW, OnCurveInsertAddrow)
00524 ON_COMMAND(ID_CURVE_INSERT_INSERTCOLUMN, OnCurveInsertInsertcolumn)
00525 ON_COMMAND(ID_CURVE_INSERT_INSERTROW, OnCurveInsertInsertrow)
00526 ON_COMMAND(ID_CURVE_NEGATIVE, OnCurveNegative)
00527 ON_COMMAND(ID_CURVE_NEGATIVETEXTUREX, OnCurveNegativeTextureX)
00528 ON_COMMAND(ID_CURVE_NEGATIVETEXTUREY, OnCurveNegativeTextureY)
00529 ON_COMMAND(ID_CURVE_DELETE_FIRSTCOLUMN, OnCurveDeleteFirstcolumn)
00530 ON_COMMAND(ID_CURVE_DELETE_FIRSTROW, OnCurveDeleteFirstrow)
00531 ON_COMMAND(ID_CURVE_DELETE_LASTCOLUMN, OnCurveDeleteLastcolumn)
00532 ON_COMMAND(ID_CURVE_DELETE_LASTROW, OnCurveDeleteLastrow)
00533 ON_COMMAND(ID_PATCH_BEND, OnPatchBend)
00534 ON_COMMAND(ID_PATCH_INSDEL, OnPatchInsdel)
00535 ON_COMMAND(ID_PATCH_ENTER, OnPatchEnter)
00536 ON_COMMAND(ID_PATCH_TAB, OnPatchTab)
00537 ON_COMMAND(ID_CURVE_PATCHDENSETUBE, OnCurvePatchdensetube)
00538 ON_COMMAND(ID_CURVE_PATCHVERYDENSETUBE, OnCurvePatchverydensetube)
00539 ON_COMMAND(ID_CURVE_CAP, OnCurveCap)
00540 ON_COMMAND(ID_CURVE_CAP_INVERTEDBEVEL, OnCurveCapInvertedbevel)
00541 ON_COMMAND(ID_CURVE_CAP_INVERTEDENDCAP, OnCurveCapInvertedendcap)
00542 ON_COMMAND(ID_CURVE_REDISPERSE_COLS, OnCurveRedisperseCols)
00543 ON_COMMAND(ID_CURVE_REDISPERSE_ROWS, OnCurveRedisperseRows)
00544 ON_COMMAND(ID_PATCH_NATURALIZE, OnPatchNaturalize)
00545 ON_COMMAND(ID_SELECT_SNAPTOGRID, OnSnapToGrid)
00546 ON_COMMAND(ID_CURVE_PATCHSQUARE, OnCurvePatchsquare)
00547 ON_COMMAND(ID_TERRAIN_CREATETERRAINFROMBRUSH, OnTerrainCreateFromBrush)
00548 ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_10, OnTexturesTexturewindowscale10)
00549 ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_100, OnTexturesTexturewindowscale100)
00550 ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_200, OnTexturesTexturewindowscale200)
00551 ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_25, OnTexturesTexturewindowscale25)
00552 ON_COMMAND(ID_TEXTURES_TEXTUREWINDOWSCALE_50, OnTexturesTexturewindowscale50)
00553 ON_COMMAND(ID_TEXTURES_FLUSH, OnTexturesFlush)
00554 ON_COMMAND(ID_CURVE_OVERLAY_CLEAR, OnCurveOverlayClear)
00555 ON_COMMAND(ID_CURVE_OVERLAY_SET, OnCurveOverlaySet)
00556 ON_COMMAND(ID_CURVE_THICKEN, OnCurveThicken)
00557 ON_COMMAND(ID_CURVE_CYCLECAP, OnCurveCyclecap)
00558 ON_COMMAND(ID_CURVE_MATRIX_TRANSPOSE, OnCurveMatrixTranspose)
00559 ON_COMMAND(ID_TEXTURES_RELOADSHADERS, OnTexturesReloadshaders)
00560 ON_COMMAND(ID_SHOW_ENTITIES, OnShowEntities)
00561 ON_COMMAND(ID_VIEW_ENTITIESAS_BOUNDINGBOX, OnViewEntitiesasBoundingbox)
00562 ON_COMMAND(ID_VIEW_ENTITIESAS_SELECTEDSKINNED, OnViewEntitiesasSelectedskinned)
00563 ON_COMMAND(ID_VIEW_ENTITIESAS_SELECTEDWIREFRAME, OnViewEntitiesasSelectedwireframe)
00564 ON_COMMAND(ID_VIEW_ENTITIESAS_SKINNED, OnViewEntitiesasSkinned)
00565 ON_COMMAND(ID_VIEW_ENTITIESAS_SKINNEDANDBOXED, OnViewEntitiesasSkinnedandboxed)
00566 ON_COMMAND(ID_VIEW_ENTITIESAS_WIREFRAME, OnViewEntitiesasWireframe)
00567 ON_COMMAND(ID_PLUGINS_REFRESH, OnPluginsRefresh)
00568 ON_COMMAND(ID_VIEW_SHOWHINT, OnViewShowhint)
00569 ON_UPDATE_COMMAND_UI(ID_TEXTURES_SHOWINUSE, OnUpdateTexturesShowinuse)
00570 ON_COMMAND(ID_TEXTURES_SHOWALL, OnTexturesShowall)
00571 ON_COMMAND(ID_PATCH_INSPECTOR, OnPatchInspector)
00572 ON_COMMAND(ID_VIEW_OPENGLLIGHTING, OnViewOpengllighting)
00573 ON_COMMAND(ID_SELECT_ALL, OnSelectAll)
00574 ON_COMMAND(ID_VIEW_SHOWCAULK, OnViewShowcaulk)
00575 ON_COMMAND(ID_CURVE_FREEZE, OnCurveFreeze)
00576 ON_COMMAND(ID_CURVE_UNFREEZE, OnCurveUnFreeze)
00577 ON_COMMAND(ID_CURVE_UNFREEZEALL, OnCurveUnFreezeAll)
00578 ON_COMMAND(ID_SELECT_RESELECT, OnSelectReselect)
00579 ON_COMMAND(ID_VIEW_SHOWANGLES, OnViewShowangles)
00580 ON_COMMAND(ID_EDIT_SAVEPREFAB, OnEditSaveprefab)
00581 ON_COMMAND(ID_CURVE_MOREENDCAPSBEVELS_SQUAREBEVEL, OnCurveMoreendcapsbevelsSquarebevel)
00582 ON_COMMAND(ID_CURVE_MOREENDCAPSBEVELS_SQUAREENDCAP, OnCurveMoreendcapsbevelsSquareendcap)
00583 ON_COMMAND(ID_BRUSH_PRIMITIVES_SPHERE, OnBrushPrimitivesSphere)
00584 ON_COMMAND(ID_VIEW_CROSSHAIR, OnViewCrosshair)
00585 ON_COMMAND(ID_VIEW_HIDESHOW_HIDESELECTED, OnViewHideshowHideselected)
00586 ON_COMMAND(ID_VIEW_HIDESHOW_SHOWHIDDEN, OnViewHideshowShowhidden)
00587 ON_COMMAND(ID_TEXTURES_SHADERS_SHOW, OnTexturesShadersShow)
00588 ON_COMMAND(ID_TEXTURES_FLUSH_UNUSED, OnTexturesFlushUnused)
00589 ON_COMMAND(ID_VIEW_GROUPS, OnViewGroups)
00590 ON_COMMAND(ID_DROP_GROUP_ADDTO_WORLD, OnDropGroupAddtoWorld)
00591 ON_COMMAND(ID_DROP_GROUP_NAME, OnDropGroupName)
00592 ON_COMMAND(ID_DROP_GROUP_NEWGROUP, OnDropGroupNewgroup)
00593 ON_COMMAND(ID_DROP_GROUP_REMOVE, OnDropGroupRemove)
00594 ON_COMMAND(ID_SPLINES_MODE, OnSplinesMode)
00595 ON_COMMAND(ID_SPLINES_LOAD, OnSplinesLoad)
00596 ON_COMMAND(ID_SPLINES_SAVE, OnSplinesSave)
00597 ON_COMMAND(ID_SPLINES_EDIT, OnSplinesEdit)
00598 ON_COMMAND(ID_SPLINE_TEST, OnSplineTest)
00599 ON_COMMAND(ID_POPUP_NEWCAMERA_INTERPOLATED, OnPopupNewcameraInterpolated)
00600 ON_COMMAND(ID_POPUP_NEWCAMERA_SPLINE, OnPopupNewcameraSpline)
00601 ON_COMMAND(ID_POPUP_NEWCAMERA_FIXED, OnPopupNewcameraFixed)
00602
00603 ON_COMMAND_RANGE(CMD_TEXTUREWAD, CMD_TEXTUREWAD_END, OnTextureWad)
00604 ON_COMMAND_RANGE(CMD_BSPCOMMAND, CMD_BSPCOMMAND_END, OnBspCommand)
00605 ON_COMMAND_RANGE(IDMRU, IDMRU_END, OnMru)
00606 ON_COMMAND_RANGE(ID_VIEW_NEAREST, ID_TEXTURES_FLATSHADE, OnViewNearest)
00607 ON_COMMAND_RANGE(ID_GRID_1, ID_GRID_64, OnGrid1)
00608 ON_COMMAND_RANGE(ID_PLUGIN_START, ID_PLUGIN_END, OnPlugIn)
00609 ON_REGISTERED_MESSAGE(g_msgBSPDone, OnBSPDone)
00610 ON_REGISTERED_MESSAGE(g_msgBSPStatus, OnBSPStatus)
00611 ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange)
00612
00613 END_MESSAGE_MAP()
00614
00615 static UINT indicators[] =
00616 {
00617 ID_SEPARATOR,
00618 ID_SEPARATOR,
00619 ID_SEPARATOR,
00620 ID_SEPARATOR,
00621 ID_SEPARATOR,
00622 ID_SEPARATOR,
00623 };
00624
00625 LRESULT CMainFrame::OnDisplayChange(UINT wParam, long lParam)
00626 {
00627 int n = wParam;
00628 return 0;
00629 }
00630
00631
00632 LRESULT CMainFrame::OnBSPStatus(UINT wParam, long lParam)
00633 {
00634 return 0;
00635 }
00636
00637 LRESULT CMainFrame::OnBSPDone(UINT wParam, long lParam)
00638 {
00639 DLLBuildDone();
00640 return 0;
00641 }
00642
00643
00645
00646
00647 CMainFrame::CMainFrame()
00648 {
00649 m_bDoLoop = false;
00650 m_bSplittersOK = false;
00651 g_pParentWnd = this;
00652 m_pXYWnd = NULL;
00653 m_pCamWnd = NULL;
00654 m_pTexWnd = NULL;
00655 m_pZWnd = NULL;
00656 m_pEditWnd = NULL;
00657 m_pYZWnd = NULL;
00658 m_pXZWnd = NULL;
00659 m_pActiveXY = NULL;
00660 m_bCamPreview = true;
00661 }
00662
00663 CMainFrame::~CMainFrame()
00664 {
00665 }
00666
00667 void HandlePopup(CWnd* pWindow, unsigned int uId)
00668 {
00669
00670 CPoint ptMouse;
00671 GetCursorPos(&ptMouse);
00672
00673
00674 CMenu mnuPopup;
00675 VERIFY(mnuPopup.LoadMenu(uId));
00676 mnuPopup.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON |
00677 TPM_RIGHTBUTTON, ptMouse.x, ptMouse.y,pWindow);
00678 mnuPopup.DestroyMenu();
00679
00680
00681 pWindow->SetFocus();
00682 }
00683
00684
00685 void CMainFrame::OnParentNotify(UINT message, LPARAM lParam)
00686 {
00687 }
00688
00689 void CMainFrame::SetButtonMenuStates()
00690 {
00691 CMenu* pMenu = GetMenu();
00692 if (pMenu)
00693 {
00694
00695 if ( !g_qeglobals.d_savedinfo.show_names )
00696 pMenu->CheckMenuItem(ID_VIEW_SHOWNAMES, MF_BYCOMMAND | MF_UNCHECKED);
00697 if ( !g_qeglobals.d_savedinfo.show_coordinates )
00698 pMenu->CheckMenuItem(ID_VIEW_SHOWCOORDINATES, MF_BYCOMMAND | MF_UNCHECKED );
00699
00700 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_LIGHTS )
00701 pMenu->CheckMenuItem(ID_VIEW_SHOWLIGHTS, MF_BYCOMMAND | MF_UNCHECKED );
00702 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_ENT )
00703 pMenu->CheckMenuItem(ID_VIEW_ENTITY, MF_BYCOMMAND | MF_UNCHECKED );
00704 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_PATHS )
00705 pMenu->CheckMenuItem(ID_VIEW_SHOWPATH, MF_BYCOMMAND | MF_UNCHECKED );
00706 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_WATER )
00707 pMenu->CheckMenuItem(ID_VIEW_SHOWWATER, MF_BYCOMMAND | MF_UNCHECKED );
00708 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_WORLD )
00709 pMenu->CheckMenuItem(ID_VIEW_SHOWWORLD, MF_BYCOMMAND | MF_UNCHECKED );
00710 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_CLIP )
00711 pMenu->CheckMenuItem(ID_VIEW_SHOWCLIP, MF_BYCOMMAND | MF_UNCHECKED );
00712 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_HINT )
00713 pMenu->CheckMenuItem(ID_VIEW_SHOWHINT, MF_BYCOMMAND | MF_UNCHECKED );
00714 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_CAULK )
00715 pMenu->CheckMenuItem(ID_VIEW_SHOWCAULK, MF_BYCOMMAND | MF_UNCHECKED );
00716 if ( g_qeglobals.d_savedinfo.exclude & EXCLUDE_ANGLES )
00717 pMenu->CheckMenuItem(ID_VIEW_SHOWANGLES, MF_BYCOMMAND | MF_UNCHECKED );
00718
00719
00720 pMenu->CheckMenuItem(ID_TOGGLE_LOCK, MF_BYCOMMAND | (g_PrefsDlg.m_bTextureLock) ? MF_CHECKED : MF_UNCHECKED);
00721 pMenu->CheckMenuItem(ID_TOGGLE_ROTATELOCK, MF_BYCOMMAND | (g_PrefsDlg.m_bRotateLock) ? MF_CHECKED : MF_UNCHECKED);
00722 pMenu->CheckMenuItem(ID_VIEW_CUBICCLIPPING, MF_BYCOMMAND | (g_PrefsDlg.m_bCubicClipping) ? MF_CHECKED : MF_UNCHECKED);
00723 pMenu->CheckMenuItem (ID_VIEW_OPENGLLIGHTING, MF_BYCOMMAND | (g_PrefsDlg.m_bGLLighting) ? MF_CHECKED : MF_UNCHECKED );
00724 pMenu->CheckMenuItem (ID_SNAPTOGRID, MF_BYCOMMAND | (!g_PrefsDlg.m_bNoClamp) ? MF_CHECKED : MF_UNCHECKED );
00725 if (m_wndToolBar.GetSafeHwnd())
00726 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_VIEW_CUBICCLIPPING, (g_PrefsDlg.m_bCubicClipping) ? TRUE : FALSE);
00727
00728 int n = g_PrefsDlg.m_nTextureScale;
00729 int id;
00730 switch (n)
00731 {
00732 case 10 : id = ID_TEXTURES_TEXTUREWINDOWSCALE_10; break;
00733 case 25 : id = ID_TEXTURES_TEXTUREWINDOWSCALE_25; break;
00734 case 50 : id = ID_TEXTURES_TEXTUREWINDOWSCALE_50; break;
00735 case 200 : id = ID_TEXTURES_TEXTUREWINDOWSCALE_200; break;
00736 default : id = ID_TEXTURES_TEXTUREWINDOWSCALE_100; break;
00737 }
00738 CheckTextureScale(id);
00739
00740
00741 }
00742 if (g_qeglobals.d_project_entity)
00743 {
00744 FillTextureMenu();
00745 FillBSPMenu();
00746 LoadMruInReg(g_qeglobals.d_lpMruMenu,"Software\\id\\QuakeEd4\\MRU");
00747 PlaceMenuMRUItem(g_qeglobals.d_lpMruMenu,::GetSubMenu(::GetMenu(GetSafeHwnd()),0), ID_FILE_EXIT);
00748 }
00749 }
00750
00751 void CMainFrame::ShowMenuItemKeyBindings(CMenu *pMenu)
00752 {
00753 int i, j;
00754 char key[1024], *ptr;
00755 MENUITEMINFO MenuItemInfo;
00756
00757
00758 for (i = 0; i < g_nCommandCount; i++)
00759 {
00760 memset(&MenuItemInfo, 0, sizeof(MENUITEMINFO));
00761 MenuItemInfo.cbSize = sizeof(MENUITEMINFO);
00762 MenuItemInfo.fMask = MIIM_TYPE;
00763 MenuItemInfo.dwTypeData = key;
00764 MenuItemInfo.cch = sizeof(key);
00765 if (!pMenu->GetMenuItemInfo(g_Commands[i].m_nCommand, &MenuItemInfo))
00766 continue;
00767 if (MenuItemInfo.fType != MFT_STRING)
00768 continue;
00769 ptr = strchr(key, '\t');
00770 if (ptr) *ptr = '\0';
00771 strcat(key, "\t");
00772 if (g_Commands[i].m_nModifiers)
00773 {
00774 if (g_Commands[i].m_nModifiers & RAD_SHIFT)
00775 strcat(key, "Shift-");
00776 if (g_Commands[i].m_nModifiers & RAD_ALT)
00777 strcat(key, "Alt-");
00778 if (g_Commands[i].m_nModifiers & RAD_CONTROL)
00779 strcat(key, "Ctrl-");
00780 }
00781 for (j = 0; j < g_nKeyCount; j++)
00782 {
00783 if (g_Commands[i].m_nKey == g_Keys[j].m_nVKKey)
00784 {
00785 strcat(key, g_Keys[j].m_strName);
00786 break;
00787 }
00788 }
00789 if (j >= g_nKeyCount)
00790 {
00791 sprintf(&key[strlen(key)], "%c", g_Commands[i].m_nKey);
00792 }
00793 memset(&MenuItemInfo, 0, sizeof(MENUITEMINFO));
00794 MenuItemInfo.cbSize = sizeof(MENUITEMINFO);
00795 MenuItemInfo.fMask = MIIM_TYPE;
00796 MenuItemInfo.fType = MFT_STRING;
00797 MenuItemInfo.dwTypeData = key;
00798 MenuItemInfo.cch = strlen(key);
00799 SetMenuItemInfo(pMenu->m_hMenu, g_Commands[i].m_nCommand, FALSE, &MenuItemInfo);
00800 }
00801 }
00802
00803 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
00804 {
00805
00806
00807
00808 char* pBuffer = g_strAppPath.GetBufferSetLength(_MAX_PATH + 1);
00809 int nResult = ::GetModuleFileName(NULL, pBuffer, _MAX_PATH);
00810 ASSERT(nResult != 0);
00811 pBuffer[g_strAppPath.ReverseFind('\\') + 1] = '\0';
00812 g_strAppPath.ReleaseBuffer();
00813
00814 InitCommonControls ();
00815 g_qeglobals.d_hInstance = AfxGetInstanceHandle();
00816 MFCCreate(AfxGetInstanceHandle());
00817
00818
00819
00820 if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
00821 return -1;
00822
00823 UINT nStyle;
00824 UINT nID = (g_PrefsDlg.m_bWideToolbar) ? IDR_TOOLBAR_ADVANCED : IDR_TOOLBAR1;
00825
00826 if (!m_wndToolBar.Create(this) ||
00827 !m_wndToolBar.LoadToolBar(nID))
00828 {
00829 TRACE0("Failed to create toolbar\n");
00830 return -1;
00831 }
00832
00833 if (!m_wndStatusBar.Create(this) ||
00834 !m_wndStatusBar.SetIndicators(indicators,
00835 sizeof(indicators)/sizeof(UINT)))
00836 {
00837 TRACE0("Failed to create status bar\n");
00838 return -1;
00839 }
00840
00841 #if 0
00842 if (!m_wndScaleBar.Create(this) ||
00843 !m_wndScaleBar.LoadToolBar(IDR_TOOLBAR_SCALELOCK))
00844 {
00845 TRACE0("Failed to create scaling toolbar\n");
00846 return -1;
00847 }
00848 #endif
00849
00850
00851 m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
00852 CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
00853
00854
00855
00856 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
00857 EnableDocking(CBRS_ALIGN_ANY);
00858 DockControlBar(&m_wndToolBar);
00859
00860
00861
00862
00863
00864 int nImage;
00865 int nIndex = m_wndToolBar.CommandToIndex(ID_VIEW_CAMERATOGGLE);
00866 if (nIndex >= 0)
00867 {
00868 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00869 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00870 m_wndToolBar.GetToolBarCtrl().CheckButton(nID);
00871 }
00872 m_bCamPreview = true;
00873
00874 nIndex = m_wndToolBar.CommandToIndex(ID_VIEW_CUBICCLIPPING);
00875 if (nIndex >= 0)
00876 {
00877 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00878 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00879 }
00880 nIndex = m_wndToolBar.CommandToIndex(ID_VIEW_ENTITY);
00881 if (nIndex >= 0)
00882 {
00883 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00884 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00885 }
00886 nIndex = m_wndToolBar.CommandToIndex(ID_VIEW_CLIPPER);
00887 if (nIndex >= 0)
00888 {
00889 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00890 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00891 }
00892 nIndex = m_wndToolBar.CommandToIndex(ID_SELECT_MOUSEROTATE);
00893 if (nIndex >= 0)
00894 {
00895 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00896 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00897 }
00898
00899 nIndex = m_wndToolBar.CommandToIndex(ID_SELECT_MOUSESCALE);
00900 if (nIndex >= 0)
00901 {
00902 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00903 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00904 }
00905
00906 nIndex = m_wndToolBar.CommandToIndex(ID_SCALELOCKX);
00907 if (nIndex >= 0)
00908 {
00909 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00910 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00911 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKX, FALSE);
00912 }
00913
00914 nIndex = m_wndToolBar.CommandToIndex(ID_SCALELOCKY);
00915 if (nIndex >= 0)
00916 {
00917 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00918 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00919 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKY, FALSE);
00920 }
00921
00922 nIndex = m_wndToolBar.CommandToIndex(ID_SCALELOCKZ);
00923 if (nIndex >= 0)
00924 {
00925 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00926 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00927 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_SCALELOCKZ, FALSE);
00928 }
00929
00930 #ifdef QUAKE3
00931 nIndex = m_wndToolBar.CommandToIndex(ID_DONTSELECTCURVE);
00932 if (nIndex >= 0)
00933 {
00934 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00935 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00936 }
00937 nIndex = m_wndToolBar.CommandToIndex(ID_PATCH_SHOWBOUNDINGBOX);
00938 if (nIndex >= 0)
00939 {
00940 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00941 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00942 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_SHOWBOUNDINGBOX, TRUE);
00943 }
00944 nIndex = m_wndToolBar.CommandToIndex(ID_PATCH_WELD);
00945 if (nIndex >= 0)
00946 {
00947 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00948 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00949 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_WELD, TRUE);
00950 }
00951 nIndex = m_wndToolBar.CommandToIndex(ID_PATCH_DRILLDOWN);
00952 if (nIndex >= 0)
00953 {
00954 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00955 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00956 m_wndToolBar.GetToolBarCtrl().CheckButton(ID_PATCH_DRILLDOWN, TRUE);
00957 }
00958 nIndex = m_wndToolBar.CommandToIndex(ID_PATCH_BEND);
00959 if (nIndex >= 0)
00960 {
00961 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00962 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00963 }
00964 nIndex = m_wndToolBar.CommandToIndex(ID_PATCH_INSDEL);
00965 if (nIndex >= 0)
00966 {
00967 m_wndToolBar.GetButtonInfo(nIndex, nID, nStyle, nImage);
00968 m_wndToolBar.SetButtonInfo(nIndex, nID, TBBS_CHECKBOX, nImage);
00969 }
00970 #else
00971 m_wndToolBar.GetToolBarCtrl().HideButton(ID_DONTSELECTCURVE);
00972 m_wndToolBar.GetToolBarCtrl().HideButton(ID_PATCH_SHOWBOUNDINGBOX);
00973 m_wndToolBar.GetToolBarCtrl().HideButton(ID_PATCH_WELD);
00974 m_wndToolBar.GetToolBarCtrl().HideButton(ID_PATCH_WIREFRAME);
00975 #endif
00976 g_nScaleHow = 0;
00977
00978
00979 #ifdef QUAKE3
00980 g_pParentWnd->GetMenu()->DestroyMenu();
00981 CMenu* pMenu = new CMenu();
00982 pMenu->LoadMenu(IDR_MENU_QUAKE3);
00983 g_pParentWnd->SetMenu(pMenu);
00984 #else
00985 CMenu* pMenu = GetMenu();
00986 #endif
00987
00988 m_wndTextureBar.Create(this, IDD_TEXTUREBAR, CBRS_BOTTOM, 7433);
00989 m_wndTextureBar.EnableDocking(CBRS_ALIGN_ANY);
00990 DockControlBar(&m_wndTextureBar);
00991
00992 g_qeglobals.d_lpMruMenu = CreateMruMenuDefault();
00993
00994 m_bAutoMenuEnable = FALSE;
00995
00996 LoadCommandMap();
00997
00998 ShowMenuItemKeyBindings(pMenu);
00999
01000 CFont* pFont = new CFont();
01001 pFont->CreatePointFont(g_PrefsDlg.m_nStatusSize * 10, "Arial");
01002 m_wndStatusBar.SetFont(pFont);
01003
01004 OnPluginsRefresh();
01005
01006 if (g_PrefsDlg.m_bRunBefore == FALSE)
01007 {
01008 g_PrefsDlg.m_bRunBefore = TRUE;
01009 g_PrefsDlg.SavePrefs();
01010
01011
01012
01013
01014
01015
01016 }
01017 else
01018 {
01019
01020 #if 0
01021 if (g_PrefsDlg.m_bSGIOpenGL)
01022 {
01023 vec3_t vMin, vMax;
01024 vMin[0] = vMin[1] = vMin[2] = 0;
01025 vMax[0] = vMax[1] = vMax[2] = 8;
01026 brush_t* pBrush = Brush_Create(vMin, vMax, &g_qeglobals.d_texturewin.texdef);
01027 Entity_LinkBrush (world_entity, pBrush);
01028 Brush_Build(pBrush);
01029 Brush_AddToList (pBrush, &active_brushes);
01030 Select_Brush(pBrush);
01031 Sys_UpdateWindows(W_ALL);
01032 PostMessage(WM_COMMAND, ID_SELECTION_DELETE, 0);
01033 }
01034 #endif
01035
01036
01037 if (g_PrefsDlg.m_bLoadLastMap && g_PrefsDlg.m_strLastMap.GetLength() > 0)
01038 Map_LoadFile(g_PrefsDlg.m_strLastMap.GetBuffer(0));
01039 }
01040
01041 SetGridStatus();
01042 SetTexValStatus();
01043 SetButtonMenuStates();
01044 LoadBarState("RadiantToolBars2");
01045 if (!g_PrefsDlg.m_bTextureBar)
01046 ShowControlBar(&m_wndTextureBar, FALSE, TRUE);
01047 else
01048 ShowControlBar(&m_wndTextureBar, TRUE, TRUE);
01049
01050 ShowControlBar(&m_wndToolBar, (m_wndToolBar.GetStyle() & WS_VISIBLE), TRUE);
01051
01052 SetActiveXY(m_pXYWnd);
01053 m_pXYWnd->SetFocus();
01054
01055 PostMessage(WM_KEYDOWN, 'O', NULL);
01056
01057 return 0;
01058 }
01059
01060 void CMainFrame::LoadCommandMap()
01061 {
01062 CString strINI;
01063 char* pBuff = new char[1024];
01064 if (g_PrefsDlg.m_strUserPath.GetLength() > 0)
01065 strINI = g_PrefsDlg.m_strUserPath;
01066 else
01067 {
01068 strINI = g_strAppPath;
01069 strINI += "\\radiant.ini";
01070 }
01071
01072 for (int i = 0; i < g_nCommandCount; i++)
01073 {
01074 int nLen = GetPrivateProfileString("Commands", g_Commands[i].m_strCommand, "", pBuff, 1024, strINI);
01075 if (nLen > 0)
01076 {
01077 CString strBuff = pBuff;
01078 strBuff.TrimLeft();
01079 strBuff.TrimRight();
01080 int nSpecial = strBuff.Find("+alt");
01081 g_Commands[i].m_nModifiers = 0;
01082 if (nSpecial >= 0)
01083 {
01084 g_Commands[i].m_nModifiers |= RAD_ALT;
01085 FindReplace(strBuff, "+alt", "");
01086 }
01087 nSpecial = strBuff.Find("+ctrl");
01088 if (nSpecial >= 0)
01089 {
01090 g_Commands[i].m_nModifiers |= RAD_CONTROL;
01091 FindReplace(strBuff, "+ctrl", "");
01092 }
01093 nSpecial = strBuff.Find("+shift");
01094 if (nSpecial >= 0)
01095 {
01096 g_Commands[i].m_nModifiers |= RAD_SHIFT;
01097 FindReplace(strBuff, "+shift", "");
01098 }
01099 strBuff.TrimLeft();
01100 strBuff.TrimRight();
01101 strBuff.MakeUpper();
01102 if (nLen == 1)
01103 {
01104 g_Commands[i].m_nKey = __toascii(strBuff.GetAt(0));
01105 }
01106 else
01107 {
01108 for (int j = 0; j < g_nKeyCount; j++)
01109 {
01110 if (strBuff.CompareNoCase(g_Keys[j].m_strName) == 0)
01111 {
01112 g_Commands[i].m_nKey = g_Keys[j].m_nVKKey;
01113 break;
01114 }
01115 }
01116 }
01117 }
01118 }
01119 delete []pBuff;
01120 }
01121
01122 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
01123 {
01124
01125
01126 return CFrameWnd::PreCreateWindow(cs);
01127 }
01128
01130
01131
01132 #ifdef _DEBUG
01133 void CMainFrame::AssertValid() const
01134 {
01135 CFrameWnd::AssertValid();
01136 }
01137
01138 void CMainFrame::Dump(CDumpContext& dc) const
01139 {
01140 CFrameWnd::Dump(dc);
01141 }
01142
01143 #endif //_DEBUG
01144
01146
01147 void CMainFrame::CreateQEChildren()
01148 {
01149
01150
01151 bool bProjectLoaded = false;
01152 if (AfxGetApp()->m_lpCmdLine && strlen(AfxGetApp()->m_lpCmdLine))
01153 {
01154 ParseCommandLine (AfxGetApp()->m_lpCmdLine);
01155 bProjectLoaded = QE_LoadProject(argv[1]);
01156 }
01157 else
01158 {
01159 if (g_PrefsDlg.m_bLoadLast && g_PrefsDlg.m_strLastProject.GetLength() > 0)
01160 {
01161 bProjectLoaded = QE_LoadProject(g_PrefsDlg.m_strLastProject.GetBuffer(0));
01162 }
01163 if (!bProjectLoaded)
01164 {
01165 CString str = g_strAppPath;
01166 AddSlash(str);
01167 str += "../baseq3/scripts/quake.qe4";
01168 char cWork[1024];
01169 char *pFile = NULL;
01170 GetFullPathName(str, 1024, cWork, &pFile);
01171 bProjectLoaded = QE_LoadProject(cWork);
01172 }
01173 if (!bProjectLoaded)
01174 {
01175 bProjectLoaded = QE_LoadProject("scripts/quake.qe4");
01176 }
01177 }
01178
01179 if (!bProjectLoaded)
01180 {
01181 #if 0
01182
01183 char* pBuff = new char[1024];
01184 ::GetCurrentDirectory(1024, pBuff);
01185 CString strDefProj = g_strAppPath;
01186 AddSlash(strDefProj);
01187 strDefProj += "defproj";
01188 if (::SetCurrentDirectory(strDefProj))
01189 {
01190 bProjectLoaded = QE_LoadProject("scripts/quake.qe4");
01191 if (bProjectLoaded)
01192 {
01193
01194 g_PrefsDlg.m_bLoadLast = TRUE;
01195 AddSlash(strDefProj);
01196 strDefProj += "maps\\defproj.map";
01197 g_PrefsDlg.m_strLastMap = strDefProj;
01198 g_PrefsDlg.SavePrefs();
01199 }
01200 }
01201 else
01202 {
01203 ::SetCurrentDirectory(pBuff);
01204 }
01205 delete []pBuff;
01206 #endif
01207
01208 if (!bProjectLoaded)
01209 {
01210 Sys_Printf ("Using default.qe4. You may experience problems. See the readme.txt\n");
01211 CString strProj = g_strAppPath;
01212 strProj += "\\default.qe4";
01213 bProjectLoaded = QE_LoadProject(strProj.GetBuffer(0));
01214
01215 if (!bProjectLoaded)
01216 {
01217 CFileDialog dlgFile(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Q3Radiant Project files (*.qe4, *.prj)|*.qe4|*.prj||", this);
01218 if (dlgFile.DoModal() == IDOK)
01219 bProjectLoaded = QE_LoadProject(dlgFile.GetPathName().GetBuffer(0));
01220 }
01221 }
01222 }
01223
01224 if (!bProjectLoaded)
01225 Error("Unable to load project file. It was unavailable in the scripts path and the default could not be found");
01226
01227
01228 if (g_PrefsDlg.m_bPAK == TRUE)
01229 {
01230
01231
01232 InitPakFile(ValueForKey(g_qeglobals.d_project_entity, "basepath"), NULL);
01233 }
01234
01235 QE_Init ();
01236
01237 Sys_Printf ("Entering message loop\n");
01238
01239 m_bDoLoop = true;
01240 SetTimer(QE_TIMER0, 1000, NULL);
01241
01242 }
01243
01244 BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)
01245 {
01246 return CFrameWnd::OnCommand(wParam, lParam);
01247 }
01248
01249 LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
01250 {
01251 RoutineProcessing();
01252 return CFrameWnd::DefWindowProc(message, wParam, lParam);
01253 }
01254
01255
01256 void CMainFrame::RoutineProcessing()
01257 {
01258 if (m_bDoLoop)
01259 {
01260 double time = 0.0;
01261 double oldtime = 0.0;
01262 double delta= 0.0;
01263
01264 CheckBspProcess ();
01265 time = Sys_DoubleTime ();
01266 delta = time - oldtime;
01267 oldtime = time;
01268 if (delta > 0.2)
01269 delta = 0.2;
01270
01271
01272 if (m_pCamWnd)
01273 m_pCamWnd->Cam_MouseControl(delta);
01274
01275 if (g_PrefsDlg.m_bQE4Painting && g_nUpdateBits)
01276 {
01277 int nBits = g_nUpdateBits;
01278 g_nUpdateBits = 0;
01279 UpdateWindows(nBits);
01280 }
01281
01282 }
01283 }
01284
01285 LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
01286 {
01287 return CFrameWnd::WindowProc(message, wParam, lParam);
01288 }
01289
01290 bool MouseDown()
01291 {
01292 if (::GetAsyncKeyState(VK_LBUTTON))
01293 return true;
01294 if (::GetAsyncKeyState(VK_RBUTTON))
01295 return true;
01296 if (::GetAsyncKeyState(VK_MBUTTON))
01297 return true;
01298 return false;
01299 }
01300
01301
01302 void CMainFrame::OnTimer(UINT nIDEvent)
01303 {
01304 if (!MouseDown())
01305 {
01306 QE_CountBrushesAndUpdateStatusBar();
01307 QE_CheckAutoSave();
01308 }
01309 }
01310 struct SplitInfo
01311 {
01312 int m_nMin;
01313 int m_nCur;
01314 };
01315
01316 bool LoadWindowPlacement(HWND hwnd, const char* pName)
01317 {
01318 WINDOWPLACEMENT wp;
01319 wp.length = sizeof(WINDOWPLACEMENT);
01320 LONG lSize = sizeof(wp);
01321 if (LoadRegistryInfo(pName, &wp, &lSize))
01322 {
01323 ::SetWindowPlacement(hwnd, &wp);
01324 return true;
01325 }
01326 return false;
01327 }
01328
01329 void SaveWindowPlacement(HWND hwnd, const char* pName)
01330 {
01331 WINDOWPLACEMENT wp;
01332 wp.length = sizeof(WINDOWPLACEMENT);
01333 if (::GetWindowPlacement(hwnd, &wp))
01334 {
01335 SaveRegistryInfo(pName, &wp, sizeof(wp));
01336 }
01337 }
01338
01339
01340 void CMainFrame::OnDestroy()
01341 {
01342 KillTimer(QE_TIMER0);
01343
01344 SaveBarState("RadiantToolBars2");
01345
01346
01347
01348 SaveMruInReg(g_qeglobals.d_lpMruMenu,"Software\\id\\QuakeEd4\\MRU");
01349
01350 DeleteMruMenu(g_qeglobals.d_lpMruMenu);
01351
01352 SaveWindowPlacement(GetSafeHwnd(), "Radiant::MainWindowPlace");
01353
01354
01355
01356
01357 if (m_nCurrentStyle == 0 || m_nCurrentStyle == 3)
01358 {
01359 SaveWindowState(m_wndSplit.GetSafeHwnd(), "Radiant::Split");
01360 SaveWindowState(m_wndSplit2.GetSafeHwnd(), "Radiant::Split2");
01361 SaveWindowState(m_wndSplit3.GetSafeHwnd(), "Radiant::Split3");
01362
01363 SplitInfo spinfo;
01364 m_wndSplit.GetRowInfo(0, spinfo.m_nCur, spinfo.m_nMin);
01365 SaveRegistryInfo("Radiant::Split::Row_0", &spinfo, sizeof(spinfo));
01366 m_wndSplit.GetRowInfo(1, spinfo.m_nCur, spinfo.m_nMin);
01367 SaveRegistryInfo("Radiant::Split::Row_1", &spinfo, sizeof(spinfo));
01368
01369 m_wndSplit2.GetColumnInfo(0, spinfo.m_nCur, spinfo.m_nMin);
01370 SaveRegistryInfo("Radiant::Split2::Col_0", &spinfo, sizeof(spinfo));
01371 m_wndSplit2.GetColumnInfo(1, spinfo.m_nCur, spinfo.m_nMin);
01372 SaveRegistryInfo("Radiant::Split2::Col_1", &spinfo, sizeof(spinfo));
01373 m_wndSplit2.GetColumnInfo(2, spinfo.m_nCur, spinfo.m_nMin);
01374 SaveRegistryInfo("Radiant::Split2::Col_2", &spinfo, sizeof(spinfo));
01375
01376 m_wndSplit3.GetRowInfo(0, spinfo.m_nCur, spinfo.m_nMin);
01377 SaveRegistryInfo("Radiant::Split3::Row_0", &spinfo, sizeof(spinfo));
01378 m_wndSplit3.GetRowInfo(1, spinfo.m_nCur, spinfo.m_nMin);
01379 SaveRegistryInfo("Radiant::Split3::Row_1", &spinfo, sizeof(spinfo));
01380 }
01381 else
01382 {
01383 SaveWindowPlacement(m_pXYWnd->GetSafeHwnd(), "xywindow");
01384 SaveWindowPlacement(m_pXZWnd->GetSafeHwnd(), "xzwindow");
01385 SaveWindowPlacement(m_pYZWnd->GetSafeHwnd(), "yzwindow");
01386 SaveWindowPlacement(m_pCamWnd->GetSafeHwnd(), "camerawindow");
01387 SaveWindowPlacement(m_pZWnd->GetSafeHwnd(), "zwindow");
01388 SaveWindowState(m_pTexWnd->GetSafeHwnd(), "texwindow");
01389 SaveWindowState(m_pEditWnd->GetSafeHwnd(), "editwindow");
01390 }
01391
01392 if (m_pXYWnd->GetSafeHwnd())
01393 m_pXYWnd->SendMessage(WM_DESTROY, 0, 0);
01394 delete m_pXYWnd; m_pXYWnd = NULL;
01395
01396 if (m_pYZWnd->GetSafeHwnd())
01397 m_pYZWnd->SendMessage(WM_DESTROY, 0, 0);
01398 delete m_pYZWnd; m_pYZWnd = NULL;
01399
01400 if (m_pXZWnd->GetSafeHwnd())
01401 m_pXZWnd->SendMessage(WM_DESTROY, 0, 0);
01402 delete m_pXZWnd; m_pXZWnd = NULL;
01403
01404 if (m_pZWnd->GetSafeHwnd())
01405 m_pZWnd->SendMessage(WM_DESTROY, 0, 0);
01406 delete m_pZWnd; m_pZWnd = NULL;
01407
01408 if (m_pTexWnd->GetSafeHwnd())
01409 m_pTexWnd->SendMessage(WM_DESTROY, 0, 0);
01410 delete m_pTexWnd; m_pTexWnd = NULL;
01411
01412 if (m_pEditWnd->GetSafeHwnd())
01413 m_pEditWnd->SendMessage(WM_DESTROY, 0, 0);
01414 delete m_pEditWnd; m_pEditWnd = NULL;
01415
01416 if (m_pCamWnd->GetSafeHwnd())
01417 m_pCamWnd->SendMessage(WM_DESTROY, 0, 0);
01418 delete m_pCamWnd;m_pCamWnd = NULL;
01419
01420 SaveRegistryInfo("SavedInfo", &g_qeglobals.d_savedinfo, sizeof(g_qeglobals.d_savedinfo));
01421
01422 if (strcmpi(currentmap, "unnamed.map") != 0)
01423 {
01424 g_PrefsDlg.m_strLastMap = currentmap;
01425 g_PrefsDlg.SavePrefs();
01426 }
01427 CleanUpEntities();
01428
01429 w