00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_GLWPlanViewh_INCLUDE__)
00022 #define __INCLUDE_GLWPlanViewh_INCLUDE__
00023
00024 #include <GLW/GLWidget.h>
00025 #include <GLEXT/GLTexture.h>
00026 #include <common/Vector.h>
00027 #include <list>
00028 #include <map>
00029
00030 class GLWPlanView : public GLWidget
00031 {
00032 public:
00033 GLWPlanView(float x = 0.0f, float y = 0.0f,
00034 float w = 0.0f, float h = 0.0f);
00035 virtual ~GLWPlanView();
00036
00037 virtual void simulate(float frameTime);
00038 virtual void mouseDown(int button, float x, float y, bool &skipRest);
00039 virtual void mouseDrag(int button, float mx, float my, float x, float y, bool &skipRest);
00040 virtual void mouseUp(int button, float x, float y, bool &skipRest);
00041 virtual void draw();
00042
00043 void addRecievePoints(unsigned int playerId, std::list<Vector> &recievepoints);
00044
00045 REGISTER_CLASS_HEADER(GLWPlanView);
00046
00047 protected:
00048 struct PlayerDrawnInfo
00049 {
00050 unsigned int playerId;
00051 std::list<Vector> points;
00052 std::list<Vector> recievepoints;
00053 };
00054
00055 GLTexture arrowTex_, tankTex_, circleTex_;
00056 float arenaX_, arenaY_, arenaWidth_, arenaHeight_;
00057 float landscapeWidth_, landscapeHeight_;
00058 float animationTime_;
00059 float flashTime_;
00060 float totalTime_;
00061 float pointTime_;
00062 float planColor_;
00063 bool flash_, firstTime_;
00064 bool dragging_;
00065 float dragLastX_, dragLastY_;
00066 PlayerDrawnInfo localPoints_;
00067 std::list<PlayerDrawnInfo> dragPoints_;
00068 std::list<Vector> sendPoints;
00069
00070 void drawMap();
00071 void drawTexture();
00072 void drawWall();
00073 void drawCameraPointer();
00074 void drawTanks();
00075 void drawLines();
00076 void drawLine(PlayerDrawnInfo &info);
00077 void drawBuoys();
00078 bool simulateLine(PlayerDrawnInfo &info);
00079
00080 };
00081
00082 #endif