Beispiel #1
0
    public static void GameOver(Enemy enemy)
    {
        Player player = Player.Instance;

        Analytics.CustomEvent("death.floor." + Instance.floor);

        /*
         * Analytics.CustomEvent ("GameOver", new Dictionary<string, object> {
         *      { "floor", Instance.floor },
         *      { "coins", player.coins },
         *      { "weapon", player.weapon.name },
         *      { "shield", player.shield.name },
         *      { "health", player.health },
         *      { "maxHealth", player.maxHealth },
         *      { "enemy", enemy.name }
         * });
         */
        Analytics.FlushEvents();

        GameAnalytics.NewProgressionEvent(GAProgressionStatus.Fail, "floor " + Instance.floor, enemy.name);

        SceneManager.LoadScene("GameOver", LoadSceneMode.Additive);
    }
Beispiel #2
0
 private void OnDestroy()
 {
     Analytics.FlushEvents();
 }
Beispiel #3
0
 public void FlushEvents()
 {
     Analytics.FlushEvents();
 }
Beispiel #4
0
 private void Start()
 {
     Analytics.FlushEvents();
     GameAnalytics.Instance.LevelStart();
 }
Beispiel #5
0
        void OnCollisionEnter(Collision col)
        {
            if (!col.gameObject.activeSelf)
            {
                // A very important check to make sure no duplicate collisions occur!
                return;
            }

            switch (col.gameObject.tag)
            {
            case "Battery":
                GameAnalytics.Instance.UpgradeBattery();
                Achievements.Instance.Gain(Achievements.Achievement.FirstBattery);
                _light.UpgradeBattery();
                col.gameObject.DeleteSafely();
                break;

            case "Key":
                GetComponent <Inventory>().AddDoorKey();
                GameAnalytics.Instance.CollectKey();
                col.gameObject.DeleteSafely();
                break;

            case "Enemy":
                if (_light.LightIntensity > 0)
                {
                    Achievements.Instance.GetHit();
                    GameAnalytics.Instance.HitByEnemy();
                }

                _light.DoDamage(10f);
                break;
            }

            switch (col.gameObject.name)
            {
            case "Bullet(Clone)":
                if (col.gameObject.GetComponent <Bullet>().TryFirstHit())
                {
                    Achievements.Instance.GetHit();
                    var velocityMagnitude = col.gameObject.GetComponent <Rigidbody>().velocity.magnitude;
                    GameAnalytics.Instance.HitByBullet(velocityMagnitude);
                    _light.DoDamage(velocityMagnitude);
                }

                break;

            case "KeyEntrance":
                if (GetComponent <Inventory>().UseDoorKey())
                {
                    GameAnalytics.Instance.UsedKeyOnDoor();
                    col.gameObject.DeleteSafely();
                }
                else
                {
                    KeyUi.Instance.ShowRequiredKey();
                }

                break;

            case "WinEntrance":
                if (_gameWon)
                {
                    return;
                }

                var receivedHit = Achievements.Instance.Win();
                GameAnalytics.Instance.GameOver(GetComponent <Inventory>().keyList);
                Analytics.FlushEvents();

                _gameWon             = true;
                transform.localScale = new Vector3(3, 3, 3);

                var offset       = new Vector3(0, 1, -2);
                var followPlayer = GameObject.Find("Main Camera").GetComponent <FollowPlayer>();
                followPlayer.zoomSpeed = 0.008f;
                followPlayer.ZoomIn(
                    p => 0,
                    offset,
                    stopZoom =>
                {
                    GameObject.Find("FadeInOut")
                    .GetComponent <FadeInOut>()
                    .FadeOut(() =>
                    {
                        // Game over
                        HUD.Instance.SetGameWon(receivedHit);
                    });
                },
                    true
                    );
                break;
            }
        }
Beispiel #6
0
    async UniTaskVoid Loop()
    {
        await UniTask.WaitUntil(() => Services.isInited);

        cardIconQueue.CreateQueue();

        heads.GetComponent <EnemyHead> ().UpdateHead(getRandomHead());
        Services.assets.PlaySound("start_game").Forget();

        while (true)
        {
            await tutorial.CheckCurrentTutor();

            await UniTask.WaitUntil(() => state == GameLoopState.IDLE);

            int currentChoise = -1;

            cardItem = cardIconQueue.GetFirstItem();

            tutorial.ChangeCard(cardItem);

            var t1 = cardIconQueue.Shift();
            var t2 = SwipeCard();
            await UniTask.WhenAll(t1, t2);

            Swipe swipe = cardSwipe[currentViewIndex].GetComponent <Swipe> ();
            currentChoise = swipe.currentChoise;

            int timestamp = GameTime.GetTime();

            ChoiceData chMeta = null;
            if (cardItem.me == true)
            {
                chMeta = currentChoise == Swipe.LEFT_CHOICE ? cardItem.data.left : cardItem.data.right;
            }
            else
            {
                chMeta = currentChoise == Swipe.LEFT_CHOICE ? cardItem.data.eLeft : cardItem.data.eRight;
            }

            lock (this) {
                Services.player.Execute(cardItem.data, currentChoise, chMeta, cardItem.me, timestamp, Services.enemy);
            }

            Services.data.swipeCount++;
            Services.assets.PlaySound("card_move").Forget();
            //check global state
            if (!CheckGlobalState(timestamp))
            {
                state = GameLoopState.DIABLED;
                EndTurnCanvas?.SetActive(true);

                bool isWin = Services.data.isWin(timestamp);

                if (isWin == true)
                {
                    Services.assets.PlaySound("win").Forget();
                }
                else
                {
                    Services.assets.PlaySound("lose").Forget();
                }

                Analytics.CustomEvent("gameOver", new Dictionary <string, object> {
                    { "isWin", isWin }
                });
                Analytics.FlushEvents();
            }
            else if (chMeta.reward.Exists(r => r.category == GameDataManager.ACTION_ID && r.id == 1))
            {
                Services.assets.PlaySound("attack").Forget();
            }
            else if (chMeta.reward.Exists(r => r.category == GameDataManager.RESOURCE_ID && r.id == 1))
            {
                Services.assets.PlaySound("heal").Forget();
            }
            //await UniTask.Delay(100);

            //shift

            /*for (int i = 1; i < queue.Count; i++) {
             *  queue[i - 1] = queue[i];
             * }
             * queue[queue.Count - 1] = currentItem;
             *
             * await cardIconQueue.Shift ();
             */
        }
    }
Beispiel #7
0
    private void Quit()
    {
        AnalyticsResult data = Analytics.CustomEvent("GameOver");

        Analytics.FlushEvents();
    }