From 20a43227e06b226bb510c7d3e4bc282bb4d1223b Mon Sep 17 00:00:00 2001 From: Ted John Date: Fri, 10 Mar 2017 17:12:29 +0000 Subject: [PATCH 1/7] Rename balloon.c to balloon.cpp --- src/openrct2/world/{balloon.c => Balloon.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/openrct2/world/{balloon.c => Balloon.cpp} (100%) diff --git a/src/openrct2/world/balloon.c b/src/openrct2/world/Balloon.cpp similarity index 100% rename from src/openrct2/world/balloon.c rename to src/openrct2/world/Balloon.cpp From ce13b551cb61e2519f4d8c026cebd1a9fdace65e Mon Sep 17 00:00:00 2001 From: Ted John Date: Fri, 10 Mar 2017 17:26:08 +0000 Subject: [PATCH 2/7] Refactor balloon to C++ --- src/openrct2/libopenrct2.vcxproj | 2 +- src/openrct2/world/Balloon.cpp | 218 +++++++++++++++++-------------- src/openrct2/world/sprite.c | 10 ++ src/openrct2/world/sprite.h | 1 + 4 files changed, 132 insertions(+), 99 deletions(-) diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index fe636745d1..7528f5ae19 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -335,7 +335,7 @@ - + diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index f6bfde7315..5698811685 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -1,122 +1,144 @@ #pragma region Copyright (c) 2014-2016 OpenRCT2 Developers /***************************************************************************** - * OpenRCT2, an open source clone of Roller Coaster Tycoon 2. - * - * OpenRCT2 is the work of many authors, a full list can be found in contributors.md - * For more information, visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * A full copy of the GNU General Public License can be found in licence.txt - *****************************************************************************/ +* OpenRCT2, an open source clone of Roller Coaster Tycoon 2. +* +* OpenRCT2 is the work of many authors, a full list can be found in contributors.md +* For more information, visit https://github.com/OpenRCT2/OpenRCT2 +* +* OpenRCT2 is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* A full copy of the GNU General Public License can be found in licence.txt +*****************************************************************************/ #pragma endregion -#include "../audio/audio.h" #include "../network/network.h" -#include "../scenario/scenario.h" -#include "../util/util.h" -#include "sprite.h" -/** - * - * rct2: 0x006736C7 - */ -void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, uint8 bl) +extern "C" { - rct_sprite* sprite = create_sprite(2); - if (sprite != NULL) { - sprite->balloon.var_14 = 13; - sprite->balloon.var_09 = 22; - sprite->balloon.var_15 = 11; - sprite->balloon.sprite_identifier = SPRITE_IDENTIFIER_MISC; - sprite_move(x, y, z, sprite); - sprite->balloon.misc_identifier = SPRITE_MISC_BALLOON; - sprite->balloon.frame = 0; - sprite->balloon.colour = colour; - sprite->balloon.popped = bl; - } + #include "../audio/audio.h" + #include "../scenario/scenario.h" + #include "../util/util.h" + #include "sprite.h" } -static void balloon_pop(rct_balloon *balloon) +static bool sprite_is_balloon(rct_sprite * sprite) { - balloon->popped = 1; - balloon->frame = 0; - audio_play_sound_at_location(SOUND_BALLOON_POP, balloon->x, balloon->y, balloon->z); + return sprite != nullptr && + sprite->balloon.sprite_identifier == SPRITE_IDENTIFIER_MISC && + sprite->balloon.misc_identifier == SPRITE_MISC_BALLOON; +} + +static void balloon_pop(rct_balloon * balloon) +{ + balloon->popped = 1; + balloon->frame = 0; + audio_play_sound_at_location(SOUND_BALLOON_POP, balloon->x, balloon->y, balloon->z); } /** - * - * rct2: 0x0067342C - */ -void balloon_update(rct_balloon *balloon) +* +* rct2: 0x006E88ED +*/ +static void balloon_press(rct_balloon * balloon) { - invalidate_sprite_2((rct_sprite*)balloon); - if (balloon->popped == 1) { - balloon->frame += 256; - if (balloon->frame >= 1280) - sprite_remove((rct_sprite*)balloon); - - return; - } - - sint32 original_var26a = balloon->var_26a; - balloon->var_26a += 85; - if (original_var26a < 255 - 85) - return; - - balloon->var_26b++; - sprite_move(balloon->x, balloon->y, balloon->z + 1, (rct_sprite*)balloon); - - sint32 maxZ = 1967 - ((balloon->x ^ balloon->y) & 31); - if (balloon->z < maxZ) - return; - - balloon_pop(balloon); + if (balloon->popped != 1) + { + uint32 random = scenario_rand(); + if ((balloon->sprite_index & 7) || (random & 0xFFFF) < 0x2000) + { + balloon_pop(balloon); + } + else + { + sint16 shift = ((random & 0x80000000) ? -6 : 6); + sprite_move(balloon->x + shift, + balloon->y, + balloon->z, + (rct_sprite *)balloon); + } + } } -/** - * - * rct2: 0x006E88ED - */ -static void balloon_press(rct_balloon *balloon) +static sint32 balloon_press(uint16 spriteIndex, uint8 flags) { - if (balloon->popped == 1) - return; + rct_sprite * sprite = try_get_sprite(spriteIndex); + if (!sprite_is_balloon(sprite)) + { + log_error("Tried getting invalid sprite for balloon: %u", spriteIndex); + return MONEY32_UNDEFINED; + } - uint32 random = scenario_rand(); - if ((balloon->sprite_index & 7) || (random & 0xFFFF) < 0x2000) { - balloon_pop(balloon); - return; - } - - sprite_move( - balloon->x + ((random & 0x80000000) ? -6 : 6), - balloon->y, - balloon->z, - (rct_sprite*)balloon - ); + if (flags & GAME_COMMAND_FLAG_APPLY) + { + if (sprite_is_balloon(sprite)) + { + balloon_press(&sprite->balloon); + } + } + return 0; } -void game_command_balloon_press(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp) +extern "C" { - uint32 balloon_num = *eax; - sint32 flags = *ebx; - *ebx = 0; - if (!(flags & GAME_COMMAND_FLAG_APPLY)) { - return; - } + /** + * + * rct2: 0x006736C7 + */ + void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, uint8 bl) + { + rct_sprite* sprite = create_sprite(2); + if (sprite != nullptr) + { + sprite->balloon.var_14 = 13; + sprite->balloon.var_09 = 22; + sprite->balloon.var_15 = 11; + sprite->balloon.sprite_identifier = SPRITE_IDENTIFIER_MISC; + sprite_move(x, y, z, sprite); + sprite->balloon.misc_identifier = SPRITE_MISC_BALLOON; + sprite->balloon.frame = 0; + sprite->balloon.colour = colour; + sprite->balloon.popped = bl; + } + } - if (balloon_num >= MAX_SPRITES) { - log_error("Tried getting invalid sprite for balloon: %u", balloon_num); - *ebx = MONEY32_UNDEFINED; - return; - } + /** + * + * rct2: 0x0067342C + */ + void balloon_update(rct_balloon * balloon) + { + invalidate_sprite_2((rct_sprite *)balloon); + if (balloon->popped == 1) + { + balloon->frame += 256; + if (balloon->frame >= 1280) + { + sprite_remove((rct_sprite *)balloon); + } + } + else + { + sint32 original_var26a = balloon->var_26a; + balloon->var_26a += 85; + if (original_var26a >= 255 - 85) + { + balloon->var_26b++; + sprite_move(balloon->x, balloon->y, balloon->z + 1, (rct_sprite*)balloon); - rct_sprite* sprite = get_sprite(balloon_num); - if (sprite != NULL && sprite->balloon.sprite_identifier == SPRITE_IDENTIFIER_MISC && sprite->balloon.misc_identifier == SPRITE_MISC_BALLOON) { - balloon_press(&sprite->balloon); - } + sint32 maxZ = 1967 - ((balloon->x ^ balloon->y) & 31); + if (balloon->z >= maxZ) + { + balloon_pop(balloon); + } + } + } + } + + void game_command_balloon_press(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp) + { + *ebx = balloon_press(*eax & 0xFFFF, *ebx); + } } diff --git a/src/openrct2/world/sprite.c b/src/openrct2/world/sprite.c index e83ee13566..15569658eb 100644 --- a/src/openrct2/world/sprite.c +++ b/src/openrct2/world/sprite.c @@ -45,6 +45,16 @@ static rct_xyz16 _spritelocations2[MAX_SPRITES]; static size_t GetSpatialIndexOffset(sint32 x, sint32 y); +rct_sprite *try_get_sprite(size_t spriteIndex) +{ + rct_sprite * sprite = NULL; + if (spriteIndex < MAX_SPRITES) + { + sprite = &_spriteList[spriteIndex]; + } + return sprite; +} + rct_sprite *get_sprite(size_t sprite_idx) { openrct2_assert(sprite_idx < MAX_SPRITES, "Tried getting sprite %u", sprite_idx); diff --git a/src/openrct2/world/sprite.h b/src/openrct2/world/sprite.h index fb0077a6c7..a21b07f3c4 100644 --- a/src/openrct2/world/sprite.h +++ b/src/openrct2/world/sprite.h @@ -376,6 +376,7 @@ enum { LITTER_TYPE_EMPTY_BOWL_BLUE, }; +rct_sprite *try_get_sprite(size_t spriteIndex); rct_sprite *get_sprite(size_t sprite_idx); #ifdef NO_RCT2 From dfc140158ed8db25f8b593859333679fef40643f Mon Sep 17 00:00:00 2001 From: Ted John Date: Fri, 10 Mar 2017 17:47:00 +0000 Subject: [PATCH 3/7] Use member functions for balloon --- src/openrct2/world/Balloon.cpp | 137 ++++++++++++++++----------------- src/openrct2/world/sprite.h | 13 ++++ 2 files changed, 80 insertions(+), 70 deletions(-) diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index 5698811685..473a455e2f 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -24,69 +24,77 @@ extern "C" #include "sprite.h" } -static bool sprite_is_balloon(rct_sprite * sprite) +bool rct_sprite::IsBalloon() { - return sprite != nullptr && - sprite->balloon.sprite_identifier == SPRITE_IDENTIFIER_MISC && - sprite->balloon.misc_identifier == SPRITE_MISC_BALLOON; + return this->balloon.sprite_identifier == SPRITE_IDENTIFIER_MISC && + this->balloon.misc_identifier == SPRITE_MISC_BALLOON; } -static void balloon_pop(rct_balloon * balloon) +rct_balloon * rct_sprite::AsBalloon() { - balloon->popped = 1; - balloon->frame = 0; - audio_play_sound_at_location(SOUND_BALLOON_POP, balloon->x, balloon->y, balloon->z); + rct_balloon * result = nullptr; + if (IsBalloon()) + { + result = (rct_balloon *)this; + } + return result; } -/** -* -* rct2: 0x006E88ED -*/ -static void balloon_press(rct_balloon * balloon) +void rct_balloon::Update() { - if (balloon->popped != 1) + invalidate_sprite_2((rct_sprite *)this); + if (popped == 1) + { + frame += 256; + if (frame >= 1280) + { + sprite_remove((rct_sprite *)this); + } + } + else + { + sint32 original_var26a = var_26a; + var_26a += 85; + if (original_var26a >= 255 - 85) + { + var_26b++; + sprite_move(x, y, z + 1, (rct_sprite*)this); + + sint32 maxZ = 1967 - ((x ^ y) & 31); + if (z >= maxZ) + { + Pop(); + } + } + } +} + +void rct_balloon::Press() +{ + if (popped != 1) { uint32 random = scenario_rand(); - if ((balloon->sprite_index & 7) || (random & 0xFFFF) < 0x2000) + if ((sprite_index & 7) || (random & 0xFFFF) < 0x2000) { - balloon_pop(balloon); + Pop(); } else { sint16 shift = ((random & 0x80000000) ? -6 : 6); - sprite_move(balloon->x + shift, - balloon->y, - balloon->z, - (rct_sprite *)balloon); + sprite_move(x + shift, y, z, (rct_sprite *)this); } } } -static sint32 balloon_press(uint16 spriteIndex, uint8 flags) +void rct_balloon::Pop() { - rct_sprite * sprite = try_get_sprite(spriteIndex); - if (!sprite_is_balloon(sprite)) - { - log_error("Tried getting invalid sprite for balloon: %u", spriteIndex); - return MONEY32_UNDEFINED; - } - - if (flags & GAME_COMMAND_FLAG_APPLY) - { - if (sprite_is_balloon(sprite)) - { - balloon_press(&sprite->balloon); - } - } - return 0; + popped = 1; + frame = 0; + audio_play_sound_at_location(SOUND_BALLOON_POP, x, y, z); } extern "C" { - /** - * - * rct2: 0x006736C7 - */ void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, uint8 bl) { rct_sprite* sprite = create_sprite(2); @@ -104,41 +112,30 @@ extern "C" } } - /** - * - * rct2: 0x0067342C - */ void balloon_update(rct_balloon * balloon) { - invalidate_sprite_2((rct_sprite *)balloon); - if (balloon->popped == 1) - { - balloon->frame += 256; - if (balloon->frame >= 1280) - { - sprite_remove((rct_sprite *)balloon); - } - } - else - { - sint32 original_var26a = balloon->var_26a; - balloon->var_26a += 85; - if (original_var26a >= 255 - 85) - { - balloon->var_26b++; - sprite_move(balloon->x, balloon->y, balloon->z + 1, (rct_sprite*)balloon); - - sint32 maxZ = 1967 - ((balloon->x ^ balloon->y) & 31); - if (balloon->z >= maxZ) - { - balloon_pop(balloon); - } - } - } + balloon->Update(); } void game_command_balloon_press(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp) { - *ebx = balloon_press(*eax & 0xFFFF, *ebx); + uint16 spriteIndex = *eax & 0xFFFF; + uint8 flags = *ebx; + + rct_sprite * sprite = try_get_sprite(spriteIndex); + if (sprite == nullptr || !sprite->IsBalloon()) + { + log_error("Tried getting invalid sprite for balloon: %u", spriteIndex); + *ebx = MONEY32_UNDEFINED; + } + else + { + if (flags & GAME_COMMAND_FLAG_APPLY) + { + sprite->AsBalloon() + ->Press(); + } + *ebx = 0; + } } } diff --git a/src/openrct2/world/sprite.h b/src/openrct2/world/sprite.h index a21b07f3c4..22f81819f5 100644 --- a/src/openrct2/world/sprite.h +++ b/src/openrct2/world/sprite.h @@ -127,6 +127,13 @@ typedef struct rct_balloon { uint8 pad_28[4]; uint8 colour; // 0x2C uint8 var_2D; + +#ifdef __cplusplus + void Update(); + void Pop(); + void Press(); +#endif + } rct_balloon; assert_struct_size(rct_balloon, 0x2e); @@ -337,6 +344,12 @@ typedef union { rct_crashed_vehicle_particle crashed_vehicle_particle; rct_crash_splash crash_splash; rct_steam_particle steam_particle; + +#ifdef __cplusplus + bool IsBalloon(); + rct_balloon * AsBalloon(); +#endif + } rct_sprite; assert_struct_size(rct_sprite, 0x100); From 8148c86f6b8a30de6ca4e076f4c2d7f7a009f479 Mon Sep 17 00:00:00 2001 From: Ted John Date: Fri, 10 Mar 2017 17:52:06 +0000 Subject: [PATCH 4/7] Use balloon for create_balloon --- src/openrct2/peep/peep.c | 24 ++++++++---------------- src/openrct2/world/Balloon.cpp | 4 ++-- src/openrct2/world/sprite.h | 2 +- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/openrct2/peep/peep.c b/src/openrct2/peep/peep.c index 8767621b20..44005866fa 100644 --- a/src/openrct2/peep/peep.c +++ b/src/openrct2/peep/peep.c @@ -1719,23 +1719,15 @@ void peep_update_sprite_type(rct_peep* peep) peep->sprite_type == PEEP_SPRITE_TYPE_BALLOON && (scenario_rand() & 0xFFFF) <= 327 ) { - uint8 bl = 0; - - if ( - (scenario_rand() & 0xFFFF) <= 13107 && - peep->x != SPRITE_LOCATION_NULL - ) { - - bl = 1; - audio_play_sound_at_location(SOUND_BALLOON_POP, peep->x, peep->y, peep->z); - } - + bool isBalloonPopped = false; if (peep->x != SPRITE_LOCATION_NULL) { - create_balloon(peep->x, peep->y, peep->z + 9, peep->balloon_colour, bl); + if ((scenario_rand() & 0xFFFF) <= 13107) { + isBalloonPopped = true; + audio_play_sound_at_location(SOUND_BALLOON_POP, peep->x, peep->y, peep->z); + } + create_balloon(peep->x, peep->y, peep->z + 9, peep->balloon_colour, isBalloonPopped); } - peep->item_standard_flags &= ~PEEP_ITEM_BALLOON; - peep->window_invalidate_flags |= PEEP_INVALIDATE_PEEP_INVENTORY; } @@ -2105,7 +2097,7 @@ static void peep_update_falling(rct_peep* peep){ peep->item_standard_flags &= ~PEEP_ITEM_BALLOON; if (peep->sprite_type == PEEP_SPRITE_TYPE_BALLOON && peep->x != MAP_LOCATION_NULL) { - create_balloon(peep->x, peep->y, height, peep->balloon_colour, 0); + create_balloon(peep->x, peep->y, height, peep->balloon_colour, false); peep->window_invalidate_flags |= PEEP_INVALIDATE_PEEP_INVENTORY; peep_update_sprite_type(peep); } @@ -6987,7 +6979,7 @@ void peep_applause() if (peep->item_standard_flags & PEEP_ITEM_BALLOON) { peep->item_standard_flags &= ~PEEP_ITEM_BALLOON; if (peep->x != MAP_LOCATION_NULL) { - create_balloon(peep->x, peep->y, peep->z + 9, peep->balloon_colour, 0); + create_balloon(peep->x, peep->y, peep->z + 9, peep->balloon_colour, false); peep->window_invalidate_flags |= PEEP_INVALIDATE_PEEP_INVENTORY; peep_update_sprite_type(peep); } diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index 473a455e2f..f836a1fa99 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -95,7 +95,7 @@ void rct_balloon::Pop() extern "C" { - void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, uint8 bl) + void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, bool isPopped) { rct_sprite* sprite = create_sprite(2); if (sprite != nullptr) @@ -108,7 +108,7 @@ extern "C" sprite->balloon.misc_identifier = SPRITE_MISC_BALLOON; sprite->balloon.frame = 0; sprite->balloon.colour = colour; - sprite->balloon.popped = bl; + sprite->balloon.popped = (isPopped ? 1 : 0); } } diff --git a/src/openrct2/world/sprite.h b/src/openrct2/world/sprite.h index 22f81819f5..0a8b2a4753 100644 --- a/src/openrct2/world/sprite.h +++ b/src/openrct2/world/sprite.h @@ -428,7 +428,7 @@ void sprite_position_tween_reset(); /////////////////////////////////////////////////////////////// // Balloon /////////////////////////////////////////////////////////////// -void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, uint8 bl); +void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, bool isPopped); void balloon_update(rct_balloon *balloon); void game_command_balloon_press(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp); From 2d063ef5457a7f2fddcd29304767803a05838277 Mon Sep 17 00:00:00 2001 From: Ted John Date: Fri, 10 Mar 2017 21:59:13 +0000 Subject: [PATCH 5/7] Add comment to balloon press logic --- src/openrct2/world/Balloon.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index f836a1fa99..b72953c91c 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -73,6 +73,8 @@ void rct_balloon::Press() { if (popped != 1) { + // There is a random chance that pressing the balloon will not pop it + // and instead shift it slightly uint32 random = scenario_rand(); if ((sprite_index & 7) || (random & 0xFFFF) < 0x2000) { From e4c960b7d9c68010db0aa17d1b72b5e12b07e432 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 11 Mar 2017 09:27:31 +0000 Subject: [PATCH 6/7] Separate out game_command_balloon_press --- src/openrct2/world/Balloon.cpp | 38 ++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index b72953c91c..272e1dcdde 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -95,6 +95,25 @@ void rct_balloon::Pop() audio_play_sound_at_location(SOUND_BALLOON_POP, x, y, z); } +static money32 game_command_balloon_press(uint16 spriteIndex, uint8 flags) +{ + rct_sprite * sprite = try_get_sprite(spriteIndex); + if (sprite == nullptr || !sprite->IsBalloon()) + { + log_error("Tried getting invalid sprite for balloon: %u", spriteIndex); + return MONEY32_UNDEFINED; + } + else + { + if (flags & GAME_COMMAND_FLAG_APPLY) + { + sprite->AsBalloon() + ->Press(); + } + return 0; + } +} + extern "C" { void create_balloon(sint32 x, sint32 y, sint32 z, sint32 colour, bool isPopped) @@ -121,23 +140,6 @@ extern "C" void game_command_balloon_press(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp) { - uint16 spriteIndex = *eax & 0xFFFF; - uint8 flags = *ebx; - - rct_sprite * sprite = try_get_sprite(spriteIndex); - if (sprite == nullptr || !sprite->IsBalloon()) - { - log_error("Tried getting invalid sprite for balloon: %u", spriteIndex); - *ebx = MONEY32_UNDEFINED; - } - else - { - if (flags & GAME_COMMAND_FLAG_APPLY) - { - sprite->AsBalloon() - ->Press(); - } - *ebx = 0; - } + *ebx = game_command_balloon_press(*eax & 0xFFFF, *ebx & 0xFF); } } From 7d33dda13bdd6ee48c9b8013e47ab4cc46371b8e Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 11 Mar 2017 09:37:02 +0000 Subject: [PATCH 7/7] Fix xcode project --- OpenRCT2.xcodeproj/project.pbxproj | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index f33e59c269..6871d16d7a 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 652747EC1E41CE1B000F36FD /* SawyerEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652747EA1E41CE1B000F36FD /* SawyerEncoding.cpp */; }; 656F6C8E1E45BFC200E0F770 /* Version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656F6C8C1E45BFC200E0F770 /* Version.cpp */; }; 658F3D911E44A6C200388550 /* ParkImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 658F3D8F1E44A6C200388550 /* ParkImporter.cpp */; }; + 6876808CD662C4B16392A9B4 /* Balloon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 437490DBD74ECF60C3363559 /* Balloon.cpp */; }; 791166FB1D7486EF005912EA /* NetworkServerAdvertiser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 791166F91D7486EF005912EA /* NetworkServerAdvertiser.cpp */; }; 85060FD31D8C17CC00DFA2B3 /* track_data_old.c in Sources */ = {isa = PBXBuildFile; fileRef = 8594C05F1D885CF600235E93 /* track_data_old.c */; }; 8594C0601D885CF600235E93 /* track_data_old.c in Sources */ = {isa = PBXBuildFile; fileRef = 8594C05F1D885CF600235E93 /* track_data_old.c */; }; @@ -412,7 +413,6 @@ D44272961CC81B3200D84D28 /* track_place.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271D51CC81B3200D84D28 /* track_place.c */; }; D44272971CC81B3200D84D28 /* viewport.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271D61CC81B3200D84D28 /* viewport.c */; }; D44272981CC81B3200D84D28 /* water.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271D71CC81B3200D84D28 /* water.c */; }; - D44272991CC81B3200D84D28 /* balloon.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271D91CC81B3200D84D28 /* balloon.c */; }; D442729A1CC81B3200D84D28 /* banner.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271DA1CC81B3200D84D28 /* banner.c */; }; D442729B1CC81B3200D84D28 /* climate.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271DC1CC81B3200D84D28 /* climate.c */; }; D442729C1CC81B3200D84D28 /* duck.c in Sources */ = {isa = PBXBuildFile; fileRef = D44271DE1CC81B3200D84D28 /* duck.c */; }; @@ -479,6 +479,7 @@ D4EC48E81C2637710024B507 /* title in Resources */ = {isa = PBXBuildFile; fileRef = D4EC48E51C2637710024B507 /* title */; }; D4F5B5EF1DAD8A4300AB6075 /* CursorData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D4F5B5EC1DAD8A4300AB6075 /* CursorData.cpp */; }; D4F5B5F01DAD8A4300AB6075 /* Cursors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D4F5B5ED1DAD8A4300AB6075 /* Cursors.cpp */; }; + F61331C839858250899F1E9B /* Balloon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 437490DBD74ECF60C3363559 /* Balloon.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -528,6 +529,7 @@ 008BF7291CDAA5C30019A2AD /* track_design.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = track_design.h; sourceTree = ""; }; 00EFEE701CF1D80B0035213B /* NetworkKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkKey.cpp; sourceTree = ""; usesTabs = 0; }; 00EFEE711CF1D80B0035213B /* NetworkKey.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = NetworkKey.h; sourceTree = ""; usesTabs = 0; }; + 437490DBD74ECF60C3363559 /* Balloon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Balloon.cpp; sourceTree = ""; }; 652076301E22EFE7000D0C04 /* Imaging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Imaging.cpp; sourceTree = ""; }; 652076311E22EFE7000D0C04 /* Imaging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Imaging.h; sourceTree = ""; }; 652747EA1E41CE1B000F36FD /* SawyerEncoding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SawyerEncoding.cpp; path = rct12/SawyerEncoding.cpp; sourceTree = ""; }; @@ -988,7 +990,6 @@ D44271D51CC81B3200D84D28 /* track_place.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = track_place.c; sourceTree = ""; }; D44271D61CC81B3200D84D28 /* viewport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = viewport.c; sourceTree = ""; }; D44271D71CC81B3200D84D28 /* water.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = water.c; sourceTree = ""; }; - D44271D91CC81B3200D84D28 /* balloon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = balloon.c; sourceTree = ""; }; D44271DA1CC81B3200D84D28 /* banner.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = banner.c; sourceTree = ""; }; D44271DB1CC81B3200D84D28 /* banner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = banner.h; sourceTree = ""; }; D44271DC1CC81B3200D84D28 /* climate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = climate.c; sourceTree = ""; }; @@ -2036,7 +2037,7 @@ D44271D81CC81B3200D84D28 /* world */ = { isa = PBXGroup; children = ( - D44271D91CC81B3200D84D28 /* balloon.c */, + 437490DBD74ECF60C3363559 /* Balloon.cpp */, D44271DA1CC81B3200D84D28 /* banner.c */, D44271DB1CC81B3200D84D28 /* banner.h */, D44271DC1CC81B3200D84D28 /* climate.c */, @@ -2686,6 +2687,7 @@ C64FDAAC1D6D9A2100F259B9 /* splash_boats.c in Sources */, C64FDAAD1D6D9A2100F259B9 /* submarine_ride.c in Sources */, C64FDAAE1D6D9A2100F259B9 /* water_coaster.c in Sources */, + 6876808CD662C4B16392A9B4 /* Balloon.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3011,7 +3013,6 @@ D44271FF1CC81B3200D84D28 /* Console.cpp in Sources */, D44272781CC81B3200D84D28 /* player.c in Sources */, C686F9161CDBC3B7009F9BFC /* lay_down_roller_coaster.c in Sources */, - D44272991CC81B3200D84D28 /* balloon.c in Sources */, D442727C1CC81B3200D84D28 /* ride_construction.c in Sources */, D442724A1CC81B3200D84D28 /* track_data.c in Sources */, D442725C1CC81B3200D84D28 /* editor_main.c in Sources */, @@ -3044,6 +3045,7 @@ C6834A111DFDE8E300CE933A /* interop.c in Sources */, C686F9231CDBC3B7009F9BFC /* steeplechase.c in Sources */, D44272871CC81B3200D84D28 /* staff_list.c in Sources */, + F61331C839858250899F1E9B /* Balloon.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };