public SwipeAction Add(string screenId, DirectionEnum direction) { var id = Guid.Parse(screenId); var action = new SwipeAction(screenId, direction); Actions.Add(action); return(action); }
public SwipeAction GetOppositeAction(SwipeAction action) { var directionOpposite = DirectionHelper.OppositeDirection(action.Direction); var query = from a in Actions where a.Direction == directionOpposite && !a.Id.Equals(action.Id) select a; var actionOpposite = query.FirstOrDefault(); return(actionOpposite); }
public IMatchResult Match(SwipeAction action, int milliseconds) { IMatchResult matchResult = null; var actionOpposite = GetOppositeAction(action); if (actionOpposite != null) { SwipeAction actionAux; //TODO: Thinking order if (actionOpposite.Timestamp.Subtract(action.Timestamp).TotalMilliseconds < 0) { actionAux = actionOpposite; actionOpposite = action; action = actionAux; } var mosaic = _mosaicStore.GetByScreenId(action.ScreenId); if (mosaic.Items.Count == 1) { matchResult = _mosaicStore.Match(action.ScreenId, actionOpposite.ScreenId, action.Direction); } else { matchResult = _mosaicStore.Match(action.ScreenId, actionOpposite.ScreenId, action.Direction); } if (matchResult.IsMatch) { Remove(matchResult); } Remove(milliseconds); } return(matchResult); }