public void TriggerHearEvent(PERCEPTION_EVENT_TYPE type, float time_in_memory, int radius, int origin_tile_x, int origin_tile_y, int destiny_x, int destiny_y) { PerceptionHearEvent new_event = new PerceptionHearEvent(type, time_in_memory, radius); new_event.SetOrigin(origin_tile_x, origin_tile_y); new_event.SetDestiny(destiny_x, destiny_y); event_manager.GetComponent <PerceptionManager>().GenEvent(new_event); }
public override void OnEventRecieved(PerceptionEvent event_recieved) { if (IsPriotitaryEvent(event_recieved) == true) { ClearEvents(); } else { return; } switch (event_recieved.type) { case PERCEPTION_EVENT_TYPE.HEAR_EXPLORER_EVENT: case PERCEPTION_EVENT_TYPE.HEAR_WALKING_PLAYER: PerceptionHearEvent tmp = (PerceptionHearEvent)event_recieved; if (OnHearRange(tmp) && GetComponent <EnemyShield_BT>().InCombat() == false) { PerceptionHearEvent event_to_memory = new PerceptionHearEvent(tmp); GetComponent <EnemyShield_BT>().heard_something = true; GetComponent <Investigate_Action>().forgot_event = false; GetComponent <Investigate_Action>().SetEvent(event_to_memory); GetComponent <EnemyShield_BT>().InterruptAction(); GetComponent <EnemyShield_BT>().SetAction(Action.ACTION_TYPE.INVESTIGATE_ACTION); events_in_memory.Add(event_to_memory); event_to_memory.start_counting = false; } break; case PERCEPTION_EVENT_TYPE.PLAYER_SEEN: PerceptionPlayerSeenEvent seen_event_tmp = (PerceptionPlayerSeenEvent)event_recieved; if (gameObject == seen_event_tmp.enemy_who_saw) { GetComponent <EnemyShield_BT>().InterruptAction(); GetComponent <EnemyShield_BT>().player_detected = true; if (GetComponent <EnemyShield_BT>().InCombat() == false) { GetComponent <EnemyShield_BT>().SetAction(Action.ACTION_TYPE.ENGAGE_ACTION); } player_seen = true; PerceptionPlayerSeenEvent new_event_to_memory = new PerceptionPlayerSeenEvent(seen_event_tmp); events_in_memory.Add(new_event_to_memory); GetComponent <ChasePlayer_Action>().SetEvent(new_event_to_memory); GetComponent <ChasePlayer_Action>().forgot_event = false; new_event_to_memory.start_counting = false; } break; } }
bool OnHearRange(PerceptionHearEvent event_heard) { int my_tile_x = GetComponent <Movement_Action>().GetCurrentTileX(); int my_tile_y = GetComponent <Movement_Action>().GetCurrentTileY(); if (hear_range < event_heard.radius_in_tiles) { if (RadiusOverlap(my_tile_x, my_tile_y, hear_range, event_heard.objective_tile_x, event_heard.objective_tile_y, event_heard.radius_in_tiles)) { return(true); } return(false); } else { if (RadiusOverlap(event_heard.objective_tile_x, event_heard.objective_tile_y, event_heard.radius_in_tiles, my_tile_x, my_tile_y, hear_range)) { return(true); } return(false); } }
public PerceptionHearEvent(PerceptionHearEvent e) : base(e) { radius_in_tiles = e.radius_in_tiles; }
public override void OnEventRecieved(PerceptionEvent event_recieved) { if (IsPriotitaryEvent(event_recieved) == true) { ClearEvents(); } else { return; } switch (event_recieved.type) { case PERCEPTION_EVENT_TYPE.HEAR_EXPLORER_EVENT: case PERCEPTION_EVENT_TYPE.HEAR_WALKING_PLAYER: PerceptionHearEvent tmp = (PerceptionHearEvent)event_recieved; if (OnHearRange(tmp) && GetComponent <EnemySword_BT>().InCombat() == false) { PerceptionHearEvent event_to_memory = new PerceptionHearEvent(tmp); GetComponent <EnemySword_BT>().heard_something = true; GetComponent <Investigate_Action>().forgot_event = false; GetComponent <Investigate_Action>().SetEvent(event_to_memory); GetComponent <EnemySword_BT>().InterruptAction(); GetComponent <EnemySword_BT>().SetAction(Action.ACTION_TYPE.INVESTIGATE_ACTION); events_in_memory.Add(event_to_memory); event_to_memory.start_counting = false; } break; case PERCEPTION_EVENT_TYPE.PLAYER_SEEN: PerceptionPlayerSeenEvent seen_event_tmp = (PerceptionPlayerSeenEvent)event_recieved; if (gameObject.IsEquals(seen_event_tmp.enemy_who_saw)) { if (GetLinkedObject("event_manager").GetComponent <PerceptionManager>().player_seen == false) { //PLAY COMBAT MUSIC Audio.ChangeState("MusicState", "Combat"); if (Audio.prank) { Audio.ChangeState("MusicState", "AlternateCombat"); } GetLinkedObject("event_manager").GetComponent <PerceptionManager>().player_seen = true; Debug.Log("COMBAT ON", Department.PLAYER, Color.ORANGE); } GetComponent <EnemySword_BT>().InterruptAction(); GetComponent <EnemySword_BT>().player_detected = true; if (GetComponent <EnemySword_BT>().InCombat() == false) { GetComponent <EnemySword_BT>().SetAction(Action.ACTION_TYPE.ENGAGE_ACTION); } GetComponent <ChasePlayer_Action>().SetInterupt(false); player_seen = true; PerceptionPlayerSeenEvent new_event_to_memory = new PerceptionPlayerSeenEvent(seen_event_tmp); events_in_memory.Add(new_event_to_memory); GetComponent <ChasePlayer_Action>().SetEvent(new_event_to_memory); GetComponent <ChasePlayer_Action>().forgot_event = false; new_event_to_memory.start_counting = false; } break; } }