private void BeginMoveAnimation(MoveDirect moveDirect) { switch (moveDirect) { case MoveDirect.MoveDirect_Down: if (_isMaskDown) { return; } _animator.Play("ChoiceMask_Down"); _isMaskDown = true; break; case MoveDirect.MoveDirect_Up: if (!_isMaskDown) { return; } _animator.Play("ChoiceMask_Up"); _isMaskDown = false; break; default: break; } }
//------------------------------------------------------------------------------------- private void Move(MoveDirect dir, int gridx, int gridy, int offsetValue) { switch (dir) { case MoveDirect.Left: { _gridfield.GetHorizontalLine(gridy, out BaseTile[] tiles); if (!CheckMove(tiles, dir)) { _isMoving = false; return; } MoveHorizontal_Animation(tiles, -offsetValue); } break; case MoveDirect.Right: { _gridfield.GetHorizontalLine(gridy, out BaseTile[] tiles); if (!CheckMove(tiles, dir)) { _isMoving = false; return; } MoveHorizontal_Animation(tiles, -offsetValue); } break; case MoveDirect.Up: { _gridfield.GetVerticalLine(gridx, out BaseTile[] tiles); if (!CheckMove(tiles, dir)) { _isMoving = false; return; } MoveVertical_Animation(tiles, -offsetValue); } break; case MoveDirect.Down: { _gridfield.GetVerticalLine(gridx, out BaseTile[] tiles); if (!CheckMove(tiles, dir)) { _isMoving = false; return; } MoveVertical_Animation(tiles, -offsetValue); } break; } }
public override void Excute() { var objs = _cacheobjs; base.Excute(); _isMoving = true; MoveDirect dir = (MoveDirect)objs[0]; int gridx = (int)objs[1]; int gridy = (int)objs[2]; int offsetValue = (int)objs[3]; Move(dir, gridx, gridy, offsetValue); }
//------------------------------------------------------------------------------------- public bool CheckMove(BaseTile[] tiles, MoveDirect dir) { foreach (var tile in tiles) { if (dir == MoveDirect.Down || dir == MoveDirect.Up) { if (tile.GetLockState() == LockState.LockUPDown || tile.GetLockState() == LockState.LockAll) { return(false); } } else if (dir == MoveDirect.Left || dir == MoveDirect.Right) { if (tile.GetLockState() == LockState.LockLeftRight || tile.GetLockState() == LockState.LockAll) { return(false); } } } return(true); }