Esempio n. 1
0
    public SoldierPathManager(SoldierController Soldier, ja2.TerrainTile[] Tiles)
    {
        ja2.TerrainTile previous = null;
        // Move distance
        ushort move_distance = 0;

        // Last direction
        ja2.Map.Direction last_direction = ja2.Map.Direction.NONE;
        // Create action controller
        soldierActions = new ja2.SoldierActionController(Soldier);
        // Actual vertex
        foreach (var tile in Tiles)
        {
            // Not first tile
            if (previous != null)
            {
                // Get actual direction
                ja2.Map.Direction dir = ja2.Map.GetDirection(previous, tile);
                // Direction change
                if (last_direction != dir)
                {
                    // Queue move first if needed
                    if (move_distance > 0)
                    {
                        var action = new ja2.SoldierActionMove(move_distance);
                        soldierActions.Add(action);
                        move_distance = 0;
                    }
                    // Set rotation
                    soldierActions.Add(new ja2.SoldierActionRotate(ja2.LookDirectionConverter.Convert(dir)));
                }
//				byte rot = (byte)ja2.LookDirectionConverter.Convert(dir);
                // Must be move
                ++move_distance;
                // Update last direction
                last_direction = dir;
            }
            // Update previous tile
            previous = tile;
        }
        // Queue move if was any
        if (move_distance != 0)
        {
            var action = new ja2.SoldierActionMove(move_distance);
            soldierActions.Add(action);
        }
    }
Esempio n. 2
0
 public SoldierPathManager(SoldierController Soldier, ja2.TerrainTile[] Tiles)
 {
     ja2.TerrainTile previous = null;
     // Move distance
     ushort move_distance = 0;
     // Last direction
     ja2.Map.Direction last_direction = ja2.Map.Direction.NONE;
     // Create action controller
     soldierActions = new ja2.SoldierActionController(Soldier);
     // Actual vertex
     foreach (var tile in Tiles)
     {
         // Not first tile
         if (previous != null)
         {
             // Get actual direction
             ja2.Map.Direction dir = ja2.Map.GetDirection(previous, tile);
             // Direction change
             if (last_direction != dir)
             {
                 // Queue move first if needed
                 if (move_distance > 0)
                 {
                     var action = new ja2.SoldierActionMove(move_distance);
                     soldierActions.Add(action);
                     move_distance = 0;
                 }
                 // Set rotation
                 soldierActions.Add(new ja2.SoldierActionRotate(ja2.LookDirectionConverter.Convert(dir)));
             }
     //				byte rot = (byte)ja2.LookDirectionConverter.Convert(dir);
             // Must be move
             ++move_distance;
             // Update last direction
             last_direction = dir;
         }
         // Update previous tile
         previous = tile;
     }
     // Queue move if was any
     if (move_distance != 0)
     {
         var action = new ja2.SoldierActionMove(move_distance);
         soldierActions.Add(action);
     }
 }