public static void RotateDirection(sTileDirection InitialDirection, sTileOrientation Orientation, ref sTileDirection ResultDirection) { ResultDirection = InitialDirection; if (Orientation.SwitchedAxes) { ResultDirection.SwitchAxes(); } if (Orientation.ResultXFlip) { ResultDirection.FlipX(); } if (Orientation.ResultYFlip) { ResultDirection.FlipY(); } }
public static bool DirectionsOnSameSide(sTileDirection DirectionA, sTileDirection DirectionB) { return (((DirectionA.X == 0) && (DirectionB.X == 0)) || (((DirectionA.X == 2) && (DirectionB.X == 2)) || (((DirectionA.Y == 0) && (DirectionB.Y == 0)) || ((DirectionA.Y == 2) && (DirectionB.Y == 2))))); }
public static clsMap.clsTerrain.Tile.sTexture OrientateTile(ref clsPainter.clsTileList.sTileOrientationChance TileChance, sTileDirection NewDirection) { clsMap.clsTerrain.Tile.sTexture texture2; if (TileChance.TextureNum < 0) { texture2.Orientation.ResultXFlip = VBMath.Rnd() >= 0.5f; texture2.Orientation.ResultYFlip = VBMath.Rnd() >= 0.5f; texture2.Orientation.SwitchedAxes = VBMath.Rnd() >= 0.5f; texture2.TextureNum = -1; return texture2; } if ((((TileChance.Direction.X > 2) | (TileChance.Direction.Y > 2)) | (NewDirection.X > 2)) | (NewDirection.Y > 2)) { Debugger.Break(); return texture2; } if (((NewDirection.X == 1) ^ (NewDirection.Y == 1)) ^ ((TileChance.Direction.X == 1) ^ (TileChance.Direction.Y == 1))) { Debugger.Break(); return texture2; } texture2.TextureNum = TileChance.TextureNum; if (((NewDirection.X == 1) & (NewDirection.Y == 1)) | ((TileChance.Direction.X == 1) & (TileChance.Direction.Y == 1))) { texture2.Orientation.SwitchedAxes = VBMath.Rnd() >= 0.5f; texture2.Orientation.ResultXFlip = VBMath.Rnd() >= 0.5f; texture2.Orientation.ResultYFlip = VBMath.Rnd() >= 0.5f; return texture2; } if ((NewDirection.X != 1) & (NewDirection.Y != 1)) { texture2.Orientation.SwitchedAxes = false; if ((TileChance.Direction.X == 0) ^ (NewDirection.X == 0)) { texture2.Orientation.ResultXFlip = true; } else { texture2.Orientation.ResultXFlip = false; } if ((TileChance.Direction.Y == 0) ^ (NewDirection.Y == 0)) { texture2.Orientation.ResultYFlip = true; } else { texture2.Orientation.ResultYFlip = false; } if (VBMath.Rnd() >= 0.5f) { texture2.Orientation.SwitchedAxes = !texture2.Orientation.SwitchedAxes; if (((NewDirection.X == 0) ^ (NewDirection.Y == 0)) ^ (texture2.Orientation.ResultXFlip ^ texture2.Orientation.ResultYFlip)) { texture2.Orientation.ResultXFlip = !texture2.Orientation.ResultXFlip; texture2.Orientation.ResultYFlip = !texture2.Orientation.ResultYFlip; } } return texture2; } texture2.Orientation.SwitchedAxes = (TileChance.Direction.X == 1) ^ (NewDirection.X == 1); if (texture2.Orientation.SwitchedAxes) { if (TileChance.Direction.Y != NewDirection.X) { texture2.Orientation.ResultXFlip = true; } else { texture2.Orientation.ResultXFlip = false; } if (TileChance.Direction.X != NewDirection.Y) { texture2.Orientation.ResultYFlip = true; } else { texture2.Orientation.ResultYFlip = false; } } else { if (TileChance.Direction.X != NewDirection.X) { texture2.Orientation.ResultXFlip = true; } else { texture2.Orientation.ResultXFlip = false; } if (TileChance.Direction.Y != NewDirection.Y) { texture2.Orientation.ResultYFlip = true; } else { texture2.Orientation.ResultYFlip = false; } } if (VBMath.Rnd() >= 0.5f) { if (NewDirection.X == 1) { texture2.Orientation.ResultXFlip = !texture2.Orientation.ResultXFlip; return texture2; } texture2.Orientation.ResultYFlip = !texture2.Orientation.ResultYFlip; } return texture2; }
public static bool DirectionsAreInLine(sTileDirection DirectionA, sTileDirection DirectionB) { return ((DirectionA.X == DirectionB.X) || (DirectionA.Y == DirectionB.Y)); }
public static bool IdenticalTileDirections(sTileDirection TileOrientationA, sTileDirection TileOrientationB) { return ((TileOrientationA.X == TileOrientationB.X) & (TileOrientationA.Y == TileOrientationB.Y)); }