Beispiel #1
0
    public void HighlightMatcheCards()
    {
        var asyncChain = Planner.Chain();

        asyncChain.AddEmpty();
        var activeCards = cardsPool.FindAll(p => p.activeSelf);

        for (int i = 0; i < activeCards.Count; i++)
        {
            var matches = activeCards.FindAll(c
                                              => c.GetComponent <Card>().GetImage()
                                              .Equals(activeCards[i].GetComponent <Card>().GetImage())
                                              );

            if (matches.Count >= countFlipCardATime)
            {
                for (int j = 0; j < countFlipCardATime; j++)
                {
                    asyncChain.JoinTween(matches[j].GetComponent <Card>().Shake);
                }

                MaxHelpCount--;
                if (MaxHelpCount == 0 && HelpButton != null)
                {
                    HelpButton.interactable = false;
                }
                return;
            }
        }
    }
Beispiel #2
0
        private void Awake()
        {
            _gameScenarioBase = FindObjectOfType <GameScenarioBase>();
            _gameProgress     = FindObjectOfType <GameProgress>();

            _nextSceneNumber = SceneManager.GetActiveScene().buildIndex + _nextLoadSceneNumber;
            if (_gameScenarioBase == null)
            {
                var scenario = CustomResources.Load <GameScenarioBase>
                                   (AssetsPathGameObject.GameObjects[GameObjectType.GameScenarioExecutor]);

                _gameScenarioBase = Instantiate(scenario);
                if (_gameScenarioBase == null)
                {
                    CustomDebug.LogError("GameScenarioExecutor has no scenario", this);
                    return;
                }
            }
            _gameScenarioBase.Inject(_gameProgress);

            Planner.Chain()
            .AddFunc(_gameScenarioBase.ExecuteScenario)
            .AddAction(LoadNextScene)
            ;
        }
Beispiel #3
0
 public AsyncState StartCutScene()
 {
     return(Planner.Chain()
            .AddAction(() => _cameraAnimator.SetTrigger("StartGameCameraTrigger"))
            .AddAwait(IsRoundStart)
            );
 }
Beispiel #4
0
 public AsyncState EndCutScene()
 {
     return(Planner.Chain()
            .AddAction(() => cameraAnimator.SetTrigger("CameraEnd"))
            .AddAwait(IsOutroCutSceneFinished)
            );
 }
 private AsyncState Outro()
 {
     return(Planner.Chain()
            .AddAction(camAnimator.SetTrigger, "outro_trigger")
            .AddTimeout(2f)
            );
 }
Beispiel #6
0
 public AsyncState RewardCutScene()
 {
     return(Planner.Chain()
            .AddAction(() => _cameraAnimator.SetTrigger("RewardGameCameraTrigger"))
            .AddAwait(IsRoundEnd)
            );
 }
Beispiel #7
0
    private AsyncState MoveHand()
    {
        var asyncChain = Planner.Chain();

        asyncChain.AddTween(MoveTo);
        return(asyncChain);
    }
Beispiel #8
0
 public AsyncState RunGame(MemoryGameModel gameModel)
 {
     // game login entry point
     return(Planner.Chain()
            .AddAwait(AwaitFunc)
            );
 }
 public AsyncState IncrementProgress()
 {
     return(Planner.Chain()
            // TODO: run progress animation, await finish
            .AddTimeout(1f)
            );
 }
Beispiel #10
0
 public AsyncState StartCutScene()
 {
     return(Planner.Chain()
            .AddTimeout(3f)
            .AddAction(() => cameraAnimator.SetTrigger("CameraStart"))
            .AddAwait(IsIntroCutSceneFinished)
            );
 }
Beispiel #11
0
 private AsyncState Outro()
 {
     return(Planner.Chain()
            .AddAction(Debug.Log, "start outro")
            .AddFunc(controller.MemoryAnimations.EndCutScene)
            .AddAction(Debug.Log, "outro finished")
            );
 }
 protected override AsyncState OnExecute()
 {
     return(Planner.Chain()
            .AddFunc(Intro)
            .AddFunc(GameCircle)
            .AddFunc(Outro)
            );
 }
 public AsyncState IncrementProgress()
 {
     return(Planner.Chain()
            // TODO: run progress animation, await finish
            .AddTween(_progressBar.SetCurrentValue, 1f / NumberOfRounds)
            .AddTimeout(1f)
            );
 }
 private AsyncState Outro()
 {
     // TODO: outro cut scene. Run camera back to origin position. Await animation finish
     return(Planner.Chain()
            .AddAction(Debug.Log, "start outro")
            .AddTimeout(1f)
            .AddAction(Debug.Log, "outro finished")
            );
 }
 private AsyncState Intro()
 {
     return(Planner.Chain()
            // TODO: intro cut scene. Run camera animation. Await animation finish
            .AddAction(Debug.Log, "start intro")
            .AddTimeout(1f)
            .AddAction(Debug.Log, "intro finished")
            );
 }
 private AsyncState Intro()
 {
     return(Planner.Chain()
            .AddAction(CustomDebug.Log, "start intro")
            .AddFunc(_memoryGameController.CameraAnimationController.StartCutScene)
            .AddTimeout(_timeOutForSpawnCardAfterCameraAnimation)
            .AddAction(CustomDebug.Log, "intro finished")
            );
 }
