@@ -78,27 +78,30 @@ private static void Unit_SetVisible(Unit __instance)
7878 [ HarmonyPatch ( typeof ( Resource ) , nameof ( Resource . SetVisible ) ) ]
7979 private static void Resource_SetVisible ( Resource __instance )
8080 {
81- Sprite ? sprite = GetSpriteForTerrainOrResource ( __instance . tile . data , EnumCache < ResourceData . Type > . GetName ( __instance . data . type ) . ToLower ( ) ) ;
82- if ( sprite != null )
83- {
84- __instance . Sprite = sprite ;
85- }
81+ __instance . Sprite = GetSpriteForTile ( __instance . Sprite , __instance . tile , EnumCache < Polytopia . Data . ResourceData . Type > . GetName ( __instance . tile . data . resource . type ) . ToLower ( ) ) ;
82+ }
83+
84+ [ HarmonyPostfix ]
85+ [ HarmonyPatch ( typeof ( Building ) , nameof ( Building . SetVisible ) ) ]
86+ private static void Building_SetVisible ( Building __instance , bool value )
87+ {
88+ __instance . Sprite = GetSpriteForTile ( __instance . Sprite , __instance . tile , EnumCache < Polytopia . Data . ImprovementData . Type > . GetName ( __instance . tile . improvement . data . type ) . ToLower ( ) , __instance . tile . improvement . Level ) ;
8689 }
8790
8891 [ HarmonyPostfix ]
8992 [ HarmonyPatch ( typeof ( TerrainRenderer ) , nameof ( TerrainRenderer . UpdateGraphics ) ) ]
9093 private static void TerrainRenderer_UpdateGraphics ( TerrainRenderer __instance , Tile tile )
9194 {
92- string ? terrainName = null ;
95+ string ? name ;
9396 if ( tile . data . terrain == Polytopia . Data . TerrainData . Type . Forest || tile . data . terrain == Polytopia . Data . TerrainData . Type . Mountain )
9497 {
95- terrainName = "field" ;
98+ name = "field" ;
9699 }
97- Sprite ? sprite = GetSpriteForTerrainOrResource ( tile . data , terrainName ) ;
98- if ( sprite != null )
100+ else
99101 {
100- __instance . spriteRenderer . Sprite = sprite ;
102+ name = EnumCache < Polytopia . Data . TerrainData . Type > . GetName ( tile . data . terrain ) . ToLower ( ) ;
101103 }
104+ __instance . spriteRenderer . Sprite = GetSpriteForTile ( __instance . spriteRenderer . Sprite , tile , name ) ;
102105 }
103106
104107 [ HarmonyPostfix ]
@@ -116,15 +119,12 @@ private static void PolytopiaSpriteRenderer_ForceUpdateMesh(PolytopiaSpriteRende
116119 {
117120 if ( __instance . sprite . name . Contains ( "Forest" ) || __instance . sprite . name . Contains ( "Mountain" ) || __instance . sprite . name . Contains ( "forest" ) || __instance . sprite . name . Contains ( "mountain" ) )
118121 {
119- Sprite ? sprite = GetSpriteForTerrainOrResource ( tile . data ) ;
120- if ( sprite != null )
121- {
122- __instance . Sprite = sprite ;
123- }
122+ __instance . Sprite = GetSpriteForTile ( __instance . Sprite , tile , EnumCache < Polytopia . Data . TerrainData . Type > . GetName ( tile . data . terrain ) . ToLower ( ) ) ;
124123 }
125124 }
126125 }
127126 }
127+
128128 if ( __instance . atlasName != null )
129129 {
130130 if ( string . IsNullOrEmpty ( __instance . atlasName ) )
@@ -232,31 +232,23 @@ private static void InteractionBar_AddImprovementButtons(InteractionBar __instan
232232 // }
233233 }
234234
235- public static Sprite ? GetSpriteForTerrainOrResource ( TileData tileData , string ? name = null )
235+ private static Sprite ? GetSpriteForTile ( Sprite ? sprite , Tile tile , string name , int level = 0 )
236236 {
237- string tribe ;
238- if ( name == null )
239- {
240- name = EnumCache < Polytopia . Data . TerrainData . Type > . GetName ( tileData . terrain ) . ToLower ( ) ;
241- }
242237 try
243238 {
244- if ( ModLoader . gldDictionaryInversed . ContainsKey ( ModLoader . climateToTribeData [ tileData . climate ] ) )
245- {
246- tribe = ModLoader . gldDictionaryInversed [ ModLoader . climateToTribeData [ tileData . climate ] ] ;
247- }
248- else
239+ string tribe = EnumCache < Polytopia . Data . TribeData . Type >
240+ . GetName ( GameManager . GameState . GameLogicData . GetTribeTypeFromStyle ( tile . data . climate ) )
241+ . ToLower ( ) ;
242+
243+ Sprite ? newSprite = ModLoader . GetSprite ( name , tribe , level ) ;
244+ if ( newSprite != null )
249245 {
250- tribe = ( ( TribeData . Type ) tileData . climate ) . ToString ( ) ;
246+ sprite = newSprite ;
251247 }
252- Sprite ? sprite = ModLoader . GetSprite (
253- name ,
254- tribe
255- ) ;
256- return sprite ;
257248 }
258- catch { }
259- return null ;
249+ catch
250+ { }
251+ return sprite ;
260252 }
261253
262254 public static Sprite BuildSprite ( byte [ ] data , Vector2 pivot )
0 commit comments