branch | cpp_gui |
changeset 6308 | 646711c5feaa |
parent 6307 | f40e88cff863 |
6307:f40e88cff863 | 6308:646711c5feaa |
---|---|
49 static int _rename_id = 1; |
49 static int _rename_id = 1; |
50 static int _rename_what = -1; |
50 static int _rename_what = -1; |
51 |
51 |
52 static byte _terraform_size = 1; |
52 static byte _terraform_size = 1; |
53 RailType _last_built_railtype; |
53 RailType _last_built_railtype; |
54 static int _scengen_town_size = 2; // depress medium-sized towns per default |
54 static int _scengen_town_size = 1; // depress medium-sized towns per default |
55 |
55 |
56 extern void GenerateIndustries(); |
56 extern void GenerateIndustries(); |
57 extern bool GenerateTowns(); |
57 extern bool GenerateTowns(); |
58 |
58 |
59 |
59 |
87 if (!_network_server) { |
87 if (!_network_server) { |
88 SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg); |
88 SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg); |
89 } else { |
89 } else { |
90 NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg, NETWORK_SERVER_INDEX); |
90 NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg, NETWORK_SERVER_INDEX); |
91 } |
91 } |
92 } break; |
92 } break; |
93 #endif /* ENABLE_NETWORK */ |
93 #endif /* ENABLE_NETWORK */ |
94 default: NOT_REACHED(); |
94 default: NOT_REACHED(); |
95 } |
95 } |
96 |
96 |
97 _rename_id = _rename_what = -1; |
97 _rename_id = _rename_what = -1; |
145 _fast_forward ^= true; |
145 _fast_forward ^= true; |
146 SndPlayFx(SND_15_BEEP); |
146 SndPlayFx(SND_15_BEEP); |
147 } |
147 } |
148 |
148 |
149 |
149 |
150 /** Toggle all transparency options, except for signs */ |
|
151 static void ToggleTransparency() |
|
152 { |
|
153 static byte trans_opt = ~0; |
|
154 |
|
155 if (GB(_transparent_opt, 1, 7) == 0) { |
|
156 SB(_transparent_opt, 1, 7, GB(trans_opt, 1, 7)); |
|
157 } else { |
|
158 trans_opt = _transparent_opt; |
|
159 SB(_transparent_opt, 1, 7, 0); |
|
160 } |
|
161 |
|
162 MarkWholeScreenDirty(); |
|
163 } |
|
164 |
|
165 |
|
150 static void MenuClickSettings(int index) |
166 static void MenuClickSettings(int index) |
151 { |
167 { |
152 switch (index) { |
168 switch (index) { |
153 case 0: ShowGameOptions(); return; |
169 case 0: ShowGameOptions(); return; |
154 case 1: ShowGameDifficulty(); return; |
170 case 1: ShowGameDifficulty(); return; |
159 case 6: _display_opt ^= DO_SHOW_STATION_NAMES; break; |
175 case 6: _display_opt ^= DO_SHOW_STATION_NAMES; break; |
160 case 7: _display_opt ^= DO_SHOW_SIGNS; break; |
176 case 7: _display_opt ^= DO_SHOW_SIGNS; break; |
161 case 8: _display_opt ^= DO_WAYPOINTS; break; |
177 case 8: _display_opt ^= DO_WAYPOINTS; break; |
162 case 9: _display_opt ^= DO_FULL_ANIMATION; break; |
178 case 9: _display_opt ^= DO_FULL_ANIMATION; break; |
163 case 10: _display_opt ^= DO_FULL_DETAIL; break; |
179 case 10: _display_opt ^= DO_FULL_DETAIL; break; |
164 case 11: TOGGLEBIT(_transparent_opt, TO_BUILDINGS); break; |
180 case 11: ToggleTransparency(); break; |
165 case 12: TOGGLEBIT(_transparent_opt, TO_SIGNS); break; |
181 case 12: TOGGLEBIT(_transparent_opt, TO_SIGNS); break; |
166 } |
182 } |
167 MarkWholeScreenDirty(); |
183 MarkWholeScreenDirty(); |
168 } |
184 } |
169 |
185 |
170 static void MenuClickSaveLoad(int index) |
186 static void MenuClickSaveLoad(int index) |
962 if (_display_opt & DO_SHOW_STATION_NAMES) SETBIT(x, 6); |
978 if (_display_opt & DO_SHOW_STATION_NAMES) SETBIT(x, 6); |
963 if (_display_opt & DO_SHOW_SIGNS) SETBIT(x, 7); |
979 if (_display_opt & DO_SHOW_SIGNS) SETBIT(x, 7); |
964 if (_display_opt & DO_WAYPOINTS) SETBIT(x, 8); |
980 if (_display_opt & DO_WAYPOINTS) SETBIT(x, 8); |
965 if (_display_opt & DO_FULL_ANIMATION) SETBIT(x, 9); |
981 if (_display_opt & DO_FULL_ANIMATION) SETBIT(x, 9); |
966 if (_display_opt & DO_FULL_DETAIL) SETBIT(x, 10); |
982 if (_display_opt & DO_FULL_DETAIL) SETBIT(x, 10); |
967 if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(x, 11); |
983 if (GB(_transparent_opt, 1, 7) != 0) SETBIT(x, 11); |
968 if (HASBIT(_transparent_opt, TO_SIGNS)) SETBIT(x, 12); |
984 if (HASBIT(_transparent_opt, TO_SIGNS)) SETBIT(x, 12); |
969 WP(w,menu_d).checked_items = x; |
985 WP(w,menu_d).checked_items = x; |
970 } |
986 } |
971 |
987 |
972 |
988 |
973 static void ToolbarScenSaveOrLoad(BaseWindow *w) |
989 static void ToolbarScenSaveOrLoad(BaseWindow *w) |
1245 EditorTerraformClick_Transmitter |
1261 EditorTerraformClick_Transmitter |
1246 }; |
1262 }; |
1247 |
1263 |
1248 |
1264 |
1249 /** Callback function for the scenario editor 'reset landscape' confirmation window |
1265 /** Callback function for the scenario editor 'reset landscape' confirmation window |
1250 * @param yes_clicked boolean value, true when yes was clicked, false otherwise */ |
1266 * @param w Window unused |
1267 * @param confirmed boolean value, true when yes was clicked, false otherwise */ |
|
1251 static void ResetLandscapeConfirmationCallback(BaseWindow *w, bool confirmed) |
1268 static void ResetLandscapeConfirmationCallback(BaseWindow *w, bool confirmed) |
1252 { |
1269 { |
1253 if (confirmed) { |
1270 if (confirmed) { |
1254 Player *p; |
1271 Player *p; |
1255 |
1272 |
1403 } |
1420 } |
1404 } |
1421 } |
1405 |
1422 |
1406 static void PlaceProc_Town(TileIndex tile) |
1423 static void PlaceProc_Town(TileIndex tile) |
1407 { |
1424 { |
1408 DoCommandP(tile, _scengen_town_size, 0, CcBuildTown, CMD_BUILD_TOWN | CMD_MSG(STR_0236_CAN_T_BUILD_TOWN_HERE)); |
1425 uint32 size = min(_scengen_town_size, (int)TSM_CITY); |
1426 uint32 mode = _scengen_town_size > TSM_CITY ? TSM_CITY : TSM_FIXED; |
|
1427 DoCommandP(tile, size, mode, CcBuildTown, CMD_BUILD_TOWN | CMD_MSG(STR_0236_CAN_T_BUILD_TOWN_HERE)); |
|
1409 } |
1428 } |
1410 |
1429 |
1411 |
1430 |
1412 static const OldWidget _scen_edit_town_gen_widgets[] = { |
1431 static const OldWidget _scen_edit_town_gen_widgets[] = { |
1413 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
1432 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
1414 { WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
1433 { WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
1415 { WWT_STICKYBOX, RESIZE_NONE, 7, 148, 159, 0, 13, 0x0, STR_STICKY_BUTTON}, |
1434 { WWT_STICKYBOX, RESIZE_NONE, 7, 148, 159, 0, 13, 0x0, STR_STICKY_BUTTON}, |
1416 { WWT_PANEL, RESIZE_NONE, 7, 0, 159, 14, 81, 0x0, STR_NULL}, |
1435 { WWT_PANEL, RESIZE_NONE, 7, 0, 159, 14, 94, 0x0, STR_NULL}, |
1417 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN}, |
1436 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN}, |
1418 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION}, |
1437 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION}, |
1419 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP}, |
1438 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP}, |
1420 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE}, |
1439 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE}, |
1421 { WWT_TEXTBTN, RESIZE_NONE, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE}, |
1440 { WWT_TEXTBTN, RESIZE_NONE, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE}, |
1422 { WWT_TEXTBTN, RESIZE_NONE, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE}, |
1441 { WWT_TEXTBTN, RESIZE_NONE, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE}, |
1442 { WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 81, 92, STR_SCENARIO_EDITOR_CITY, STR_02A4_SELECT_TOWN_SIZE}, |
|
1423 { WWT_LABEL, RESIZE_NONE, 7, 0, 147, 54, 67, STR_02A5_TOWN_SIZE, STR_NULL}, |
1443 { WWT_LABEL, RESIZE_NONE, 7, 0, 147, 54, 67, STR_02A5_TOWN_SIZE, STR_NULL}, |
1424 { WIDGETS_END}, |
1444 { WIDGETS_END}, |
1425 }; |
1445 }; |
1426 |
1446 |
1427 static void ScenEditTownGenWndProc(BaseWindow *w, WindowEvent *e) |
1447 static void ScenEditTownGenWndProc(BaseWindow *w, WindowEvent *e) |
1430 case WE_PAINT: |
1450 case WE_PAINT: |
1431 w->DrawWidgets(); |
1451 w->DrawWidgets(); |
1432 break; |
1452 break; |
1433 |
1453 |
1434 case WE_CREATE: |
1454 case WE_CREATE: |
1435 w->LowerWidget((_scengen_town_size - 1)+ 7); |
1455 w->LowerWidget(_scengen_town_size + 7); |
1436 break; |
1456 break; |
1437 |
1457 |
1438 case WE_CLICK: |
1458 case WE_CLICK: |
1439 switch (e->we.click.widget) { |
1459 switch (e->we.click.widget) { |
1440 case 4: // new town |
1460 case 4: // new town |
1441 HandlePlacePushButton(w, 4, SPR_CURSOR_TOWN, 1, PlaceProc_Town); |
1461 HandlePlacePushButton(w, 4, SPR_CURSOR_TOWN, 1, PlaceProc_Town); |
1442 break; |
1462 break; |
1443 case 5: {// random town |
1463 case 5: {// random town |
1444 Town *t; |
1464 Town *t; |
1465 uint size = min(_scengen_town_size, (int)TSM_CITY); |
|
1466 TownSizeMode mode = _scengen_town_size > TSM_CITY ? TSM_CITY : TSM_FIXED; |
|
1445 |
1467 |
1446 w->HandleButtonClick(5); |
1468 w->HandleButtonClick(5); |
1447 _generating_world = true; |
1469 _generating_world = true; |
1448 t = CreateRandomTown(20, _scengen_town_size); |
1470 t = CreateRandomTown(20, mode, size); |
1449 _generating_world = false; |
1471 _generating_world = false; |
1450 |
1472 |
1451 if (t == NULL) { |
1473 if (t == NULL) { |
1452 ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1474 ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1453 } else { |
1475 } else { |
1463 if (!GenerateTowns()) ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1485 if (!GenerateTowns()) ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1464 _generating_world = false; |
1486 _generating_world = false; |
1465 break; |
1487 break; |
1466 } |
1488 } |
1467 |
1489 |
1468 case 7: case 8: case 9: |
1490 case 7: case 8: case 9: case 10: |
1469 w->RaiseWidget((_scengen_town_size - 1) + 7); |
1491 w->RaiseWidget(_scengen_town_size + 7); |
1470 _scengen_town_size = (e->we.click.widget - 7) + 1; |
1492 _scengen_town_size = e->we.click.widget - 7; |
1471 w->LowerWidget((_scengen_town_size - 1) + 7); |
1493 w->LowerWidget(_scengen_town_size + 7); |
1472 w->SetDirty(); |
1494 w->SetDirty(); |
1473 break; |
1495 break; |
1474 } |
1496 } |
1475 break; |
1497 break; |
1476 |
1498 |
1482 case WE_PLACE_OBJ: |
1504 case WE_PLACE_OBJ: |
1483 _place_proc(e->we.place.tile); |
1505 _place_proc(e->we.place.tile); |
1484 break; |
1506 break; |
1485 case WE_ABORT_PLACE_OBJ: |
1507 case WE_ABORT_PLACE_OBJ: |
1486 w->RaiseButtons(); |
1508 w->RaiseButtons(); |
1487 w->LowerWidget((_scengen_town_size - 1) + 7); |
1509 w->LowerWidget(_scengen_town_size + 7); |
1488 w->SetDirty(); |
1510 w->SetDirty(); |
1489 break; |
1511 break; |
1490 } |
1512 } |
1491 } |
1513 } |
1492 |
1514 |
1493 static const WindowDesc _scen_edit_town_gen_desc = { |
1515 static const WindowDesc _scen_edit_town_gen_desc = { |
1494 WDP_AUTO, WDP_AUTO, 160, 82, |
1516 WDP_AUTO, WDP_AUTO, 160, 95, |
1495 WC_SCEN_TOWN_GEN, WC_NONE, |
1517 WC_SCEN_TOWN_GEN, WC_NONE, |
1496 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
1518 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
1497 _scen_edit_town_gen_widgets, |
1519 _scen_edit_town_gen_widgets, |
1498 ScenEditTownGenWndProc, |
1520 ScenEditTownGenWndProc, |
1499 }; |
1521 }; |
2347 |
2369 |
2348 case 'X' | WKC_CTRL: |
2370 case 'X' | WKC_CTRL: |
2349 ShowTransparencyToolbar(); |
2371 ShowTransparencyToolbar(); |
2350 break; |
2372 break; |
2351 |
2373 |
2352 case 'X': { |
2374 case 'X': |
2353 /* Toggle all transparency options except for signs */ |
2375 ToggleTransparency(); |
2354 static byte trans_opt = ~0; |
|
2355 if (GB(_transparent_opt, 1, 7) == 0) { |
|
2356 SB(_transparent_opt, 1, 7, GB(trans_opt, 1, 7)); |
|
2357 } else { |
|
2358 trans_opt = _transparent_opt; |
|
2359 SB(_transparent_opt, 1, 7, 0); |
|
2360 } |
|
2361 MarkWholeScreenDirty(); |
|
2362 break; |
2376 break; |
2363 } |
|
2364 |
2377 |
2365 #ifdef ENABLE_NETWORK |
2378 #ifdef ENABLE_NETWORK |
2366 case WKC_RETURN: case 'T': // smart chat; send to team if any, otherwise to all |
2379 case WKC_RETURN: case 'T': // smart chat; send to team if any, otherwise to all |
2367 if (_networking) { |
2380 if (_networking) { |
2368 const NetworkClientInfo *cio = NetworkFindClientInfoFromIndex(_network_own_client_index); |
2381 const NetworkClientInfo *cio = NetworkFindClientInfoFromIndex(_network_own_client_index); |