示例#1
0
 private void OnPossibleMatchOver(PossibleMatch sender)
 {
     Logger.Instance.Message(sender.ToString() + " is over");
     sender.OnMatch -= OnGemsMatch;
     sender.OnOver  -= OnPossibleMatchOver;
     possibleMatches.Remove(sender);
 }
示例#2
0
 private void OnGemsMatch(PossibleMatch sender, GemController[] matchGems)
 {
     Logger.Instance.Message(sender.ToString() + " was added to matchedMatches");
     if (!matchedMatches.Contains(sender))
     {
         matchedMatches.Add(sender);
     }
 }
示例#3
0
 public void Merge(PossibleMatch other)
 {
     Logger.Instance.Message(ToString() + " was merged with " + other.ToString());
     this.MatchDirection |= other.MatchDirection;
     foreach (GemController gem in other.matchedGems)
     {
         AddGem(gem);
     }
     other.Over();
 }
示例#4
0
 private void OnPossibleMatchAdded(GemController sender, PossibleMatch possibleMatch)
 {
     if (null == possibleMatch)
     {
         Logger.Instance.Error("possibleMatch is null");
         return;
     }
     Logger.Instance.Message(possibleMatch.ToString() + " was added to possibleMatches");
     possibleMatch.OnMatch += OnGemsMatch;
     possibleMatch.OnOver  += OnPossibleMatchOver;
     possibleMatches.Add(possibleMatch);
 }
示例#5
0
        private void CheckNeighbor(GemController neighbor, Direction neighborDirection)
        {
            if (null == neighbor)
            {
                neighborChangedFlag &= (~neighborDirection);
                return;
            }
            if (!neighbor.IsActive)
            {
                return;
            }
            if (!neighbor.CurrentGemType.HasSameFlags(this.CurrentGemType))
            {
                neighborChangedFlag &= (~neighborDirection);
                return;
            }
            PossibleMatch addedPossibleMatch = null;

            foreach (PossibleMatch possibleMatch in neighbor.PossibleMatches)
            {
                if (possibleMatch.AddGem(this))
                {
                    addedPossibleMatch = possibleMatch;
                }
            }
            if (addedPossibleMatch == null)
            {
                addedPossibleMatch = new PossibleMatch(this.CurrentGemType.GetSameFlags(neighbor.CurrentGemType));
                addedPossibleMatch.AddGem(this);
                Logger.Instance.Message(this.ToString() + " adding neighbor " + neighbor.ToString() + " to " + addedPossibleMatch.ToString());
                addedPossibleMatch.AddGem(neighbor);
                if (null != OnPossibleMatchAddedEvent)
                {
                    OnPossibleMatchAddedEvent(this, addedPossibleMatch);
                }
            }
            neighborChangedFlag &= (~neighborDirection);
        }