// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-09-02
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
using UnityEngine;
namespace G
{
public class Tower_base : MonoBehaviour
{
//private Hp_bar_fixed script_hpbar;
private EntityMainPlayer script_cha;
private GameCamera script_cam;
private Transform hpbar;
private Transform mytransform;
private Vector3 attackdir;
private float damage;
private bool life = true;
public int maxhp;
public int hp;
private short cur_stage_index;
public bool iscastle;
public bool isObstacle = true;
public Transform mydestroy;
private bool istower;
private void Awake()
{
mytransform = base.transform;
if (mytransform.childCount != 0)
{
istower = true;
}
}
private void Start()
{
cur_stage_index = 1;
//if (iscastle)
//{
// maxhp += (short)((0.1445f * cur_stage_index * cur_stage_index + 6.3873f * cur_stage_index - 5f) * 20f);
//}
//else
//{
// maxhp += (short)((0.1445f * cur_stage_index * cur_stage_index + 6.3873f * cur_stage_index - 5f) * 3f);
//}
hp = maxhp;
//hpbar = GameObject.FindWithTag("efs_mon").GetComponent().CreatHpbar(new Vector2(0.1f, 0.02f), true, false);
//hpbar.parent = mytransform;
//script_hpbar = hpbar.GetComponent();
script_cha = GameObject.FindWithTag("Player").transform.gameObject.GetComponent();
script_cam = Camera.main.GetComponent();
//hpbar.position = mytransform.position + Vector3.forward * -0.08f + Vector3.up * 0.2f;
//script_hpbar.Damaged(maxhp, hp, mytransform, 0.2f, -1);
//hpbar.gameObject.SetActive(!isObstacle);
//hp = 1;
}
public void Grabed()
{
}
public void CastleBreak()
{
life = false;
base.GetComponent().enabled = false;
Object.Destroy(hpbar.gameObject);
Object.Destroy(mytransform.GetChild(0).gameObject);
if (iscastle)
{
//GameObject.FindWithTag("ui").GetComponent().WaveSet(100);
}
}
public bool TankDamage()
{
hpbar.gameObject.SetActive(true);
hp = (short)(hp - maxhp * 0.1f);
//script_hpbar.Damaged(maxhp, hp, mytransform, 0.2f, -1);
GetComponent().Play();
if (hp <= 0 && life)
{
CastleBreak();
}
return life;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.layer < GameLayer.NormalAttack)
{
return;
}
switch (other.gameObject.layer)
{
case GameLayer.NormalAttack:
attackdir = mytransform.position - other.transform.position;
attackdir.y = 0f;
attackdir = Vector3.Normalize(attackdir);
//other.transform.root.GetComponent().AddForce(attackdir * -90f);
damage = script_cha.damage;
script_cam.Hitcam();
break;
case GameLayer.PowerAttack:
damage = script_cha.damage;
script_cam.Hitcam2(1f);
break;
case GameLayer.SkillAttack:
damage = other.GetComponent().mass;
script_cam.Hitcam();
break;
case GameLayer.PoisonAttack:
damage = other.GetComponent().mass * 2f;
script_cam.Hitcam();
break;
case GameLayer.DeathAttack:
damage = other.GetComponent().mass;
script_cam.Hitcam();
break;
case GameLayer.GeneralAttack:
damage = script_cha.damage;
break;
case GameLayer.PierceAttack:
damage = other.GetComponent().mass;
hp -= (short)damage;
break;
case GameLayer.CrowdAttack:
damage = 2f;
break;
case GameLayer.PushAttack:
damage = script_cha.damage;
break;
case GameLayer.RiseupAttack2:
damage = script_cha.damage * 0.4f;
break;
case GameLayer.BurnAttack:
damage = script_cha.damage;
break;
case GameLayer.ColdAttack:
damage = script_cha.damage;
break;
case GameLayer.ShockAttack:
damage = script_cha.damage;
break;
case GameLayer.DarkAttack:
damage = script_cha.damage;
break;
}
//hpbar.gameObject.SetActive(true);
hp -= (short)damage;
//script_hpbar.Damaged(maxhp, hp, mytransform, 0.2f, -1);
//GetComponent().Play();
if (hp <= 0 && life)
{
life = false;
GetComponent().enabled = false;
if (iscastle)
{
CastleBreak();
return;
}
//GameObject.FindWithTag("Respawn").GetComponent().TowerBreak(istower);
if (mydestroy)
{
Transform transform = Object.Instantiate(mydestroy, mytransform.position, mytransform.rotation);
transform.GetComponent()["destroy_tower"].speed = 0.3f;
Object.Destroy(transform.gameObject, 3f);
}
Object.Destroy(hpbar.gameObject);
Object.Destroy(gameObject);
GameObject.FindWithTag("efs_mon").GetComponent().CreateBox(1, 1, transform.position);
}
}
}
}