Created
April 8, 2017 18:53
-
-
Save PoetaKodu/13a011d8aece9e90cb1e87c03774c3cc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "Actor.hpp" // Klasa bedzie operowala na aktorach ze sceny. | |
#include "Pawn.hpp" // Potrzebna bedzie tez klasa pionka | |
// Klasa bazowa dla wszelkich zmyslow. | |
class IAISense | |
{ | |
protected: | |
IPawn &m_owner; // Wlasciciel tego konkretnego zmyslu. | |
public: | |
/* Jest to konstruktor klasy zmyslu. | |
*/ | |
explicit IAISense(IPawn &owner); | |
/* Pomocniczy typ do skrocenia zapisu. */ | |
typedef std::vector<IActor*> TQueryActors; | |
/* Ta metoda bedzie odpowiadala za wykonanie odpowiedniego dzialania | |
sprawdzajacego wyniki dzialania zmyslu. Bedzie ona zwracala liste pasujacych aktorow ze sceny, | |
ktorzy spelniają odpowiednie warunki. | |
Warunki, ktore ma spelnic dany aktor by nie zostal usuniety z wynikow sprawdza funkcja filterFunc. | |
Parametr filterFunc to wskaznik na funkcje, ktora zwraca prawde gdy aktor ma byc dodany do wynikow lub falsz gdy ma byc usuniety z wynikow. | |
Domyslnie filterFunc akceptuje kazdy wynik. | |
Przykladowo gdy chcemy sprawdzic czy zmysl wykryl jakichs aktorow, ktorzy sa graczami, bedziemy chcieli usunac z wynikow | |
wszystkich aktorow, ktorzy nie sa klasy CPlayer. Zrobimy to w ten sposob: | |
aiSense->QueryActors([](IActor *const actor){ return dynamic_cast<CPlayer*>(actor) != nullptr; } | |
dynamic_cast daje pusty wskaznik, gdy wykonano niepoprawne rzutowanie, dlatego bedzie skutecznym filtrem przeciwko niechcianym wynikom. | |
*/ | |
virtual TQueryActors QueryActors(bool(*filterFunc)(IActor* const actor) = [](IActor *const actor) { return true; }) = 0; // Funkcja domyslnie jest niezdefiniowana. | |
/* Ta metoda zwraca KOPIE tablicy, w ktorej znajduja sie wszyscy wykryci aktorzy przez zmysl. | |
*/ | |
inline TQueryActors GetSensedActors() const { return m_sensedActors; } | |
protected: | |
TQueryActors m_sensedActors; // Tablica aktorow, ktora byla wynikiem ostatniego wywolania QueryActors. | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment