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; }
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(); } }