1 #pragma once 2 #include "Gui_Def.h" 3 #include "SliderValue.h" 4 5 #include <MyGUI_Prerequest.h> 6 //#include <MyGUI_Types.h> 7 #include <MyGUI_WidgetToolTip.h> 8 #include <MyGUI_Enumerator.h> 9 #include <OgreString.h> 10 #include "settings_com.h" 11 12 13 namespace Ogre { class SceneNode; class Root; class SceneManager; class RenderWindow; class Viewport; class Light; } 14 class Scene; class CData; class SplineRoad; 15 class App; class SETTINGS; 16 17 18 // tracks,cars list items - with info for sorting 19 struct TrkL 20 { 21 std::string name; 22 const class TrackInfo* ti; // 0 means user trk 23 static int idSort; 24 TrkL(); 25 }; 26 27 28 class CGuiCom : public BGui 29 { 30 public: 31 App* app; 32 SETTINGS* pSet; 33 Scene* sc; 34 MyGUI::Gui* mGui; 35 36 CGuiCom(App* app1); 37 38 typedef std::list <std::string> strlist; 39 40 41 /// Gui common -------------------------- 42 43 // resize 44 void SizeGUI(), doSizeGUI(MyGUI::EnumeratorWidgetPtr); 45 float GetGuiMargin(int wy); 46 void setOrigPos(WP wp, const char* relToWnd); 47 void CreateFonts(); 48 49 // tooltip 50 WP mToolTip; Ed mToolTipTxt; 51 void setToolTips(MyGUI::EnumeratorWidgetPtr widgets); 52 void notifyToolTip(WP sender, const MyGUI::ToolTipInfo& info); 53 void boundedMove(WP moving, const MyGUI::IntPoint& point); 54 55 // language 56 bool bGuiReinit; // lang change 57 void comboLanguage(CMB); 58 std::map<std::string, MyGUI::UString> languages; // <short name, display name> 59 60 void UnfocusLists(); 61 Btn bnQuit; void btnQuit(WP); 62 63 // init 64 void GuiCenterMouse(); 65 void GuiInitTooltip(), GuiInitLang(); 66 // init tabs 67 void GuiInitGraphics(), GuiInitTrack(), initMiniPos(int i); 68 69 // main menu 70 void InitMainMenu(); 71 void btnMainMenu(WP); void tabMainMenu(Tab tab, size_t id); 72 MyGUI::TabPtr FindSubTab(WP tab); // util 73 74 75 /// [Graphics] 76 SlV(ViewDist); SlV(Anisotropy); 77 SlV(TerDetail); SlV(TerDist); SV svRoadDist; 78 SV svTexSize, svTerMtr, svTerTripl; // detail 79 SV svTrees, svGrass, svTreesDist, svGrassDist; // veget 80 SV svShadowType, svShadowCount, svShadowSize, svShadowDist; // shadow 81 SlV(WaterSize); 82 83 Ck ckUseImposters, ckImpostorsOnly; 84 Ck ckWaterReflect, ckWaterRefract; void chkWater(Ck*); 85 86 void comboTexFilter(CMB), cmbAntiAliasing(CMB); 87 void btnShadows(WP), btnShaders(WP), btnTrGrReset(WP); 88 89 Ck ckLimitFps; 90 SV svLimitFps,svLimitSleep; 91 92 93 // track path 94 Ogre::String pathTrk[2]; // 0 read only 1 //U user paths for save 95 std::string TrkDir(); // path to track dir (from pSet settings) 96 97 Ogre::String PathListTrk(int user=-1); 98 Ogre::String PathListTrkPrv(int user/*=-1*/, Ogre::String track); 99 100 bool TrackExists(Ogre::String name); 101 Ogre::String GetSceneryColor(Ogre::String name, Ogre::String* scenery=0); 102 std::map<Ogre::String, Ogre::String> scnClr, scnN; 103 104 105 /// [Track] 106 107 // selected track name, user 108 Ogre::String sListTrack; 109 bool bListTrackU; 110 111 void listTrackChng(Mli2, size_t); 112 void SortTrkList(); 113 void TrackListUpd(bool resetNotFound=false); 114 115 Mli2 trkList; 116 Ed trkDesc[2]; // description 117 bool needSort(Mli2 li); 118 119 Img imgPrv[2], imgMini[2], imgTer[2]; // view, mini: road, terrain 120 Img imgTrkIco1, imgTrkIco2, imgMiniPos[2]; 121 MyGUI::RotatingSkin* imgMiniRot[2]; 122 123 124 // st - road stats,dim inf - tracks.ini ratings 125 const static int StTrk = 14, InfTrk = 12; 126 Txt stTrk[2][StTrk], infTrk[2][InfTrk]; // [2] 2nd set is for champs 127 Img imStTrk[2][4], imInfTrk[2][InfTrk]; 128 129 void UpdGuiRdStats(const SplineRoad* rd, const Scene* sc, const Ogre::String& sTrack, 130 float timeCur, bool reverse=false, int champ=0); 131 void ReadTrkStats(); 132 133 // track views 134 void btnTrkView1(WP), btnTrkView2(WP), btnTrkFilter(WP); 135 void ChangeTrackView(); 136 void updTrkListDim(); 137 138 139 // columns, filters --- 140 Ck ckTrkFilter; void chkTrkFilter(Ck*); 141 Ck ckTrkColVis[COL_VIS]; void chkTrkColVis(Ck*); 142 SV svTrkFilMin[COL_FIL], svTrkFilMax[COL_FIL]; void slTrkFil(SV*); 143 void ChkUpd_Col(); 144 Txt txtTracksFAll, txtTracksFCur; 145 146 // const list column widths 147 const static int colTrk[32]; 148 const static Ogre::String clrsDiff[9], clrsRating[6], clrsLong[10]; 149 150 151 // track find 152 Ogre::String sTrkFind; 153 Ed edTrkFind; void editTrkFind(Ed); 154 155 // list fill 156 strlist liTracks,liTracksUser; 157 std::list<TrkL> liTrk; 158 void FillTrackLists(); 159 160 void AddTrkL(std::string name, int user, const class TrackInfo* ti); 161 void trkListNext(int rel); 162 163 164 /// [Screen] 165 Cmb resList; 166 void InitGuiScreenRes(), ResizeOptWnd(); 167 168 CK(VidFullscr); CK(VidVSync); 169 void btnResChng(WP); 170 void comboGraphicsAll(CMB), comboRenderSystem(CMB); 171 172 }; 173