refactor update ride more

This commit is contained in:
IntelOrca 2014-11-02 14:03:28 +00:00
parent cf59455d69
commit 19d3852f9c
5 changed files with 39 additions and 45 deletions

View File

@ -1836,35 +1836,6 @@ void stop_vehicle_sounds()
}
}
/**
* Update zoom based volume attenuation for ride music and clear music list
* rct2: 0x006BC348
*/
void sub_6BC348()
{
RCT2_GLOBAL(0x009AF42C, rct_music_info*) = &RCT2_GLOBAL(0x009AF430, rct_music_info);
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = (rct_viewport*)-1;
rct_window* window = RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*);
while (1) {
window--;
if (window < RCT2_ADDRESS(RCT2_ADDRESS_WINDOW_LIST, rct_window)) {
break;
}
if (window->viewport && window->viewport->flags & VIEWPORT_FLAG_SOUND_ON) {
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = window->viewport;
RCT2_GLOBAL(0x00F438A8, rct_window*) = window;
RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 0;
if (window->viewport->zoom) {
RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 30;
if (window->viewport->zoom != 1) {
RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 60;
}
}
return;
}
}
}
/**
*
* rct2: 0x006BC3AC

View File

@ -213,7 +213,6 @@ void audio_close();
void pause_sounds();
void unpause_sounds();
void stop_vehicle_sounds();
void sub_6BC348();
void sub_6BC6D8();
int sub_6BC3AC(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint16 sampleRate, uint32 position, uint8 *tuneId);

View File

@ -1792,4 +1792,39 @@ void sub_6EA73F()
window_invalidate_pressed_image_buttons(w);
RCT2_CALLPROC_X(w->event_handlers[WE_RESIZE], 0, 0, 0, 0, (int)w, 0, 0);
}
}
/**
* Update zoom based volume attenuation for ride music and clear music list.
* rct2: 0x006BC348
*/
void window_update_viewport_ride_music()
{
rct_viewport *viewport;
rct_window *w;
RCT2_GLOBAL(0x009AF42C, rct_music_info*) = (rct_music_info*)0x009AF430;
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = (rct_viewport*)-1;
for (w = RCT2_LAST_WINDOW; w >= g_window_list; w--) {
viewport = w->viewport;
if (viewport == NULL || !(viewport->flags & VIEWPORT_FLAG_SOUND_ON))
continue;
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = viewport;
RCT2_GLOBAL(0x00F438A8, rct_window*) = w;
switch (viewport->zoom) {
case 0:
RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 0;
break;
case 1:
RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 30;
break;
default:
RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 60;
break;
}
break;
}
}

View File

@ -463,6 +463,8 @@ void tool_cancel();
void window_close_construction_windows();
void window_update_viewport_ride_music();
// Open window functions
void window_main_open();
void window_resize_gui(int width, int height);

View File

@ -125,7 +125,6 @@ static int ride_get_new_breakdown_problem(rct_ride *ride);
static void ride_inspection_update(rct_ride *ride);
static void ride_mechanic_status_update(int rideIndex, int mechanicStatus);
static void ride_music_update(int rideIndex);
static void ride_play_music();
static void ride_prepare_breakdown(int rideIndex, int breakdownReason);
static void ride_shop_connected(rct_ride* ride, int ride_idx);
static void ride_spiral_slide_update(rct_ride *ride);
@ -513,8 +512,6 @@ void ride_update_all()
rct_ride *ride;
int i;
// RCT2_CALLPROC_EBPSAFE(0x006ABE4C); return;
// Remove all rides if certain flags are set (possible scenario editor?)
int *esi = (int*)0x9DCE9E;
if (esi[0x1BCA] & 2) {
@ -524,14 +521,13 @@ void ride_update_all()
return;
}
// Something related to windows
RCT2_CALLPROC_EBPSAFE(0x006BC348);
window_update_viewport_ride_music();
// Update rides
FOR_ALL_RIDES(i, ride)
ride_update(i);
ride_play_music();
sub_6BC6D8();
}
/**
@ -1232,15 +1228,6 @@ static void ride_music_update(int rideIndex)
ride->music_position = sub_6BC3AC(x, y, z, rideIndex, sampleRate, ride->music_position, &ride->music_tune_id);
}
/**
*
* rct2: 0x006BC6D8
*/
static void ride_play_music()
{
RCT2_CALLPROC_EBPSAFE(0x006BC6D8);
}
#pragma endregion
#pragma region Measurement functions