public void RegisterCoveredExit(GuardStateBrainPBT guard)
 {
     if (_coveringGuards.IndexOf(guard) != -1)
     {
         _coveredExits++;
         CheckIfReady();
     }
 }
        private void AddCoveringGuard(GuardStateBrainPBT guard)
        {
            GenericUtilities.SafelyAddItemToList(guard, _coveringGuards);

            // old implementation reliant on searchmodebehaviour
            // guard.GetComponent<SearchModeBehaviour>().InitSearch(
            //     this, _searchTrack.Exits[_assignedExitIndex]
            // );
            _assignedExitIndex++;
        }
 private void OnGuardReachRoom(GuardStateBrainPBT guard, Room room, RoomConnection roomConnection)
 {
     if (_allGuards.Contains(guard))
     {
         guard.SetRoom(null);
         if (_nodesToSearch.Count != 0)
         {
             guard.SearchPoint = GetNextSearchPoint();
         }
     }
 }
        public void AddSearchingGuard(GuardStateBrainPBT guard)
        {
            if (_searchingInProgress)
            {
                guard.SearchPoint = GetNextSearchPoint();
            }

            GenericUtilities.SafelyAddItemToList(guard, _searchingGuards);
            // if (_searchTrack.Exits.Count > 0)
            // {
            //     guard.GetComponent<SearchModeBehaviour>().InitSearch(
            //         this, _searchTrack.Exits[0]
            // );
            // }
        }
        private void OnNodeSearched(GuardStateBrainPBT guard, SearchTrackNode node)
        {
            _nodesToSearch.Remove(node);
            // use the list stored in the actual search track since we pop things from our local copy
            if (!_searchTrack.GetSearchTrackNodes().Contains(node))
            {
                return;
            }

            if (_nodesToSearch.Count != 0)
            {
                // guard.SearchPoint = _nodesToSearch.Pop();
                guard.SearchPoint = GetNextSearchPoint();
            }
            else
            {
                guard.SearchPoint = null;
                RegisterComplete();
            }
        }
        public void AddGuard(GuardStateBrainPBT guard, bool checkIfReady = true)
        {
            if (
                _coveringGuards.Count < _searchTrack.Exits.Count &&
                _searchTrack.RequriesCover
                )
            {
                AddCoveringGuard(guard);
            }
            else
            {
                AddSearchingGuard(guard);
            }

            _allGuards.Add(guard);

            if (checkIfReady)
            {
                CheckIfReady();
            }
        }