public bool CanInteractInField(InteractiveGameObject initiator, InteractiveGameObject target) { if (!initiator.CanInteractWith(target)) { return(false); } int index = rooms.IndexOf(initiator); if (index == -1) { return(false); } var targetIndex = rooms.IndexOf(target); if (targetIndex == -1) { return(false); } if (Math.Abs(index - targetIndex) == xStep || Math.Abs(index - targetIndex) == yStep) { return(true); } return(false); }