Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

FrontCamera.h

Go to the documentation of this file.
00001 
00002 /*
00003     TSGL - Teddy Space Game Library
00004     Copyright (C) 2002 Timo Suoranta
00005     tksuoran@cc.helsinki.fi
00006 
00007     This library is free software; you can redistribute it and/or
00008     modify it under the terms of the GNU Lesser General Public
00009     License as published by the Free Software Foundation; either
00010     version 2.1 of the License, or (at your option) any later version.
00011 
00012     This library is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015     Lesser General Public License for more details.
00016 
00017     You should have received a copy of the GNU Lesser General Public
00018     License along with this library; if not, write to the Free Software
00019     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020 
00021     $Id: FrontCamera.h,v 1.1 2002/01/08 20:47:05 tksuoran Exp $
00022 */
00023 
00024 
00025 #ifndef TEDDY__SPACE_GAME__FRONT_CAMERA_H
00026 #define TEDDY__SPACE_GAME__FRONT_CAMERA_H
00027 
00028 
00029 #include "Teddy/PhysicalComponents/EventListener.h"
00030 #include "Teddy/PhysicalComponents/Projection.h"
00031 
00032 
00033 //  Forward declarations
00034 namespace Teddy {
00035  namespace Scenes             { class Camera;      };
00036  namespace PhysicalComponents { class Label;       };
00037  namespace PhysicalComponents { class WindowFrame; };
00038 };
00039 using namespace Teddy::PhysicalComponents;
00040 using namespace Teddy::Scenes;
00041 
00042 
00043 namespace Teddy     {
00044 namespace SpaceGame {
00045 
00046 
00047 class Root;
00048 class PlayerShip;
00049 
00050 
00057 class FrontCamera : public Projection, public EventListener {
00058 public:
00059     FrontCamera( const char *name, Camera *camera, Root *root, LayoutConstraint *lc, bool frame );
00060     virtual ~FrontCamera();
00061 
00062     virtual void  drawSelf();
00063 
00064     //  FocusListener interface
00065     virtual void  focusActive( const bool active );
00066 
00067     //  MouseListener interface
00068     virtual void  mouseKey   ( const int button, const int state, const int x, const int y );
00069     virtual void  mouseMotion( const int x, const int y, const int dx, const int dy );
00070 
00071     virtual Area *getTarget  ( const Event e ) const;
00072     
00073     //  KeyListener interface
00074     virtual void  keyDown    ( const SDL_keysym key );
00075     virtual void  keyUp      ( const SDL_keysym key );
00076 
00077 protected:
00078     Root        *root;
00079     WindowFrame *window_frame;
00080     PlayerShip  *player_ship;
00081     Label       *title;
00082     int          mouse_drag_x [4];
00083     int          mouse_drag_y [4];
00084     int          mouse_click_x[4];
00085     int          mouse_click_y[4];
00086     int          mouse_b      [4];
00087     static bool  keys[SDLK_LAST+1];
00088 };
00089 
00090 
00091 };  //  namespace SpaceGame
00092 };  //  namespace Teddy
00093 
00094 
00095 #endif  //  TEDDY__SPACE_GAME__FRONT_CAMERA_H
00096