void OnTriggerEnter2D(Collider2D other)
    {
        GameObject partyObj = GameObject.FindGameObjectWithTag("Party");
        PartyStat  party    = partyObj.GetComponent <PartyStat>();

        Projectile proj = other.gameObject.GetComponent <Projectile>();

        if (proj)
        {
            audioSource.Play();
            GameObject       launcher     = proj.launcher;
            PlayerController inputRceiver = launcher.GetComponent <PlayerController>();
            if (inputRceiver)  // Fired by a player
            {
                int playerIndex = inputRceiver.playerIndex;
                party.score[playerIndex] += scoreBounty;
                party.ennemyKills[playerIndex]++;
            }
            Instantiate(explosionPrefab, gameObject.transform.position, gameObject.transform.rotation);
            if (Random.Range(0f, 1f) <= crateProbaRate)
            {
                Instantiate(ammoCratePrefab, gameObject.transform.position, Quaternion.identity);
            }

            Destroy(gameObject);
            Destroy(other.gameObject);
        }

        if (other.gameObject.tag == "Nacelle")
        {
            Instantiate(explosionPrefab, gameObject.transform.position, gameObject.transform.rotation);
            party.HitBalloon(1);
            Destroy(gameObject);
        }
    }
Esempio n. 2
0
    public void SetLevelBackground(int lvlIndex)
    {
        spriteRenderer.sprite = lvlBackgrounds[lvlIndex - 1];
        GameObject query     = GameObject.FindGameObjectWithTag("Party");
        PartyStat  partyStat = query.GetComponent <PartyStat>();

        startAltitude = partyStat.altitude;
    }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        Text       text        = gameObject.GetComponent <Text>();
        GameObject partyObject = GameObject.FindGameObjectWithTag("Party");
        PartyStat  party       = partyObject.GetComponent <PartyStat>();
        int        score       = party.score[playerIndex];

        text.text = score.ToString();
    }
Esempio n. 4
0
    // Use this for initialization
    void Start()
    {
        m_firingClock = 0f;
        m_bulletClock = 0f;
        m_bulletCount = 0;

        GameObject[] query = GameObject.FindGameObjectsWithTag("Party");
        m_partyStat = query[0].GetComponent <PartyStat>();
    }
    void OnEnable()
    {
        GameObject[] query      = GameObject.FindGameObjectsWithTag("Party");
        PartyStat    partyStat  = query[0].GetComponent <PartyStat>();
        float        wasteRatio = 0f;
        float        consumed   = partyStat.ammoConsumption[0];

        if (consumed > 0f)
        {
            wasteRatio = partyStat.wastedAmmo[0] * 100f / consumed;
        }
        else
        {
            wasteRatio = 0f;
        }
        string statsText = "Kills: " + partyStat.ennemyKills[0].ToString() +
                           " / Wasted ammo: " + wasteRatio + "%";

        redStats.GetComponent <Text>().text = statsText;
        consumed = partyStat.ammoConsumption[1];
        if (consumed > 0f)
        {
            wasteRatio = partyStat.wastedAmmo[1] * 100f / consumed;
        }
        else
        {
            wasteRatio = 0f;
        }
        statsText = "Kills: " + partyStat.ennemyKills[1].ToString() +
                    " / Wasted ammo: " + wasteRatio + "%";
        blueStats.GetComponent <Text>().text = statsText;
        consumed = partyStat.ammoConsumption[2];
        if (consumed > 0f)
        {
            wasteRatio = partyStat.wastedAmmo[2] * 100f / consumed;
        }
        else
        {
            wasteRatio = 0f;
        }
        statsText = "Kills: " + partyStat.ennemyKills[2].ToString() +
                    " / Wasted ammo: " + wasteRatio + "%";
        yellowStats.GetComponent <Text>().text = statsText;
        consumed = partyStat.ammoConsumption[3];
        if (consumed > 0f)
        {
            wasteRatio = partyStat.wastedAmmo[3] * 100f / consumed;
        }
        else
        {
            wasteRatio = 0f;
        }
        statsText = "Kills: " + partyStat.ennemyKills[3].ToString() +
                    " / Wasted ammo: " + wasteRatio + "%";
        greenStats.GetComponent <Text>().text = statsText;
    }
