46 #include "table/strings.h" 
   50 static int _rename_id = 1;
 
   51 static int _rename_what = -1;
 
   61   GetString(msg, STR_COMPANY_NAME, 
lastof(msg));
 
   71 void HandleOnEditText(
const char *str)
 
   73   switch (_rename_what) {
 
   87     default: NOT_REACHED();
 
   90   _rename_id = _rename_what = -1;
 
  126 #ifdef ENABLE_NETWORK 
  127 void ShowNetworkGiveMoneyWindow(
CompanyID company)
 
  129   _rename_id = company;
 
  190 void ZoomInOrOutToCursorWindow(
bool in, 
Window *w)
 
  194   if (_game_mode != GM_MENU) {
 
  198     Point pt = GetTileZoomCenterWindow(in, w);
 
  207 static const struct NWidgetPart _nested_main_window_widgets[] = {
 
  219   GHK_RESET_OBJECT_TO_PLACE,
 
  221   GHK_DELETE_NONVITAL_WINDOWS,
 
  226   GHK_TOGGLE_TRANSPARENCY,
 
  227   GHK_TOGGLE_INVISIBILITY = GHK_TOGGLE_TRANSPARENCY + 9,
 
  228   GHK_TRANSPARENCY_TOOLBAR = GHK_TOGGLE_INVISIBILITY + 8,
 
  240   static const uint LINKGRAPH_REFRESH_PERIOD = 0xff;
 
  241   static const uint LINKGRAPH_DELAY = 0xf;
 
  253     this->refresh = LINKGRAPH_DELAY;
 
  258     if (--this->refresh > 0) 
return;
 
  260     this->refresh = LINKGRAPH_REFRESH_PERIOD;
 
  274     if (_game_mode == GM_MENU) {
 
  275       static const SpriteID title_sprites[] = {SPR_OTTD_O, SPR_OTTD_P, SPR_OTTD_E, SPR_OTTD_N, SPR_OTTD_T, SPR_OTTD_T, SPR_OTTD_D};
 
  276       static const uint LETTER_SPACING = 10;
 
  277       int name_width = (
lengthof(title_sprites) - 1) * LETTER_SPACING;
 
  279       for (uint i = 0; i < 
lengthof(title_sprites); i++) {
 
  282       int off_x = (this->
width - name_width) / 2;
 
  284       for (uint i = 0; i < 
lengthof(title_sprites); i++) {
 
  285         DrawSprite(title_sprites[i], PAL_NONE, off_x, 50);
 
  286         off_x += 
GetSpriteSize(title_sprites[i]).width + LETTER_SPACING;
 
  293     if (hotkey == GHK_QUIT) {
 
  294       HandleExitGameRequest();
 
  320       case GHK_BOUNDING_BOXES:
 
  324       case GHK_DIRTY_BLOCKS:
 
  333       case GHK_CENTER_ZOOM: {
 
  334         Point pt = GetTileBelowCursor();
 
  349         *(
volatile byte *)0 = 0;
 
  357       case GHK_UPDATE_COORDS: 
 
  361       case GHK_TOGGLE_TRANSPARENCY:
 
  362       case GHK_TOGGLE_TRANSPARENCY + 1:
 
  363       case GHK_TOGGLE_TRANSPARENCY + 2:
 
  364       case GHK_TOGGLE_TRANSPARENCY + 3:
 
  365       case GHK_TOGGLE_TRANSPARENCY + 4:
 
  366       case GHK_TOGGLE_TRANSPARENCY + 5:
 
  367       case GHK_TOGGLE_TRANSPARENCY + 6:
 
  368       case GHK_TOGGLE_TRANSPARENCY + 7:
 
  369       case GHK_TOGGLE_TRANSPARENCY + 8:
 
  375       case GHK_TOGGLE_INVISIBILITY:
 
  376       case GHK_TOGGLE_INVISIBILITY + 1:
 
  377       case GHK_TOGGLE_INVISIBILITY + 2:
 
  378       case GHK_TOGGLE_INVISIBILITY + 3:
 
  379       case GHK_TOGGLE_INVISIBILITY + 4:
 
  380       case GHK_TOGGLE_INVISIBILITY + 5:
 
  381       case GHK_TOGGLE_INVISIBILITY + 6:
 
  382       case GHK_TOGGLE_INVISIBILITY + 7:
 
  388       case GHK_TRANSPARENCY_TOOLBAR:
 
  392       case GHK_TRANSPARANCY:
 
  396 #ifdef ENABLE_NETWORK 
  400           if (cio == NULL) 
break;
 
  410       case GHK_CHAT_COMPANY: 
 
  413           if (cio == NULL) 
break;
 
  419       case GHK_CHAT_SERVER: 
 
  437     this->refresh = LINKGRAPH_DELAY;
 
  443       ZoomInOrOutToCursorWindow(wheel < 0, 
this);
 
  452       this->refresh = LINKGRAPH_DELAY;
 
  463     if (!gui_scope) 
return;
 
  471 const uint16 _ghk_quit_keys[] = {
'Q' | WKC_CTRL, 
'Q' | WKC_META, 0};
 
  472 const uint16 _ghk_abandon_keys[] = {
'W' | WKC_CTRL, 
'W' | WKC_META, 0};
 
  473 const uint16 _ghk_chat_keys[] = {WKC_RETURN, 
'T', 0};
 
  474 const uint16 _ghk_chat_all_keys[] = {WKC_SHIFT | WKC_RETURN, WKC_SHIFT | 
'T', 0};
 
  475 const uint16 _ghk_chat_company_keys[] = {WKC_CTRL | WKC_RETURN, WKC_CTRL | 
'T', 0};
 
  476 const uint16 _ghk_chat_server_keys[] = {WKC_CTRL | WKC_SHIFT | WKC_RETURN, WKC_CTRL | WKC_SHIFT | 
'T', 0};
 
  478 static Hotkey global_hotkeys[] = {
 
  479   Hotkey(_ghk_quit_keys, 
"quit", GHK_QUIT),
 
  480   Hotkey(_ghk_abandon_keys, 
"abandon", GHK_ABANDON),
 
  481   Hotkey(WKC_BACKQUOTE, 
"console", GHK_CONSOLE),
 
  482   Hotkey(
'B' | WKC_CTRL, 
"bounding_boxes", GHK_BOUNDING_BOXES),
 
  483   Hotkey(
'I' | WKC_CTRL, 
"dirty_blocks", GHK_DIRTY_BLOCKS),
 
  484   Hotkey(
'C', 
"center", GHK_CENTER),
 
  485   Hotkey(
'Z', 
"center_zoom", GHK_CENTER_ZOOM),
 
  486   Hotkey(WKC_ESC, 
"reset_object_to_place", GHK_RESET_OBJECT_TO_PLACE),
 
  487   Hotkey(WKC_DELETE, 
"delete_windows", GHK_DELETE_WINDOWS),
 
  488   Hotkey(WKC_DELETE | WKC_SHIFT, 
"delete_all_windows", GHK_DELETE_NONVITAL_WINDOWS),
 
  489   Hotkey(
'R' | WKC_CTRL, 
"refresh_screen", GHK_REFRESH_SCREEN),
 
  491   Hotkey(
'0' | WKC_ALT, 
"crash_game", GHK_CRASH),
 
  492   Hotkey(
'1' | WKC_ALT, 
"money", GHK_MONEY),
 
  493   Hotkey(
'2' | WKC_ALT, 
"update_coordinates", GHK_UPDATE_COORDS),
 
  495   Hotkey(
'1' | WKC_CTRL, 
"transparency_signs", GHK_TOGGLE_TRANSPARENCY),
 
  496   Hotkey(
'2' | WKC_CTRL, 
"transparency_trees", GHK_TOGGLE_TRANSPARENCY + 1),
 
  497   Hotkey(
'3' | WKC_CTRL, 
"transparency_houses", GHK_TOGGLE_TRANSPARENCY + 2),
 
  498   Hotkey(
'4' | WKC_CTRL, 
"transparency_industries", GHK_TOGGLE_TRANSPARENCY + 3),
 
  499   Hotkey(
'5' | WKC_CTRL, 
"transparency_buildings", GHK_TOGGLE_TRANSPARENCY + 4),
 
  500   Hotkey(
'6' | WKC_CTRL, 
"transparency_bridges", GHK_TOGGLE_TRANSPARENCY + 5),
 
  501   Hotkey(
'7' | WKC_CTRL, 
"transparency_structures", GHK_TOGGLE_TRANSPARENCY + 6),
 
  502   Hotkey(
'8' | WKC_CTRL, 
"transparency_catenary", GHK_TOGGLE_TRANSPARENCY + 7),
 
  503   Hotkey(
'9' | WKC_CTRL, 
"transparency_loading", GHK_TOGGLE_TRANSPARENCY + 8),
 
  504   Hotkey(
'1' | WKC_CTRL | WKC_SHIFT, 
"invisibility_signs", GHK_TOGGLE_INVISIBILITY),
 
  505   Hotkey(
'2' | WKC_CTRL | WKC_SHIFT, 
"invisibility_trees", GHK_TOGGLE_INVISIBILITY + 1),
 
  506   Hotkey(
'3' | WKC_CTRL | WKC_SHIFT, 
"invisibility_houses", GHK_TOGGLE_INVISIBILITY + 2),
 
  507   Hotkey(
'4' | WKC_CTRL | WKC_SHIFT, 
"invisibility_industries", GHK_TOGGLE_INVISIBILITY + 3),
 
  508   Hotkey(
'5' | WKC_CTRL | WKC_SHIFT, 
"invisibility_buildings", GHK_TOGGLE_INVISIBILITY + 4),
 
  509   Hotkey(
'6' | WKC_CTRL | WKC_SHIFT, 
"invisibility_bridges", GHK_TOGGLE_INVISIBILITY + 5),
 
  510   Hotkey(
'7' | WKC_CTRL | WKC_SHIFT, 
"invisibility_structures", GHK_TOGGLE_INVISIBILITY + 6),
 
  511   Hotkey(
'8' | WKC_CTRL | WKC_SHIFT, 
"invisibility_catenary", GHK_TOGGLE_INVISIBILITY + 7),
 
  512   Hotkey(
'X' | WKC_CTRL, 
"transparency_toolbar", GHK_TRANSPARENCY_TOOLBAR),
 
  513   Hotkey(
'X', 
"toggle_transparency", GHK_TRANSPARANCY),
 
  514 #ifdef ENABLE_NETWORK 
  515   Hotkey(_ghk_chat_keys, 
"chat", GHK_CHAT),
 
  516   Hotkey(_ghk_chat_all_keys, 
"chat_all", GHK_CHAT_ALL),
 
  517   Hotkey(_ghk_chat_company_keys, 
"chat_company", GHK_CHAT_COMPANY),
 
  518   Hotkey(_ghk_chat_server_keys, 
"chat_server", GHK_CHAT_SERVER),
 
  522 HotkeyList MainWindow::hotkeys(
"global", global_hotkeys);
 
  528   _nested_main_window_widgets, 
lengthof(_nested_main_window_widgets),
 
  539   int num = MainWindow::hotkeys.
CheckMatch(keycode);
 
  540   return num == GHK_QUIT;
 
  544 void ShowSelectGameWindow();
 
  551   for (uint i = 0; i != 16; i++) {
 
  561   switch (_game_mode) {
 
  562     default: NOT_REACHED();
 
  564       ShowSelectGameWindow();
 
  582   if (_game_mode == GM_EDITOR) 
return;