Beispiel #1
0
    public void RPCTakeDamage(TankBody damagedBody, HitInfo shooterSideInfo)
    {
        TankBodyPart damagedPart;

        switch (damagedBody)
        {
        case TankBody.Bottom: damagedPart = bottom; break;

        case TankBody.Turret: damagedPart = turret; break;

        default: damagedPart = null; break;
        }
        int partDamage    = 0;
        int overallDamage = 0;

        if (damagedPart != null)
        {
            overallDamage = (int)(damagedPart.TakeDamage(shooterSideInfo.shooterDamage, out partDamage));
        }
        health -= overallDamage;
        //
        int shooterViewID = shooterSideInfo.shooterViewID;

        shooterSideInfo.hitPart         = damagedBody;
        shooterSideInfo.partDamage      = partDamage;
        shooterSideInfo.totalDamage     = overallDamage;
        shooterSideInfo.victimNetworkID = photonView.ownerId;
    }
Beispiel #2
0
    public void TakeDamage(HitInfo shooterSideInfo)
    {
        if (health <= 0)
        {
            return;
        }
        TankBodyPart damagedPart;
        TankBody     damagedBody = shooterSideInfo.hitPart;

        switch (damagedBody)
        {
        case TankBody.Bottom: damagedPart = bottom; break;

        case TankBody.Turret: damagedPart = turret; break;

        default: damagedPart = null; break;
        }
        int partDamage    = 0;
        int overallDamage = 0;

        if (damagedPart != null)
        {
            overallDamage = (int)((float)(damagedPart.TakeDamage(shooterSideInfo.shooterDamage, out partDamage)) / protection);
        }
        int realDamage = (overallDamage > health)?health:overallDamage;

        health -= realDamage;
        //
        int shooterViewID = shooterSideInfo.shooterViewID;

        shooterSideInfo.hitPart         = damagedBody;
        shooterSideInfo.partDamage      = (ushort)partDamage;
        shooterSideInfo.totalDamage     = (ushort)realDamage;
        shooterSideInfo.victimNetworkID = (byte)photonView.ownerId;
        shooterSideInfo.victimState     = (byte)health;

        PhotonPlayer shooterOwner = PhotonPlayer.Find(shooterSideInfo.shooterNetworkID);
        PhotonView   shooterView  = PhotonView.Find(shooterSideInfo.shooterViewID);

        //Recall the shooter
        shooterView.RPC("RPCHitOneTank", shooterOwner, shooterSideInfo.ToBytes());


        //For UI operation
        UpdateHealthText();
        if (health <= 0)
        {
            Death();
        }
    }