void OnBodyMotion(object sender, BodyMotionDetectedEventArgs args)
    {
        Bonus bonus = new Bonus();

        switch (args.motion)
        {
        case BodyMotion.JUMP:
            bonus = TargetsFactory.ReleaseAllBonusTargetsByType(TargetType.TopBonusTarget);
            break;

        case BodyMotion.SUPER_JUMP:
            bonus = TargetsFactory.ReleaseAllBonusTargetsByType(TargetType.BottomBonusTarget);
            break;
        }

        if (gameMode == GameMode.LimitedTime)
        {
            this.score    += bonus.Score;
            this.timeLeft += bonus.Time;
            UpdateScoreText();
        }
        else if (gameMode == GameMode.LimitedLife)
        {
            this.life += bonus.Life;
            UpdateLifesText();
        }
    }
    void OnHandMotion(object sender, HandMotionDetectedEventArgs args)
    {
        int deltaScore = 0;

        switch (args.motion)
        {
        case HandMotion.LEFT_HAND_WAVE_OUT:
            deltaScore = TargetsFactory.ReleaseAllTargetsByType(TargetType.LeftTarget);
            break;

        case HandMotion.RIGHT_HAND_WAVE_OUT:
            deltaScore = TargetsFactory.ReleaseAllTargetsByType(TargetType.RightTarget);
            break;

        case HandMotion.TWO_HAND_RISE:
            deltaScore = TargetsFactory.ReleaseAllTargetsByType(TargetType.TopTarget);
            break;

        case HandMotion.RIGHT_HAND_RISE:
            if (isFinished)
            {
                Application.LoadLevel("MainMenu");
            }
            break;
        }

        if (gameMode == GameMode.LimitedTime)
        {
            this.score += deltaScore;
            UpdateScoreText();
        }
    }
    private void BonusTargetSpawn()
    {
        if (this.rateOfBonusTargetSpawn <= 0f)
        {
            return;
        }

        float durationBetweenTwoTargetsSpawn = 1f / this.rateOfBonusTargetSpawn;

        if (Time.time < this.lastBonusTargetSpawnTime + durationBetweenTwoTargetsSpawn)
        {
            return;
        }

        // chose random target type
        System.Array values = new int[2];
        values.SetValue(TargetType.TopBonusTarget, 0);
        values.SetValue(TargetType.BottomBonusTarget, 1);
        TargetType targetType = (TargetType)values.GetValue(UnityEngine.Random.Range(0, values.Length));

        // spawn !
        TargetsFactory.GetTarget(targetType);

        this.lastBonusTargetSpawnTime = Time.time;
    }
Beispiel #4
0
    private void Update()
    {
        this.UpdatePosition();

        // release target if it is in collision with player
        if (this.Position.z < -5 || this.Position.x < -13 || this.Position.x > 13)
        {
            TargetsFactory.ReleaseTarget(this);

            // player collision event
            if (targetPlayerCollision != null)
            {
                targetPlayerCollision(this, EventArgs.Empty);
            }
        }
    }
    private void Awake()
    {
        speed = setSpeed;

        if (Instance != null)
        {
            Debug.LogError("There is multiple instance of singleton TargetsFactory");
            return;
        }

        Instance = this;

        foreach (object value in System.Enum.GetValues(typeof(TargetType)))
        {
            this.availableTargetsByType.Add((TargetType)value, new Queue <Target>());
        }
    }
    public static int ReleaseAllTargetsByType(TargetType targetType)
    {
        int score = 0;

        GameObject[] gameObjectsToRelease = GameObject.FindGameObjectsWithTag(targetType.ToString());

        foreach (GameObject gameObject in gameObjectsToRelease)
        {
            // add score
            Target target = gameObject.GetComponent <Target>();
            score += target.Score;
            // release
            TargetsFactory.ReleaseTarget(target);
        }

        return(score);
    }
    void showFinishScreen()
    {
        // stop spawn objects and clear scene
        isFinished = true;
        TargetsFactory.ReleaseAllTargets();

        // hide texts
        scoreText.gameObject.SetActive(false);
        timeLeftText.gameObject.SetActive(false);
        timePassedText.gameObject.SetActive(false);
        lifesText.gameObject.SetActive(false);

        // show final dialog
        if (gameObject.GetComponent <FinalDialog> () == null)
        {
            gameObject.AddComponent <FinalDialog> ();
        }
    }
    public static Bonus ReleaseAllBonusTargetsByType(TargetType targetType)
    {
        Bonus bonus = new Bonus();

        GameObject[] gameObjectsToRelease = GameObject.FindGameObjectsWithTag(targetType.ToString());

        foreach (GameObject gameObject in gameObjectsToRelease)
        {
            // add score
            Target target = gameObject.GetComponent <Target>();
            bonus.Score += target.BonusScore;
            bonus.Time  += target.BonusTime;
            bonus.Life  += target.BonusLife;
            // release
            TargetsFactory.ReleaseTarget(target);
        }

        return(bonus);
    }
    private void Awake()
    {
        speed = setSpeed;

        if (Instance != null) {
            Debug.LogError("There is multiple instance of singleton TargetsFactory");
            return;
        }

        Instance = this;

        foreach (object value in System.Enum.GetValues(typeof(TargetType))) {
            this.availableTargetsByType.Add((TargetType)value, new Queue<Target>());
        }
    }