bugHunt: correcting code to compile

code does not compile yet
This commit is contained in:
Łukasz Pękalski 2020-11-09 12:07:38 +01:00
parent 832fd69822
commit dc93cacbee
9 changed files with 53 additions and 28 deletions

View File

@ -47,7 +47,7 @@ using namespace OpenRCT2;
namespace Editor
{
static std::array<std::vector<uint8_t>, ObjectType::Count> _editorSelectedObjectFlags;
static std::array<std::vector<uint8_t>, EnumValue(ObjectType::Count)> _editorSelectedObjectFlags;
static void ConvertSaveToScenarioCallback(int32_t result, const utf8* path);
static void SetAllLandOwned();
@ -530,10 +530,10 @@ namespace Editor
return true;
}
uint8_t GetSelectedObjectFlags(int32_t objectType, size_t index)
uint8_t GetSelectedObjectFlags(ObjectType objectType, size_t index)
{
uint8_t result = 0;
auto& list = _editorSelectedObjectFlags[objectType];
auto& list = _editorSelectedObjectFlags[EnumValue(objectType)];
if (list.size() > index)
{
result = list[index];
@ -543,7 +543,7 @@ namespace Editor
void ClearSelectedObject(ObjectType objectType, size_t index, uint32_t flags)
{
auto& list = _editorSelectedObjectFlags[objectType];
auto& list = _editorSelectedObjectFlags[EnumValue(objectType)];
if (list.size() <= index)
{
list.resize(index + 1);
@ -553,7 +553,7 @@ namespace Editor
void SetSelectedObject(ObjectType objectType, size_t index, uint32_t flags)
{
auto& list = _editorSelectedObjectFlags[objectType];
auto& list = _editorSelectedObjectFlags[EnumValue(objectType)];
if (list.size() <= index)
{
list.resize(index + 1);

View File

@ -27,7 +27,7 @@ namespace Editor
void OpenWindowsForCurrentStep();
uint8_t GetSelectedObjectFlags(int32_t objectType, size_t index);
uint8_t GetSelectedObjectFlags(ObjectType objectType, size_t index);
void ClearSelectedObject(ObjectType objectType, size_t index, uint32_t flags);
void SetSelectedObject(ObjectType objectType, size_t index, uint32_t flags);
} // namespace Editor

View File

@ -240,7 +240,7 @@ void sub_6AB211()
for (int32_t i = 0; i < numObjects; i++)
{
ObjectType objectType = items[i].ObjectEntry.GetType();
_numAvailableObjectsForType[objectType]++;
_numAvailableObjectsForType[EnumValue(objectType)]++;
}
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
@ -368,10 +368,10 @@ void reset_selected_object_count_and_size()
const ObjectRepositoryItem* items = object_repository_get_items();
for (int32_t i = 0; i < numObjects; i++)
{
uint8_t objectType = items[i].ObjectEntry.GetType();
ObjectType objectType = items[i].ObjectEntry.GetType();
if (_objectSelectionFlags[i] & OBJECT_SELECTION_FLAG_SELECTED)
{
_numSelectedObjectsForType[objectType]++;
_numSelectedObjectsForType[EnumValue(objectType)]++;
}
}
}
@ -484,7 +484,7 @@ bool window_editor_object_selection_select_object(uint8_t isMasterObject, int32_
maxObjects = 4;
}
if (maxObjects <= _numSelectedObjectsForType[objectType])
if (maxObjects <= _numSelectedObjectsForType[EnumValue(objectType)])
{
set_object_selection_error(isMasterObject, STR_OBJECT_SELECTION_ERR_TOO_MANY_OF_TYPE_SELECTED);
return false;
@ -511,7 +511,7 @@ bool window_editor_object_selection_select_object(uint8_t isMasterObject, int32_
return false;
}
if (maxObjects <= _numSelectedObjectsForType[objectType])
if (maxObjects <= _numSelectedObjectsForType[EnumValue(objectType)])
{
set_object_selection_error(isMasterObject, STR_OBJECT_SELECTION_ERR_TOO_MANY_OF_TYPE_SELECTED);
return false;
@ -577,7 +577,7 @@ int32_t editor_remove_unused_objects()
continue;
}
_numSelectedObjectsForType[objectType]--;
_numSelectedObjectsForType[EnumValue(objectType)]--;
_objectSelectionFlags[i] &= ~OBJECT_SELECTION_FLAG_SELECTED;
numUnselectedObjects++;
}

View File

@ -43,7 +43,7 @@ GameActions::Result::Ptr TrackDesignAction::Query() const
const rct_object_entry* rideEntryObject = &_td.vehicle_object;
uint8_t entryType;
ObjectType entryType;
ObjectEntryIndex entryIndex;
if (!find_object_in_entry_group(rideEntryObject, &entryType, &entryIndex))
{
@ -106,7 +106,7 @@ GameActions::Result::Ptr TrackDesignAction::Execute() const
const rct_object_entry* rideEntryObject = &_td.vehicle_object;
uint8_t entryType;
ObjectType entryType;
ObjectEntryIndex entryIndex;
if (!find_object_in_entry_group(rideEntryObject, &entryType, &entryIndex))
{

View File

@ -1129,7 +1129,7 @@ static int32_t cc_object_count(InteractiveConsole& console, [[maybe_unused]] con
int32_t entryGroupIndex = 0;
for (; entryGroupIndex < object_entry_group_counts[i]; entryGroupIndex++)
{
if (object_entry_get_chunk(i, entryGroupIndex) == nullptr)
if (object_entry_get_chunk(static_cast<ObjectType>(i), entryGroupIndex) == nullptr)
{
break;
}

View File

@ -437,7 +437,7 @@ namespace ObjectFactory
std::unique_ptr<Object> result;
auto objectType = ParseObjectType(Json::GetString(jRoot["objectType"]));
if (objectType != 0xFF)
if (objectType != ObjectType::None)
{
auto id = Json::GetString(jRoot["id"]);

View File

@ -68,7 +68,7 @@ public:
Object* GetLoadedObject(ObjectType objectType, size_t index) override
{
if (index >= static_cast<size_t>(object_entry_group_counts[objectType]))
if (index >= static_cast<size_t>(object_entry_group_counts[EnumValue(objectType)]))
{
#ifdef DEBUG
log_warning("Object index %u exceeds maximum for type %d.", index, objectType);
@ -110,7 +110,7 @@ public:
loadedObject = ori->LoadedObject;
if (loadedObject == nullptr)
{
uint8_t objectType = ori->ObjectEntry.GetType();
ObjectType objectType = ori->ObjectEntry.GetType();
int32_t slot = FindSpareSlot(objectType);
if (slot != -1)
{
@ -316,10 +316,10 @@ public:
}
private:
int32_t FindSpareSlot(uint8_t objectType)
int32_t FindSpareSlot(ObjectType objectType)
{
size_t firstIndex = GetIndexFromTypeEntry(objectType, 0);
size_t endIndex = firstIndex + object_entry_group_counts[objectType];
size_t endIndex = firstIndex + object_entry_group_counts[EnumValue(objectType)];
for (size_t i = firstIndex; i < endIndex; i++)
{
if (_loadedObjects.size() <= i)
@ -428,29 +428,54 @@ private:
switch (loadedObject->GetObjectType())
{
case ObjectType::SmallScenery:
{
sceneryEntry = static_cast<rct_scenery_entry*>(loadedObject->GetLegacyData());
sceneryEntry->small_scenery.scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject.get());
break;
}
case ObjectType::LargeScenery:
{
sceneryEntry = static_cast<rct_scenery_entry*>(loadedObject->GetLegacyData());
sceneryEntry->large_scenery.scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject.get());
break;
}
case ObjectType::Walls:
{
sceneryEntry = static_cast<rct_scenery_entry*>(loadedObject->GetLegacyData());
sceneryEntry->wall.scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject.get());
break;
}
case ObjectType::Banners:
{
sceneryEntry = static_cast<rct_scenery_entry*>(loadedObject->GetLegacyData());
sceneryEntry->banner.scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject.get());
break;
}
case ObjectType::PathBits:
{
sceneryEntry = static_cast<rct_scenery_entry*>(loadedObject->GetLegacyData());
sceneryEntry->path_bit.scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject.get());
break;
}
case ObjectType::SceneryGroup:
{
auto sgObject = dynamic_cast<SceneryGroupObject*>(loadedObject.get());
sgObject->UpdateEntryIndexes();
break;
}
case ObjectType::Ride:
case ObjectType::Paths:
case ObjectType::ParkEntrance:
case ObjectType::Water:
case ObjectType::ScenarioText:
case ObjectType::TerrainSurface:
case ObjectType::TerrainEdge:
case ObjectType::Station:
case ObjectType::Music:
case ObjectType::Count:
case ObjectType::None:
//This switch handles only ObjectType for sceneries.
break;
}
}
}
@ -721,10 +746,10 @@ private:
Console::Error::WriteLine("[%s] Object could not be loaded.", objName);
}
static int32_t GetIndexFromTypeEntry(int32_t objectType, size_t entryIndex)
static int32_t GetIndexFromTypeEntry(ObjectType objectType, size_t entryIndex)
{
int32_t result = 0;
for (int32_t i = 0; i < objectType; i++)
for (int32_t i = 0; i < EnumValue(objectType); i++)
{
result += object_entry_group_counts[i];
}

View File

@ -591,9 +591,9 @@ private:
}
// Encode data
uint8_t objectType = entry->GetType();
ObjectType objectType = entry->GetType();
sawyercoding_chunk_header chunkHeader;
chunkHeader.encoding = object_entry_group_encoding[objectType];
chunkHeader.encoding = object_entry_group_encoding[EnumValue(objectType)];
chunkHeader.length = static_cast<uint32_t>(dataSize);
uint8_t* encodedDataBuffer = Memory::Allocate<uint8_t>(0x600000);
size_t encodedDataSize = sawyercoding_write_chunk_buffer(

View File

@ -541,7 +541,7 @@ private:
EntryList* entries = GetEntryList(objectType);
// Check if there are spare entries available
size_t maxEntries = static_cast<size_t>(object_entry_group_counts[objectType]);
size_t maxEntries = static_cast<size_t>(object_entry_group_counts[EnumValue(objectType)]);
if (entries != nullptr && entries->GetCount() < maxEntries)
{
entries->GetOrAddEntry(objectName);
@ -1921,7 +1921,7 @@ private:
for (const char* objectName : entries)
{
rct_object_entry entry;
entry.flags = 0x00008000 + objectType;
entry.flags = 0x00008000 + EnumValue(objectType);
std::copy_n(objectName, 8, entry.name);
entry.checksum = 0;
@ -1947,7 +1947,7 @@ private:
for (const auto objectName : objectNames)
{
rct_object_entry entry{};
entry.flags = ((static_cast<uint8_t>(ObjectSourceGame::RCT2) << 4) & 0xF0) | (objectType & 0x0F);
entry.flags = ((static_cast<uint8_t>(ObjectSourceGame::RCT2) << 4) & 0xF0) | (EnumValue(objectType) & 0x0F);
entry.SetName(objectName);
entries.push_back(entry);
}
@ -1988,7 +1988,7 @@ private:
for (const char* objectName : entries)
{
rct_object_entry entry;
entry.flags = 0x00008000 + objectType;
entry.flags = 0x00008000 + EnumValue(objectType);
std::copy_n(objectName, DAT_NAME_LENGTH, entry.name);
entry.checksum = 0;