My Project
 All Classes Files Functions Variables Enumerations Pages
control_terrain.h
Go to the documentation of this file.
1 /**************************************************************************/
2 /* Copyright 2009 Tim Day */
3 /* */
4 /* This file is part of Fracplanet */
5 /* */
6 /* Fracplanet is free software: you can redistribute it and/or modify */
7 /* it under the terms of the GNU General Public License as published by */
8 /* the Free Software Foundation, either version 3 of the License, or */
9 /* (at your option) any later version. */
10 /* */
11 /* Fracplanet is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public License */
17 /* along with Fracplanet. If not, see <http://www.gnu.org/licenses/>. */
18 /**************************************************************************/
19 
24 #ifndef _control_terrain_h_
25 #define _control_terrain_h_
26 
27 #include "parameters_terrain.h"
28 #include "parameters_cloud.h"
29 #include "control.h"
30 
31 class FracplanetMain;
32 
34 
36 class ControlTerrain : public Control
37 {
38  private:
39 
40  Q_OBJECT;
41 
42  public:
43 
44  ControlTerrain(FracplanetMain* tgt,ParametersTerrain* param_terrain,ParametersCloud* param_cloud);
45 
47  {}
48 
49  public slots:
50 
51  void setObjectType(int id)
52  {
53  parameters_terrain->object_type=static_cast<ParametersObject::ObjectType>(id);
54  parameters_cloud->object_type=static_cast<ParametersObject::ObjectType>(id);
55  }
56  void setTerrainSeed(int v)
57  {
58  parameters_terrain->seed=v;
59  }
60  void setTerrainSubdivisions(int v)
61  {
62  parameters_terrain->subdivisions=v;
63  }
64  void setCloudSubdivisions(int v)
65  {
66  parameters_cloud->subdivisions=v;
67  }
68  void setSubdivisionsUnperturbed(int v)
69  {
70  parameters_terrain->subdivisions_unperturbed=v;
71  }
72  void setVariationVertical(int v)
73  {
74  parameters_terrain->variation.z=v/100.0;
75  }
76  void setVariationHorizontal(int v)
77  {
78  parameters_terrain->variation.x=v/100.0;
79  parameters_terrain->variation.y=v/100.0;
80  }
81  void setNoiseTerms(int v)
82  {
83  parameters_terrain->noise.terms=v;
84  }
85  void setNoiseFrequency(int v)
86  {
87  parameters_terrain->noise.frequency=v/100.0;
88  }
89  void setNoiseAmplitude(int v)
90  {
91  parameters_terrain->noise.amplitude=v/100.0;
92  }
93  void setNoiseAmplitudeDecay(int v)
94  {
95  parameters_terrain->noise.amplitude_decay=v/100.0;
96  }
97  void setBaseHeight(int v)
98  {
99  parameters_terrain->base_height=v/100.0;
100  }
101  void setPowerLaw(int v)
102  {
103  parameters_terrain->power_law=v/100.0;
104  }
105  void setSnowlineEquator(int v)
106  {
107  parameters_terrain->snowline_equator=v/100.0;
108  }
109  void setSnowlinePole(int v)
110  {
111  parameters_terrain->snowline_pole=v/100.0;
112  }
113  void setSnowlinePowerLaw(int v)
114  {
115  parameters_terrain->snowline_power_law=v/100.0;
116  }
117  void setSnowlineSlopeEffect(int v)
118  {
119  parameters_terrain->snowline_slope_effect=v/100.0;
120  }
121  void setSnowlineGlacierEffect(int v)
122  {
123  parameters_terrain->snowline_glacier_effect=v/100.0;
124  }
125  void setRivers(int v)
126  {
127  parameters_terrain->rivers=v;
128  }
129  void setRiversSeed(int v)
130  {
131  parameters_terrain->rivers_seed=v;
132  }
133  void setLakeBecomesSea(int v)
134  {
135  parameters_terrain->lake_becomes_sea=v/100.0;
136  }
137  void setOceansAndRiversEmissive(int v)
138  {
139  parameters_terrain->oceans_and_rivers_emissive=v/100.0;
140  }
141  void pickColourOcean()
142  {
143  emit pickColour(colour_ocean_button,parameters_terrain->colour_ocean);
144  }
145  void pickColourShoreline()
146  {
147  emit pickColour(colour_shoreline_button,parameters_terrain->colour_shoreline);
148  }
149  void pickColourLow()
150  {
151  emit pickColour(colour_low_button,parameters_terrain->colour_low);
152  }
153  void pickColourRiver()
154  {
155  emit pickColour(colour_river_button,parameters_terrain->colour_river);
156  }
157  void pickColourSnow()
158  {
159  emit pickColour(colour_snow_button,parameters_terrain->colour_snow);
160  }
161  void pickColourHigh()
162  {
163  emit pickColour(colour_high_button,parameters_terrain->colour_high);
164  }
165  void pickColourCloud()
166  {
167  emit pickColour(colour_cloud_button,parameters_cloud->colour);
168  }
169  void setCloudsSubdivisionsUnlocked(bool f)
170  {
171  if (f)
172  {
173  disconnect(
174  subdivisions_spinbox,SIGNAL(valueChanged(int)),
175  clouds_subdivisions_spinbox,SLOT(setValue(int))
176  );
177  }
178  else
179  {
180  clouds_subdivisions_spinbox->setValue(parameters_terrain->subdivisions);
181  connect(
182  subdivisions_spinbox,SIGNAL(valueChanged(int)),
183  clouds_subdivisions_spinbox,SLOT(setValue(int))
184  );
185 
186  }
187  }
188 
189  void setCloudsEnabled(bool f)
190  {
191  parameters_cloud->enabled=f;
192  }
193  void setCloudbase(int v)
194  {
195  parameters_cloud->cloudbase=v/100.0f;
196  }
197  void setWeatherSystems(int v)
198  {
199  parameters_cloud->weather_systems=v;
200  }
201 
202  void regenerate_with_new_terrain_seed();
203  void regenerate_with_new_rivers_seed();
204  void regenerate_with_new_clouds_seed();
205 
206  private:
207 
209  ParametersTerrain*const parameters_terrain;
210 
212  ParametersCloud*const parameters_cloud;
213 
215  FracplanetMain* regenerate_target;
216 
217  QComboBox* object_type_combo_box;
218 
219  QLabel* base_height_label;
220  QSpinBox* base_height_spinbox;
221 
222  QLabel* terrain_seed_label;
223  QSpinBox* terrain_seed_spinbox;
224  QLabel* subdivisions_label;
225  QSpinBox* subdivisions_spinbox;
226  QLabel* subdivisions_unperturbed_label;
227  QSpinBox* subdivisions_unperturbed_spinbox;
228 
229  QLabel* variation_vertical_label;
230  QSpinBox* variation_vertical_spinbox;
231  QLabel* variation_horizontal_label;
232  QSpinBox* variation_horizontal_spinbox;
233 
234  QLabel* noise_terms_label;
235  QSpinBox* noise_terms_spinbox;
236  QLabel* noise_frequency_label;
237  QSpinBox* noise_frequency_spinbox;
238  QLabel* noise_amplitude_label;
239  QSpinBox* noise_amplitude_spinbox;
240  QLabel* noise_amplitude_decay_label;
241  QSpinBox* noise_amplitude_decay_spinbox;
242 
243  QLabel* power_law_label;
244  QSpinBox* power_law_spinbox;
245 
246  QLabel* snowline_equator_label;
247  QSpinBox* snowline_equator_spinbox;
248  QLabel* snowline_pole_label;
249  QSpinBox* snowline_pole_spinbox;
250  QLabel* snowline_power_law_label;
251  QSpinBox* snowline_power_law_spinbox;
252  QLabel* snowline_slope_effect_label;
253  QSpinBox* snowline_slope_effect_spinbox;
254  QLabel* snowline_glacier_effect_label;
255  QSpinBox* snowline_glacier_effect_spinbox;
256 
257  QLabel* rivers_label;
258  QSpinBox* rivers_spinbox;
259  QLabel* rivers_seed_label;
260  QSpinBox* rivers_seed_spinbox;
261  QLabel* lake_becomes_sea_label;
262  QSpinBox* lake_becomes_sea_spinbox;
263 
264  QSpinBox* oceans_and_rivers_emissive_spinbox;
265 
266  QLabel* clouds_seed_label;
267  QSpinBox* clouds_seed_spinbox;
268 
269  QLabel* colour_label;
270  QPushButton* colour_ocean_button;
271  QPushButton* colour_shoreline_button;
272  QPushButton* colour_low_button;
273  QPushButton* colour_river_button;
274  QPushButton* colour_snow_button;
275  QPushButton* colour_high_button;
276  QPushButton* colour_cloud_button;
277 
278  QCheckBox* clouds_subdivisions_unlock_checkbox;
279  QSpinBox* clouds_subdivisions_spinbox;
280 
281  QPushButton* regenerate_button;
282  QPushButton* regenerate_with_new_terrain_seed_button;
283  QPushButton* regenerate_with_new_rivers_seed_button;
284  QPushButton* regenerate_with_new_clouds_seed_button;
285 
286  QWidget* padding;
287 };
288 
289 #endif