VZ/Assets/Scripts/VampireSquad.cs
2015-08-17 20:46:17 -04:00

126 lines
3.4 KiB
C#

using System;
using UnityEngine;
using System.Collections;
/// <summary>
/// This class contains the information of the Vampire Units.
/// </summary>
public class VampireSquad : Squad
{
// Use this for initialization
void Start ()
{
InitializeSquad();
InitializeDefaultTagAndLayer();
// initialize default hp
//Hp = defaultHp;
// initialize default attack
Attack = defaultAttack;
// initialize default team
// initialize default specie
IsDead = false;
}
// Update is called once per frame
void Update ()
{
if (IsDead)
{
// TODO play dead animation before destroying unit
DestroyUnit(DyingTime);
}
else {
if (target != null) {
Vector3 newTarget = new Vector3(target.pos.x, transform.position.y, target.pos.z);
transform.LookAt(newTarget);
transform.position = Vector3.MoveTowards(transform.position, newTarget, speed);
Debug.Log("I tried to move to :" + target.pos);
}
}
}
private void InitializeDefaultTagAndLayer()
{
try
{
this.Tag = TagLayerManager.VampirePlayer; // set the tag to player 1
this.Layer = TagLayerManager.VampireLayerIndex;
}
catch (IndexOutOfRangeException ex)
{
Debug.LogError( "Please set a vampire Tag, check the Tag & layers in the inspector!\n" + ex );
}
// set the tag and the layer of the gameObject to vampire
if (this.gameObject.tag != Tag)
{
this.gameObject.tag = Tag;
}
if (this.gameObject.layer != Layer)
{
this.gameObject.layer = Layer;
}
}
/*void CaptureHuman(Unit unit)
{
// TODO either add the human as a squad member or change it's tag to vampireHuman
// when the player is transformed we just make VampireSquad vampireUnit2 = (VampireSquad) unit;
Debug.Log("Entered in collision with: " + unit.Tag );
}*/
/* void AttackEnemySquad(Unit unit)
{
//TODO improve this method to compute the reduce of hp, etc...
// compute the amount of hp reduced to this unit
unit.Hp -= Attack; // we remove some hp of the unit that was
Debug.Log("Attacked the ennemy : " + unit.Tag);
}*/
void OnTriggerEnter(Collider collider)
{
//var objectTag = collider.gameObject;
// check if the game object have an attached Unit class
//switch(objectTag.GetType())
var unitComponent = collider.GetComponent<Unit>();
if (unitComponent == null)
return;
// check if the unit is not a friendly one
if (this.Tag == unitComponent.Tag)
return;
if (unitComponent.Tag.Equals(TagLayerManager.Human))
{
if (unitComponent.IsCaptured)
{
return;
}
else
{
CaptureHuman(unitComponent);
}
}
else // we know that it's an ennemy
{
try
{
AttackEnemySquad(unitComponent as Squad);
}
catch (InvalidCastException exception)
{
Debug.LogError(exception.ToString());
//throw;
}
}
}
}