mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-31 10:45:16 +01:00
use overridden object strings
This commit is contained in:
@@ -365,4 +365,13 @@ void language_free_object_string(rct_string_id stringId)
|
||||
}
|
||||
}
|
||||
|
||||
rct_string_id language_get_object_override_string_id(const char * identifier, uint8 index)
|
||||
{
|
||||
if (_languageCurrent == nullptr)
|
||||
{
|
||||
return STR_NONE;
|
||||
}
|
||||
return _languageCurrent->GetObjectOverrideStringId(identifier, index);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -82,5 +82,6 @@ utf8 *widechar_to_utf8(const wchar_t *src);
|
||||
bool language_get_localised_scenario_strings(const utf8 *scenarioFilename, rct_string_id *outStringIds);
|
||||
rct_string_id language_allocate_object_string(const utf8 * target);
|
||||
void language_free_object_string(rct_string_id stringId);
|
||||
rct_string_id language_get_object_override_string_id(const char * identifier, uint8 index);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -84,9 +84,3 @@ void BannerObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, imageId + 0, x - 12, y + 8, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 1, x - 12, y + 8, 0);
|
||||
}
|
||||
|
||||
const utf8 * BannerObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
@@ -39,6 +39,4 @@ public:
|
||||
void Unload() override;
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
};
|
||||
|
||||
@@ -63,9 +63,3 @@ void EntranceObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, imageId + 0, x + 0, y + 28, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 2, x + 32, y + 44, 0);
|
||||
}
|
||||
|
||||
const utf8 * EntranceObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
@@ -38,6 +38,4 @@ public:
|
||||
void Unload() override;
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
};
|
||||
|
||||
@@ -81,9 +81,3 @@ void FootpathItemObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
int y = dpi->height / 2;
|
||||
gfx_draw_sprite(dpi, _legacyType.image, x - 22, y - 24, 0);
|
||||
}
|
||||
|
||||
const utf8 * FootpathItemObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
@@ -39,6 +39,4 @@ public:
|
||||
void Unload() override;
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
};
|
||||
|
||||
@@ -70,9 +70,3 @@ void FootpathObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, _legacyType.image + 71, x - 49, y - 17, 0);
|
||||
gfx_draw_sprite(dpi, _legacyType.image + 72, x + 4, y - 17, 0);
|
||||
}
|
||||
|
||||
const utf8 * FootpathObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
@@ -38,6 +38,4 @@ public:
|
||||
void Unload() override;
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
};
|
||||
|
||||
@@ -128,12 +128,6 @@ void LargeSceneryObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
}
|
||||
|
||||
const utf8 * LargeSceneryObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
rct_large_scenery_tile * LargeSceneryObject::ReadTiles(IStream * stream)
|
||||
{
|
||||
auto tiles = std::vector<rct_large_scenery_tile>();
|
||||
|
||||
@@ -44,8 +44,6 @@ public:
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
|
||||
private:
|
||||
static rct_large_scenery_tile * ReadTiles(IStream * stream);
|
||||
};
|
||||
|
||||
@@ -14,9 +14,58 @@
|
||||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#include "../core/Memory.hpp"
|
||||
#include "../core/String.hpp"
|
||||
#include "Object.h"
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include "../localisation/localisation.h"
|
||||
}
|
||||
|
||||
enum OBJ_STRING_ID
|
||||
{
|
||||
OBJ_STRING_ID_NAME,
|
||||
};
|
||||
|
||||
Object::Object(const rct_object_entry &entry)
|
||||
{
|
||||
_objectEntry = entry;
|
||||
|
||||
char name[9] = { 0 };
|
||||
Memory::Copy(name, entry.name, 8);
|
||||
_identifier = String::Duplicate(name);
|
||||
}
|
||||
|
||||
Object::~Object()
|
||||
{
|
||||
Memory::Free(_identifier);
|
||||
}
|
||||
|
||||
const utf8 * Object::GetOverrideString(uint8 index) const
|
||||
{
|
||||
const char * identifier = GetIdentifier();
|
||||
rct_string_id stringId = language_get_object_override_string_id(identifier, index);
|
||||
|
||||
const utf8 * result = nullptr;
|
||||
if (stringId != STR_NONE)
|
||||
{
|
||||
result = language_get_string(stringId);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const utf8 * Object::GetString(uint8 index) const
|
||||
{
|
||||
const utf8 * sz = GetOverrideString(index);
|
||||
if (sz == nullptr)
|
||||
{
|
||||
sz = GetStringTable()->GetString(index);
|
||||
}
|
||||
return sz != nullptr ? sz : "";
|
||||
}
|
||||
|
||||
const utf8 * Object::GetName() const
|
||||
{
|
||||
return GetString(OBJ_STRING_ID_NAME);
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ interface IReadObjectContext
|
||||
class Object
|
||||
{
|
||||
private:
|
||||
char * _identifier;
|
||||
rct_object_entry _objectEntry;
|
||||
StringTable _stringTable;
|
||||
ImageTable _imageTable;
|
||||
@@ -49,11 +50,15 @@ protected:
|
||||
const StringTable * GetStringTable() const { return &_stringTable; }
|
||||
ImageTable * GetImageTable() { return &_imageTable; }
|
||||
|
||||
const utf8 * GetOverrideString(uint8 index) const;
|
||||
const utf8 * GetString(uint8 index) const;
|
||||
|
||||
public:
|
||||
explicit Object(const rct_object_entry &entry);
|
||||
virtual ~Object() { }
|
||||
virtual ~Object();
|
||||
|
||||
// Legacy data structures
|
||||
const char * GetIdentifier() const { return _identifier; }
|
||||
const rct_object_entry * GetObjectEntry() const { return &_objectEntry; }
|
||||
virtual void * GetLegacyData() abstract;
|
||||
|
||||
@@ -64,7 +69,7 @@ public:
|
||||
virtual void DrawPreview(rct_drawpixelinfo * dpi) const { }
|
||||
|
||||
virtual uint8 GetObjectType() const { return _objectEntry.flags & 0x0F; }
|
||||
virtual const utf8 * GetName() const abstract;
|
||||
virtual const utf8 * GetName() const;
|
||||
|
||||
virtual void SetRepositoryItem(ObjectRepositoryItem * item) const { }
|
||||
};
|
||||
|
||||
@@ -334,22 +334,14 @@ void RideObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, imageId, 0, 0, 0);
|
||||
}
|
||||
|
||||
const utf8 * RideObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
const utf8 * RideObject::GetDescription() const
|
||||
{
|
||||
const utf8 * description = GetStringTable()->GetString(OBJ_STRING_ID_DESCRIPTION);
|
||||
return description != nullptr ? description : "";
|
||||
return GetString(OBJ_STRING_ID_DESCRIPTION);
|
||||
}
|
||||
|
||||
const utf8 * RideObject::GetCapacity() const
|
||||
{
|
||||
const utf8 * capacity = GetStringTable()->GetString(OBJ_STRING_ID_CAPACITY);
|
||||
return capacity != nullptr ? capacity : "";
|
||||
return GetString(OBJ_STRING_ID_CAPACITY);
|
||||
}
|
||||
|
||||
void RideObject::SetRepositoryItem(ObjectRepositoryItem * item) const
|
||||
|
||||
@@ -42,7 +42,6 @@ public:
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
const utf8 * GetDescription() const;
|
||||
const utf8 * GetCapacity() const;
|
||||
|
||||
|
||||
@@ -97,12 +97,6 @@ void SceneryGroupObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, imageId, x - 15, y - 14, 0);
|
||||
}
|
||||
|
||||
const utf8 * SceneryGroupObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
void SceneryGroupObject::SetRepositoryItem(ObjectRepositoryItem * item) const
|
||||
{
|
||||
Memory::Free(item->ThemeObjects);
|
||||
|
||||
@@ -44,8 +44,6 @@ public:
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
|
||||
void SetRepositoryItem(ObjectRepositoryItem * item) const override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -152,13 +152,6 @@ void SmallSceneryObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const utf8 * SmallSceneryObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
uint8 * SmallSceneryObject::ReadVar10(IStream * stream)
|
||||
{
|
||||
uint8 b;
|
||||
|
||||
@@ -42,8 +42,6 @@ public:
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
|
||||
private:
|
||||
static uint8 * ReadVar10(IStream * stream);
|
||||
};
|
||||
|
||||
@@ -105,9 +105,3 @@ void WallObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
}
|
||||
}
|
||||
|
||||
const utf8 * WallObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
@@ -39,6 +39,4 @@ public:
|
||||
void Unload() override;
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
};
|
||||
|
||||
@@ -64,9 +64,3 @@ void WaterObject::DrawPreview(rct_drawpixelinfo * dpi) const
|
||||
int y = dpi->height / 2;
|
||||
gfx_draw_string_centred(dpi, 3326, x, y, 0, nullptr);
|
||||
}
|
||||
|
||||
const utf8 * WaterObject::GetName() const
|
||||
{
|
||||
const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME);
|
||||
return name != nullptr ? name : "";
|
||||
}
|
||||
|
||||
@@ -38,6 +38,4 @@ public:
|
||||
void Unload() override;
|
||||
|
||||
void DrawPreview(rct_drawpixelinfo * dpi) const override;
|
||||
|
||||
const utf8 * GetName() const override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user