public static string GetBuildingVariant(int regionIndex, int locationIndex, string blockName, int recordIndex) { int locationKey = WorldDataReplacement.MakeLocationKey(regionIndex, locationIndex); VariantBuildingKey buildingKey = new VariantBuildingKey(locationKey, blockName, recordIndex); return(buildingVariants.ContainsKey(buildingKey) ? buildingVariants[buildingKey] : null); }
/// <summary> /// Sets a variant for a building. (block record) /// </summary> /// <param name="blockName">Block name</param> /// <param name="variant">Variant name</param> /// <param name="locationKey">Location key if the variant is only for a specific location</param> /// <returns>True if overwriting an existing variant set for this location</returns> public static bool SetBuildingVariant(string blockName, int recordIndex, string variant, int locationKey = AnyLocationKey) { VariantBuildingKey buildingKey = new VariantBuildingKey(locationKey, blockName, recordIndex); bool overwrite = !buildingVariants.ContainsKey(buildingKey); if (variant == NoVariant) { buildingVariants.Remove(buildingKey); } else { buildingVariants[buildingKey] = variant; } Debug.LogFormat("Set variant \"{0}\" for building {2} of {1} at locationKey {3}", variant, blockName, recordIndex, locationKey); return(overwrite); }
public static string GetBuildingVariant(ref BlockRecordKey blockRecordKey, string blockName) { if (blockRecordKey.variant == NoVariant) { VariantBuildingKey buildingKey = new VariantBuildingKey(lastLocationKey, blockName, blockRecordKey.recordIndex); if (buildingVariants.ContainsKey(buildingKey)) { string variant = buildingVariants[buildingKey]; blockRecordKey.variant = variant; return(variant); } else { buildingKey.locationKey = AnyLocationKey; if (buildingVariants.ContainsKey(buildingKey)) { string variant = buildingVariants[buildingKey]; blockRecordKey.variant = variant; return(variant); } } } return(NoVariant); }