| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program 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.
- **
- ** This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Max2W3D *
- * *
- * $Archive:: /Commando/Code/Tools/max2w3d/gennamesdialog.cpp $*
- * *
- * Original Author:: Greg Hjelstrom *
- * *
- * $Author:: Greg_h $*
- * *
- * $Modtime:: 12/06/00 3:24p $*
- * *
- * $Revision:: 2 $*
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * GenNamesDialogClass::GenNamesDialogClass -- Constructor *
- * GenNamesDialogClass::~GenNamesDialogClass -- Destructor *
- * GenNamesDialogClass::Get_Options -- Get_Options *
- * GenNamesDialogClass::Ok_To_Exit -- verifies that the input is valid *
- * GenNamesDialogClass::Toggle_Name_Assignment -- toggles the controls related to name assig *
- * GenNamesDialogClass::Toggle_Collision_Bits_Assignment -- toggles the controls related to *
- * GenNamesDialogClass::Dialog_Proc -- windows dialog proc *
- * _gen_names_dialog_proc -- dialog proc that "thunks" to the class's dialog proc *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #include "gennamesdialog.h"
- #include "dllmain.h"
- #include "resource.h"
- static BOOL CALLBACK _gen_names_dialog_proc(HWND Hwnd,UINT message,WPARAM wParam,LPARAM lParam);
- /**********************************************************************************************
- **
- ** GenNamesDialogClass Implementation
- **
- **********************************************************************************************/
- /***********************************************************************************************
- * GenNamesDialogClass::GenNamesDialogClass -- Constructor *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- *=============================================================================================*/
- GenNamesDialogClass::GenNamesDialogClass(Interface * maxinterface) :
- Hwnd(NULL),
- Options(NULL),
- MaxInterface(maxinterface),
- NameIndexSpin(NULL)
- {
- }
- /***********************************************************************************************
- * GenNamesDialogClass::~GenNamesDialogClass -- Destructor *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- GenNamesDialogClass::~GenNamesDialogClass(void)
- {
- ReleaseISpinner(NameIndexSpin);
- }
- /***********************************************************************************************
- * GenNamesDialogClass::Get_Options -- Get_Options *
- * *
- * presents the dialog to the user and records his selections into the passed-in options *
- * structure. *
- * *
- * INPUT: *
- * options - pointer to a OptionsStruct to store the users input in. *
- * *
- * OUTPUT: *
- * true - user pressed ok and entered valid input *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- bool GenNamesDialogClass::Get_Options(OptionsStruct * options)
- {
- Options = options;
- // Put up the options dialog box.
- BOOL result = DialogBoxParam
- (
- AppInstance,
- MAKEINTRESOURCE (IDD_GENERATE_NAMES_DIALOG),
- MaxInterface->GetMAXHWnd(),
- (DLGPROC) _gen_names_dialog_proc,
- (LPARAM) this
- );
- if (result == TRUE) {
- return true;
- } else {
- return false;
- }
- }
- /***********************************************************************************************
- * GenNamesDialogClass::Ok_To_Exit -- verifies that the input is valid *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * true - dialog contains valid input *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- bool GenNamesDialogClass::Ok_To_Exit(void)
- {
- if (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_NAMES_CHECK) == BST_CHECKED) {
- // just check that the user entered a name
- char buf[W3D_NAME_LEN];
- GetWindowText(GetDlgItem(Hwnd,IDC_BASE_NAME_EDIT),buf,sizeof(buf));
-
- if (strlen(buf) == 0) {
- MessageBox(Hwnd,"Please enter a root name to use.\n","Error",MB_OK);
- return false;
- } else {
- return true;
- }
- }
- return true;
- }
- /***********************************************************************************************
- * GenNamesDialogClass::Toggle_Name_Assignment -- toggles the controls related to name assignm *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- void GenNamesDialogClass::Toggle_Name_Assignment(void)
- {
- bool onoff = (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_NAMES_CHECK) == BST_CHECKED);
- EnableWindow(GetDlgItem(Hwnd,IDC_BASE_NAME_EDIT),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_LOD_INDEX_EDIT),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_LOD_INDEX_SPIN),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_NAME_INDEX_EDIT),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_NAME_INDEX_SPIN),onoff);
- }
- /***********************************************************************************************
- * GenNamesDialogClass::Toggle_Collision_Bits_Assignment -- toggles the controls related to co *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- void GenNamesDialogClass::Toggle_Collision_Bits_Assignment(void)
- {
- bool onoff = (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_COLLISION_BITS_CHECK) == BST_CHECKED);
- EnableWindow(GetDlgItem(Hwnd,IDC_COLLISION_PHYSICAL),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_COLLISION_PROJECTILE),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_COLLISION_VIS),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_COLLISION_CAMERA),onoff);
- EnableWindow(GetDlgItem(Hwnd,IDC_COLLISION_VEHICLE),onoff);
- }
- /***********************************************************************************************
- * GenNamesDialogClass::Dialog_Proc -- windows dialog proc *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- bool GenNamesDialogClass::Dialog_Proc(HWND hWnd,UINT message,WPARAM wParam,LPARAM)
- {
- switch (message ) {
- case WM_INITDIALOG:
- NameIndexSpin = SetupIntSpinner
- (
- Hwnd,
- IDC_NAME_INDEX_SPIN,
- IDC_NAME_INDEX_EDIT,
- MIN_NAME_INDEX,MAX_NAME_INDEX,INITIAL_NAME_INDEX
- );
-
- // limit the base name edit box to 10 characters
- SendDlgItemMessage(Hwnd,IDC_BASE_NAME_EDIT,EM_LIMITTEXT,MAX_ROOT_NAME_LEN,0);
- // limit the suffix and prefix edit boxes
- SendDlgItemMessage(Hwnd,IDC_PREFIX_EDIT,EM_LIMITTEXT,MAX_PREFIX_LEN,0);
- SendDlgItemMessage(Hwnd,IDC_SUFFIX_EDIT,EM_LIMITTEXT,MAX_SUFFIX_LEN,0);
- // set initial name to root of the filename
- char buf[_MAX_FNAME];
- _splitpath(MaxInterface->GetCurFileName(),NULL,NULL,buf,NULL);
- buf[MAX_ROOT_NAME_LEN+1] = 0;
- SetWindowText(GetDlgItem(Hwnd,IDC_BASE_NAME_EDIT),buf);
- // init radio buttons
- CheckDlgButton(Hwnd,IDC_AFFECT_ALL_RADIO,BST_UNCHECKED);
- CheckDlgButton(Hwnd,IDC_AFFECT_SELECTED_RADIO,BST_CHECKED);
-
- // init the check boxes
- CheckDlgButton(Hwnd,IDC_ASSIGN_NAMES_CHECK,BST_CHECKED);
- CheckDlgButton(Hwnd,IDC_ASSIGN_PREFIX_CHECK,BST_UNCHECKED);
- CheckDlgButton(Hwnd,IDC_ASSIGN_SUFFIX_CHECK,BST_UNCHECKED);
- CheckDlgButton(Hwnd,IDC_ASSIGN_COLLISION_BITS_CHECK,BST_CHECKED);
- CheckDlgButton(Hwnd,IDC_COLLISION_PHYSICAL,BST_CHECKED);
- CheckDlgButton(Hwnd,IDC_COLLISION_PROJECTILE,BST_CHECKED);
- CheckDlgButton(Hwnd,IDC_COLLISION_VIS,BST_CHECKED);
- CheckDlgButton(Hwnd,IDC_COLLISION_CAMERA,BST_CHECKED);
- CheckDlgButton(Hwnd,IDC_COLLISION_VEHICLE,BST_CHECKED);
- return 1;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDOK:
- if (Ok_To_Exit()) {
- // general options
- Options->AssignNames = (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_NAMES_CHECK) == BST_CHECKED);
- Options->AssignPrefix = (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_PREFIX_CHECK) == BST_CHECKED);
- Options->AssignSuffix = (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_SUFFIX_CHECK) == BST_CHECKED);
- Options->AssignCollisionBits = (IsDlgButtonChecked(Hwnd,IDC_ASSIGN_COLLISION_BITS_CHECK) == BST_CHECKED);
- Options->OnlyAffectSelected = (IsDlgButtonChecked(Hwnd,IDC_AFFECT_SELECTED_RADIO) == BST_CHECKED);
-
- // naming options
- Options->NameIndex = NameIndexSpin->GetIVal();
- GetWindowText(GetDlgItem(Hwnd,IDC_BASE_NAME_EDIT),Options->RootName,sizeof(Options->RootName));
- GetWindowText(GetDlgItem(Hwnd,IDC_PREFIX_EDIT),Options->PrefixName,sizeof(Options->PrefixName));
- GetWindowText(GetDlgItem(Hwnd,IDC_SUFFIX_EDIT),Options->SuffixName,sizeof(Options->SuffixName));
-
- // collision options
- Options->PhysicalCollision = (IsDlgButtonChecked(Hwnd,IDC_COLLISION_PHYSICAL) == BST_CHECKED);
- Options->ProjectileCollision = (IsDlgButtonChecked(Hwnd,IDC_COLLISION_PROJECTILE) == BST_CHECKED);
- Options->VisCollision = (IsDlgButtonChecked(Hwnd,IDC_COLLISION_VIS) == BST_CHECKED);
- Options->CameraCollision = (IsDlgButtonChecked(Hwnd,IDC_COLLISION_CAMERA) == BST_CHECKED);
- Options->VehicleCollision = (IsDlgButtonChecked(Hwnd,IDC_COLLISION_VEHICLE) == BST_CHECKED);
- EndDialog(Hwnd, 1);
- }
- break;
- case IDCANCEL:
- EndDialog(Hwnd, 0);
- break;
- case IDC_ASSIGN_NAMES_CHECK:
- Toggle_Name_Assignment();
- break;
- case IDC_ASSIGN_PREFIX_CHECK:
- EnableWindow(GetDlgItem(Hwnd,IDC_PREFIX_EDIT),(IsDlgButtonChecked(Hwnd,IDC_ASSIGN_SUFFIX_CHECK) == BST_CHECKED));
- break;
- case IDC_ASSIGN_SUFFIX_CHECK:
- EnableWindow(GetDlgItem(Hwnd,IDC_SUFFIX_EDIT),(IsDlgButtonChecked(Hwnd,IDC_ASSIGN_SUFFIX_CHECK) == BST_CHECKED));
- break;
- case IDC_ASSIGN_COLLISION_BITS_CHECK:
- Toggle_Collision_Bits_Assignment();
- break;
- }
- return 1;
- }
- return 0;
- }
- /***********************************************************************************************
- * _gen_names_dialog_proc -- dialog proc that "thunks" to the class's dialog proc *
- * *
- * INPUT: *
- * *
- * OUTPUT: *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 10/10/2000 gth : Created. *
- *=============================================================================================*/
- static BOOL CALLBACK _gen_names_dialog_proc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
- {
- static GenNamesDialogClass * dialog = NULL;
- if (message == WM_INITDIALOG) {
- dialog = (GenNamesDialogClass *)lparam;
- dialog->Hwnd = hwnd;
- }
- if (dialog) {
- return dialog->Dialog_Proc(hwnd, message, wparam, lparam);
- } else {
- return FALSE;
- }
- }
|