FreeTrainの進化系を目指す
DirectionalTextureSetにCatalogVariableSizeの定義、他細かい修正
| @@ -18,7 +18,7 @@ | ||
| 18 | 18 | namespace nft.contributions.game { |
| 19 | 19 | public class CtbImageImportTerrainGenerator : CtbTerrainGenerator, ITerrainGenerator |
| 20 | 20 | { |
| 21 | - //public const string KEY_MAX_HEIGHT = "MaxHeoght"; | |
| 21 | + //public const string KEY_MAX_HEIGHT = "MaxHeight"; | |
| 22 | 22 | public const string KEY_SRCIMG_PATH = "SoruceImagePath"; |
| 23 | 23 | public const string KEY_HORZ_SCALING = "HorizontalScaling"; |
| 24 | 24 | public const string KEY_VERT_SCALING = "VerticalScaling"; |
| @@ -41,6 +41,7 @@ | ||
| 41 | 41 | /// </summary> |
| 42 | 42 | [Serializable] |
| 43 | 43 | public enum InterCardinalDirection : short { |
| 44 | + // 4の倍数で始まる連続した値であること(そういう前提の実装がある) | |
| 44 | 45 | NORTHEAST = 4, NORTHWEST, SOUTHWEST, SOUTHEAST, |
| 45 | 46 | //INVALID = byte.MaxValue |
| 46 | 47 | } |
| @@ -53,13 +53,16 @@ | ||
| 53 | 53 | /// <returns></returns> |
| 54 | 54 | public abstract ConditionedTextureSrc this[int rotation] { get; } |
| 55 | 55 | |
| 56 | + public virtual int CatalogVariableSize { get; } | |
| 57 | + | |
| 56 | 58 | protected abstract ConditionedTextureSrc[] ArrayForCatalogVariable { get; } |
| 57 | 59 | |
| 58 | 60 | public virtual IEnumerable<KeyValuePair<string, ICatalogVariable>> CatalogVariables { |
| 59 | 61 | get { |
| 60 | 62 | ConditionedTextureSrc[] array = ArrayForCatalogVariable; |
| 61 | - if (array != null && array.Length > 1) { | |
| 62 | - ICatalogVariable var = new IndexVariable(array.Length, true); | |
| 63 | + if (array != null && CatalogVariableSize > 1) { | |
| 64 | + ICatalogVariable var = new IndexVariable(CatalogVariableSize, true); | |
| 65 | + // デフォルトでは、回転パターンの方角をカタログ変数として返す | |
| 63 | 66 | yield return new KeyValuePair<string, ICatalogVariable>(CatalogVarNameConstants.Direction, var); |
| 64 | 67 | } else { |
| 65 | 68 | yield break; |
| @@ -91,6 +94,8 @@ | ||
| 91 | 94 | } |
| 92 | 95 | } |
| 93 | 96 | |
| 97 | + public override int CatalogVariableSize { get { return 4; } } | |
| 98 | + | |
| 94 | 99 | protected override ConditionedTextureSrc[] ArrayForCatalogVariable { |
| 95 | 100 | get { return textures; } |
| 96 | 101 | } |
| @@ -112,6 +117,7 @@ | ||
| 112 | 117 | return textures[rotation & 1]; |
| 113 | 118 | } |
| 114 | 119 | } |
| 120 | + public override int CatalogVariableSize { get { return 2; } } | |
| 115 | 121 | protected override ConditionedTextureSrc[] ArrayForCatalogVariable { |
| 116 | 122 | get { return textures; } |
| 117 | 123 | } |
| @@ -136,6 +142,7 @@ | ||
| 136 | 142 | yield break; |
| 137 | 143 | } |
| 138 | 144 | } |
| 145 | + public override int CatalogVariableSize { get { return 0; } } | |
| 139 | 146 | protected override ConditionedTextureSrc[] ArrayForCatalogVariable { |
| 140 | 147 | // このクラスは CatalogVariablesを返さないので、このメソッドも呼ばれないはず。 |
| 141 | 148 | get { throw new NotSupportedException(); } |