1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

fix get capacity string for vehicles

This commit is contained in:
Ted John
2016-07-11 22:50:55 +01:00
parent eb275604fa
commit edb4a4a822
17 changed files with 45 additions and 6 deletions

View File

@@ -53,6 +53,7 @@ void BannerObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void BannerObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_legacyType.image = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
}

View File

@@ -40,6 +40,7 @@ void EntranceObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void EntranceObject::Load()
{
GetStringTable()->Sort();
_legacyType.string_idx = language_allocate_object_string(GetName());
_legacyType.image_id = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
}

View File

@@ -53,6 +53,7 @@ void FootpathItemObject::ReadLegacy(IReadObjectContext * context, IStream * stre
void FootpathItemObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_legacyType.image = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());

View File

@@ -49,6 +49,7 @@ void FootpathObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void FootpathObject::Load()
{
GetStringTable()->Sort();
_legacyType.string_idx = language_allocate_object_string(GetName());
_legacyType.image = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
_legacyType.bridge_image = _legacyType.image + 109;

View File

@@ -81,6 +81,7 @@ void LargeSceneryObject::ReadLegacy(IReadObjectContext * context, IStream * stre
void LargeSceneryObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_baseImageId = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
_legacyType.image = _baseImageId;

View File

@@ -528,6 +528,13 @@ IObjectManager * GetObjectManager()
extern "C"
{
void * object_manager_get_loaded_object_by_index(size_t index)
{
IObjectManager * objectManager = GetObjectManager();
Object * loadedObject = objectManager->GetLoadedObject(index);
return (void *)loadedObject;
}
void * object_manager_get_loaded_object(const rct_object_entry * entry)
{
IObjectManager * objectManager = GetObjectManager();

View File

@@ -51,6 +51,7 @@ IObjectManager * GetObjectManager();
#else
void * object_manager_get_loaded_object_by_index(size_t index);
void * object_manager_get_loaded_object(const rct_object_entry * entry);
uint8 object_manager_get_loaded_object_entry_index(const void * loadedObject);
void * object_manager_load_object(const rct_object_entry * entry);

View File

@@ -903,6 +903,20 @@ extern "C"
}
}
const utf8 * object_get_capacity(const void * object)
{
const Object * baseObject = (const Object *)object;
switch (baseObject->GetObjectType()) {
case OBJECT_TYPE_RIDE:
{
auto rideObject = static_cast<const RideObject *>(baseObject);
return rideObject->GetCapacity();
}
default:
return "";
}
}
void object_draw_preview(const void * object, rct_drawpixelinfo * dpi, sint32 width, sint32 height)
{
const Object * baseObject = (const Object *)object;

View File

@@ -89,6 +89,7 @@ void * object_repository_load_object(const rct_object_e
void object_delete(void * object);
const utf8 * object_get_description(const void * object);
const utf8 * object_get_capacity(const void * object);
void object_draw_preview(const void * object, rct_drawpixelinfo * dpi, sint32 width, sint32 height);
#endif

View File

@@ -129,6 +129,7 @@ void RideObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void RideObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_legacyType.description = language_allocate_object_string(GetDescription());
_legacyType.images_offset = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());

View File

@@ -55,6 +55,7 @@ void SceneryGroupObject::ReadLegacy(IReadObjectContext * context, IStream * stre
void SceneryGroupObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_legacyType.image = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
_legacyType.entry_count = 0;

View File

@@ -79,6 +79,7 @@ void SmallSceneryObject::ReadLegacy(IReadObjectContext * context, IStream * stre
void SmallSceneryObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_legacyType.image = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());

View File

@@ -42,6 +42,7 @@ void StexObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void StexObject::Load()
{
GetStringTable()->Sort();
_legacyType.scenario_name = language_allocate_object_string(GetScenarioName());
_legacyType.park_name = language_allocate_object_string(GetParkName());
_legacyType.details = language_allocate_object_string(GetScenarioDetails());

View File

@@ -38,8 +38,6 @@ public:
~StringTable();
void Read(IReadObjectContext * context, IStream * stream, uint8 id);
void Sort();
const utf8 * GetString(uint8 id) const;
private:
void Sort();
};

View File

@@ -56,6 +56,7 @@ void WallObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void WallObject::Load()
{
GetStringTable()->Sort();
_legacyType.name = language_allocate_object_string(GetName());
_legacyType.image = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
}

View File

@@ -41,6 +41,7 @@ void WaterObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
void WaterObject::Load()
{
GetStringTable()->Sort();
_legacyType.string_idx = language_allocate_object_string(GetName());
_legacyType.image_id = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
_legacyType.var_06 = _legacyType.image_id + 1;

View File

@@ -26,6 +26,8 @@
#include "../interface/window.h"
#include "../localisation/date.h"
#include "../localisation/localisation.h"
#include "../object/ObjectManager.h"
#include "../object/ObjectRepository.h"
#include "../peep/staff.h"
#include "../ride/ride.h"
#include "../ride/ride_data.h"
@@ -2590,7 +2592,6 @@ static void window_ride_vehicle_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_ride *ride;
rct_ride_entry *rideEntry;
rct_string_id stringId;
int x, y;
sint16 factor;
@@ -2608,8 +2609,14 @@ static void window_ride_vehicle_paint(rct_window *w, rct_drawpixelinfo *dpi)
y += 5;
// Capacity
stringId = rideEntry->description + 1;
gfx_draw_string_left(dpi, STR_CAPACITY, &stringId, 0, x, y);
void * loadedObject = object_manager_get_loaded_object_by_index(ride->subtype);
if (loadedObject != NULL)
{
const utf8 * capacity = object_get_capacity(loadedObject);
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, utf8 *, capacity);
gfx_draw_string_left(dpi, STR_CAPACITY, gCommonFormatArgs, 0, x, y);
}
y += 15;
if ((!(rideEntry->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE) || rideTypeShouldLoseSeparateFlag(rideEntry)) && var_496(w) > 1) {