src/main_gui.cpp
branchcpp_gui
changeset 6251 cd413fa2e252
parent 6249 abafebc2fbce
child 6258 a2f86b8fd99b
equal deleted inserted replaced
6250:5135b200b376 6251:cd413fa2e252
   111 	if (w->IsWidgetDisabled(widget)) return false;
   111 	if (w->IsWidgetDisabled(widget)) return false;
   112 
   112 
   113 	SndPlayFx(SND_15_BEEP);
   113 	SndPlayFx(SND_15_BEEP);
   114 	w->SetDirty();
   114 	w->SetDirty();
   115 
   115 
   116 	if (IsWindowWidgetLowered(w, widget)) {
   116 	if (w->IsWidgetLowered(widget)) {
   117 		ResetObjectToPlace();
   117 		ResetObjectToPlace();
   118 		return false;
   118 		return false;
   119 	}
   119 	}
   120 
   120 
   121 	SetObjectToPlace(cursor, PAL_NONE, mode, w->window_class, w->window_number);
   121 	SetObjectToPlace(cursor, PAL_NONE, mode, w->window_class, w->window_number);
   122 	LowerWindowWidget(w, widget);
   122 	w->LowerWidget(widget);
   123 	_place_proc = placeproc;
   123 	_place_proc = placeproc;
   124 	return true;
   124 	return true;
   125 }
   125 }
   126 
   126 
   127 
   127 
   455 		}
   455 		}
   456 	} break;
   456 	} break;
   457 
   457 
   458 	case WE_DESTROY: {
   458 	case WE_DESTROY: {
   459 			Window *v = Window::FindById(WC_MAIN_TOOLBAR, 0);
   459 			Window *v = Window::FindById(WC_MAIN_TOOLBAR, 0);
   460 			RaiseWindowWidget(v, WP(w,menu_d).main_button);
   460 			v->RaiseWidget(WP(w,menu_d).main_button);
   461 			v->SetDirty();
   461 			v->SetDirty();
   462 			return;
   462 			return;
   463 		}
   463 		}
   464 
   464 
   465 	case WE_POPUPMENU_SELECT: {
   465 	case WE_POPUPMENU_SELECT: {
   590 		break;
   590 		break;
   591 		}
   591 		}
   592 
   592 
   593 	case WE_DESTROY: {
   593 	case WE_DESTROY: {
   594 		Window *v = Window::FindById(WC_MAIN_TOOLBAR, 0);
   594 		Window *v = Window::FindById(WC_MAIN_TOOLBAR, 0);
   595 		RaiseWindowWidget(v, WP(w,menu_d).main_button);
   595 		v->RaiseWidget(WP(w,menu_d).main_button);
   596 		v->SetDirty();
   596 		v->SetDirty();
   597 		return;
   597 		return;
   598 		}
   598 		}
   599 
   599 
   600 	case WE_POPUPMENU_SELECT: {
   600 	case WE_POPUPMENU_SELECT: {
   692 {
   692 {
   693 	int width;
   693 	int width;
   694 	int x = w->widget[GB(parent_button, 0, 8)].left;
   694 	int x = w->widget[GB(parent_button, 0, 8)].left;
   695 
   695 
   696 	assert(disabled_mask == 0 || item_count <= 8);
   696 	assert(disabled_mask == 0 || item_count <= 8);
   697 	LowerWindowWidget(w, parent_button);
   697 	w->LowerWidget(parent_button);
   698 	w->InvalidateWidget(parent_button);
   698 	w->InvalidateWidget(parent_button);
   699 
   699 
   700 	DeleteWindowById(WC_TOOLBAR_MENU, 0);
   700 	DeleteWindowById(WC_TOOLBAR_MENU, 0);
   701 
   701 
   702 	/* Extend the dropdown toolbar to the longest string in the list and
   702 	/* Extend the dropdown toolbar to the longest string in the list and
   727 
   727 
   728 static Window *PopupMainPlayerToolbMenu(Window *w, int x, int main_button, int gray)
   728 static Window *PopupMainPlayerToolbMenu(Window *w, int x, int main_button, int gray)
   729 {
   729 {
   730 	x += w->left;
   730 	x += w->left;
   731 
   731 
   732 	LowerWindowWidget(w, main_button);
   732 	w->LowerWidget(main_button);
   733 	w->InvalidateWidget(main_button);
   733 	w->InvalidateWidget(main_button);
   734 
   734 
   735 	DeleteWindowById(WC_TOOLBAR_MENU, 0);
   735 	DeleteWindowById(WC_TOOLBAR_MENU, 0);
   736 	w = Window::Allocate(x, 0x16, 0xF1, 0x52, PlayerMenuWndProc, WC_TOOLBAR_MENU, _player_menu_widgets);
   736 	w = Window::Allocate(x, 0x16, 0xF1, 0x52, PlayerMenuWndProc, WC_TOOLBAR_MENU, _player_menu_widgets);
   737 	w->flash_timeout = 0;
   737 	w->flash_timeout = 0;
  1287 				DrawSprite(SPR_WHITE_POINT, PAL_NONE, 77 + coords[0], 55 + coords[1]);
  1287 				DrawSprite(SPR_WHITE_POINT, PAL_NONE, 77 + coords[0], 55 + coords[1]);
  1288 				coords += 2;
  1288 				coords += 2;
  1289 			} while (--n);
  1289 			} while (--n);
  1290 		}
  1290 		}
  1291 
  1291 
  1292 		if (IsWindowWidgetLowered(w, 5) || IsWindowWidgetLowered(w, 6)) // change area-size if raise/lower corner is selected
  1292 		if (w->IsWidgetLowered(5) || w->IsWidgetLowered(6)) // change area-size if raise/lower corner is selected
  1293 			SetTileSelectSize(_terraform_size, _terraform_size);
  1293 			SetTileSelectSize(_terraform_size, _terraform_size);
  1294 
  1294 
  1295 		break;
  1295 		break;
  1296 
  1296 
  1297 	case WE_KEYPRESS: {
  1297 	case WE_KEYPRESS: {
  1337 		break;
  1337 		break;
  1338 
  1338 
  1339 	case WE_TIMEOUT: {
  1339 	case WE_TIMEOUT: {
  1340 		uint i;
  1340 		uint i;
  1341 		for (i = 0; i < w->widget_count; i++) {
  1341 		for (i = 0; i < w->widget_count; i++) {
  1342 			if (IsWindowWidgetLowered(w, i)) {
  1342 			if (w->IsWidgetLowered(i)) {
  1343 				RaiseWindowWidget(w, i);
  1343 				w->RaiseWidget(i);
  1344 				w->InvalidateWidget(i);
  1344 				w->InvalidateWidget(i);
  1345 			}
  1345 			}
  1346 			if (i == 3) i = 11;
  1346 			if (i == 3) i = 11;
  1347 		}
  1347 		}
  1348 		break;
  1348 		break;
  1424 	case WE_PAINT:
  1424 	case WE_PAINT:
  1425 		w->DrawWidgets();
  1425 		w->DrawWidgets();
  1426 		break;
  1426 		break;
  1427 
  1427 
  1428 	case WE_CREATE:
  1428 	case WE_CREATE:
  1429 		LowerWindowWidget(w, (_scengen_town_size - 1)+ 7);
  1429 		w->LowerWidget((_scengen_town_size - 1)+ 7);
  1430 		break;
  1430 		break;
  1431 
  1431 
  1432 	case WE_CLICK:
  1432 	case WE_CLICK:
  1433 		switch (e->we.click.widget) {
  1433 		switch (e->we.click.widget) {
  1434 		case 4: /* new town */
  1434 		case 4: /* new town */
  1458 			_generating_world = false;
  1458 			_generating_world = false;
  1459 			break;
  1459 			break;
  1460 		}
  1460 		}
  1461 
  1461 
  1462 		case 7: case 8: case 9:
  1462 		case 7: case 8: case 9:
  1463 			RaiseWindowWidget(w, (_scengen_town_size - 1) + 7);
  1463 			w->RaiseWidget((_scengen_town_size - 1) + 7);
  1464 			_scengen_town_size = (e->we.click.widget - 7) + 1;
  1464 			_scengen_town_size = (e->we.click.widget - 7) + 1;
  1465 			LowerWindowWidget(w, (_scengen_town_size - 1) + 7);
  1465 			w->LowerWidget((_scengen_town_size - 1) + 7);
  1466 			w->SetDirty();
  1466 			w->SetDirty();
  1467 			break;
  1467 			break;
  1468 		}
  1468 		}
  1469 		break;
  1469 		break;
  1470 
  1470 
  1471 	case WE_TIMEOUT:
  1471 	case WE_TIMEOUT:
  1472 		RaiseWindowWidget(w, 5);
  1472 		w->RaiseWidget(5);
  1473 		RaiseWindowWidget(w, 6);
  1473 		w->RaiseWidget(6);
  1474 		w->SetDirty();
  1474 		w->SetDirty();
  1475 		break;
  1475 		break;
  1476 	case WE_PLACE_OBJ:
  1476 	case WE_PLACE_OBJ:
  1477 		_place_proc(e->we.place.tile);
  1477 		_place_proc(e->we.place.tile);
  1478 		break;
  1478 		break;
  1479 	case WE_ABORT_PLACE_OBJ:
  1479 	case WE_ABORT_PLACE_OBJ:
  1480 		w->RaiseButtons();
  1480 		w->RaiseButtons();
  1481 		LowerWindowWidget(w, (_scengen_town_size - 1) + 7);
  1481 		w->LowerWidget((_scengen_town_size - 1) + 7);
  1482 		w->SetDirty();
  1482 		w->SetDirty();
  1483 		break;
  1483 		break;
  1484 	}
  1484 	}
  1485 }
  1485 }
  1486 
  1486 
  1687 	case WE_ABORT_PLACE_OBJ:
  1687 	case WE_ABORT_PLACE_OBJ:
  1688 		w->RaiseButtons();
  1688 		w->RaiseButtons();
  1689 		w->SetDirty();
  1689 		w->SetDirty();
  1690 		break;
  1690 		break;
  1691 	case WE_TIMEOUT:
  1691 	case WE_TIMEOUT:
  1692 		RaiseWindowWidget(w, 3);
  1692 		w->RaiseWidget(3);
  1693 		w->InvalidateWidget(3);
  1693 		w->InvalidateWidget(3);
  1694 		break;
  1694 		break;
  1695 	}
  1695 	}
  1696 }
  1696 }
  1697 
  1697 
  1862 	case WE_PLACE_OBJ: {
  1862 	case WE_PLACE_OBJ: {
  1863 		_place_proc(e->we.place.tile);
  1863 		_place_proc(e->we.place.tile);
  1864 	} break;
  1864 	} break;
  1865 
  1865 
  1866 	case WE_ABORT_PLACE_OBJ: {
  1866 	case WE_ABORT_PLACE_OBJ: {
  1867 		RaiseWindowWidget(w, 25);
  1867 		w->RaiseWidget(25);
  1868 		w->SetDirty();
  1868 		w->SetDirty();
  1869 	} break;
  1869 	} break;
  1870 
  1870 
  1871 	case WE_MOUSELOOP:
  1871 	case WE_MOUSELOOP:
  1872 		if (IsWindowWidgetLowered(w, 0) != !!_pause) {
  1872 		if (w->IsWidgetLowered(0) != !!_pause) {
  1873 			ToggleWidgetLoweredState(w, 0);
  1873 			w->ToggleWidgetLoweredState(0);
  1874 			w->InvalidateWidget(0);
  1874 			w->InvalidateWidget(0);
  1875 		}
  1875 		}
  1876 
  1876 
  1877 		if (IsWindowWidgetLowered(w, 1) != !!_fast_forward) {
  1877 		if (w->IsWidgetLowered(1) != !!_fast_forward) {
  1878 			ToggleWidgetLoweredState(w, 1);
  1878 			w->ToggleWidgetLoweredState(1);
  1879 			w->InvalidateWidget(1);
  1879 			w->InvalidateWidget(1);
  1880 		}
  1880 		}
  1881 		break;
  1881 		break;
  1882 
  1882 
  1883 	case WE_TIMEOUT: {
  1883 	case WE_TIMEOUT: {
  1884 		uint i;
  1884 		uint i;
  1885 		for (i = 2; i < w->widget_count; i++) {
  1885 		for (i = 2; i < w->widget_count; i++) {
  1886 			if (IsWindowWidgetLowered(w, i)) {
  1886 			if (w->IsWidgetLowered(i)) {
  1887 				RaiseWindowWidget(w, i);
  1887 				w->RaiseWidget(i);
  1888 				w->InvalidateWidget(i);
  1888 				w->InvalidateWidget(i);
  1889 			}
  1889 			}
  1890 		}
  1890 		}
  1891 		break;
  1891 		break;
  1892 	}
  1892 	}
  2061 	case WE_PLACE_OBJ: {
  2061 	case WE_PLACE_OBJ: {
  2062 		_place_proc(e->we.place.tile);
  2062 		_place_proc(e->we.place.tile);
  2063 	} break;
  2063 	} break;
  2064 
  2064 
  2065 	case WE_ABORT_PLACE_OBJ: {
  2065 	case WE_ABORT_PLACE_OBJ: {
  2066 		RaiseWindowWidget(w, 25);
  2066 		w->RaiseWidget(25);
  2067 		w->SetDirty();
  2067 		w->SetDirty();
  2068 	} break;
  2068 	} break;
  2069 
  2069 
  2070 	case WE_MOUSELOOP:
  2070 	case WE_MOUSELOOP:
  2071 		if (IsWindowWidgetLowered(w, 0) != !!_pause) {
  2071 		if (w->IsWidgetLowered(0) != !!_pause) {
  2072 			ToggleWidgetLoweredState(w, 0);
  2072 			w->ToggleWidgetLoweredState(0);
  2073 			w->SetDirty();
  2073 			w->SetDirty();
  2074 		}
  2074 		}
  2075 
  2075 
  2076 		if (IsWindowWidgetLowered(w, 1) != !!_fast_forward) {
  2076 		if (w->IsWidgetLowered(1) != !!_fast_forward) {
  2077 			ToggleWidgetLoweredState(w, 1);
  2077 			w->ToggleWidgetLoweredState(1);
  2078 			w->SetDirty();
  2078 			w->SetDirty();
  2079 		}
  2079 		}
  2080 		break;
  2080 		break;
  2081 
  2081 
  2082 		case WE_MESSAGE:
  2082 		case WE_MESSAGE: