fix fences type mapping

This commit is contained in:
Ted John 2016-04-17 22:37:20 +01:00
parent b93429052c
commit c6615b942e
2 changed files with 21 additions and 12 deletions

View File

@ -231,9 +231,24 @@ void S4Importer::AddAvailableEntriesFromMap()
AddEntryForLargeScenery(mapElement->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK);
break;
case MAP_ELEMENT_TYPE_FENCE:
AddEntryForWall(mapElement->properties.fence.type);
{
uint8 var_05 = mapElement->properties.fence.item[0];
uint16 var_06 = mapElement->properties.fence.item[1] |
(mapElement->properties.fence.item[2] << 8);
for (int edge = 0; edge < 4; edge++)
{
int typeA = (var_05 >> (edge * 2)) & 3;
int typeB = (var_06 >> (edge * 4)) & 0x0F;
if (typeB != 0x0F)
{
uint8 type = typeA | (typeB << 2);
AddEntryForWall(type);
}
}
break;
}
}
if (map_element_is_last_for_tile(mapElement++))
{
@ -1117,6 +1132,8 @@ void S4Importer::FixWalls()
int colourB = 0;
int colourC = 0;
ConvertWall(&type, &colourA, &colourB, &colourC);
type = _wallTypeToEntryMap[type];
map_place_fence(type, x * 32, y * 32, 0, edge, colourA, colourB, colourC, 169);
}
}
@ -1266,14 +1283,6 @@ void S4Importer::FixMapElementEntryTypes()
mapElement->properties.scenerymultiple.type |= _largeSceneryTypeToEntryMap[type];
break;
}
case MAP_ELEMENT_TYPE_FENCE:
mapElement->properties.fence.type = _wallTypeToEntryMap[mapElement->properties.fence.type];
if (mapElement->properties.fence.type == 255)
{
// map_element_remove(mapElement);
// map_element_iterator_restart_for_tile(&it);
}
break;
}
}
}

View File

@ -33,9 +33,9 @@ private:
// Lookup tables for converting from RCT1 hard coded types to the new dynamic object entries
uint8 _rideTypeToRideEntryMap[96];
uint8 _vehicleTypeToRideEntryMap[96];
uint8 _smallSceneryTypeToEntryMap[96];
uint8 _largeSceneryTypeToEntryMap[96];
uint8 _wallTypeToEntryMap[96];
uint8 _smallSceneryTypeToEntryMap[256];
uint8 _largeSceneryTypeToEntryMap[256];
uint8 _wallTypeToEntryMap[256];
uint8 _sceneryThemeTypeToEntryMap[24];
// Research