Esempio n. 6
0
    // Update is called once per frame
    void Update()
    {
        GameObject query     = GameObject.FindGameObjectWithTag("Party");
        PartyStat  partyStat = query.GetComponent <PartyStat>();
        Transform  t         = gameObject.GetComponent <Transform>();
        float      alt       = partyStat.altitude - startAltitude;
        Vector3    pos       = new Vector3(0f, startY - (alt * 0.25f), 30f);

        t.position = pos;
    }
Esempio n. 7
0
    // Update is called once per frame
    void Update()
    {
        float spawnPerSec  = 1f / timeToSpawn;
        float probaToSpawn = spawnPerSec * Time.deltaTime;

        float proba = Random.Range(0f, 1f);

        if (proba < probaToSpawn)
        {
            BoxCollider2D     spawnCollider = gameObject.GetComponent <BoxCollider2D>();
            float             x             = Random.Range(-spawnCollider.size.x / 2f, spawnCollider.size.x / 2f);
            float             y             = Random.Range(-spawnCollider.size.y / 2f, spawnCollider.size.y / 2f);
            Vector3           pos           = gameObject.transform.position + new Vector3(x, y, 0);
            GameObject        newMonster    = Instantiate(monster, pos, Quaternion.identity);
            MonsterController controler     = newMonster.GetComponent <MonsterController>();
            controler.crateProbaRate = crateProbaRate;

            GameObject     partyObject = GameObject.FindGameObjectWithTag("Party");
            PartyStat      party       = partyObject.GetComponent <PartyStat>();
            int            monsterIdx  = Random.Range(0, 3);
            Sprite[][]     sprites     = { spritesLevel1, spritesLevel2, spritesLevel3, spritesLevel4 };
            SpriteRenderer spr         = newMonster.GetComponent <SpriteRenderer>();
            spr.sprite = sprites[1][monsterIdx];

            switch (party.m_currentLevelIdx - 1)
            {
            case 0:
                spr.sprite = sprites[0][monsterIdx];
                newMonster.GetComponent <MonsterController>().baseRotation = 180f;
                newMonster.transform.localScale = new Vector3(2f, 2f, 2f);
                break;

            case 1:
                spr.sprite = sprites[1][monsterIdx];
                newMonster.GetComponent <MonsterController>().baseRotation = 68f;
                newMonster.transform.localScale = new Vector3(2f, 2f, 2f);
                break;

            case 2:
                spr.sprite = sprites[2][monsterIdx];
                newMonster.transform.localScale = new Vector3(2f, 2f, 2f);
                break;

            case 3:
                spr.sprite = sprites[3][monsterIdx];
                newMonster.GetComponent <MonsterController>().baseRotation = -90f;
                newMonster.transform.localScale = new Vector3(2f, 2f, 2f);
                break;
            }
        }
    }
Esempio n. 8
0
    // Update is called once per frame
    void Update()
    {
        GameObject[] query          = GameObject.FindGameObjectsWithTag("Party");
        PartyStat    partyStat      = query[0].GetComponent <PartyStat>();
        float        effectiveSpeed = scrollingSpeed +
                                      (partyStat.nacelleSpeed * speedFactor);

        transform.position -= Vector3.up * effectiveSpeed * Time.deltaTime;

        // TODO Destroy the entity when it leave the screen
        // if (transform.position.y > 0) {
        //     Destroy(this);
        // }
    }
