ICT290 / src / ShaysWorld / main.h
main.h
Raw
#pragma once
#include "../glIncludes.h"

#include <cmath>
#include <ctime>

// private dependencies, shouldn't be directly accessible to client
//#include <windows.h> // only used if mouse is required (not portable)
#include "camera.h"
#include "texturedPolygons.h"

namespace ShaysWorld {
    // USE THESE STTEINGS TO CHANGE SPEED (on different spec computers)
    // Set speed (steps)
    extern GLdouble movementSpeed;
    extern GLdouble rotationSpeed;

    extern GLdouble stepIncrement;
    extern GLdouble angleIncrement;
    extern int frameCount;
    extern clock_t lastClock;

    // ratio of screen
    extern float ratio;
    // screen width and height
    extern int width, height;

    // display campus map
    extern bool DisplayMap;
    // display welcome screen
    extern bool DisplayWelcome;
    // display exit screen
    extern bool DisplayExit;
    // display light fittings
    extern bool lightsOn;
    // display ECL block
    extern bool displayECL;

    // varibles used for tarnslating graphics etc
    extern GLdouble step, step2, stepLength;

    // Glut Cylinder
    // extern GLUquadricObj* glu_cylinder;

    // Stores raw image file
    extern unsigned char* image;

    // objects
    extern Camera cam;
    extern TexturedPolygons tp;

    // initializes setting
    void myinit(int, int);

    // display functions
    void Display();
    void keys(unsigned char key, int x, int y);

    // calls display functions below to draw the backdrops
    void DrawBackdrop();
    // functions to display display lists (images) and bind them to a texture
    void DisplayAboveWindowBlock();
    void DisplayBench();
    void DisplayBricks();
    void DisplayChancPosts();
    void DisplayCylinders();
    void DisplayDoorPaving();
    void DisplayDoorPosts();
    void DisplayEntranceSteps();
    void DisplayExtras();
    void DisplayGrass();
    void DisplayLargerTextures();
    void DisplayLibraryPosts();
    void DisplayMainPosts();
    void DisplayPavement();
    void DisplayPhysSciPosts();
    void DisplayPurplePosts();
    void DisplayRedPosts();
    void DisplayRoof();
    void DisplayStepBricks();
    void DisplayLights();
    void DisplayECL();

    // calls functions to create display lists (below)
    void CreateTextureList();
    // creates display lists
    void DrawGrass();
    void DrawChancPosts();
    void DrawDoorPosts();
    void DrawPurplePosts();
    void DrawRedPosts();
    void DrawMainPosts();
    void DrawAboveWindowBlock();
    void DrawDoorPaving();
    void DrawPhysSciPosts();
    void DrawLibraryPosts();
    void DrawBricks();
    void DrawPavement();
    void DrawExtras();
    void DrawRoof();
    void DrawEntranceSteps();
    void DrawLargerTextures();
    void DrawLights();
    void DrawBench();
    void DrawCylinders();
    void DrawAngledRoofBeam(int listNo,
                            GLdouble x,
                            GLdouble y,
                            GLdouble z,
                            GLdouble beamSize);
    void DrawAngledRoofBeam2(int listNo,
                             GLdouble x,
                             GLdouble y,
                             GLdouble z,
                             GLdouble beamSize);
    void DrawStepBricks();
    void DrawMapExit();
    void DrawECL();

    void BindBridgeWall(GLint LR);
    void BindBuildingWall();
    void BindWallPosts(GLint LR);

    // loads images and creates texture
    void CreateTextures();
    // creates bounding boxes for collsion detection
    void CreateBoundingBoxes();
    // creates different planes
    void CreatePlanes();

    // deletes image and clears memory
    void DeleteImageFromMemory(unsigned char* tempImage);
}  // namespace ShaysWorld