Skip to content

Commit 9d15af2

Browse files
committed
Added improvements and small refactor
1 parent 0de19ca commit 9d15af2

File tree

1 file changed

+26
-34
lines changed

1 file changed

+26
-34
lines changed

src/SpriteLoader.cs

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)