28 #include "variables.h" |
28 #include "variables.h" |
29 #include "blitter/factory.hpp" |
29 #include "blitter/factory.hpp" |
30 |
30 |
31 static const Widget _smallmap_widgets[] = { |
31 static const Widget _smallmap_widgets[] = { |
32 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
32 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
33 { WWT_CAPTION, RESIZE_RIGHT, 13, 11, 433, 0, 13, STR_00B0_MAP, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
33 { WWT_CAPTION, RESIZE_RIGHT, 13, 11, 337, 0, 13, STR_00B0_MAP, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
34 { WWT_STICKYBOX, RESIZE_LR, 13, 434, 445, 0, 13, 0x0, STR_STICKY_BUTTON}, |
34 { WWT_STICKYBOX, RESIZE_LR, 13, 338, 349, 0, 13, 0x0, STR_STICKY_BUTTON}, |
35 { WWT_PANEL, RESIZE_RB, 13, 0, 445, 14, 257, 0x0, STR_NULL}, |
35 { WWT_PANEL, RESIZE_RB, 13, 0, 349, 14, 157, 0x0, STR_NULL}, |
36 { WWT_INSET, RESIZE_RB, 13, 2, 443, 16, 255, 0x0, STR_NULL}, |
36 { WWT_INSET, RESIZE_RB, 13, 2, 347, 16, 155, 0x0, STR_NULL}, |
37 { WWT_IMGBTN, RESIZE_LRTB, 13, 380, 401, 258, 279, SPR_IMG_SHOW_COUNTOURS, STR_0191_SHOW_LAND_CONTOURS_ON_MAP}, |
37 { WWT_IMGBTN, RESIZE_LRTB, 13, 284, 305, 158, 179, SPR_IMG_SHOW_COUNTOURS, STR_0191_SHOW_LAND_CONTOURS_ON_MAP}, |
38 { WWT_IMGBTN, RESIZE_LRTB, 13, 402, 423, 258, 279, SPR_IMG_SHOW_VEHICLES, STR_0192_SHOW_VEHICLES_ON_MAP}, |
38 { WWT_IMGBTN, RESIZE_LRTB, 13, 306, 327, 158, 179, SPR_IMG_SHOW_VEHICLES, STR_0192_SHOW_VEHICLES_ON_MAP}, |
39 { WWT_IMGBTN, RESIZE_LRTB, 13, 424, 445, 258, 279, SPR_IMG_INDUSTRY, STR_0193_SHOW_INDUSTRIES_ON_MAP}, |
39 { WWT_IMGBTN, RESIZE_LRTB, 13, 328, 349, 158, 179, SPR_IMG_INDUSTRY, STR_0193_SHOW_INDUSTRIES_ON_MAP}, |
40 { WWT_IMGBTN, RESIZE_LRTB, 13, 380, 401, 280, 301, SPR_IMG_SHOW_ROUTES, STR_0194_SHOW_TRANSPORT_ROUTES_ON}, |
40 { WWT_IMGBTN, RESIZE_LRTB, 13, 284, 307, 180, 201, SPR_IMG_SHOW_ROUTES, STR_0194_SHOW_TRANSPORT_ROUTES_ON}, |
41 { WWT_IMGBTN, RESIZE_LRTB, 13, 402, 423, 280, 301, SPR_IMG_PLANTTREES, STR_0195_SHOW_VEGETATION_ON_MAP}, |
41 { WWT_IMGBTN, RESIZE_LRTB, 13, 306, 327, 180, 201, SPR_IMG_PLANTTREES, STR_0195_SHOW_VEGETATION_ON_MAP}, |
42 { WWT_IMGBTN, RESIZE_LRTB, 13, 424, 445, 280, 301, SPR_IMG_COMPANY_GENERAL, STR_0196_SHOW_LAND_OWNERS_ON_MAP}, |
42 { WWT_IMGBTN, RESIZE_LRTB, 13, 328, 349, 180, 201, SPR_IMG_COMPANY_GENERAL, STR_0196_SHOW_LAND_OWNERS_ON_MAP}, |
43 { WWT_IMGBTN, RESIZE_LRTB, 13, 358, 379, 258, 279, SPR_IMG_SMALLMAP, STR_SMALLMAP_CENTER}, |
43 { WWT_IMGBTN, RESIZE_LRTB, 13, 262, 283, 158, 179, SPR_IMG_SMALLMAP, STR_SMALLMAP_CENTER}, |
44 { WWT_IMGBTN, RESIZE_LRTB, 13, 358, 379, 280, 301, SPR_IMG_TOWN, STR_0197_TOGGLE_TOWN_NAMES_ON_OFF}, |
44 { WWT_IMGBTN, RESIZE_LRTB, 13, 262, 283, 180, 201, SPR_IMG_TOWN, STR_0197_TOGGLE_TOWN_NAMES_ON_OFF}, |
45 { WWT_PANEL, RESIZE_RTB, 13, 0, 357, 258, 301, 0x0, STR_NULL}, |
45 { WWT_PANEL, RESIZE_RTB, 13, 0, 261, 158, 201, 0x0, STR_NULL}, |
46 { WWT_PANEL, RESIZE_RTB, 13, 0, 433, 302, 313, 0x0, STR_NULL}, |
46 { WWT_PANEL, RESIZE_RTB, 13, 0, 337, 202, 213, 0x0, STR_NULL}, |
47 { WWT_RESIZEBOX, RESIZE_LRTB, 13, 434, 445, 302, 313, 0x0, STR_RESIZE_BUTTON}, |
47 { WWT_RESIZEBOX, RESIZE_LRTB, 13, 338, 349, 202, 213, 0x0, STR_RESIZE_BUTTON}, |
48 { WIDGETS_END}, |
48 { WIDGETS_END}, |
49 }; |
49 }; |
50 |
50 |
51 static int _smallmap_type; |
51 static int _smallmap_type; |
52 static bool _smallmap_show_towns = true; |
52 static bool _smallmap_show_towns = true; |
923 w = AllocateWindowDescFront(&_smallmap_desc, 0); |
926 w = AllocateWindowDescFront(&_smallmap_desc, 0); |
924 if (w == NULL) return; |
927 if (w == NULL) return; |
925 |
928 |
926 LowerWindowWidget(w, _smallmap_type + 5); |
929 LowerWindowWidget(w, _smallmap_type + 5); |
927 SetWindowWidgetLoweredState(w, 12, _smallmap_show_towns); |
930 SetWindowWidgetLoweredState(w, 12, _smallmap_show_towns); |
928 w->resize.width = 350; |
|
929 w->resize.height = 250; |
|
930 |
931 |
931 SmallMapCenterOnCurrentPos(w); |
932 SmallMapCenterOnCurrentPos(w); |
932 } |
933 } |
933 |
934 |
934 /* Extra ViewPort Window Stuff */ |
935 /* Extra ViewPort Window Stuff */ |
935 static const Widget _extra_view_port_widgets[] = { |
936 static const Widget _extra_view_port_widgets[] = { |
936 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
937 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
937 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 287, 0, 13, STR_EXTRA_VIEW_PORT_TITLE, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
938 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 287, 0, 13, STR_EXTRA_VIEW_PORT_TITLE, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
938 { WWT_STICKYBOX, RESIZE_LR, 14, 288, 299, 0, 13, 0x0, STR_STICKY_BUTTON}, |
939 { WWT_STICKYBOX, RESIZE_LR, 14, 288, 299, 0, 13, 0x0, STR_STICKY_BUTTON}, |
939 { WWT_PANEL, RESIZE_RB, 14, 0, 299, 14, 233, 0x0, STR_NULL}, |
940 { WWT_PANEL, RESIZE_RB, 14, 0, 299, 14, 33, 0x0, STR_NULL}, |
940 { WWT_INSET, RESIZE_RB, 14, 2, 297, 16, 231, 0x0, STR_NULL}, |
941 { WWT_INSET, RESIZE_RB, 14, 2, 297, 16, 31, 0x0, STR_NULL}, |
941 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 0, 21, 234, 255, SPR_IMG_ZOOMIN, STR_017F_ZOOM_THE_VIEW_IN}, |
942 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 0, 21, 34, 55, SPR_IMG_ZOOMIN, STR_017F_ZOOM_THE_VIEW_IN}, |
942 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 22, 43, 234, 255, SPR_IMG_ZOOMOUT, STR_0180_ZOOM_THE_VIEW_OUT}, |
943 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 22, 43, 34, 55, SPR_IMG_ZOOMOUT, STR_0180_ZOOM_THE_VIEW_OUT}, |
943 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 44, 171, 234, 255, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT}, |
944 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 44, 171, 34, 55, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT}, |
944 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 172, 298, 234, 255, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT}, |
945 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 172, 298, 34, 55, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT}, |
945 { WWT_PANEL, RESIZE_RTB, 14, 299, 299, 234, 255, 0x0, STR_NULL}, |
946 { WWT_PANEL, RESIZE_RTB, 14, 299, 299, 34, 55, 0x0, STR_NULL}, |
946 { WWT_PANEL, RESIZE_RTB, 14, 0, 287, 256, 267, 0x0, STR_NULL}, |
947 { WWT_PANEL, RESIZE_RTB, 14, 0, 287, 56, 67, 0x0, STR_NULL}, |
947 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 288, 299, 256, 267, 0x0, STR_RESIZE_BUTTON}, |
948 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 288, 299, 56, 67, 0x0, STR_RESIZE_BUTTON}, |
948 { WIDGETS_END}, |
949 { WIDGETS_END}, |
949 }; |
950 }; |
950 |
951 |
951 static void ExtraViewPortWndProc(Window *w, WindowEvent *e) |
952 static void ExtraViewPortWndProc(Window *w, WindowEvent *e) |
952 { |
953 { |
953 switch (e->event) { |
954 switch (e->event) { |
954 case WE_CREATE: /* Disable zoom in button */ |
955 case WE_CREATE: /* Disable zoom in button */ |
|
956 /* New viewport start at (zero,zero) */ |
|
957 AssignWindowViewport(w, 3, 17, w->widget[4].right - w->widget[4].left - 1, w->widget[4].bottom - w->widget[4].top - 1, 0, ZOOM_LVL_VIEWPORT); |
|
958 |
955 DisableWindowWidget(w, 5); |
959 DisableWindowWidget(w, 5); |
956 break; |
960 break; |
957 |
961 |
958 case WE_PAINT: |
962 case WE_PAINT: |
959 // set the number in the title bar |
963 // set the number in the title bar |
1042 w = AllocateWindowDescFront(&_extra_view_port_desc, i); |
1046 w = AllocateWindowDescFront(&_extra_view_port_desc, i); |
1043 if (w != NULL) { |
1047 if (w != NULL) { |
1044 int x, y; |
1048 int x, y; |
1045 /* the main window with the main view */ |
1049 /* the main window with the main view */ |
1046 v = FindWindowById(WC_MAIN_WINDOW, 0); |
1050 v = FindWindowById(WC_MAIN_WINDOW, 0); |
1047 /* New viewport start ats (zero,zero) */ |
|
1048 AssignWindowViewport(w, 3, 17, 294, 214, 0 , ZOOM_LVL_VIEWPORT); |
|
1049 |
1051 |
1050 /* center on same place as main window (zoom is maximum, no adjustment needed) */ |
1052 /* center on same place as main window (zoom is maximum, no adjustment needed) */ |
1051 x = WP(v, vp_d).scrollpos_x; |
1053 x = WP(v, vp_d).scrollpos_x; |
1052 y = WP(v, vp_d).scrollpos_y; |
1054 y = WP(v, vp_d).scrollpos_y; |
1053 WP(w, vp_d).scrollpos_x = x + (v->viewport->virtual_width - (294)) / 2; |
1055 WP(w, vp_d).scrollpos_x = x + (v->viewport->virtual_width - (w->widget[4].right - w->widget[4].left) - 1) / 2; |
1054 WP(w, vp_d).scrollpos_y = y + (v->viewport->virtual_height - (214)) / 2; |
1056 WP(w, vp_d).scrollpos_y = y + (v->viewport->virtual_height - (w->widget[4].bottom - w->widget[4].top) - 1) / 2; |
1055 WP(w, vp_d).dest_scrollpos_x = WP(w, vp_d).scrollpos_x; |
1057 WP(w, vp_d).dest_scrollpos_x = WP(w, vp_d).scrollpos_x; |
1056 WP(w, vp_d).dest_scrollpos_y = WP(w, vp_d).scrollpos_y; |
1058 WP(w, vp_d).dest_scrollpos_y = WP(w, vp_d).scrollpos_y; |
1057 } |
1059 } |
1058 } |
1060 } |