Upload from upload_mods.ps1

This commit is contained in:
Nathaniel Cosford
2025-06-04 16:44:53 +09:30
commit f1fbbe67bb
1722 changed files with 165268 additions and 0 deletions

View File

@@ -0,0 +1,118 @@
using System.Collections.Generic;
using System.Xml.Linq;
namespace Harmony.WorldBiomesPatches
{
[HarmonyPatch(typeof(WorldBiomes))]
[HarmonyPatch("readXML")]
public class readXMLPatch
{
public static bool Prefix(WorldBiomes __instance, XDocument _xml, bool _instantiateReferences)
{
Array.Clear((Array)__instance.m_Id2BiomeArr, 0, __instance.m_Id2BiomeArr.Length);
__instance.m_Color2BiomeMap.Clear();
__instance.m_Name2BiomeMap.Clear();
if (BiomeDefinition.nameToId == null)
BiomeDefinition.nameToId = new Dictionary<string, byte>();
foreach (XElement descendant in _xml.Descendants((XName)"biomemap"))
{
string attribute = descendant.GetAttribute((XName)"name");
if (!BiomeDefinition.nameToId.ContainsKey(attribute))
BiomeDefinition.nameToId.Add(attribute, byte.Parse(descendant.GetAttribute((XName)"id")));
}
foreach (XElement descendant in _xml.Descendants((XName)"biome"))
{
string attribute = descendant.GetAttribute((XName)"name");
if (!BiomeDefinition.nameToId.ContainsKey(attribute))
throw new Exception("Parsing biomes. Biome with name '" + attribute + "' also needs an entry in the biomemap");
BiomeDefinition biome = __instance.parseBiome(BiomeDefinition.nameToId[attribute], (byte)0, attribute, descendant, _instantiateReferences);
__instance.m_Id2BiomeArr[(int)biome.m_Id] = biome;
__instance.m_Color2BiomeMap.Add(biome.m_uiColor, biome);
__instance.m_Name2BiomeMap.Add(biome.m_sBiomeName, biome);
}
BiomeParticleManager.RegistrationCompleted = true;
foreach (XContainer descendant1 in _xml.Descendants((XName)"pois"))
{
foreach (XElement descendant2 in descendant1.Descendants((XName)"poi"))
{
uint uint32 = Convert.ToUInt32(descendant2.GetAttribute((XName)"poimapcolor").Substring(1), 16);
int _iSO = 0;
int num = 0;
int _iST = 0;
if (descendant2.HasAttribute((XName)"surfaceoffset"))
_iSO = Convert.ToInt32(descendant2.GetAttribute((XName)"surfaceoffset"));
if (descendant2.HasAttribute((XName)"smoothness"))
{
int int32 = Convert.ToInt32(descendant2.GetAttribute((XName)"smoothness"));
num = int32 < 0 ? 0 : int32;
}
if (descendant2.HasAttribute((XName)"starttunnel"))
{
int int32 = Convert.ToInt32(descendant2.GetAttribute((XName)"starttunnel"));
_iST = int32 < 0 ? 0 : int32;
}
BlockValue _blockValue1 = BlockValue.Air;
if (descendant2.HasAttribute((XName)"blockname"))
_blockValue1 = _instantiateReferences ? __instance.getBlockValueForName(descendant2.GetAttribute((XName)"blockname")) : BlockValue.Air;
BlockValue _blockBelow = BlockValue.Air;
if (descendant2.HasAttribute((XName)"blockbelow"))
_blockBelow = _instantiateReferences ? __instance.getBlockValueForName(descendant2.GetAttribute((XName)"blockbelow")) : BlockValue.Air;
int _ypos = -1;
if (descendant2.HasAttribute((XName)"ypos"))
_ypos = int.Parse(descendant2.GetAttribute((XName)"ypos"));
int _yposFill = -1;
if (descendant2.HasAttribute((XName)"yposfill"))
_yposFill = int.Parse(descendant2.GetAttribute((XName)"yposfill"));
PoiMapElement poiMapElement = new PoiMapElement(uint32, descendant2.GetAttribute((XName)"prefab"), _blockValue1, _blockBelow, _iSO, _ypos, _yposFill, _iST);
__instance.m_PoiMap.Add(uint32, poiMapElement);
foreach (XElement element in descendant2.Elements())
{
if (element.Name == (XName)"decal")
{
int int32_1 = Convert.ToInt32(element.GetAttribute((XName)"texture"));
BlockFace int32_2 = (BlockFace)Convert.ToInt32(element.GetAttribute((XName)"face"));
float _prob = StringParsers.ParseFloat(element.GetAttribute((XName)"prob"));
poiMapElement.decals.Add(new PoiMapDecal(int32_1, int32_2, _prob));
}
if (element.Name == (XName)"blockontop")
{
BlockValue _blockValue2 = _instantiateReferences ? __instance.getBlockValueForName(element.GetAttribute((XName)"blockname")) : BlockValue.Air;
float _prob = StringParsers.ParseFloat(element.GetAttribute((XName)"prob"));
if (element.GetAttribute((XName)"blockname") == "carsRandomHelperBiome")
{
string name = descendant2.GetAttribute((XName)"name");
float multiplier = 1;
if (name == "City Asphalt")
{
multiplier = 2.67f;
}
else if (name == "Country Road Asphalt")
{
multiplier = 1.335f;
}
else if (name == "Road Gravel")
{
multiplier = 1f;
}
//Log.Out("WorldBiomesPatches-readXML name: " + name);
//Log.Out("WorldBiomesPatches-readXML BEFORE _prob: " + _prob);
//Log.Out("WorldBiomesPatches-readXML multiplier: " + multiplier);
_prob = _prob * multiplier * (float.Parse(RebirthVariables.customVehicleDensityMultiplier) / 100);
//Log.Out("WorldBiomesPatches-readXML AFTER _prob: " + _prob);
}
int _offset = element.HasAttribute((XName)"offset") ? int.Parse(element.GetAttribute((XName)"offset")) : 0;
poiMapElement.blocksOnTop.Add(new PoiMapBlock(_blockValue2, _prob, _offset));
}
}
}
}
return false;
}
}
}