Skip to content

Commit

Permalink
fix: compile docs again
Browse files Browse the repository at this point in the history
  • Loading branch information
MSchmoecker committed Apr 10, 2024
1 parent 64f1dac commit 64c9b20
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 14 deletions.
41 changes: 29 additions & 12 deletions JotunnDoc/Docs/LocationDoc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,19 @@ private void DocLocations()
AddText("All of the locations currently in the game.");
AddText($"This file is automatically generated from Valheim {Version.GetVersionString(true)} using the JotunnDoc mod found on our GitHub.");

foreach (var location in ZoneSystem.instance.m_locations)
{
if (location.m_prefab.IsValid)
{
location.m_prefab.Load();
}
}

var imageDirectory = Path.Combine(DocumentationDirConfig.Value, "images/locations");
Directory.CreateDirectory(imageDirectory);

var enableGroups = ZoneSystem.instance.m_locations
.Where(zl => zl.m_prefab)
.Where(zl => zl.m_prefab.IsValid)
.GroupBy(zl => zl.m_enable && zl.m_quantity != 0)
.OrderByDescending(g => g.Key)
.ToList();
Expand All @@ -53,10 +61,13 @@ private void DocLocations()
AddTableHeader("Location", "Biome", "BiomeArea", "Quantity", "Exterior radius", "Properties", "Filters", "Interior");
foreach (var zoneLocation in group.OrderByDescending(zl => zl.m_prioritized).ThenBy(zl => zl.m_quantity))
{
GameObject exteriorPrefab = zoneLocation.m_prefab;
if (zoneLocation.m_location.m_hasInterior)
zoneLocation.m_prefab.Load();
GameObject exteriorPrefab = zoneLocation.m_prefab.Asset;
Location location = exteriorPrefab.GetComponent<Location>();

if (location && location.m_hasInterior)
{
var locationTransform = zoneLocation.m_location.transform;
var locationTransform = location.transform;
for (int i = 0; i < locationTransform.childCount; i++)
{
var childTransform = locationTransform.GetChild(i);
Expand All @@ -68,7 +79,7 @@ private void DocLocations()
}
}

bool hasSprite = RequestSprite(Path.Combine(imageDirectory, $"{zoneLocation.m_prefab.name}.png"), exteriorPrefab, RenderManager.IsometricRotation);
bool hasSprite = RequestSprite(Path.Combine(imageDirectory, $"{zoneLocation.m_prefab.Name}.png"), exteriorPrefab, RenderManager.IsometricRotation);

AddTableRow(
GetNameBox(zoneLocation, hasSprite),
Expand All @@ -88,10 +99,10 @@ private void DocLocations()

private static string GetNameBox(ZoneSystem.ZoneLocation zoneLocation, bool hasSprite)
{
StringBuilder sb = new StringBuilder(zoneLocation.m_prefab.name);
StringBuilder sb = new StringBuilder(zoneLocation.m_prefab.Name);
if (hasSprite)
{
sb.Append($"<br><img src=\"../../images/locations/{zoneLocation.m_prefab.name}.png\">");
sb.Append($"<br><img src=\"../../images/locations/{zoneLocation.m_prefab.Name}.png\">");
}
return sb.ToString();
}
Expand All @@ -111,33 +122,39 @@ private string GetFilters(ZoneSystem.ZoneLocation zoneLocation)

private string GetInterior(ZoneSystem.ZoneLocation zoneLocation)
{
if (!zoneLocation.m_location.m_hasInterior)
GameObject exteriorPrefab = zoneLocation.m_prefab.Asset;
Location location = exteriorPrefab.GetComponent<Location>();

if (!location || !location.m_hasInterior)
{
return "";
}
return $"<ul>" +
$"<li>Name: {zoneLocation.m_location.m_interiorPrefab.name}</li>" +
$"<li>Name: {location.m_interiorPrefab.name}</li>" +
$"<li>Radius: {zoneLocation.m_interiorRadius}</li>" +
$"<li>Environment: {zoneLocation.m_location.m_interiorEnvironment}</li>" +
$"<li>Environment: {location.m_interiorEnvironment}</li>" +
$"</ul>";
}

private string GetProperties(ZoneSystem.ZoneLocation zoneLocation)
{
GameObject exteriorPrefab = zoneLocation.m_prefab.Asset;
Location location = exteriorPrefab.GetComponent<Location>();

return $"<ul>" +
$"{(zoneLocation.m_prioritized ? "<li>Prioritized</li>" : "")}" +
$"{(zoneLocation.m_unique ? "<li>Unique</li>" : "")}" +
$"{(zoneLocation.m_snapToWater ? "<li>Snap to water</li>" : "")}" +
$"{(zoneLocation.m_centerFirst ? "<li>Place in center first</li>" : "")}" +
$"{(zoneLocation.m_location.m_clearArea ? "<li>Clear area</li>" : "")}" +
$"{(location && location.m_clearArea ? "<li>Clear area</li>" : "")}" +
GetSpawns(zoneLocation) +
$"</ul>";
}

private static string GetSpawns(ZoneSystem.ZoneLocation zoneLocation)
{
return string.Join("",
zoneLocation.m_prefab.GetComponentsInChildren<CreatureSpawner>()
zoneLocation.m_prefab.Asset.GetComponentsInChildren<CreatureSpawner>()
.Select(cs => cs.m_creaturePrefab.name)
.Distinct()
.OrderByDescending(cs => cs.ToString())
Expand Down
10 changes: 9 additions & 1 deletion JotunnDoc/Docs/MaterialDoc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,18 @@ private void DocMaterials(Player self)
AddText($"This file is automatically generated from Valheim {Version.GetVersionString(true)} using the JotunnDoc mod found on our GitHub.");
AddTableHeader("Material", "Prefabs", "Shader", "Keywords");

foreach (var location in ZoneSystem.instance.m_locations)
{
if (location.m_prefab.IsValid)
{
location.m_prefab.Load();
}
}

List<GameObject> allPrefabs = new List<GameObject>();
allPrefabs.AddRange(ZNetScene.instance.m_nonNetViewPrefabs);
allPrefabs.AddRange(ZNetScene.instance.m_prefabs);
allPrefabs.AddRange(ZoneSystem.instance.m_locations.Where(x => x.m_prefab).Select(x => x.m_prefab));
allPrefabs.AddRange(ZoneSystem.instance.m_locations.Where(x => x.m_prefab.IsValid).Select(x => x.m_prefab.Asset));

Dictionary<string, Material> mats = new Dictionary<string, Material>();
Dictionary<string, List<string>> matPrefabs = new Dictionary<string, List<string>>();
Expand Down
10 changes: 9 additions & 1 deletion JotunnDoc/Docs/PrefabDoc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,18 @@ private void DocPrefabs(Player self)
AddText($"This file is automatically generated from Valheim {Version.GetVersionString(true)} using the JotunnDoc mod found on our GitHub.");
AddTableHeader("Name", "Components");

foreach (var location in ZoneSystem.instance.m_locations)
{
if (location.m_prefab.IsValid)
{
location.m_prefab.Load();
}
}

List<GameObject> allPrefabs = new List<GameObject>();
allPrefabs.AddRange(ZNetScene.instance.m_nonNetViewPrefabs);
allPrefabs.AddRange(ZNetScene.instance.m_prefabs);
allPrefabs.AddRange(ZoneSystem.instance.m_locations.Where(x => x.m_prefab).Select(x => x.m_prefab));
allPrefabs.AddRange(ZoneSystem.instance.m_locations.Where(x => x.m_prefab.IsValid).Select(x => x.m_prefab.Asset));

foreach (GameObject obj in allPrefabs.Where(x => !CustomPrefab.IsCustomPrefab(x.name)).OrderBy(x => x.name))
{
Expand Down

0 comments on commit 64c9b20

Please sign in to comment.