Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.21 KB | None | 0 0
  1. //Get automatic characters
  2.             var automaticcharacters = new List<CharacterPositioner>();
  3.  
  4.             foreach (var character in row.Value)
  5.             {
  6.                 if (character.IsPositionedAutomatically())
  7.                 {
  8.                     automaticcharacters.Add(character);
  9.                 }
  10.             }
  11.  
  12.             automaticcharacters.Sort();
  13.  
  14.             switch (automaticcharacters.Count)
  15.             {
  16.                 case 0:
  17.                     break;
  18.                 case 1:
  19.                     automaticcharacters[0].MoveCharacter(null, 0, null);
  20.                     break;
  21.                 default:
  22.                     //Determine max
  23.                     var max = 1;
  24.  
  25.                     switch (automaticcharacters.Count)
  26.                     {
  27.                         default:
  28.                             max = 1;
  29.                             break;
  30.                     }
  31.  
  32.                     //Determine step
  33.                     int numberofsteps = automaticcharacters.Count;
  34.  
  35.                     if (numberofsteps % 2 == 1)
  36.                     {
  37.                         numberofsteps--;
  38.                     }
  39.  
  40.                     numberofsteps /= 2;
  41.  
  42.                     var step = max / numberofsteps;
  43.  
  44.                     if (automaticcharacters.Count % 2 == 1)
  45.                     {
  46.                         //Operate on the middle
  47.                         var middleindex = automaticcharacters.Count / 2;
  48.                         automaticcharacters[middleindex].MoveCharacter(null, 0, null);
  49.  
  50.                         //Operate on the left
  51.                         for (int i = middleindex-1; i > -1; i--)
  52.                         {
  53.                             var stepnumber = middleindex - i;
  54.                            
  55.                             automaticcharacters[i].MoveCharacter(null, -step * stepnumber, null);
  56.                         }
  57.  
  58.                         //Operate on the right
  59.                         for (int i = middleindex + 1; i < automaticcharacters.Count; i++)
  60.                         {
  61.                             var stepnumber = i - middleindex;
  62.  
  63.                             automaticcharacters[i].MoveCharacter(null, step * stepnumber, null);
  64.                         }
  65.                     }
  66.                     else
  67.                     {
  68.                         var leftindex = (automaticcharacters.Count / 2) - 1;
  69.                         var rightindex = leftindex + 1;
  70.                        
  71.                         //Operate on the left
  72.                         for (int i = leftindex; i > -1; i--)
  73.                         {
  74.                             var stepnumber = (leftindex + 1) - i;
  75.  
  76.                             automaticcharacters[i].MoveCharacter(null, -step * stepnumber, null);
  77.                         }
  78.  
  79.                         //Operate on the right
  80.                         for (int i = rightindex; i < automaticcharacters.Count; i++)
  81.                         {
  82.                             var stepnumber = i - (rightindex - 1);
  83.  
  84.                             automaticcharacters[i].MoveCharacter(null, step * stepnumber, null);
  85.                         }
  86.                     }
  87.  
  88.                     break;
  89.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement