public virtual void Start ()
{
if (this.SkinType.Equals (NPCSkinType.MowerMan))
{
audio.clip = mowing;
audio.Play();
}
enteredMap = false;
// Alert Texture
alertTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AIAlert"));
alertTexture.transform.SetParent (transform, false);
alertTexture.renderer.enabled = false;
TextureScript alertTs = alertTexture.GetComponent<TextureScript> ();
alertTs.target = gameObject;
// Panic Texture
panicTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AIPanic"));
panicTexture.transform.SetParent (transform, true);
panicTexture.renderer.enabled = false;
TextureScript panicTs = panicTexture.GetComponent<TextureScript> ();
panicTs.target = gameObject;
// Scare Texture
scaredTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AIScared"));
scaredTexture.transform.SetParent (transform, true);
scaredTexture.renderer.enabled = false;
TextureScript scaredTs = scaredTexture.GetComponent<TextureScript> ();
scaredTs.target = gameObject;
// Scare Texture
lureTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AILure"));
lureTexture.transform.SetParent (transform, true);
lureTexture.renderer.enabled = false;
TextureScript lureTs = lureTexture.GetComponent<TextureScript> ();
lureTs.target = gameObject;
player = GameObject.FindGameObjectWithTag ("Player");
// Set initial alert/panick states
//timePanicked = panicCooldownSeconds;
alerted = false;
panicked = false;
alertLevel = 0f;
playerInRange = false;
visionAngleOffset = .5f * visionAngleSize;
// TODO: Make this vector match NPC's view
//forwardLookingDirection = new Vector3 (-1, 0);
npcDir = NPCDirection.L;
xScale = transform.localScale.x;
// Register for all messages that entre necessary
MessageCenter.Instance.RegisterListener (MessageType.PlayerGrabbedNPCs, grabbedListener);
MessageCenter.Instance.RegisterListener (MessageType.NPCEaten, eatenListener);
MessageCenter.Instance.RegisterListener (MessageType.PlayerReleasedNPCs, releasedListener);
MessageCenter.Instance.RegisterListener (MessageType.TrapEntered, trapEnterListener);
MessageCenter.Instance.RegisterListener (MessageType.TrapReleased, trapReleaseListener);
MessageCenter.Instance.RegisterListener (MessageType.LureRadiusEntered, lureEnterListener);
MessageCenter.Instance.RegisterListener (MessageType.LureReleased, lureReleaseListener);
MessageCenter.Instance.RegisterListener (MessageType.AbilityPlaced, abilityPlacedListener);
MessageCenter.Instance.RegisterListener (MessageType.NewMarkedBounty, markedBountyListener);
// Ignore collision with other AI
int npcLayer = LayerMask.NameToLayer (npcTag);
Physics2D.IgnoreLayerCollision (npcLayer, npcLayer);
Physics2D.IgnoreLayerCollision (npcLayer, 9);
// Broadcast start of lifecycle
MessageCenter.Instance.Broadcast (new NPCCreatedMessage (gameObject));
}