Beispiel #17
0
 private AsyncState TryFindPair()
 {
     return(Planner.Chain()
            .AddAwait(AwaitCardClick)
            .AddAwait(AwaitCardClick)
            .AddTimeout(1)
            .AddAction(CheckPair)
            );
 }
 private AsyncState Outro()
 {
     // TODO: outro cut scene. Run camera back to origin position. Await animation finish
     return(Planner.Chain()
            .AddAction(CustomDebug.Log, "start outro")
            .AddFunc(_memoryGameController.CameraAnimationController.RewardCutScene)
            .AddTimeout(1f)
            .AddAction(CustomDebug.Log, "outro finished")
            );
 }
    public AsyncState Close()
    {
        return(Planner.Chain()
               .AddAction(ShowParticleEffect)
               .AddTween(CloseEffect)
               .AddAction(ToggleBarImages, false)
               .AddAwait((AsyncStateInfo state) => state.IsComplete = effectInstance == null)

               );
    }
Beispiel #20
0
    public AsyncState CardDealing(int numberOfPairs)
    {
        if (HelpButton != null)
        {
            HelpButton.interactable = true;
        }

        IsFinishGameRound = false;
        var asyncChain = Planner.Chain();

        asyncChain.AddAction(Debug.Log, "Dealing started");
        IsDealing = true;

        var movePosition = new Vector3(-numberOfPairs / 2f, 2.86f, 0f);
        var moveOffset   = Vector3.right * 0.5f;

        for (var i = 0; i < numberOfPairs * 2; i++)
        {
            Card card = null;

            var instancePosition = new Vector3(0f, 2.86f, 10f);
            var instanceRotation = cardPrefab.transform.rotation;

            if (cardsPool.Count > i && !cardsPool[i].activeSelf)
            {
                cardsPool[i].transform.position = instancePosition;
                cardsPool[i].transform.rotation = instanceRotation;

                card = cardsPool[i].GetComponent <Card>();
                card.SetImage(GetImage(i));
                card.gameObject.SetActive(true);
                card.AudioManager = audioManager;
                asyncChain.AddFunc(card.MoveToTable, movePosition);

                movePosition += moveOffset;
                continue;
            }

            var cardObj = Instantiate(cardPrefab, instancePosition, instanceRotation, transform);
            cardsPool.Add(cardObj);

            card = cardObj.GetComponent <Card>();
            card.SetImage(GetImage(i));
            card.AudioManager = audioManager;
            asyncChain.AddFunc(card.MoveToTable, movePosition);

            movePosition += moveOffset;
        }

        asyncChain.AddFunc(difficultyController.ShowCardsInBeginning, cardsPool);
        asyncChain.AddAction(Debug.Log, "Dealing finished");
        asyncChain.onComplete += () => IsDealing = false;
        return(asyncChain);
    }
