示例#1
0
 internal override async Task DetachEntityAsync(IDetachArgs e)
 {
     if (IsOpen)
     {
         await base.DetachEntityAsync(e);
     }
     else
     {
         e.Seal();
     }
 }
示例#2
0
        internal override Task DetachEntityAsync(IDetachArgs e)
        {
            if (!IsExtended && e.CurrentMove.Entity is PistonEntity)
            {
                e.Result = new PistonTile(TriggerPosition, Direction, true);
            }
            else
            {
                throw new InvalidOperationException("The piston has an invalid entity on it");
            }

            return Task.CompletedTask;
        }
示例#3
0
        internal override Task DetachEntityAsync(IDetachArgs e)
        {
            if (e.CurrentMove.Offset.IsDirection && !GetOutDirections().Contains(e.CurrentMove.Offset))
            {
                // The entity tries to leave the tile across a wall side of the corner
                e.Seal();
            }
            else
            {
                e.Result = WithoutEntity(this);
            }

            return Task.CompletedTask;
        }
示例#4
0
 internal override Task DetachEntityAsync(IDetachArgs e)
 {
     e.Seal();
     return Task.CompletedTask;
 }