DreamDancer

A Better Dream Copy & Paste

Apr 26th, 2012
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     Distance = VAL(rWork)
  2.     DestIndex = ThisIndex
  3.     SELECT CASE Direction
  4.  
  5.         CASE 1 ' north          / Y=Y-2
  6.            MoveToX = DestIndex / MapY
  7.             MoveToY = DestIndex MOD MapY
  8.             MoveToY = MoveToY - (Distance * 2)
  9.             DestIndex = ThisIndex - (Distance * 2)
  10.  
  11.         CASE 2 ' north east - if Y is even, bump to next column
  12.            OffSet = Distance MOD 2
  13.             Distance = Distance - OffSet
  14.             MoveToX = ((MoveFromX * 2) + Distance)
  15.             MoveToY = MoveFromY - Distance
  16.             DestIndex = ((MoveToX * MapY) / 2) + MoveToY
  17.             IF (OffSet > 0) THEN
  18.                 IF (INT(DestIndex / 2) = (DestIndex / 2)) THEN
  19.                     DestIndex = DestIndex + MapY - 1
  20.                 ELSE
  21.                     DestIndex = DestIndex - 1
  22.                 END IF
  23.             END IF
  24.  
  25.         CASE 3 ' east           / X=X+1
  26.            MoveToX = DestIndex / MapY
  27.             MoveToY = DestIndex MOD MapY
  28.             MoveToX = MoveToX + Distance
  29.             DestIndex = ThisIndex + (MapY * Distance)
  30.  
  31.         CASE 4 ' south east
  32.            OffSet = Distance MOD 2
  33.             Distance = Distance - OffSet
  34.             MoveToX = ((MoveFromX * 2) + Distance)
  35.             MoveToY = MoveFromY + Distance
  36.             DestIndex = ((MoveToX * MapY) / 2) + MoveToY
  37.             IF (OffSet > 0) THEN
  38.                 IF (INT(DestIndex / 2) = (DestIndex / 2)) THEN
  39.                     DestIndex = DestIndex + MapY + 1
  40.                 ELSE
  41.                     DestIndex = DestIndex + 1
  42.                 END IF
  43.             END IF
  44.  
  45.         CASE 5 ' south          / Y=Y+2
  46.            MoveToX = DestIndex / MapY
  47.             MoveToY = DestIndex MOD MapY
  48.             MoveToY = MoveToY + (Distance * 2)
  49.             DestIndex = ThisIndex + (Distance * 2)
  50.  
  51.         CASE 6 ' south west
  52.            OffSet = Distance MOD 2
  53.             Distance = Distance - OffSet
  54.             MoveToX = ((MoveFromX * 2) - Distance)
  55.             MoveToY = MoveFromY + Distance
  56.             DestIndex = ((MoveToX * MapY) / 2) + MoveToY
  57.             IF (OffSet > 0) THEN
  58.                 IF (INT(DestIndex / 2) = (DestIndex / 2)) THEN
  59.                     DestIndex = DestIndex + 1
  60.                 ELSE
  61.                     DestIndex = DestIndex - MapY + 1
  62.                 END IF
  63.             END IF
  64.  
  65.         CASE 7 ' west           / X=X-1
  66.            MoveToX = DestIndex / MapY
  67.             MoveToY = DestIndex MOD MapY
  68.             MoveToX = MoveToX - Distance
  69.             DestIndex = ThisIndex - (MapY * Distance)
  70.  
  71.         CASE 8 ' north west
  72.            OffSet = Distance MOD 2
  73.             Distance = Distance - OffSet
  74.             MoveToX = ((MoveFromX * 2) - Distance)
  75.             MoveToY = MoveFromY - Distance
  76.             DestIndex = ((MoveToX * MapY) / 2) + MoveToY
  77.             IF (OffSet > 0) THEN
  78.                 IF (INT(DestIndex / 2) = (DestIndex / 2)) THEN
  79.                     DestIndex = DestIndex - 1
  80.                 ELSE
  81.                     DestIndex = DestIndex - MapY - 1
  82.                 END IF
  83.             END IF
  84.  
  85.     END SELECT
Advertisement
Add Comment
Please, Sign In to add comment