extract code to new method

This commit is contained in:
Ted John 2016-04-19 18:42:18 +01:00
parent fb192bba0e
commit 6086771988
2 changed files with 43 additions and 39 deletions

View File

@ -136,45 +136,7 @@ void S4Importer::CreateAvailableObjectMappings()
AddAvailableEntriesFromResearchList();
AddAvailableEntriesFromMap();
AddAvailableEntriesFromRides();
// Add themes
for (int sceneryTheme = 0; sceneryTheme <= RCT1_SCENERY_THEME_PAGODA; sceneryTheme++)
{
if (sceneryTheme != 0 &&
_sceneryThemeTypeToEntryMap[sceneryTheme] == 255) continue;
List<const char *> objects = RCT1::GetSceneryObjects(sceneryTheme);
for (const char * objectName : objects)
{
rct_object_entry * foundEntry = object_list_find_by_name(objectName);
if (foundEntry != nullptr)
{
uint8 objectType = foundEntry->flags & 0x0F;
switch (objectType) {
case OBJECT_TYPE_SMALL_SCENERY:
case OBJECT_TYPE_LARGE_SCENERY:
case OBJECT_TYPE_WALLS:
case OBJECT_TYPE_PATHS:
case OBJECT_TYPE_PATH_BITS:
{
List<const char *> * entries = GetEntryList(objectType);
// Ran out of available entries
if (entries->GetCount() >= (size_t)object_entry_group_counts[objectType])
{
break;
}
if (!entries->Contains(objectName, ObjectNameComparer))
{
entries->Add(objectName);
}
break;
}
}
}
}
}
AddAvailableEntriesFromSceneryGroups();
}
void S4Importer::AddAvailableEntriesFromResearchList()
@ -300,6 +262,47 @@ void S4Importer::AddAvailableEntriesFromRides()
}
}
void S4Importer::AddAvailableEntriesFromSceneryGroups()
{
for (int sceneryTheme = 0; sceneryTheme <= RCT1_SCENERY_THEME_PAGODA; sceneryTheme++)
{
if (sceneryTheme != 0 &&
_sceneryThemeTypeToEntryMap[sceneryTheme] == 255) continue;
List<const char *> objects = RCT1::GetSceneryObjects(sceneryTheme);
for (const char * objectName : objects)
{
rct_object_entry * foundEntry = object_list_find_by_name(objectName);
if (foundEntry != nullptr)
{
uint8 objectType = foundEntry->flags & 0x0F;
switch (objectType) {
case OBJECT_TYPE_SMALL_SCENERY:
case OBJECT_TYPE_LARGE_SCENERY:
case OBJECT_TYPE_WALLS:
case OBJECT_TYPE_PATHS:
case OBJECT_TYPE_PATH_BITS:
{
List<const char *> * entries = GetEntryList(objectType);
// Ran out of available entries
if (entries->GetCount() >= (size_t)object_entry_group_counts[objectType])
{
break;
}
if (!entries->Contains(objectName, ObjectNameComparer))
{
entries->Add(objectName);
}
break;
}
}
}
}
}
}
void S4Importer::AddEntryForRideType(uint8 rideType)
{
if (_rideTypeToRideEntryMap[rideType] == 255)

View File

@ -56,6 +56,7 @@ private:
void AddAvailableEntriesFromResearchList();
void AddAvailableEntriesFromMap();
void AddAvailableEntriesFromRides();
void AddAvailableEntriesFromSceneryGroups();
void AddEntryForRideType(uint8 rideType);
void AddEntryForVehicleType(uint8 rideType, uint8 vehicleType);