Esempio n. 9
0
    public void OnStartParty()
    {
        Debug.Log("OnStartParty");

        mainMenuCanvas.SetActive(false);
        ingameCanvas.SetActive(true);
        partyInstance                  = Instantiate(partyPrefab).GetComponent <PartyStat>();
        partyInstance.gameStat         = this;
        partyInstance.inGameMenuCanvas = inGameMenuCanvas;
        partyInstance.inGameCanvas     = ingameCanvas;
        partyInstance.endGameCanvas    = endGameCanvas;
        partyInstance.gameOverCanvas   = gameOverCanvas;
        partyInstance.StartLevel(1);
        //m_state = State.MainMenu;
    }
Esempio n. 10
0
    // Update is called once per frame
    void Update()
    {
        Vector2 move = m_direction * m_speed * Time.deltaTime;

        m_transform.position += new Vector3(move.x, move.y);

        if (GoneBeyond(90f, 50f))
        {
            GameObject[]     query     = GameObject.FindGameObjectsWithTag("Party");
            PartyStat        partyStat = query[0].GetComponent <PartyStat>();
            PlayerController player    = launcher.GetComponent <PlayerController>();
            partyStat.wastedAmmo[player.playerIndex]++;
            Destroy(gameObject);
        }
    }
Esempio n. 11
0
    // Update is called once per frame
    void Update()
    {
        GameObject partyObject = GameObject.FindGameObjectWithTag("Party");

        if (partyObject)
        {
            party = partyObject.GetComponent <PartyStat>();
            ammoStock.GetComponent <Text>().text    = party.ammoStock.ToString();
            player1Score.GetComponent <Text>().text = party.score[0].ToString();
            player2Score.GetComponent <Text>().text = party.score[1].ToString();
            player3Score.GetComponent <Text>().text = party.score[2].ToString();
            player4Score.GetComponent <Text>().text = party.score[3].ToString();
            altitude.GetComponent <Text>().text     = party.altitude.ToString() + "m";
            speed.GetComponent <Text>().text        = party.nacelleSpeed.ToString() + "m/s";
            balloonLife.GetComponent <Text>().text  = party.balloonLife.ToString();
        }
    }
Esempio n. 12
0
    // Update is called once per frame
    void Update()
    {
        GameObject nearest = null;
        {
            GameObject[] monsters = GameObject.FindGameObjectsWithTag("Enemy");
            float        minDist  = float.MaxValue;
            foreach (GameObject m in monsters)
            {
                Vector3 a    = m.GetComponent <Transform>().position;
                Vector3 b    = gameObject.GetComponent <Transform>().position;
                float   dist = Vector3.Distance(a, b);
                if (dist < minDist)
                {
                    minDist = dist;
                    nearest = m;
                }
            }
        }

        GameObject nearestCrate = null;
        {
            GameObject[] crates  = GameObject.FindGameObjectsWithTag("AmmoCrate");
            float        minDist = float.MaxValue;
            foreach (GameObject crate in crates)
            {
                GameObject nearestPlayer = nearestPlayerForCrate(crate);
                if (nearestPlayer == gameObject)
                {
                    Vector3 a    = crate.GetComponent <Transform>().position;
                    Vector3 b    = gameObject.GetComponent <Transform>().position;
                    float   dist = Vector3.Distance(a, b);
                    if (dist < minDist)
                    {
                        minDist      = dist;
                        nearestCrate = crate;
                    }
                }
            }
        }

        {
            PlayerController player  = gameObject.GetComponent <PlayerController>();
            Vector3          fireDir = new Vector3();
            if (nearest)
            {
                Vector3 a = gameObject.GetComponent <Transform>().position;
                Vector3 b = nearest.GetComponent <Transform>().position;
                fireDir = b - a;
                fireDir.Normalize();
                fireDir.x += Random.Range(-fireSpreading, fireSpreading);
                fireDir.y += Random.Range(-fireSpreading, fireSpreading);
                fireDir.Normalize();
            }

            Vector3 moveDir = new Vector3();
            if (nearestCrate)
            {
                Vector3 a = gameObject.GetComponent <Transform>().position;
                Vector3 b = nearestCrate.GetComponent <Transform>().position;
                moveDir = b - a;
                moveDir.Normalize();
            }

            GameObject partyObject = GameObject.FindGameObjectWithTag("Party");
            PartyStat  party       = partyObject.GetComponent <PartyStat>();
            bool       megaFire    = party.ammoStock > 100;

            player.SetInputs(moveDir.x, moveDir.y, fireDir.x, fireDir.y, megaFire);
        }
    }
