@ -152,6 +152,7 @@ void MenuClickMap(int index)
{
{
switch ( index ) {
switch ( index ) {
case 0 : ShowSmallMap ( ) ; break ;
case 0 : ShowSmallMap ( ) ; break ;
case 1 : ShowExtraViewPortWindow ( ) ; break ;
}
}
}
}
@ -617,7 +618,7 @@ static void ToolbarSaveClick(Window *w)
static void ToolbarMapClick ( Window * w )
static void ToolbarMapClick ( Window * w )
{
{
PopupMainToolbMenu ( w , 96 , 4 , STR_02DE_MAP_OF_WORLD , 1 ) ;
PopupMainToolbMenu ( w , 96 , 4 , STR_02DE_MAP_OF_WORLD , 2 ) ;
}
}
static void ToolbarTownClick ( Window * w )
static void ToolbarTownClick ( Window * w )
@ -696,10 +697,11 @@ static void ToolbarAirClick(Window *w)
PopupMainPlayerToolbMenu ( w , 376 , 16 , dis ) ;
PopupMainPlayerToolbMenu ( w , 376 , 16 , dis ) ;
}
}
bool DoZoomInOut ( int how )
/* Zooms a viewport in a window in or out */
/* No button handling or what so ever */
bool DoZoomInOutWindow ( int how , Window * w )
{
{
ViewPort * vp ;
ViewPort * vp ;
Window * w , * wt ;
int button ;
int button ;
switch ( _game_mode ) {
switch ( _game_mode ) {
@ -708,13 +710,9 @@ bool DoZoomInOut(int how)
default : return false ;
default : return false ;
}
}
w = FindWindowById ( WC_MAIN_WINDOW , 0 ) ;
assert ( w ) ;
assert ( w ) ;
vp = w - > viewport ;
vp = w - > viewport ;
wt = FindWindowById ( WC_MAIN_TOOLBAR , 0 ) ;
assert ( wt ) ;
if ( how = = ZOOM_IN ) {
if ( how = = ZOOM_IN ) {
if ( vp - > zoom = = 0 ) return false ;
if ( vp - > zoom = = 0 ) return false ;
vp - > zoom - - ;
vp - > zoom - - ;
@ -738,24 +736,40 @@ bool DoZoomInOut(int how)
SetWindowDirty ( w ) ;
SetWindowDirty ( w ) ;
}
}
// update the toolbar button too
// routine to disable/enable the zoom buttons. Didn't know where to place these otherwise
CLRBIT ( wt - > disabled_state , button ) ;
{
CLRBIT ( wt - > disabled_state , button + 1 ) ;
Window * wt ;
if ( vp - > zoom = = 0 ) SETBIT ( wt - > disabled_state , button ) ;
switch ( w - > window_class ) {
else if ( vp - > zoom = = 2 ) SETBIT ( wt - > disabled_state , button + 1 ) ;
case WC_MAIN_WINDOW :
SetWindowDirty ( wt ) ;
wt = FindWindowById ( WC_MAIN_TOOLBAR , 0 ) ;
break ;
case WC_EXTRA_VIEW_PORT :
wt = FindWindowById ( WC_EXTRA_VIEW_PORT , w - > window_number ) ;
button = 4 ;
break ;
}
assert ( wt ) ;
// update the toolbar button too
CLRBIT ( wt - > disabled_state , button ) ;
CLRBIT ( wt - > disabled_state , button + 1 ) ;
if ( vp - > zoom = = 0 ) SETBIT ( wt - > disabled_state , button ) ;
else if ( vp - > zoom = = 2 ) SETBIT ( wt - > disabled_state , button + 1 ) ;
SetWindowDirty ( wt ) ;
}
return true ;
return true ;
}
}
static void MaxZoomIn ( )
static void MaxZoomIn ( )
{
{
while ( DoZoomInOut ( ZOOM_IN ) ) { }
while ( DoZoomInOut Window ( ZOOM_IN , FindWindowById ( WC_MAIN_WINDOW , 0 ) ) ) { }
}
}
static void ToolbarZoomInClick ( Window * w )
static void ToolbarZoomInClick ( Window * w )
{
{
if ( DoZoomInOut ( ZOOM_IN ) ) {
if ( DoZoomInOut Window ( ZOOM_IN , FindWindowById ( WC_MAIN_WINDOW , 0 ) ) ) {
HandleButtonClick ( w , 17 ) ;
HandleButtonClick ( w , 17 ) ;
SndPlayFx ( 0x13 ) ;
SndPlayFx ( 0x13 ) ;
}
}
@ -763,7 +777,7 @@ static void ToolbarZoomInClick(Window *w)
static void ToolbarZoomOutClick ( Window * w )
static void ToolbarZoomOutClick ( Window * w )
{
{
if ( DoZoomInOut ( ZOOM_OUT ) ) {
if ( DoZoomInOut Window ( ZOOM_OUT , FindWindowById ( WC_MAIN_WINDOW , 0 ) ) ) {
HandleButtonClick ( w , 18 ) ;
HandleButtonClick ( w , 18 ) ;
SndPlayFx ( 0x13 ) ;
SndPlayFx ( 0x13 ) ;
}
}
@ -870,7 +884,7 @@ static void ToolbarScenMapTownDir(Window *w)
static void ToolbarScenZoomIn ( Window * w )
static void ToolbarScenZoomIn ( Window * w )
{
{
if ( DoZoomInOut ( ZOOM_IN ) ) {
if ( DoZoomInOut Window ( ZOOM_IN , FindWindowById ( WC_MAIN_WINDOW , 0 ) ) ) {
HandleButtonClick ( w , 9 ) ;
HandleButtonClick ( w , 9 ) ;
SndPlayFx ( 0x13 ) ;
SndPlayFx ( 0x13 ) ;
}
}
@ -878,19 +892,17 @@ static void ToolbarScenZoomIn(Window *w)
static void ToolbarScenZoomOut ( Window * w )
static void ToolbarScenZoomOut ( Window * w )
{
{
if ( DoZoomInOut ( ZOOM_OUT ) ) {
if ( DoZoomInOut Window ( ZOOM_OUT , FindWindowById ( WC_MAIN_WINDOW , 0 ) ) ) {
HandleButtonClick ( w , 10 ) ;
HandleButtonClick ( w , 10 ) ;
SndPlayFx ( 0x13 ) ;
SndPlayFx ( 0x13 ) ;
}
}
}
}
void ZoomInOrOutToCursor ( bool in )
void ZoomInOrOutToCursor Window ( bool in , Window * w )
{
{
ViewPort * vp ;
Point pt ;
Point pt ;
Window * w ;
ViewPort * vp ;
w = FindWindowById ( WC_MAIN_WINDOW , 0 ) ;
assert ( w ! = 0 ) ;
assert ( w ! = 0 ) ;
vp = w - > viewport ;
vp = w - > viewport ;
@ -899,11 +911,11 @@ void ZoomInOrOutToCursor(bool in)
if ( ( in & & vp - > zoom = = 0 ) | | ( ! in & & vp - > zoom = = 2 ) )
if ( ( in & & vp - > zoom = = 0 ) | | ( ! in & & vp - > zoom = = 2 ) )
return ;
return ;
pt = GetTileZoomCenter ( in ) ;
pt = GetTileZoomCenter Window ( in , w ) ;
if ( pt . x ! = - 1 ) {
if ( pt . x ! = - 1 ) {
Scroll Main WindowTo( pt . x , pt . y ) ;
Scroll WindowTo( pt . x , pt . y , w ) ;
DoZoomInOut ( in ? ZOOM_IN : ZOOM_OUT ) ;
DoZoomInOut Window ( in ? ZOOM_IN : ZOOM_OUT , w ) ;
}
}
}
}
}
}