/// <summary> /// _s the on gem clicked. /// </summary> /// <param name="gemView">Gem view.</param> private void _OnGemViewClicked(GemViewComponent gemView) { // if (_model.GameState == GameState.PLAYING && _model.IsInputEnabled) { if (_model.SelectedGemVO == null) { // 1. SELECT FIRST GEM IN A PAIR _controller.SelectedGemVO = gemView.GemVO; } else if (_model.SelectedGemVO == gemView.GemVO) { // 2. DESELECT FIRST GEM IN A PAIR _controller.SelectedGemVO = null; } else if (Model.AreGemVOsSwappable(_model.SelectedGemVO, gemView.GemVO)) { // 3. SWAP FIRST & SECOND GEM IN A PAIR _AttemptSwapTwoGemVOs(_model.SelectedGemVO, gemView.GemVO); _controller.SelectedGemVO = null; } else { // 4. DESELECTED ALL _controller.SelectedGemVO = null; } } else { if (AudioManager.IsInstantiated()) { AudioManager.Instance.PlayAudioResourcePath(TripleMatchConstants.PATH_GEM_CLICK_FAIL_AUDIO, TripleMatchConstants.VOLUME_SCALE_SFX_2); } } }
/// <summary> /// _s the do create and add gem view. /// </summary> /// <param name="nextGemVO">Next gem V.</param> private void _DoCreateAndAddGemView(GemVO nextGemVO) { // CREATE AND REPARENT GameObject nextGemViewPrefab = Instantiate(Resources.Load(TripleMatchConstants.PATH_GEM_VIEW_PREFAB)) as GameObject; nextGemViewPrefab.transform.parent = _gemsParent.transform; // INITIALIZE WITH DATA VO GemViewComponent nextGemView = nextGemViewPrefab.GetComponent <GemViewComponent>(); // Vector3 spawnPointForGemsVector3 = new Vector3 ( TripleMatchConstants.COLUMN_SIZE * nextGemVO.ColumnIndex, 5, transform.localPosition.z ); // nextGemView.OnTweenToNewPositionEntryCompleted += _OnGemTweenToNewPositionEntryCompleted; nextGemView.OnClicked += _OnGemViewClicked; nextGemView.Initialize(nextGemVO, spawnPointForGemsVector3); _gemViews.Add(nextGemView); }
/// <summary> /// _s the do destroy and remove gem view. /// </summary> /// <param name="gemView">Gem view.</param> private void _DoDestroyAndRemoveGemView(GemViewComponent gemView) { gemView.OnClicked -= _OnGemViewClicked; gemView.OnTweenToNewPositionEntryCompleted -= _OnGemTweenToNewPositionEntryCompleted; gemView.Destroy(); _gemViews.Remove(gemView); }
//-------------------------------------- // Event Handlers //-------------------------------------- /// <summary> /// _s the on tween to new position entry completed. /// </summary> /// <param name="gemView">Gem view.</param> private void _OnGemTweenToNewPositionEntryCompleted(GemViewComponent gemView) { gemView.OnTweenToNewPositionEntryCompleted -= _OnGemTweenToNewPositionEntryCompleted; // ARE 100% IN PROPER TARGET POSITION? if (_gemViews.Where(nextGemView => nextGemView.IsAtTargetPosition()).Count() == _gemViews.Count) { CoroutineManager.Instance.WaitForSecondsToCall(_controller.CheckForMatches, TripleMatchConstants.DURATION_DELAY_BEFORE_CHECK_FOR_MATCHES); } }
/// <summary> /// _s the get gem view for gem vo. /// </summary> private GemViewComponent _GetGemViewForGemVo(GemVO gemVO) { GemViewComponent gemViewFound = null; if (_gemViews != null) { foreach (GemViewComponent gemView in _gemViews) { if (gemView.GemVO == gemVO) { gemViewFound = gemView; } } } return(gemViewFound); }