Esempio n. 13
0
    void Update()
    {
        if (bgScnLoading.isDone && !bgIsSet && loadPlayers.isDone && loadPlayers.isDone)
        {
            enemyScene  = SceneManager.GetSceneByName(enemieScene);
            bgScene     = SceneManager.GetSceneByName(backgroundScene);
            playerScene = SceneManager.GetSceneByName("Players");
            Debug.Assert(enemyScene.IsValid());
            Debug.Assert(bgScene.IsValid());
            Debug.Assert(playerScene.IsValid());

            GameObject gobj = GameObject.FindGameObjectWithTag("BG");
            Debug.Assert(gobj);
            BackgroundScrolling bgs = gobj.GetComponent <BackgroundScrolling>();
            Debug.Assert(bgs);
            gobj = GameObject.FindGameObjectWithTag("Party");
            PartyStat partyStat = gobj.GetComponent <PartyStat>();
            Debug.Assert(partyStat);
            bgs.SetLevelBackground(partyStat.m_currentLevelIdx);
            bgIsSet = true;
        }

        if (firstUpdate)
        {
            if (loadPlayers.isDone == false)
            {
                return;
            }
            firstUpdate = false;
            GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
            foreach (GameObject p in players)
            {
                m_players[p.GetComponent <PlayerController>().playerIndex] = p;
            }

            GameObject gameObject = GameObject.FindGameObjectWithTag("Game");
            GameState  game       = gameObject.GetComponent <GameState>();
            for (int i = 0; i < 4; ++i)
            {
                if (game.playerAreIA[i])
                {
                    m_players[i].GetComponent <PlayerInput>().enabled = false;
                }
                else
                {
                    m_players[i].GetComponent <PlayerIA>().enabled = false;
                }
            }
        }
        GameObject partyObject = GameObject.FindGameObjectWithTag("Party");
        PartyStat  party       = partyObject.GetComponent <PartyStat>();

        if (party.altitude >= distanceToReach)
        {
            party.EndLevelReached();
            distanceToReach = float.MaxValue;
        }

        foreach (GameObject p in m_players)
        {
            Debug.Assert(party);
            //Debug.Assert(p);
            if (p)
            {
                Debug.Assert(p.GetComponent <PlayerController>());
                if (party.droppedPlayers.Contains(p.GetComponent <PlayerController>().playerIndex))
                {
                    p.SetActive(false);
                }
            }
        }

        foreach (int playerIndex in party.droppedPlayers)
        {
            if (monsterPlayers[playerIndex] == null)
            {
                float spawnProp = Random.Range(0f, 1);
                if (spawnProp < Time.deltaTime)
                {
                    BoxCollider2D spawnCollider = gameObject.GetComponent <BoxCollider2D>();
                    float         x             = Random.Range(-spawnCollider.size.x / 2f, spawnCollider.size.x / 2f);
                    float         y             = Random.Range(-spawnCollider.size.y / 2f, spawnCollider.size.y / 2f);
                    Vector3       pos           = gameObject.transform.position + new Vector3(x, y, 0);
                    GameObject    newMonster    = Instantiate(monsterPlayerPrefab, pos, Quaternion.identity);
                    newMonster.GetComponent <MonsterInput>().playerIndex = playerIndex;
                    //MonsterController ai = newMonster.GetComponent<MonsterController>();

                    // Debug.Log("Spawn ghost " + playerIndex.ToString());

                    GameObject   playerObj = m_players[playerIndex];
                    PlayerInput  player    = playerObj.GetComponent <PlayerInput>();
                    MonsterInput mi        = newMonster.GetComponent <MonsterInput>();
                    mi.m_moveXAxis = player.m_moveXAxis;
                    mi.m_moveYAxis = player.m_moveYAxis;
                    mi.m_fireXAxis = player.m_fireXAxis;
                    mi.m_fireYAxis = player.m_fireYAxis;
                }
            }
        }
    }
