Terraria 1.4.0.5 Source Code
This commit is contained in:
commit
05205f009e
1059 changed files with 563450 additions and 0 deletions
469
WorldBuilding/Modifiers.cs
Normal file
469
WorldBuilding/Modifiers.cs
Normal file
|
@ -0,0 +1,469 @@
|
|||
// Decompiled with JetBrains decompiler
|
||||
// Type: Terraria.WorldBuilding.Modifiers
|
||||
// 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 Microsoft.Xna.Framework;
|
||||
using System;
|
||||
|
||||
namespace Terraria.WorldBuilding
|
||||
{
|
||||
public static class Modifiers
|
||||
{
|
||||
public class ShapeScale : GenAction
|
||||
{
|
||||
private int _scale;
|
||||
|
||||
public ShapeScale(int scale) => this._scale = scale;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
bool flag = false;
|
||||
for (int index1 = 0; index1 < this._scale; ++index1)
|
||||
{
|
||||
for (int index2 = 0; index2 < this._scale; ++index2)
|
||||
flag |= !this.UnitApply(origin, (x - origin.X << 1) + index1 + origin.X, (y - origin.Y << 1) + index2 + origin.Y);
|
||||
}
|
||||
return !flag;
|
||||
}
|
||||
}
|
||||
|
||||
public class Expand : GenAction
|
||||
{
|
||||
private int _xExpansion;
|
||||
private int _yExpansion;
|
||||
|
||||
public Expand(int expansion)
|
||||
{
|
||||
this._xExpansion = expansion;
|
||||
this._yExpansion = expansion;
|
||||
}
|
||||
|
||||
public Expand(int xExpansion, int yExpansion)
|
||||
{
|
||||
this._xExpansion = xExpansion;
|
||||
this._yExpansion = yExpansion;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
bool flag = false;
|
||||
for (int index1 = -this._xExpansion; index1 <= this._xExpansion; ++index1)
|
||||
{
|
||||
for (int index2 = -this._yExpansion; index2 <= this._yExpansion; ++index2)
|
||||
flag |= !this.UnitApply(origin, x + index1, y + index2, args);
|
||||
}
|
||||
return !flag;
|
||||
}
|
||||
}
|
||||
|
||||
public class RadialDither : GenAction
|
||||
{
|
||||
private float _innerRadius;
|
||||
private float _outerRadius;
|
||||
|
||||
public RadialDither(float innerRadius, float outerRadius)
|
||||
{
|
||||
this._innerRadius = innerRadius;
|
||||
this._outerRadius = outerRadius;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
Vector2 vector2 = new Vector2((float) origin.X, (float) origin.Y);
|
||||
float num = Math.Max(0.0f, Math.Min(1f, (float) (((double) Vector2.Distance(new Vector2((float) x, (float) y), vector2) - (double) this._innerRadius) / ((double) this._outerRadius - (double) this._innerRadius))));
|
||||
return GenBase._random.NextDouble() > (double) num ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class Blotches : GenAction
|
||||
{
|
||||
private int _minX;
|
||||
private int _minY;
|
||||
private int _maxX;
|
||||
private int _maxY;
|
||||
private double _chance;
|
||||
|
||||
public Blotches(int scale = 2, double chance = 0.3)
|
||||
{
|
||||
this._minX = scale;
|
||||
this._minY = scale;
|
||||
this._maxX = scale;
|
||||
this._maxY = scale;
|
||||
this._chance = chance;
|
||||
}
|
||||
|
||||
public Blotches(int xScale, int yScale, double chance = 0.3)
|
||||
{
|
||||
this._minX = xScale;
|
||||
this._maxX = xScale;
|
||||
this._minY = yScale;
|
||||
this._maxY = yScale;
|
||||
this._chance = chance;
|
||||
}
|
||||
|
||||
public Blotches(int leftScale, int upScale, int rightScale, int downScale, double chance = 0.3)
|
||||
{
|
||||
this._minX = leftScale;
|
||||
this._maxX = rightScale;
|
||||
this._minY = upScale;
|
||||
this._maxY = downScale;
|
||||
this._chance = chance;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
GenBase._random.NextDouble();
|
||||
if (GenBase._random.NextDouble() >= this._chance)
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
bool flag = false;
|
||||
int num1 = GenBase._random.Next(1 - this._minX, 1);
|
||||
int num2 = GenBase._random.Next(0, this._maxX);
|
||||
int num3 = GenBase._random.Next(1 - this._minY, 1);
|
||||
int num4 = GenBase._random.Next(0, this._maxY);
|
||||
for (int index1 = num1; index1 <= num2; ++index1)
|
||||
{
|
||||
for (int index2 = num3; index2 <= num4; ++index2)
|
||||
flag |= !this.UnitApply(origin, x + index1, y + index2, args);
|
||||
}
|
||||
return !flag;
|
||||
}
|
||||
}
|
||||
|
||||
public class InShape : GenAction
|
||||
{
|
||||
private readonly ShapeData _shapeData;
|
||||
|
||||
public InShape(ShapeData shapeData) => this._shapeData = shapeData;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => !this._shapeData.Contains(x - origin.X, y - origin.Y) ? this.Fail() : this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
|
||||
public class NotInShape : GenAction
|
||||
{
|
||||
private readonly ShapeData _shapeData;
|
||||
|
||||
public NotInShape(ShapeData shapeData) => this._shapeData = shapeData;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => this._shapeData.Contains(x - origin.X, y - origin.Y) ? this.Fail() : this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
|
||||
public class Conditions : GenAction
|
||||
{
|
||||
private readonly GenCondition[] _conditions;
|
||||
|
||||
public Conditions(params GenCondition[] conditions) => this._conditions = conditions;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
bool flag = true;
|
||||
for (int index = 0; index < this._conditions.Length; ++index)
|
||||
flag &= this._conditions[index].IsValid(x, y);
|
||||
return flag ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class OnlyWalls : GenAction
|
||||
{
|
||||
private ushort[] _types;
|
||||
|
||||
public OnlyWalls(params ushort[] types) => this._types = types;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
for (int index = 0; index < this._types.Length; ++index)
|
||||
{
|
||||
if ((int) GenBase._tiles[x, y].wall == (int) this._types[index])
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
return this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class OnlyTiles : GenAction
|
||||
{
|
||||
private ushort[] _types;
|
||||
|
||||
public OnlyTiles(params ushort[] types) => this._types = types;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
if (!GenBase._tiles[x, y].active())
|
||||
return this.Fail();
|
||||
for (int index = 0; index < this._types.Length; ++index)
|
||||
{
|
||||
if ((int) GenBase._tiles[x, y].type == (int) this._types[index])
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
return this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class IsTouching : GenAction
|
||||
{
|
||||
private static readonly int[] DIRECTIONS = new int[16]
|
||||
{
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
0,
|
||||
-1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
};
|
||||
private bool _useDiagonals;
|
||||
private ushort[] _tileIds;
|
||||
|
||||
public IsTouching(bool useDiagonals, params ushort[] tileIds)
|
||||
{
|
||||
this._useDiagonals = useDiagonals;
|
||||
this._tileIds = tileIds;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
int num = this._useDiagonals ? 16 : 8;
|
||||
for (int index1 = 0; index1 < num; index1 += 2)
|
||||
{
|
||||
Tile tile = GenBase._tiles[x + Modifiers.IsTouching.DIRECTIONS[index1], y + Modifiers.IsTouching.DIRECTIONS[index1 + 1]];
|
||||
if (tile.active())
|
||||
{
|
||||
for (int index2 = 0; index2 < this._tileIds.Length; ++index2)
|
||||
{
|
||||
if ((int) tile.type == (int) this._tileIds[index2])
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class NotTouching : GenAction
|
||||
{
|
||||
private static readonly int[] DIRECTIONS = new int[16]
|
||||
{
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
0,
|
||||
-1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
};
|
||||
private bool _useDiagonals;
|
||||
private ushort[] _tileIds;
|
||||
|
||||
public NotTouching(bool useDiagonals, params ushort[] tileIds)
|
||||
{
|
||||
this._useDiagonals = useDiagonals;
|
||||
this._tileIds = tileIds;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
int num = this._useDiagonals ? 16 : 8;
|
||||
for (int index1 = 0; index1 < num; index1 += 2)
|
||||
{
|
||||
Tile tile = GenBase._tiles[x + Modifiers.NotTouching.DIRECTIONS[index1], y + Modifiers.NotTouching.DIRECTIONS[index1 + 1]];
|
||||
if (tile.active())
|
||||
{
|
||||
for (int index2 = 0; index2 < this._tileIds.Length; ++index2)
|
||||
{
|
||||
if ((int) tile.type == (int) this._tileIds[index2])
|
||||
return this.Fail();
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
}
|
||||
|
||||
public class IsTouchingAir : GenAction
|
||||
{
|
||||
private static readonly int[] DIRECTIONS = new int[16]
|
||||
{
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
0,
|
||||
-1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
};
|
||||
private bool _useDiagonals;
|
||||
|
||||
public IsTouchingAir(bool useDiagonals = false) => this._useDiagonals = useDiagonals;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
int num = this._useDiagonals ? 16 : 8;
|
||||
for (int index = 0; index < num; index += 2)
|
||||
{
|
||||
if (!GenBase._tiles[x + Modifiers.IsTouchingAir.DIRECTIONS[index], y + Modifiers.IsTouchingAir.DIRECTIONS[index + 1]].active())
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
return this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class SkipTiles : GenAction
|
||||
{
|
||||
private ushort[] _types;
|
||||
|
||||
public SkipTiles(params ushort[] types) => this._types = types;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
if (!GenBase._tiles[x, y].active())
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
for (int index = 0; index < this._types.Length; ++index)
|
||||
{
|
||||
if ((int) GenBase._tiles[x, y].type == (int) this._types[index])
|
||||
return this.Fail();
|
||||
}
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
}
|
||||
|
||||
public class HasLiquid : GenAction
|
||||
{
|
||||
private int _liquidType;
|
||||
private int _liquidLevel;
|
||||
|
||||
public HasLiquid(int liquidLevel = -1, int liquidType = -1)
|
||||
{
|
||||
this._liquidType = liquidType;
|
||||
this._liquidLevel = liquidLevel;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
Tile tile = GenBase._tiles[x, y];
|
||||
return (this._liquidType == -1 || this._liquidType == (int) tile.liquidType()) && (this._liquidLevel == -1 && tile.liquid != (byte) 0 || this._liquidLevel == (int) tile.liquid) ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
}
|
||||
|
||||
public class SkipWalls : GenAction
|
||||
{
|
||||
private ushort[] _types;
|
||||
|
||||
public SkipWalls(params ushort[] types) => this._types = types;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
for (int index = 0; index < this._types.Length; ++index)
|
||||
{
|
||||
if ((int) GenBase._tiles[x, y].wall == (int) this._types[index])
|
||||
return this.Fail();
|
||||
}
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
}
|
||||
|
||||
public class IsEmpty : GenAction
|
||||
{
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => !GenBase._tiles[x, y].active() ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
|
||||
public class IsSolid : GenAction
|
||||
{
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => GenBase._tiles[x, y].active() && WorldGen.SolidOrSlopedTile(x, y) ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
|
||||
public class IsNotSolid : GenAction
|
||||
{
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => !GenBase._tiles[x, y].active() || !WorldGen.SolidOrSlopedTile(x, y) ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
|
||||
public class RectangleMask : GenAction
|
||||
{
|
||||
private int _xMin;
|
||||
private int _yMin;
|
||||
private int _xMax;
|
||||
private int _yMax;
|
||||
|
||||
public RectangleMask(int xMin, int xMax, int yMin, int yMax)
|
||||
{
|
||||
this._xMin = xMin;
|
||||
this._yMin = yMin;
|
||||
this._xMax = xMax;
|
||||
this._yMax = yMax;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => x >= this._xMin + origin.X && x <= this._xMax + origin.X && y >= this._yMin + origin.Y && y <= this._yMax + origin.Y ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
|
||||
public class Offset : GenAction
|
||||
{
|
||||
private int _xOffset;
|
||||
private int _yOffset;
|
||||
|
||||
public Offset(int x, int y)
|
||||
{
|
||||
this._xOffset = x;
|
||||
this._yOffset = y;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => this.UnitApply(origin, x + this._xOffset, y + this._yOffset, args);
|
||||
}
|
||||
|
||||
public class Dither : GenAction
|
||||
{
|
||||
private double _failureChance;
|
||||
|
||||
public Dither(double failureChance = 0.5) => this._failureChance = failureChance;
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args) => GenBase._random.NextDouble() >= this._failureChance ? this.UnitApply(origin, x, y, args) : this.Fail();
|
||||
}
|
||||
|
||||
public class Flip : GenAction
|
||||
{
|
||||
private bool _flipX;
|
||||
private bool _flipY;
|
||||
|
||||
public Flip(bool flipX, bool flipY)
|
||||
{
|
||||
this._flipX = flipX;
|
||||
this._flipY = flipY;
|
||||
}
|
||||
|
||||
public override bool Apply(Point origin, int x, int y, params object[] args)
|
||||
{
|
||||
if (this._flipX)
|
||||
x = origin.X * 2 - x;
|
||||
if (this._flipY)
|
||||
y = origin.Y * 2 - y;
|
||||
return this.UnitApply(origin, x, y, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue