89 DrawString(20, 175, STR_OPTIONS_FULLSCREEN, 0); // fullscreen |
97 DrawString(20, 175, STR_OPTIONS_FULLSCREEN, 0); // fullscreen |
90 } break; |
98 } break; |
91 |
99 |
92 case WE_CLICK: |
100 case WE_CLICK: |
93 switch(e->click.widget) { |
101 switch(e->click.widget) { |
94 case 5: |
102 case 5: /* Setup currencies dropdown */ |
95 ShowDropDownMenu(w, _currency_string_list, _opt_mod_ptr->currency, e->click.widget, _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies(), 0); |
103 ShowDropDownMenu(w, _currency_string_list, _opt_mod_ptr->currency, e->click.widget, _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies(), 0); |
96 return; |
104 return; |
97 case 8: |
105 case 8: /* Setup distance unit dropdown */ |
98 ShowDropDownMenu(w, _distances_dropdown, _opt_mod_ptr->kilometers, e->click.widget, 0, 0); |
106 ShowDropDownMenu(w, _distances_dropdown, _opt_mod_ptr->kilometers, e->click.widget, 0, 0); |
99 return; |
107 return; |
100 case 11: { |
108 case 11: { /* Setup road-side dropdown */ |
101 int i = _opt_mod_ptr->road_side; |
109 int i = 0; |
102 ShowDropDownMenu(w, _driveside_dropdown, i, e->click.widget, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i), 0); |
110 |
103 return; |
111 /* You can only change the drive side if you are in the menu or ingame with |
104 } |
112 * no vehicles present. In a networking game only the server can change it */ |
105 case 14: { |
113 if ((_game_mode != GM_MENU && RoadVehiclesAreBuilt()) || (_networking && !_network_server)) |
|
114 i = (-1) ^ (1 << _opt_mod_ptr->road_side); // disable the other value |
|
115 |
|
116 ShowDropDownMenu(w, _driveside_dropdown, _opt_mod_ptr->road_side, e->click.widget, i, 0); |
|
117 } return; |
|
118 case 14: { /* Setup townname dropdown */ |
106 int i = _opt_mod_ptr->town_name; |
119 int i = _opt_mod_ptr->town_name; |
107 ShowDropDownMenu(w, BuildDynamicDropdown(STR_TOWNNAME_ORIGINAL_ENGLISH, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1), i, e->click.widget, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i), 0); |
120 ShowDropDownMenu(w, BuildDynamicDropdown(STR_TOWNNAME_ORIGINAL_ENGLISH, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1), i, e->click.widget, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i), 0); |
108 return; |
121 return; |
109 } |
122 } |
110 case 17: |
123 case 17: /* Setup autosave dropdown */ |
111 ShowDropDownMenu(w, _autosave_dropdown, _opt_mod_ptr->autosave, e->click.widget, 0, 0); |
124 ShowDropDownMenu(w, _autosave_dropdown, _opt_mod_ptr->autosave, e->click.widget, 0, 0); |
112 return; |
125 return; |
113 case 20: |
126 case 20: /* Setup customized vehicle-names dropdown */ |
114 ShowDropDownMenu(w, _designnames_dropdown, (_vehicle_design_names&1)?1:0, e->click.widget, (_vehicle_design_names&2)?0:2, 0); |
127 ShowDropDownMenu(w, _designnames_dropdown, (_vehicle_design_names&1)?1:0, e->click.widget, (_vehicle_design_names&2)?0:2, 0); |
115 return; |
128 return; |
116 case 21: |
129 case 21: /* Save customized vehicle-names to disk */ |
117 return; |
130 return; |
118 case 24: |
131 case 24: /* Setup interface language dropdown */ |
119 ShowDropDownMenu(w, _dynlang.dropdown, _dynlang.curr, e->click.widget, 0, 0); |
132 ShowDropDownMenu(w, _dynlang.dropdown, _dynlang.curr, e->click.widget, 0, 0); |
120 return; |
133 return; |
121 case 27: |
134 case 27: /* Setup resolution dropdown */ |
122 // setup resolution dropdown |
|
123 ShowDropDownMenu(w, BuildDynamicDropdown(SPECSTR_RESOLUTION_START, _num_resolutions), GetCurRes(), e->click.widget, 0, 0); |
135 ShowDropDownMenu(w, BuildDynamicDropdown(SPECSTR_RESOLUTION_START, _num_resolutions), GetCurRes(), e->click.widget, 0, 0); |
124 return; |
136 return; |
125 case 28: /* Click fullscreen on/off */ |
137 case 28: /* Click fullscreen on/off */ |
126 (_fullscreen) ? CLRBIT(w->click_state, 28) : SETBIT(w->click_state, 28); |
138 (_fullscreen) ? CLRBIT(w->click_state, 28) : SETBIT(w->click_state, 28); |
127 ToggleFullScreen(!_fullscreen); // toggle full-screen on/off |
139 ToggleFullScreen(!_fullscreen); // toggle full-screen on/off |
128 SetWindowDirty(w); |
140 SetWindowDirty(w); |
129 return; |
141 return; |
130 case 31: /* Setup screenshot format dropdown */ |
142 case 31: /* Setup screenshot format dropdown */ |
131 ShowDropDownMenu(w, BuildDynamicDropdown(SPECSTR_SCREENSHOT_START, _num_screenshot_formats), _cur_screenshot_format, e->click.widget, 0, 0); |
143 ShowDropDownMenu(w, BuildDynamicDropdown(SPECSTR_SCREENSHOT_START, _num_screenshot_formats), _cur_screenshot_format, e->click.widget, 0, 0); |
132 return; |
144 return; |
133 |
|
134 } |
145 } |
135 break; |
146 break; |
136 |
147 |
137 case WE_DROPDOWN_SELECT: |
148 case WE_DROPDOWN_SELECT: |
138 switch(e->dropdown.button) { |
149 switch(e->dropdown.button) { |
139 case 20: |
150 case 20: /* Vehicle design names */ |
140 if (e->dropdown.index == 0) { |
151 if (e->dropdown.index == 0) { |
141 DeleteCustomEngineNames(); |
152 DeleteCustomEngineNames(); |
142 MarkWholeScreenDirty(); |
153 MarkWholeScreenDirty(); |
143 } else if (!(_vehicle_design_names&1)) { |
154 } else if (!(_vehicle_design_names&1)) { |
144 LoadCustomEngineNames(); |
155 LoadCustomEngineNames(); |
145 MarkWholeScreenDirty(); |
156 MarkWholeScreenDirty(); |
146 } |
157 } |
147 break; |
158 break; |
148 case 5: |
159 case 5: /* Currency */ |
149 if (e->dropdown.index == 23) |
160 if (e->dropdown.index == 23) |
150 ShowCustCurrency(); |
161 ShowCustCurrency(); |
151 _opt_mod_ptr->currency = _opt.currency = e->dropdown.index; |
162 _opt_mod_ptr->currency = _opt.currency = e->dropdown.index; |
152 MarkWholeScreenDirty(); |
163 MarkWholeScreenDirty(); |
153 break; |
164 break; |
154 case 8: |
165 case 8: /* Distance units */ |
155 _opt_mod_ptr->kilometers = e->dropdown.index; |
166 _opt_mod_ptr->kilometers = e->dropdown.index; |
156 MarkWholeScreenDirty(); |
167 MarkWholeScreenDirty(); |
157 break; |
168 break; |
158 case 11: |
169 case 11: /* Road side */ |
159 if (_game_mode == GM_MENU) |
170 if (_opt_mod_ptr->road_side != e->dropdown.index) // only change if setting changed |
160 DoCommandP(0, e->dropdown.index, 0, NULL, CMD_SET_ROAD_DRIVE_SIDE | CMD_MSG(STR_EMPTY)); |
171 DoCommandP(0, e->dropdown.index, 0, NULL, CMD_SET_ROAD_DRIVE_SIDE | CMD_MSG(STR_EMPTY)); |
161 break; |
172 break; |
162 case 14: |
173 case 14: /* Town names */ |
163 if (_game_mode == GM_MENU) |
174 if (_game_mode == GM_MENU) |
164 DoCommandP(0, e->dropdown.index, 0, NULL, CMD_SET_TOWN_NAME_TYPE | CMD_MSG(STR_EMPTY)); |
175 DoCommandP(0, e->dropdown.index, 0, NULL, CMD_SET_TOWN_NAME_TYPE | CMD_MSG(STR_EMPTY)); |
165 break; |
176 break; |
166 case 17: |
177 case 17: /* Autosave options */ |
167 _opt_mod_ptr->autosave = e->dropdown.index; |
178 _opt_mod_ptr->autosave = e->dropdown.index; |
168 SetWindowDirty(w); |
179 SetWindowDirty(w); |
169 break; |
180 break; |
170 |
181 case 24: /* Change interface language */ |
171 // change interface language |
|
172 case 24: |
|
173 ReadLanguagePack(e->dropdown.index); |
182 ReadLanguagePack(e->dropdown.index); |
174 MarkWholeScreenDirty(); |
183 MarkWholeScreenDirty(); |
175 break; |
184 break; |
176 |
185 case 27: /* Change resolution */ |
177 // change resolution |
|
178 case 27: |
|
179 if (e->dropdown.index < _num_resolutions && ChangeResInGame(_resolutions[e->dropdown.index][0],_resolutions[e->dropdown.index][1])) |
186 if (e->dropdown.index < _num_resolutions && ChangeResInGame(_resolutions[e->dropdown.index][0],_resolutions[e->dropdown.index][1])) |
180 SetWindowDirty(w); |
187 SetWindowDirty(w); |
181 break; |
188 break; |
182 |
189 case 31: /* Change screenshot format */ |
183 // change screenshot format |
|
184 case 31: |
|
185 SetScreenshotFormat(e->dropdown.index); |
190 SetScreenshotFormat(e->dropdown.index); |
186 SetWindowDirty(w); |
191 SetWindowDirty(w); |
187 break; |
192 break; |
188 } |
193 } |
189 break; |
194 break; |