Beispiel #1
0
        public SwipeAction Add(string screenId, DirectionEnum direction)
        {
            var id     = Guid.Parse(screenId);
            var action = new SwipeAction(screenId, direction);

            Actions.Add(action);
            return(action);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }