Beispiel #1
0
    private void SetDamage()
    {
        // Update current boss state
        state = BossStates.DAMAGE;

        // Reset time counter
        timeCounter = 0f;

        // Reset feedback time counter
        feedbackCounter = 0f;

        // Add spikes material to current damage target materials list
        damages.Add(spikeMat);

        // Remove all tank bosses references
        TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat;

        for (int i = 0; i < tank.Bosses.Count; i++)
        {
            tank.Bosses.RemoveAt(i);
        }

        // Enable punch collider
        spikeHandColl.enabled = true;

        // Apply animator punch trigger
        animator.SetTrigger("Damage");

        #if DEBUG_BUILD
        // Trace debug message
        Debug.Log("Boss: state set to DAMAGE");
        #endif
    }
Beispiel #2
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        if (deathTimer == 0)
        {
            return;
        }

        bool destroyMe = false;

        TankCombat tc = collider.gameObject.GetComponent <TankCombat>();

        if (tc != null)
        {
            int side = GetHitSide(startPos, collider.gameObject.transform.position, collider.gameObject.transform.right);
            tc.GotHitByMissile(side, damage, team);
            destroyMe = true;
            //Debug.Log ("Angle: " + angle + " AngleDir: " + angleDir + " side: " + side);
        }

        Exploder ex = collider.gameObject.GetComponent <Exploder>();

        if (ex != null)
        {
            ex.Explode();
            PlayGame.singleton.AddBarrelScore();
            destroyMe = true;
        }

        // destroy missile
        if (destroyMe)
        {
            deathTimer = 0;
            NetworkServer.Destroy(this.gameObject);
        }
    }
Beispiel #3
0
    private void SetSpikes()
    {
        // Update current boss state
        state = BossStates.SPIKES;

        // Reset time counter
        timeCounter = 0f;

        // Remove punch material from current damage target materials list
        damages.Remove(punchMat);

        // Disable punch collider
        punchColl.enabled = false;

        // Remove all tank bosses references
        TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat;

        for (int i = 0; i < tank.Bosses.Count; i++)
        {
            tank.Bosses.RemoveAt(i);
        }

        // Apply animator punch trigger
        animator.SetTrigger("Spikes");

        #if DEBUG_BUILD
        // Trace debug message
        Debug.Log("Boss: state set to SPIKES");
        #endif
    }
Beispiel #4
0
    void UpdateColor()
    {
        if (ClientScene.localPlayers.Count == 0)
        {
            return;
        }

        Color owningColor = Color.white;
        Color tryingColor = Color.white;

        var controller = ClientScene.localPlayers[0];

        if (controller == null)
        {
            return;
        }

        if (controller.gameObject == null)
        {
            return;
        }

        var        playerObj = controller.gameObject;
        TankCombat myTC      = playerObj.GetComponent <TankCombat>();

        if (owningTeam != -1)
        {
            if (myTC.team == owningTeam)
            {
                owningColor = Color.green;
            }
            else
            {
                owningColor = Color.red;
            }
        }
        GetComponent <SpriteRenderer>().material.color = owningColor;

        if (tryingTeam != -1)
        {
            if (myTC.team == tryingTeam)
            {
                tryingColor = Color.green;
            }
            else
            {
                tryingColor = Color.red;
            }
        }
        ParticleSystemRenderer psr = (ParticleSystemRenderer)(GetComponent <ParticleSystem>().GetComponent <ParticleSystemRenderer>());

        psr.material.color = tryingColor;
    }
Beispiel #5
0
    void OnTriggerExit2D(Collider2D collider)
    {
        TankCombat tc = collider.gameObject.GetComponent <TankCombat>();

        if (tc != null)
        {
            targets.Remove(tc);
            if (targets.Count == 0)
            {
                GetComponent <ParticleSystem>().Stop();
            }
        }
    }
Beispiel #6
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        TankCombat tc = collider.gameObject.GetComponent <TankCombat>();

        if (tc != null)
        {
            targets.Add(tc);

            if (score < controlTime)
            {
                GetComponent <ParticleSystem>().Play();
            }
        }
    }
Beispiel #7
0
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        Vector3 pos = Vector3.zero;

        pos.y += (conn.connectionId % 8) * 2;
        pos.x += ((conn.connectionId / 4) * 4);

        GameObject thePlayer = (GameObject)Instantiate(base.playerPrefab, pos, Quaternion.identity);
        TankCombat tc        = thePlayer.GetComponent <TankCombat>();

        tc.InitializeFromTankType(TankTypeManager.Random());

        NetworkServer.AddPlayerForConnection(conn, thePlayer, playerControllerId);
    }
Beispiel #8
0
    private void SetEnemies()
    {
        // Update current boss state
        state = BossStates.ENEMIES;

        // Reset time counter
        timeCounter = 0f;

        // Remove spikes material from current damage target materials list
        damages.Add(spikeMat);

        // Disable punch collider
        spikeHandColl.enabled = false;

        // Remove all tank bosses references
        TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat;

        for (int i = 0; i < tank.Bosses.Count; i++)
        {
            tank.Bosses.RemoveAt(i);
        }

        // Apply animator punch trigger
        animator.SetTrigger("Enemies");

        // Reset line renderer vertex count
        lineRenderer.SetVertexCount(2);
        for (int i = 0; i < 2; i++)
        {
            lineRenderer.SetPosition(i, laserRoot.position);
        }

        // Enable spawn manager
        spawnManager.StartSpawner();

        #if DEBUG_BUILD
        // Trace debug message
        Debug.Log("Boss: state set to ENEMIES");
        #endif
    }
Beispiel #9
0
    void Update()
    {
        if (Time.time > timer)
        {
            transform.localScale *= 0.9f;
            timer  = Time.time + 0.1f;
            count += 1;
            if (count == 8)
            {
                GameObject.Destroy(gameObject);

                GameObject scorch = (GameObject)GameObject.Instantiate(scorchMark, transform.position, Quaternion.identity);
                GameObject.Destroy(scorch, 1);

                for (int i = 0; i < 3; i++)
                {
                    Vector3 pos = transform.position;
                    pos.x += UnityEngine.Random.Range(-10, 10) / 10.0f;
                    pos.y += UnityEngine.Random.Range(-10, 10) / 10.0f;
                    GameObject exp = (GameObject)GameObject.Instantiate(explosion, pos, Quaternion.identity);
                    GameObject.Destroy(exp, 1);
                }

                if (NetworkServer.active)
                {
                    Collider2D[] hits = Physics2D.OverlapCircleAll(transform.position, 2.0f);
                    foreach (var hit in hits)
                    {
                        TankCombat hitTc = hit.GetComponent <TankCombat>();
                        if (hitTc != null)
                        {
                            int side = Missile.GetHitSide(transform.position, hit.transform.position, hit.transform.right);
                            hitTc.GotHitByMissile(side, 50, team);
                        }
                    }
                }
            }
        }
    }
Beispiel #10
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (isServer)
            {
                NetworkManager.singleton.StopHost();
            }
            else
            {
                NetworkManager.singleton.client.Disconnect();
                Application.LoadLevel("title");
            }
        }

        if (Input.GetKeyDown(KeyCode.H))
        {
            // spawn heavy tank
            GameObject tank = (GameObject)Instantiate(NetworkManager.singleton.playerPrefab, Vector3.zero, Quaternion.identity);
            TankCombat tc   = tank.GetComponent <TankCombat>();
            tc.InitializeFromTankType(TankTypeManager.Random());
            NetworkServer.Spawn(tank);
        }
    }
Beispiel #11
0
    private void SetLaser()
    {
        // Update current boss state
        state = BossStates.LASER;

        // Reset time counter
        timeCounter = 0f;

        // Remove all tank bosses references
        TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat;

        for (int i = 0; i < tank.Bosses.Count; i++)
        {
            tank.Bosses.RemoveAt(i);
        }

        // Apply animator punch trigger
        animator.SetTrigger("LaserStart");

        #if DEBUG_BUILD
        // Trace debug message
        Debug.Log("Boss: state set to LASER");
        #endif
    }
Beispiel #12
0
    void OnGUI()
    {
        Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);

        int myTeam = -1;

        if (NetworkClient.active && ClientScene.localPlayers.Count > 0 && ClientScene.localPlayers[0].gameObject != null)
        {
            TankCombat localPlayerTc = ClientScene.localPlayers[0].gameObject.GetComponent <TankCombat>();
            myTeam = localPlayerTc.team;
        }

        // your team is green, other teams are red
        Color teamColor = Color.white;

        if (myTeam == tc.team)
        {
            teamColor = Color.green;
        }
        else
        {
            teamColor = Color.red;
        }

        // draw the name with a shadow (colored for buf)
        GUI.color = Color.black;
        GUI.Label(new Rect(pos.x - 50, Screen.height - pos.y - 62, 150, 30), tc.tankName);
        GUI.color = teamColor;
        GUI.Label(new Rect(pos.x - 51, Screen.height - pos.y - 61, 150, 30), tc.tankName);

        if (tc.alive && tc.tt != null)
        {
            DrawBar(teamColor, pos, 40, tc.health, tc.tt.maxHealth);
            DrawBar(Color.yellow, pos, 34, tc.heat, tc.tt.maxHeat);
        }
        else
        {
            GUI.color = Color.black;
            GUI.Label(new Rect(pos.x - 40, Screen.height - pos.y - 42, 150, 30), "YOU ARE DEAD");
            GUI.color = Color.white;
            GUI.Label(new Rect(pos.x - 41, Screen.height - pos.y - 41, 150, 30), "YOU ARE DEAD");
        }

        if (!isLocalPlayer)
        {
            return;
        }

        // draw direction damage indicators
        DrawArmour(new Rect(20, 100, 64, 32), front, tc.armorFront);
        DrawArmour(new Rect(20, 210, 64, 32), back, tc.armorBack);
        DrawArmour(new Rect(20, 136, 24, 72), left, tc.armorLeft);
        DrawArmour(new Rect(60, 136, 24, 72), right, tc.armorRight);

        if (damageTimer > Time.time)
        {
            Rect r = new Rect(0, 0, 0, 0);
            if (damageSide == 0)
            {
                r = new Rect(40, 80, 40, 40);
            }
            else if (damageSide == 1)
            {
                r = new Rect(100, 160, 40, 40);
            }
            else if (damageSide == 2)
            {
                r = new Rect(40, 260, 40, 40);
            }
            else if (damageSide == 3)
            {
                r = new Rect(2, 160, 40, 40);
            }
            GUI.color = Color.red;
            GUI.Label(r, "[" + damageAmount + "]");
        }

        GUI.color = Color.white;
        GUI.Label(new Rect(5, 5, 180, 60), "Arrows to move, mouse buttons to fire. Escape to exit. Destroy three barrels.");

        GUI.Label(new Rect(10, 250, 200, 20), "Turret Ammo: " + tc.ammunitionTurret + "/" + tc.tt.maxAmmunitionTurret);
        GUI.Label(new Rect(10, 270, 200, 20), "Flame Ammo: " + tc.ammunitionMG + "/" + tc.tt.maxAmmunitionMG);

        GUI.Label(new Rect(200, 10, 200, 20), "Barrels: " + PlayGame.GetBarrelScore());

        if (myTeam == 0)
        {
            GUI.color = Color.green;
        }
        else
        {
            GUI.color = Color.red;
        }
        GUI.Label(new Rect(200, 30, 200, 20), "Control(0): " + PlayGame.GetControlScore(0));

        if (myTeam == 1)
        {
            GUI.color = Color.green;
        }
        else
        {
            GUI.color = Color.red;
        }
        GUI.Label(new Rect(200, 50, 200, 20), "Control(1): " + PlayGame.GetControlScore(1));


        GUI.color = Color.white;
        if (NetworkClient.active)
        {
            GUI.Label(new Rect(5, 5, 180, 60), "RTT: " + NetworkClient.allClients[0].GetRTT());
        }

        GUI.color = Color.white;
        if (PlayGame.GetComplete())
        {
            GUI.Label(new Rect(Screen.width / 2 - 60, Screen.height / 2 - 100, 200, 40), "--- Level Complete ---\nPRESS SPACE TO RESTART");
        }
    }