00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00013 #ifndef __bridgeGUI_H__
00014 #define __bridgeGUI_H__
00015
00016 #include "opengl.h"
00017 #include "structures.h"
00018 #include "world.h"
00019 #include "bridge.h"
00020
00022 #define EDGE_MAX_LENGTH 9.0
00023
00025 #define DEFAULT_BRIDGE "data/example.brg"
00026
00028 #define DEFAULT_TRAIN "data/sbahn.trn"
00029
00031 #define SAVE_BRIDGE_1 "data/save1.brg"
00032
00034 #define SAVE_BRIDGE_2 "data/save2.brg"
00035
00037 #define SAVE_BRIDGE_3 "data/save3.brg"
00038
00040 #define SAVE_BRIDGE_4 "data/save4.brg"
00041
00045 class BridgeGUI {
00046 private:
00047 World *world;
00048 int windowWidth, windowHeight;
00049 int scrollBorder;
00050 int lastScrollTime;
00051
00052 vector2 viewPos, viewSize;
00053 int viewLeftBound, viewRightBound;
00054 vector2 cursor;
00055
00056 int selVertex, selEdge;
00057 int drawVertex;
00058
00059
00060 GLuint *gltexture;
00061
00062
00063 enum appMode {initMode = 0, designMode = 1, simMode = 2, trainMode = 3};
00064 appMode mode;
00065
00067 void initTextures();
00068
00075 void setHSVcolor(float h, float s, float v);
00076
00082 vector2 getPos(int x, int y);
00083
00088 vector2 roundPos(const vector2 &v);
00089
00094 void doMouseDetection(int x, int y);
00095
00100 void initGL(int Width, int Height);
00101
00105 void drawGLScene();
00106
00110 int handleEvents();
00111
00112 public:
00117 BridgeGUI(World *w): world(w) {}
00118
00127 void run(int width, int height, bool fullScreen, char *bridgeFile, char *trainFile);
00128 };
00129
00130 #endif