Esempio n. 14
0
    // Update is called once per frame
    void Update()
    {
        float[] xMove = { 0f, 0f, 01f, 0f };
        float[] yMove = { 0f, 0f, 01f, 0f };
        xMove[0] = Input.GetAxis("Move X 1");
        yMove[0] = Input.GetAxis("Move Y 1");
        xMove[1] = Input.GetAxis("Move X 2");
        yMove[1] = Input.GetAxis("Move Y 2");
        xMove[2] = Input.GetAxis("Move X 3");
        yMove[2] = Input.GetAxis("Move Y 3");
        xMove[3] = Input.GetAxis("Move X 4");
        yMove[3] = Input.GetAxis("Move Y 4");


        float   xMean = xMove.Average();
        float   yMean = yMove.Average();
        Vector2 dir   = new Vector2(xMean, yMean);

        //Debug.Log("Choosen dp1 : " + xMove[0].ToString() + " " + yMove[0].ToString());
        foreach (var text in playersText)
        {
            text.GetComponent <Text>().fontSize = 30;
        }
        playersText[4].GetComponent <Text>().fontSize = 20;

        GameObject partyObject = GameObject.FindGameObjectWithTag("Party");
        PartyStat  party       = partyObject.GetComponent <PartyStat>();

        foreach (var text in playersText.Select((value, i) => new { i, value }))
        {
            if (party.droppedPlayers.Contains(text.i))
            {
                text.value.SetActive(false);
            }
        }

        int minScore    = int.MaxValue;
        int playerIndex = 0;

        foreach (var score in party.score.Select((value, i) => new { i, value }))
        {
            if (score.value < minScore && !party.droppedPlayers.Contains(score.i))
            {
                minScore    = score.value;
                playerIndex = score.i;
            }
        }

        if (dir.SqrMagnitude() > 0.04f)
        {
            dir.Normalize();

            Vector2[] dirs =
            {
                new Vector2(0f,      1f),
                new Vector2(-1f,     0f),
                new Vector2(0f,     -1f),
                new Vector2(1f,      0f),
                new Vector2(0.6f, -0.6f),
            };

            //dirs[4].Normalize();

            float max = float.MinValue;
            foreach (var buttonDir in dirs.Select((value, i) => new { i, value }))
            {
                float dot = Vector2.Dot(buttonDir.value, dir);
                if (dot > max)
                {
                    max         = dot;
                    playerIndex = buttonDir.i;
                }
            }
            //var dots =
            //    from buttonDir in dirs
            //    select Vector2.Dot(buttonDir, dir);

            //Debug.Log("Choosen index : " + index.ToString());
        }

        if (playerIndex == 4)
        {
            playersText[playerIndex].GetComponent <Text>().fontSize = 35;
        }
        else
        {
            playersText[playerIndex].GetComponent <Text>().fontSize = 50;
        }

        //Debug.Log("Time.fixedTime : " + Time.fixedTime.ToString());
        float timeElapsed = Time.realtimeSinceStartup - countDownStart;
        // Debug.Log("timeElapsed : " + timeElapsed.ToString());
        float timeLeft = countDownDuration - timeElapsed;

        // Debug.Log("timeLeft : " + timeElapsed.ToString());
        countDownText.GetComponent <Text>().text = timeLeft.ToString();

        if (timeLeft < 0f)
        {
            //Destroy(gameObject);
            gameObject.SetActive(false);
            party.EndLevel(playerIndex);
        }
    }