00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef HEADER_SUPERTUX_OBJECT_ISPY_HPP
00018 #define HEADER_SUPERTUX_OBJECT_ISPY_HPP
00019
00020 #include "object/moving_sprite.hpp"
00021 #include "supertux/direction.hpp"
00022
00026 class Ispy : public MovingSprite
00027 {
00028 public:
00029 Ispy(const Reader& lisp);
00030
00031 HitResponse collision(GameObject& other, const CollisionHit& hit);
00032
00033 virtual void update(float elapsed_time);
00034
00035 private:
00036 bool line_intersects_line(Vector line1_start, Vector line1_end, Vector line2_start, Vector line2_end);
00037 bool intersects_line(Rectf r, Vector line_start, Vector line_end);
00038 bool free_line_of_sight(Vector p1, Vector p2, const MovingObject* ignore_object);
00039
00040 enum IspyState {
00041 ISPYSTATE_IDLE,
00042 ISPYSTATE_ALERT,
00043 ISPYSTATE_HIDING,
00044 ISPYSTATE_SHOWING
00045 };
00046 IspyState state;
00048 std::string script;
00049 Direction dir;
00050
00051 };
00052
00053 #endif
00054
00055