mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-12-24 01:09:23 +01:00
added simple auto tiling
This commit is contained in:
parent
28e7584006
commit
dd3c3cfc30
2 changed files with 31 additions and 1 deletions
|
@ -10,7 +10,7 @@
|
|||
<PackageProjectUrl>https://github.com/Ellpeck/MLEM</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/Ellpeck/MLEM</RepositoryUrl>
|
||||
<PackageLicenseUrl>https://github.com/Ellpeck/MLEM/blob/master/LICENSE</PackageLicenseUrl>
|
||||
<Version>1.0.5</Version>
|
||||
<Version>1.0.6</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
30
MLEM/Misc/AutoTiling.cs
Normal file
30
MLEM/Misc/AutoTiling.cs
Normal file
|
@ -0,0 +1,30 @@
|
|||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
namespace MLEM.Misc {
|
||||
public class AutoTiling {
|
||||
|
||||
public static void DrawAutoTile(SpriteBatch batch, Vector2 pos, Texture2D texture, Rectangle textureRegion, ConnectsTo connectsTo, Color color) {
|
||||
var up = connectsTo(0, -1);
|
||||
var down = connectsTo(0, 1);
|
||||
var left = connectsTo(-1, 0);
|
||||
var right = connectsTo(1, 0);
|
||||
|
||||
var xUl = up && left ? connectsTo(-1, -1) ? 0 : 4 : left ? 1 : up ? 3 : 2;
|
||||
var xUr = up && right ? connectsTo(1, -1) ? 0 : 4 : right ? 1 : up ? 3 : 2;
|
||||
var xDl = down && left ? connectsTo(-1, 1) ? 0 : 4 : left ? 1 : down ? 3 : 2;
|
||||
var xDr = down && right ? connectsTo(1, 1) ? 0 : 4 : right ? 1 : down ? 3 : 2;
|
||||
|
||||
var (x, y) = pos;
|
||||
var (sizeX, sizeY) = textureRegion.Size;
|
||||
var (halfSizeX, halfSizeY) = new Point(sizeX / 2, sizeY / 2);
|
||||
batch.Draw(texture, new Vector2(x, y), new Rectangle(textureRegion.X + 0 + xUl * sizeX, textureRegion.Y + 0, sizeX, sizeY), color);
|
||||
batch.Draw(texture, new Vector2(x + 0.5F * sizeX, y), new Rectangle(textureRegion.X + halfSizeX + xUr * sizeX, textureRegion.Y + 0, sizeX, sizeY), color);
|
||||
batch.Draw(texture, new Vector2(x, y + 0.5F * sizeY), new Rectangle(textureRegion.X + xDl * sizeX, textureRegion.Y + halfSizeY, sizeX, sizeY), color);
|
||||
batch.Draw(texture, new Vector2(x + 0.5F * sizeX, y + 0.5F * sizeY), new Rectangle(textureRegion.X + halfSizeX + xDr * sizeX, textureRegion.Y + halfSizeY, sizeX, sizeY), color);
|
||||
}
|
||||
|
||||
public delegate bool ConnectsTo(int xOff, int yOff);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue