terraria-source-code/WorldBuilding/WorldGenRange.cs
2021-10-26 12:45:26 -04:00

61 lines
1.7 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.WorldBuilding.WorldGenRange
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Terraria.Utilities;
namespace Terraria.WorldBuilding
{
public class WorldGenRange
{
public static readonly WorldGenRange Empty = new WorldGenRange(0, 0);
[JsonProperty("Min")]
public readonly int Minimum;
[JsonProperty("Max")]
public readonly int Maximum;
[JsonProperty]
[JsonConverter(typeof (StringEnumConverter))]
public readonly WorldGenRange.ScalingMode ScaleWith;
public int ScaledMinimum => this.ScaleValue(this.Minimum);
public int ScaledMaximum => this.ScaleValue(this.Maximum);
public WorldGenRange(int minimum, int maximum)
{
this.Minimum = minimum;
this.Maximum = maximum;
}
public int GetRandom(UnifiedRandom random) => random.Next(this.ScaledMinimum, this.ScaledMaximum + 1);
private int ScaleValue(int value)
{
float num = 1f;
switch (this.ScaleWith)
{
case WorldGenRange.ScalingMode.None:
num = 1f;
break;
case WorldGenRange.ScalingMode.WorldArea:
num = (float) (Main.maxTilesX * Main.maxTilesY) / 5040000f;
break;
case WorldGenRange.ScalingMode.WorldWidth:
num = (float) Main.maxTilesX / 4200f;
break;
}
return (int) ((double) num * (double) value);
}
public enum ScalingMode
{
None,
WorldArea,
WorldWidth,
}
}
}