Пример #1
0
 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();
     }
 }
Пример #2
0
 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)))));
 }
Пример #3
0
 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;
 }
Пример #4
0
 public static bool DirectionsAreInLine(sTileDirection DirectionA, sTileDirection DirectionB)
 {
     return ((DirectionA.X == DirectionB.X) || (DirectionA.Y == DirectionB.Y));
 }
Пример #5
0
 public static bool IdenticalTileDirections(sTileDirection TileOrientationA, sTileDirection TileOrientationB)
 {
     return ((TileOrientationA.X == TileOrientationB.X) & (TileOrientationA.Y == TileOrientationB.Y));
 }