mirror of https://github.com/OpenRCT2/OpenRCT2.git
add helper methods for object entry names
This commit is contained in:
parent
3c64010fe1
commit
ce878723d7
|
@ -122,4 +122,7 @@ void object_create_identifier_name(char* string_buffer, const rct_object_entry*
|
|||
rct_object_entry *object_list_find_by_name(const char *name);
|
||||
rct_object_entry *object_list_find(rct_object_entry *entry);
|
||||
|
||||
void object_entry_get_name(utf8 * buffer, size_t bufferSize, const rct_object_entry * entry);
|
||||
void object_entry_get_name_fixed(utf8 * buffer, size_t bufferSize, const rct_object_entry * entry);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -172,8 +172,8 @@ namespace ObjectFactory
|
|||
Object * result = CreateObject(*entry);
|
||||
if (result != nullptr)
|
||||
{
|
||||
utf8 objectName[9] = { 0 };
|
||||
Memory::Copy(objectName, entry->name, 8);
|
||||
utf8 objectName[9];
|
||||
object_entry_get_name_fixed(objectName, sizeof(objectName), entry);
|
||||
|
||||
auto readContext = ReadObjectContext(objectName);
|
||||
auto chunkStream = MemoryStream(data, dataSize);
|
||||
|
|
|
@ -192,8 +192,8 @@ public:
|
|||
|
||||
void AddObject(const rct_object_entry * objectEntry, const void * data, size_t dataSize) override
|
||||
{
|
||||
char objectName[9] = { 0 };
|
||||
Memory::Copy(objectName, objectEntry->name, 8);
|
||||
utf8 objectName[9];
|
||||
object_entry_get_name_fixed(objectName, sizeof(objectName), objectEntry);
|
||||
|
||||
int realChecksum = object_calculate_checksum(objectEntry, (const uint8 *)data, (int)dataSize);
|
||||
if (realChecksum != objectEntry->checksum)
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "ride/track.h"
|
||||
#include "ride/track_design.h"
|
||||
#include "util/sawyercoding.h"
|
||||
#include "util/util.h"
|
||||
#include "world/entrance.h"
|
||||
#include "world/footpath.h"
|
||||
#include "world/scenery.h"
|
||||
|
@ -255,3 +256,24 @@ void * get_loaded_object_chunk(size_t index)
|
|||
void *entry = object_entry_groups[objectType].chunks[entryIndex];
|
||||
return entry;
|
||||
}
|
||||
|
||||
void object_entry_get_name(utf8 * buffer, size_t bufferSize, const rct_object_entry * entry)
|
||||
{
|
||||
size_t nameLength = 8;
|
||||
const char * end = memchr(entry->name, ' ', 8);
|
||||
if (end != NULL)
|
||||
{
|
||||
nameLength = (size_t)(end - entry->name);
|
||||
}
|
||||
|
||||
bufferSize = min(nameLength + 1, bufferSize);
|
||||
memcpy(buffer, entry->name, bufferSize - 1);
|
||||
buffer[bufferSize - 1] = 0;
|
||||
}
|
||||
|
||||
void object_entry_get_name_fixed(utf8 * buffer, size_t bufferSize, const rct_object_entry * entry)
|
||||
{
|
||||
bufferSize = min(9, bufferSize);
|
||||
memcpy(buffer, entry->name, bufferSize - 1);
|
||||
buffer[bufferSize - 1] = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue