PrefTypes_t mType;
void *mVal;
- CPrefAssignment(char *name, PrefTypes_t Type, void *Val)
+ CPrefAssignment(const char *name, PrefTypes_t Type, void *Val)
{
mName = name; mType = Type; mVal = Val;
}
/*!
store assignment in the property list if not already there
*/
- void PushAssignment(char *name, PrefTypes_t type, void *pV);
+ void PushAssignment(const char *name, PrefTypes_t type, void *pV);
/*!
find the xmlnode relating to the epair name
public:
CXMLPropertyBag();
- virtual ~CXMLPropertyBag()
+ virtual ~CXMLPropertyBag()
{
if (InUse())
Clear();
(name, type and pointer to value)
this is used in UpdatePrefTree
*/
- void GetPref(char *name, Str *pV, char *V);
- void GetPref(char *name, int *pV, int V);
- void GetPref(char *name, bool *pV, bool V);
- void GetPref(char *name, float *pV, float V);
- void GetPref(char *name, float *pV, float* V);
- void GetPref(char *name, window_position_t* pV, window_position_t V);
+ void GetPref(const char *name, Str *pV, const char *V);
+ void GetPref(const char *name, int *pV, int V);
+ void GetPref(const char *name, bool *pV, bool V);
+ void GetPref(const char *name, float *pV, float V);
+ void GetPref(const char *name, float *pV, float* V);
+ void GetPref(const char *name, window_position_t* pV, window_position_t V);
/*!
returns whether or not the property bag is already open
bool mEClassSingleLoad; ///< only load a single eclass definition file
bool mNoPatch; ///< this game doesn't support patch technology
Str mCaulkShader; ///< the shader to use for caulking
+ bool quake2; ///< set this to true to get quake2
CGameDescription() { mpDoc = NULL; }
/*!
void Dump();
};
+/*!
+select games, copy editing assets and write out configuration files
+ */
+
+#define Q3_PACK "Q3Pack"
+#define URT_PACK "UrTPack"
+#define UFOAI_PACK "UFOAIPack"
+#define Q2W_PACK "Q2WPack"
+#define WARSOW_PACK "WarsowPack"
+#define NEXUIZ_PACK "NexuizPack"
+#define Q2_PACK "Q2Pack"
+
+class CGameInstall : public Dialog {
+public:
+ CGameInstall();
+ void ScanGames();
+ void Run();
+ void BuildDialog();
+
+ static void OnBtnBrowseEngine( GtkWidget *widget, gpointer data );
+ static void OnGameSelectChanged( GtkWidget *widget, gpointer data );
+
+ enum gameType_e {
+ GAME_NONE = 0,
+ GAME_Q3 = 1,
+ GAME_URT,
+ GAME_UFOAI,
+ GAME_Q2W,
+ GAME_WARSOW,
+ GAME_NEXUIZ,
+ GAME_Q2,
+ GAME_COUNT
+ };
+
+protected:
+ Str m_strName;
+ Str m_strMod;
+ Str m_strEngine;
+ int m_nComboSelect;
+
+ // maps from m_nComboSelect to the games
+ int m_availGames[GAME_COUNT];
+};
+
/*!
standalone dialog for games selection, and more generally global settings
*/
GtkWidget *mFrame; ///< this is built on-demand first time it's used
GtkWidget *mTopBox; ///< top level box used to store the dialog frame, must unhook after modal use
+ GtkComboBox *mGameCombo; // combo box holds the selection of available game
/*!
global prefs storage
static bool m_bNetRun;
#endif
+ bool m_bDoGameInstall;
+
+ CGameInstall mGameInstall;
+
protected:
-
+
int m_nComboSelect; ///< intermediate int value for combo in dialog box
public:
- /*!
- those settings are saved in the global prefs file
+ /*!
+ those settings are saved in the global prefs file
I'm too lazy to wrap behind protected access, not sure this needs to be public
NOTE: those are preference settings. if you change them it is likely that you would
have to restart the editor for them to take effect
*/
list<CGameDescription *> mGames;
- CGameDialog() { mFrame = NULL; m_pCurrentGameDescription = NULL; m_bLogConsole = false; m_bForceLogConsole = false; }
- virtual ~CGameDialog();
+ CGameDialog() {
+ mFrame = NULL;
+ m_pCurrentGameDescription = NULL;
+ m_bLogConsole = false;
+ m_bForceLogConsole = false;
+ m_bDoGameInstall = true; // go through DoModal at least once
+ mGameCombo = NULL;
+ }
+ virtual ~CGameDialog();
+
+ void AddPacksURL( Str &s );
- void AddPacksURL(Str &s);
-
/*!
intialize the game dialog, called at CPrefsDlg::Init
will scan for games, load prefs, and do game selection dialog if needed
void Reset();
/*!
- run the dialog UI for the list of games
+ run the dialog UI for the list of games
*/
void DoGameDialog();
+ /*!
+ call out to the game installation dialog
+ */
+ void DoGameInstall();
+
/*!
Dialog API
this is only called when the dialog is built at startup for main engine select
*/
- void BuildDialog ();
- void UpdateData (bool retrieve);
+ void BuildDialog();
+ void UpdateData( bool retrieve );
/*!
construction of the dialog frame
/*!
read or set netrun (check file)
- \param retrieve
+ \param retrieve
if false, will check if netrun file is present and will set m_bNetRun
if true, will create/erase the netrun file depending on m_bNetRun
NOTE: this is not backwards, 'retrieve' means 'retrieve from settings dialog' - in terms of UI
uses m_nComboItem to find the right mGames
*/
CGameDescription *GameDescriptionForComboItem();
+
+ /*!
+ callback for the game install button
+ */
+ static void SInstallCallback( GtkWidget *widget, gpointer data );
+
+ void UpdateGameCombo();
};
typedef struct {
int nEntitySplit1;
int nEntitySplit2;
-
+
window_position_t position;
window_position_t posEntityWnd;
class PrefsDlg : public Dialog
{
-
+
public:
/*!
local prefs file
// will enable/disable stuff according to the situation
void DoSensitivity();
void PreModal() { DoSensitivity(); }
-
+
// enable/disable custom editor entry
void DoEditorSensitivity();
-
+
/*!
this holds global level preferences
*/
// warning about old project files
bool m_bWarn;
list<CGameDescription *> mGames;
-
+
public:
// last light intensity used in the CLightPrompt dialog, stored in registry
int m_iLastLightIntensity;
/*! Preference notebook page numbers */
enum {PTAB_FRONT = 0, PTAB_GAME_SETTINGS, PTAB_2D, PTAB_CAMERA, PTAB_TEXTURE, PTAB_LAYOUT, PTAB_MOUSE,
PTAB_EDITING, PTAB_STARTUP, PTAB_PATHS, PTAB_MISC, PTAB_BSPMONITOR} pref_tabs;
-
+
GtkWidget *notebook;
-
+
void UpdateTextureCompression();
#ifdef ATIHACK_812
void UpdateATIHack();
#endif
-
+
void LoadPrefs();
void SavePrefs();
void LoadTexdefPref(texdef_t* pTexdef, char* pName);
// path to the project loaded at startup
// if g_PrefsDlg can't find the information in the ini file
// it will try to guess and eventually ask the user
- Str m_strLastProject;
+ Str m_strLastProject;
/*!
version of last loaded project file
says -1 if there's no version loaded
bool m_bRunQuake;
// store prefs setting for automatic sleep mode activation
bool m_bDoSleep;
-
+
bool m_bClipCaulk;
// make the texture increments match the grid changes
int m_nTextureCompressionFormat;
int m_nLightRadiuses;
-
+
bool m_bQ3Map2Texturing;
#ifdef ATIHACK_812