changeset 3674 | d6c991bdcbe1 |
parent 3636 | a36cc46e754d |
child 3692 | 1d8f5041d437 |
3673:00ba3772ca20 | 3674:d6c991bdcbe1 |
---|---|
1450 } |
1450 } |
1451 } |
1451 } |
1452 |
1452 |
1453 static void PlaceProc_Town(TileIndex tile) |
1453 static void PlaceProc_Town(TileIndex tile) |
1454 { |
1454 { |
1455 DoCommandP(tile, 0, 0, CcBuildTown, CMD_BUILD_TOWN | CMD_MSG(STR_0236_CAN_T_BUILD_TOWN_HERE)); |
1455 Window *w = FindWindowById(WC_SCEN_TOWN_GEN, 0); |
1456 DoCommandP(tile, 1 + FIND_FIRST_BIT(w->click_state >> 7), 0, CcBuildTown, CMD_BUILD_TOWN | CMD_MSG(STR_0236_CAN_T_BUILD_TOWN_HERE)); |
|
1456 } |
1457 } |
1457 |
1458 |
1458 |
1459 |
1459 static const Widget _scen_edit_town_gen_widgets[] = { |
1460 static const Widget _scen_edit_town_gen_widgets[] = { |
1460 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
1461 { WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
1472 |
1473 |
1473 static void ScenEditTownGenWndProc(Window *w, WindowEvent *e) |
1474 static void ScenEditTownGenWndProc(Window *w, WindowEvent *e) |
1474 { |
1475 { |
1475 switch (e->event) { |
1476 switch (e->event) { |
1476 case WE_PAINT: |
1477 case WE_PAINT: |
1477 w->click_state = (w->click_state & ~(1<<7 | 1<<8 | 1<<9) ) | (1 << (_new_town_size + 7)); |
|
1478 DrawWindowWidgets(w); |
1478 DrawWindowWidgets(w); |
1479 DrawStringCentered(80, 56, STR_02A5_TOWN_SIZE, 0); |
1479 DrawStringCentered(80, 56, STR_02A5_TOWN_SIZE, 0); |
1480 break; |
|
1481 |
|
1482 case WE_CREATE: |
|
1483 w->click_state = 1 << 8; /* medium town size selected */ |
|
1480 break; |
1484 break; |
1481 |
1485 |
1482 case WE_CLICK: |
1486 case WE_CLICK: |
1483 switch (e->click.widget) { |
1487 switch (e->click.widget) { |
1484 case 4: /* new town */ |
1488 case 4: /* new town */ |
1487 case 5: {/* random town */ |
1491 case 5: {/* random town */ |
1488 Town *t; |
1492 Town *t; |
1489 |
1493 |
1490 HandleButtonClick(w, 5); |
1494 HandleButtonClick(w, 5); |
1491 _generating_world = true; |
1495 _generating_world = true; |
1492 t = CreateRandomTown(20); |
1496 t = CreateRandomTown(20, 1 + FIND_FIRST_BIT(w->click_state >> 7)); |
1493 _generating_world = false; |
1497 _generating_world = false; |
1494 |
1498 |
1495 if (t == NULL) { |
1499 if (t == NULL) { |
1496 ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1500 ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1497 } else { |
1501 } else { |
1502 } |
1506 } |
1503 case 6: {/* many random towns */ |
1507 case 6: {/* many random towns */ |
1504 HandleButtonClick(w, 6); |
1508 HandleButtonClick(w, 6); |
1505 |
1509 |
1506 _generating_world = true; |
1510 _generating_world = true; |
1507 _game_mode = GM_NORMAL; // little hack to avoid towns of the same size |
1511 if (!GenerateTowns()) ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
1508 if (!GenerateTowns()) { |
|
1509 ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
|
1510 } |
|
1511 _generating_world = false; |
1512 _generating_world = false; |
1512 |
|
1513 _game_mode = GM_EDITOR; |
|
1514 break; |
1513 break; |
1515 } |
1514 } |
1516 |
1515 |
1517 case 7: case 8: case 9: |
1516 case 7: case 8: case 9: |
1518 _new_town_size = e->click.widget - 7; |
1517 w->click_state = 1 << e->click.widget; |
1519 SetWindowDirty(w); |
1518 SetWindowDirty(w); |
1520 break; |
1519 break; |
1521 } |
1520 } |
1522 break; |
1521 break; |
1523 |
1522 |
1526 break; |
1525 break; |
1527 case WE_PLACE_OBJ: |
1526 case WE_PLACE_OBJ: |
1528 _place_proc(e->place.tile); |
1527 _place_proc(e->place.tile); |
1529 break; |
1528 break; |
1530 case WE_ABORT_PLACE_OBJ: |
1529 case WE_ABORT_PLACE_OBJ: |
1531 w->click_state = 0; |
1530 w->click_state &= (1 << 7 | 1 << 8 | 1 << 9); |
1532 SetWindowDirty(w); |
1531 SetWindowDirty(w); |
1533 break; |
1532 break; |
1534 } |
1533 } |
1535 } |
1534 } |
1536 |
1535 |