コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 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);
 }