public ConvoyDeploymentConfiguration(
     UnitGroup UnitGroup,
     bool IsStrictConvoy,
     Matcher <Tile> Matcher,
     ConvoyMovementAutomator MovementAutomator,
     byte EntryTurn)
 {
     this.UnitGroup         = UnitGroup;
     this.IsStrictConvoy    = IsStrictConvoy;
     this.Matcher           = Matcher;
     this.MovementAutomator = MovementAutomator;
     this.EntryTurn         = EntryTurn;
 }
        public ConvoyDeploymentConfiguration(ParseBlock Block)
        {
            var attributes = Block.BreakToAttributes <object>(typeof(Attribute));

            UnitGroup         = (UnitGroup)attributes[(int)Attribute.UNIT_GROUP];
            IsStrictConvoy    = (bool)(attributes[(int)Attribute.IS_STRICT_CONVOY] ?? false);
            MovementAutomator = (ConvoyMovementAutomator)attributes[(int)Attribute.MOVEMENT_AUTOMATOR];
            EntryTurn         = (byte)(attributes[(int)Attribute.ENTRY_TURN] ?? (byte)0);

            var m    = (Matcher <Tile>)attributes[(int)Attribute.MATCHER];
            var edge = new TileOnEdge(Direction.ANY);

            if (m == null)
            {
                Matcher = edge;
            }
            else
            {
                Matcher = new CompositeMatcher <Tile>(new Matcher <Tile>[] { edge, m }, Aggregators.AND);
            }
        }