X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fpreferences.h;h=9fc92ac20b9283f5bfe4573ea9564d3ccf71f710;hb=99b8049c8c2896a5eca47d133776761f409809f4;hp=581c8fe780dcfc464b494553c33d33ab02510d3b;hpb=ab3a99dbbe84a0d130fea4d0ceb7b79d7ed07eb7;p=xonotic%2Fnetradiant.git diff --git a/radiant/preferences.h b/radiant/preferences.h index 581c8fe7..9fc92ac2 100644 --- a/radiant/preferences.h +++ b/radiant/preferences.h @@ -50,7 +50,7 @@ public: 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; } @@ -86,7 +86,7 @@ private: /*! 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 @@ -95,7 +95,7 @@ private: public: CXMLPropertyBag(); - virtual ~CXMLPropertyBag() + virtual ~CXMLPropertyBag() { if (InUse()) Clear(); @@ -110,12 +110,12 @@ public: (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 @@ -180,6 +180,7 @@ public: 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; } /*! @@ -193,6 +194,50 @@ public: 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 */ @@ -201,6 +246,7 @@ class CGameDialog : public Dialog 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 @@ -217,14 +263,18 @@ class CGameDialog : public Dialog 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 @@ -258,11 +308,18 @@ public: */ list 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 @@ -275,16 +332,21 @@ public: 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 @@ -309,7 +371,7 @@ public: /*! 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 @@ -335,12 +397,19 @@ private: 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; @@ -365,7 +434,7 @@ typedef struct { class PrefsDlg : public Dialog { - + public: /*! local prefs file @@ -375,10 +444,10 @@ public: // 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 */ @@ -387,7 +456,7 @@ protected: // warning about old project files bool m_bWarn; list mGames; - + public: // last light intensity used in the CLightPrompt dialog, stored in registry int m_iLastLightIntensity; @@ -399,15 +468,15 @@ public: /*! 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); @@ -464,7 +533,7 @@ public: // 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 @@ -555,7 +624,7 @@ public: 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 @@ -604,7 +673,7 @@ public: int m_nTextureCompressionFormat; int m_nLightRadiuses; - + bool m_bQ3Map2Texturing; #ifdef ATIHACK_812