mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-18 04:23:20 +01:00
clang-format object
This commit is contained in:
committed by
Hielke Morsink
parent
e32189fd98
commit
a6a12af1ec
@@ -7,6 +7,9 @@
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "ObjectFactory.h"
|
||||
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../core/Console.hpp"
|
||||
#include "../core/File.h"
|
||||
#include "../core/FileStream.hpp"
|
||||
@@ -16,7 +19,6 @@
|
||||
#include "../core/Path.hpp"
|
||||
#include "../core/String.hpp"
|
||||
#include "../core/Zip.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../rct12/SawyerChunkReader.h"
|
||||
#include "BannerObject.h"
|
||||
#include "EntranceObject.h"
|
||||
@@ -26,7 +28,6 @@
|
||||
#include "Object.h"
|
||||
#include "ObjectLimits.h"
|
||||
#include "ObjectList.h"
|
||||
#include "ObjectFactory.h"
|
||||
#include "RideObject.h"
|
||||
#include "SceneryGroupObject.h"
|
||||
#include "SmallSceneryObject.h"
|
||||
@@ -79,27 +80,33 @@ class ReadObjectContext : public IReadObjectContext
|
||||
{
|
||||
private:
|
||||
IObjectRepository& _objectRepository;
|
||||
const IFileDataRetriever * _fileDataRetriever;
|
||||
const IFileDataRetriever* _fileDataRetriever;
|
||||
|
||||
std::string _objectName;
|
||||
bool _loadImages;
|
||||
bool _loadImages;
|
||||
std::string _basePath;
|
||||
bool _wasWarning = false;
|
||||
bool _wasError = false;
|
||||
bool _wasWarning = false;
|
||||
bool _wasError = false;
|
||||
|
||||
public:
|
||||
bool WasWarning() const { return _wasWarning; }
|
||||
bool WasError() const { return _wasError; }
|
||||
bool WasWarning() const
|
||||
{
|
||||
return _wasWarning;
|
||||
}
|
||||
bool WasError() const
|
||||
{
|
||||
return _wasError;
|
||||
}
|
||||
|
||||
ReadObjectContext(
|
||||
IObjectRepository& objectRepository,
|
||||
const std::string &objectName,
|
||||
const std::string& objectName,
|
||||
bool loadImages,
|
||||
const IFileDataRetriever * fileDataRetriever)
|
||||
: _objectRepository(objectRepository),
|
||||
_fileDataRetriever(fileDataRetriever),
|
||||
_objectName(objectName),
|
||||
_loadImages(loadImages)
|
||||
const IFileDataRetriever* fileDataRetriever)
|
||||
: _objectRepository(objectRepository)
|
||||
, _fileDataRetriever(fileDataRetriever)
|
||||
, _objectName(objectName)
|
||||
, _loadImages(loadImages)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -145,30 +152,31 @@ public:
|
||||
|
||||
namespace ObjectFactory
|
||||
{
|
||||
static Object * CreateObjectFromJson(IObjectRepository& objectRepository, const json_t * jRoot, const IFileDataRetriever * fileRetriever);
|
||||
static Object*
|
||||
CreateObjectFromJson(IObjectRepository& objectRepository, const json_t* jRoot, const IFileDataRetriever* fileRetriever);
|
||||
|
||||
static void ReadObjectLegacy(Object * object, IReadObjectContext * context, IStream * stream)
|
||||
static void ReadObjectLegacy(Object* object, IReadObjectContext* context, IStream* stream)
|
||||
{
|
||||
try
|
||||
{
|
||||
object->ReadLegacy(context, stream);
|
||||
}
|
||||
catch (const IOException &)
|
||||
catch (const IOException&)
|
||||
{
|
||||
// TODO check that ex is really EOF and not some other error
|
||||
context->LogError(OBJECT_ERROR_UNEXPECTED_EOF, "Unexpectedly reached end of file.");
|
||||
}
|
||||
catch (const std::exception &)
|
||||
catch (const std::exception&)
|
||||
{
|
||||
context->LogError(OBJECT_ERROR_UNKNOWN, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
Object * CreateObjectFromLegacyFile(IObjectRepository& objectRepository, const utf8 * path)
|
||||
Object* CreateObjectFromLegacyFile(IObjectRepository& objectRepository, const utf8* path)
|
||||
{
|
||||
log_verbose("CreateObjectFromLegacyFile(..., \"%s\")", path);
|
||||
|
||||
Object * result = nullptr;
|
||||
Object* result = nullptr;
|
||||
try
|
||||
{
|
||||
auto fs = FileStream(path, FILE_MODE_OPEN);
|
||||
@@ -192,7 +200,7 @@ namespace ObjectFactory
|
||||
throw std::runtime_error("Object has errors");
|
||||
}
|
||||
}
|
||||
catch (const std::exception &)
|
||||
catch (const std::exception&)
|
||||
{
|
||||
delete result;
|
||||
result = nullptr;
|
||||
@@ -200,12 +208,13 @@ namespace ObjectFactory
|
||||
return result;
|
||||
}
|
||||
|
||||
Object * CreateObjectFromLegacyData(IObjectRepository& objectRepository, const rct_object_entry * entry, const void * data, size_t dataSize)
|
||||
Object* CreateObjectFromLegacyData(
|
||||
IObjectRepository& objectRepository, const rct_object_entry* entry, const void* data, size_t dataSize)
|
||||
{
|
||||
Guard::ArgumentNotNull(entry, GUARD_LINE);
|
||||
Guard::ArgumentNotNull(data, GUARD_LINE);
|
||||
|
||||
Object * result = CreateObject(*entry);
|
||||
Object* result = CreateObject(*entry);
|
||||
if (result != nullptr)
|
||||
{
|
||||
utf8 objectName[DAT_NAME_LENGTH + 1];
|
||||
@@ -224,68 +233,79 @@ namespace ObjectFactory
|
||||
return result;
|
||||
}
|
||||
|
||||
Object * CreateObject(const rct_object_entry &entry)
|
||||
Object* CreateObject(const rct_object_entry& entry)
|
||||
{
|
||||
Object * result;
|
||||
Object* result;
|
||||
uint8_t objectType = object_entry_get_type(&entry);
|
||||
switch (objectType) {
|
||||
case OBJECT_TYPE_RIDE:
|
||||
result = new RideObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_SMALL_SCENERY:
|
||||
result = new SmallSceneryObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_LARGE_SCENERY:
|
||||
result = new LargeSceneryObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_WALLS:
|
||||
result = new WallObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_BANNERS:
|
||||
result = new BannerObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_PATHS:
|
||||
result = new FootpathObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_PATH_BITS:
|
||||
result = new FootpathItemObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_SCENERY_GROUP:
|
||||
result = new SceneryGroupObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_PARK_ENTRANCE:
|
||||
result = new EntranceObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_WATER:
|
||||
result = new WaterObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_SCENARIO_TEXT:
|
||||
result = new StexObject(entry);
|
||||
break;
|
||||
default:
|
||||
throw std::runtime_error("Invalid object type");
|
||||
switch (objectType)
|
||||
{
|
||||
case OBJECT_TYPE_RIDE:
|
||||
result = new RideObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_SMALL_SCENERY:
|
||||
result = new SmallSceneryObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_LARGE_SCENERY:
|
||||
result = new LargeSceneryObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_WALLS:
|
||||
result = new WallObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_BANNERS:
|
||||
result = new BannerObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_PATHS:
|
||||
result = new FootpathObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_PATH_BITS:
|
||||
result = new FootpathItemObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_SCENERY_GROUP:
|
||||
result = new SceneryGroupObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_PARK_ENTRANCE:
|
||||
result = new EntranceObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_WATER:
|
||||
result = new WaterObject(entry);
|
||||
break;
|
||||
case OBJECT_TYPE_SCENARIO_TEXT:
|
||||
result = new StexObject(entry);
|
||||
break;
|
||||
default:
|
||||
throw std::runtime_error("Invalid object type");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static uint8_t ParseObjectType(const std::string &s)
|
||||
static uint8_t ParseObjectType(const std::string& s)
|
||||
{
|
||||
if (s == "ride") return OBJECT_TYPE_RIDE;
|
||||
if (s == "footpath") return OBJECT_TYPE_PATHS;
|
||||
if (s == "footpath_banner") return OBJECT_TYPE_BANNERS;
|
||||
if (s == "footpath_item") return OBJECT_TYPE_PATH_BITS;
|
||||
if (s == "scenery_small") return OBJECT_TYPE_SMALL_SCENERY;
|
||||
if (s == "scenery_large") return OBJECT_TYPE_LARGE_SCENERY;
|
||||
if (s == "scenery_wall") return OBJECT_TYPE_WALLS;
|
||||
if (s == "scenery_group") return OBJECT_TYPE_SCENERY_GROUP;
|
||||
if (s == "park_entrance") return OBJECT_TYPE_PARK_ENTRANCE;
|
||||
if (s == "water") return OBJECT_TYPE_WATER;
|
||||
if (s == "ride")
|
||||
return OBJECT_TYPE_RIDE;
|
||||
if (s == "footpath")
|
||||
return OBJECT_TYPE_PATHS;
|
||||
if (s == "footpath_banner")
|
||||
return OBJECT_TYPE_BANNERS;
|
||||
if (s == "footpath_item")
|
||||
return OBJECT_TYPE_PATH_BITS;
|
||||
if (s == "scenery_small")
|
||||
return OBJECT_TYPE_SMALL_SCENERY;
|
||||
if (s == "scenery_large")
|
||||
return OBJECT_TYPE_LARGE_SCENERY;
|
||||
if (s == "scenery_wall")
|
||||
return OBJECT_TYPE_WALLS;
|
||||
if (s == "scenery_group")
|
||||
return OBJECT_TYPE_SCENERY_GROUP;
|
||||
if (s == "park_entrance")
|
||||
return OBJECT_TYPE_PARK_ENTRANCE;
|
||||
if (s == "water")
|
||||
return OBJECT_TYPE_WATER;
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
Object * CreateObjectFromZipFile(IObjectRepository& objectRepository, const std::string_view& path)
|
||||
Object* CreateObjectFromZipFile(IObjectRepository& objectRepository, const std::string_view& path)
|
||||
{
|
||||
Object * result = nullptr;
|
||||
Object* result = nullptr;
|
||||
try
|
||||
{
|
||||
auto archive = Zip::Open(path, ZIP_ACCESS::READ);
|
||||
@@ -296,7 +316,7 @@ namespace ObjectFactory
|
||||
}
|
||||
|
||||
json_error_t jsonLoadError;
|
||||
auto jRoot = json_loadb((const char *)jsonBytes.data(), jsonBytes.size(), 0, &jsonLoadError);
|
||||
auto jRoot = json_loadb((const char*)jsonBytes.data(), jsonBytes.size(), 0, &jsonLoadError);
|
||||
if (jRoot == nullptr)
|
||||
{
|
||||
throw JsonException(&jsonLoadError);
|
||||
@@ -315,11 +335,11 @@ namespace ObjectFactory
|
||||
return result;
|
||||
}
|
||||
|
||||
Object * CreateObjectFromJsonFile(IObjectRepository& objectRepository, const std::string &path)
|
||||
Object* CreateObjectFromJsonFile(IObjectRepository& objectRepository, const std::string& path)
|
||||
{
|
||||
log_verbose("CreateObjectFromJsonFile(\"%s\")", path.c_str());
|
||||
|
||||
Object * result = nullptr;
|
||||
Object* result = nullptr;
|
||||
try
|
||||
{
|
||||
auto jRoot = Json::ReadFromFile(path.c_str());
|
||||
@@ -327,7 +347,7 @@ namespace ObjectFactory
|
||||
result = CreateObjectFromJson(objectRepository, jRoot, &fileDataRetriever);
|
||||
json_decref(jRoot);
|
||||
}
|
||||
catch (const std::runtime_error &err)
|
||||
catch (const std::runtime_error& err)
|
||||
{
|
||||
Console::Error::WriteLine("Unable to open or read '%s': %s", path.c_str(), err.what());
|
||||
|
||||
@@ -337,11 +357,12 @@ namespace ObjectFactory
|
||||
return result;
|
||||
}
|
||||
|
||||
Object * CreateObjectFromJson(IObjectRepository& objectRepository, const json_t * jRoot, const IFileDataRetriever * fileRetriever)
|
||||
Object*
|
||||
CreateObjectFromJson(IObjectRepository& objectRepository, const json_t* jRoot, const IFileDataRetriever* fileRetriever)
|
||||
{
|
||||
log_verbose("CreateObjectFromJson(...)");
|
||||
|
||||
Object * result = nullptr;
|
||||
Object* result = nullptr;
|
||||
auto jObjectType = json_object_get(jRoot, "objectType");
|
||||
if (json_is_string(jObjectType))
|
||||
{
|
||||
@@ -373,4 +394,4 @@ namespace ObjectFactory
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
} // namespace ObjectFactory
|
||||
|
||||
Reference in New Issue
Block a user