Integrate g_music_tracking_viewport

This commit is contained in:
Michał Janiszewski 2016-07-16 14:07:01 +02:00 committed by Ted John
parent fd339d29b1
commit 601f344b40
6 changed files with 21 additions and 19 deletions

View File

@ -40,6 +40,7 @@
//#define DEBUG_SHOW_DIRTY_BOX
rct_viewport g_viewport_list[MAX_VIEWPORT_COUNT];
rct_viewport *g_music_tracking_viewport;
#ifdef NO_RCT2
paint_struct *unk_EE7884;

View File

@ -96,6 +96,7 @@ typedef struct viewport_interaction_info {
// rct2: 0x014234BC
extern rct_viewport g_viewport_list[MAX_VIEWPORT_COUNT];
extern rct_viewport *g_music_tracking_viewport;
#ifdef NO_RCT2
extern paint_struct *unk_EE7884;
extern paint_struct *unk_EE7888;

View File

@ -2241,14 +2241,14 @@ void window_update_viewport_ride_music()
rct_window *w;
gRideMusicParamsListEnd = &gRideMusicParamsList[0];//RCT2_GLOBAL(0x009AF42C, rct_ride_music_params*) = (rct_ride_music_params*)0x009AF430;
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = (rct_viewport*)-1;
g_music_tracking_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;
g_music_tracking_viewport = viewport;
RCT2_GLOBAL(0x00F438A8, rct_window*) = w;
switch (viewport->zoom) {

View File

@ -6156,7 +6156,7 @@ void peep_update_crowd_noise()
if (gScreenFlags & 2)
return;
viewport = RCT2_GLOBAL(0x00F438A4, rct_viewport*);
viewport = g_music_tracking_viewport;
if (viewport == (rct_viewport*)-1)
return;

View File

@ -3393,7 +3393,7 @@ void ride_set_map_tooltip(rct_map_element *mapElement)
*/
int ride_music_params_update(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint16 sampleRate, uint32 position, uint8 *tuneId)
{
if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) && !gGameSoundsOff && RCT2_GLOBAL(0x00F438A4, rct_viewport*) != (rct_viewport*)-1) {
if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) && !gGameSoundsOff && g_music_tracking_viewport != (rct_viewport*)-1) {
rct_xy16 rotatedCoords;
switch (get_current_rotation()) {
@ -3414,7 +3414,7 @@ int ride_music_params_update(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint
rotatedCoords.y = ((x - y) / 2) - z;
break;
}
rct_viewport* viewport = RCT2_GLOBAL(0x00F438A4, rct_viewport*);
rct_viewport* viewport = g_music_tracking_viewport;
sint16 view_width = viewport->view_width;
sint16 view_width2 = view_width * 2;
sint16 view_x = viewport->view_x - view_width2;

View File

@ -467,17 +467,17 @@ static void vehicle_update_sound_params(rct_vehicle* vehicle)
if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) && (!(gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) || gS6Info->editor_step == EDITOR_STEP_ROLLERCOASTER_DESIGNER)) {
if (vehicle->sound1_id != (uint8)-1 || vehicle->sound2_id != (uint8)-1) {
if (vehicle->sprite_left != (sint16)0x8000) {
sint16 x = RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_x;
sint16 y = RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_y;
sint16 w = RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_width / 4;
sint16 h = RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_height / 4;
sint16 x = g_music_tracking_viewport->view_x;
sint16 y = g_music_tracking_viewport->view_y;
sint16 w = g_music_tracking_viewport->view_width / 4;
sint16 h = g_music_tracking_viewport->view_height / 4;
if (!RCT2_GLOBAL(0x00F438A8, rct_window*)->classification) {
x -= w;
y -= h;
}
if (x < vehicle->sprite_right && y < vehicle->sprite_bottom) {
sint16 w2 = RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_width + x;
sint16 h2 = RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_height + y;
sint16 w2 = g_music_tracking_viewport->view_width + x;
sint16 h2 = g_music_tracking_viewport->view_height + y;
if (!RCT2_GLOBAL(0x00F438A8, rct_window*)->classification) {
w2 += w + w;
h2 += h + h;
@ -496,9 +496,9 @@ static void vehicle_update_sound_params(rct_vehicle* vehicle)
*(j + 1) = *j;
}
i->var_A = v9;
int pan_x = (vehicle->sprite_left / 2) + (vehicle->sprite_right / 2) - RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_x;
pan_x >>= RCT2_GLOBAL(0x00F438A4, rct_viewport*)->zoom;
pan_x += RCT2_GLOBAL(0x00F438A4, rct_viewport*)->x;
int pan_x = (vehicle->sprite_left / 2) + (vehicle->sprite_right / 2) - g_music_tracking_viewport->view_x;
pan_x >>= g_music_tracking_viewport->zoom;
pan_x += g_music_tracking_viewport->x;
uint16 screenwidth = gScreenWidth;
if (screenwidth < 64) {
@ -506,9 +506,9 @@ static void vehicle_update_sound_params(rct_vehicle* vehicle)
}
i->pan_x = ((((pan_x * 65536) / screenwidth) - 0x8000) >> 4);
int pan_y = (vehicle->sprite_top / 2) + (vehicle->sprite_bottom / 2) - RCT2_GLOBAL(0x00F438A4, rct_viewport*)->view_y;
pan_y >>= RCT2_GLOBAL(0x00F438A4, rct_viewport*)->zoom;
pan_y += RCT2_GLOBAL(0x00F438A4, rct_viewport*)->y;
int pan_y = (vehicle->sprite_top / 2) + (vehicle->sprite_bottom / 2) - g_music_tracking_viewport->view_y;
pan_y >>= g_music_tracking_viewport->zoom;
pan_y += g_music_tracking_viewport->y;
uint16 screenheight = gScreenHeight;
if (screenheight < 64) {
@ -584,7 +584,7 @@ int sub_6BC2F3(rct_vehicle* vehicle)
void vehicle_sounds_update()
{
if (gAudioCurrentDevice != -1 && !gGameSoundsOff && gConfigSound.sound_enabled && !gOpenRCT2Headless) {
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = (rct_viewport*)-1;
g_music_tracking_viewport = (rct_viewport*)-1;
rct_viewport* viewport = (rct_viewport*)-1;
rct_window* window = gWindowNextSlot;
while (1) {
@ -597,7 +597,7 @@ void vehicle_sounds_update()
break;
}
}
RCT2_GLOBAL(0x00F438A4, rct_viewport*) = viewport;
g_music_tracking_viewport = viewport;
if (viewport != (rct_viewport*)-1) {
if (window) {
RCT2_GLOBAL(0x00F438A8, rct_window*) = window;