Beispiel #21
0
 public AsyncState Close()
 {
     return(Planner.Chain()
            .AddAction(audioManager.Play, "ShowProgressBarEffect")
            .AddAction(ShowParticleEffect)
            .AddTween(CloseEffect)
            .AddAction(ToggleBarImages, false)
            .AddAwait((AsyncStateInfo state) => state.IsComplete = effectInstance == null)
            .AddAwait((AsyncStateInfo state) => state.IsComplete = !audioManager.IsPlaying("ShowProgressBarEffect"))
            );
 }
        public AsyncState HandleHP()
        {
            var asyncChain = Planner.Chain();

            if (!_difficultyData.IsHPHandle)
            {
                return(asyncChain.AddEmpty());
            }

            asyncChain.AddFunc(_hpManager.Execute, _difficultyData.HpPrefab, _difficultyData.MaxHP);
            return(asyncChain);
        }
    public AsyncState CardDealing(int numberOfPairs)
    {
        if (HelpButton != null)
        {
            HelpButton.interactable = true;
        }

        IsFinishGameRound = false;
        var asyncChain = Planner.Chain();

        asyncChain.AddAction(Debug.Log, "Dealing started");
        IsDealing = true;

        var movePosition = new Vector3(-1.0f, 0.0f, 0f);
        var moveOffset   = Vector3.right * 0.8f;

        for (var i = 0; i < numberOfPairs * 2; i++)
        {
            CardBehaviour card = null;

            var instancePosition = new Vector3(0f, 0.2f, 10f);
            var instanceRotation = _cardPrefab.transform.rotation;

            if (CardsPool.Count > i && !CardsPool[i].GameObject.activeSelf)
            {
                CardsPool[i].Transform.position = instancePosition;
                CardsPool[i].Transform.rotation = instanceRotation;

                card = CardsPool[i].GameObject.GetComponent <CardBehaviour>();
                card.SetImage(GetImage(i));
                card.gameObject.SetActive(true);
                asyncChain.AddFunc(card.MoveToTable, movePosition);

                movePosition += moveOffset;
                continue;
            }
            var cardFactory = new CardFactory();
            var cardObject  = cardFactory.CreateCard(instancePosition, instanceRotation);
            CardsPool.Add(cardObject);

            card = cardObject.GameObject.GetComponent <CardBehaviour>();
            card.SetImage(GetImage(i));
            asyncChain.AddFunc(card.MoveToTable, movePosition);

            movePosition += moveOffset;
        }

        asyncChain.AddFunc(_difficultyController.ShowCardsInBeginning, CardsPool);
        asyncChain.AddAction(Debug.Log, "Dealing finished");
        asyncChain.onComplete += () => IsDealing = false;
        return(asyncChain);
    }
Beispiel #24
0
        private void StartFindAllPairs()
        {
            if (runtimeData.CardsSet.Count == 0)
            {
                return;
            }

            Planner.Chain()
            .AddFunc(TryFindPair)
            .AddTimeout(0.5f)
            .AddAction(StartFindAllPairs);
            ;
        }
Beispiel #25
0
        public AsyncState RunGame(MemoryGameModel gameModel)
        {
            this.gameModel = gameModel;

            // game login entry point
            return(Planner.Chain()
                   .AddAction(SetCarts)
                   .AddAwait(AwaitAllCardsSet)
                   .AddAction(StartFindAllPairs)
                   .AddAwait(AwaitFindAllPairs)
                   .AddAwait(AwaitGameComplite)
                   );
        }
Beispiel #26
0
    public void Flip()
    {
        _isFliped = true;

        var asyncChain = Planner.Chain();

        asyncChain
        .AddTween(Rise)
        .AddTween(Rotate)
        .AddTween(Put)
        .AddAction(OnFlipedCard.Invoke, this)
        ;
    }
Beispiel #27
0
    private AsyncState Switching(List <GameObject> list, int i, int j)
    {
        var asyncChain = Planner.Chain();

        var temp = list[i];

        list[i] = list[j];
        list[j] = temp;

        asyncChain.AddTween(list[j].GetComponent <Card>().MoveTo, list[i].transform.position, 0.25f, Ease.InSine);
        asyncChain.AddTween(list[i].GetComponent <Card>().MoveTo, list[j].transform.position, 0.25f, Ease.InSine);
        asyncChain.AddAwait((AsyncStateInfo state) => state.IsComplete = !Card.IsTweenRunning);
        return(asyncChain);
    }
Beispiel #28
0
    public void Flip()
    {
        isFliped = true;
        AudioManager.Play("ClickOnCard");

        var asyncChain = Planner.Chain();

        asyncChain
        .AddTween(Rise)
        .AddTween(Rotate)
        .AddTween(Put)
        .AddAction(MemoryCardDeal.OnFlipedCard.Invoke, this)
        ;
    }
        private void Awake()
        {
            if (scenario == null)
            {
                Debug.LogError("GameScenarioExecutor has no scenario", this);
                return;
            }

            scenario.Inject(progress);

            Planner.Chain()
            .AddFunc(scenario.ExecuteScenario)
            .AddAction(LoadNextScene)
            ;
        }
        private AsyncState GameCircle()
        {
            var asyncChain = Planner.Chain();

            for (var i = 0; i < defaultGameModel.Cycles.Count; i++)
            {
                runtimeData.CycleIndex    = i;
                runtimeData.CycleSettings = defaultGameModel.Cycles[i];

                asyncChain
                .AddFunc(controller.RunGame, defaultGameModel)
                .AddFunc(progress.IncrementProgress)
                ;
            }

            return(asyncChain);
        }