Small header file queston ...

view full story

http://www.daniweb.com – hello , I am making a small game engine and I have 2 header files engine.h and objects.h they both include each other. However it seems that its not getting included into objects.h , what is the "right" way to fix this ? sorry , I'm too lazy to gut out my code to make it more readable engine.h #ifndef ENGIN_H_INCLUDED #define ENGIN_H_INCLUDED using namespace std; #include <SDL.h> #include <SDL_image.h> #include <SDL_mixer.h> #include <SDL_ttf.h> #include <math.h> #include <cstdio> #include <cstring> #include <fstream> #include <iostream> #include <stdlib.h> #include <string> #include <time.h> #include "objects.h" using namespace std; /// user //Surface Copy void drip_blit( float x, float y, SDL_Surface* source, SDL_Surface* destination ); //Render text enum textquality { solid, shaded, blended }; SDL_Surface * drip_draw_text(TTF_Font *fonttodraw, string texts, int fgR, int fgG, int fgB,int fgA , int bgR, int bgG, int bgB, int bgA, textquality quality); // Load unsigned int drip_load_font(string file, int ptsize); unsigned int drip_load_image(string file); unsigned drip_load_music(string file); unsigned drip_load_sound(string file); // Get SDL_Surface * drip_get_image(unsigned int img_num); Mix_Music * drip_get_music(unsigned int mus_num); Mix_Chunk * drip_get_sound(unsigned int snd_num); TTF_Font * drip_get_font(unsigned int font_num); // Music/Sound void drip_play_music(unsigned int pos,int loopn);// 1- = forever 0=1 1=2 etc void drip_stop_music(); void drip_pause_music(); void drip_unpause_music(); void drip_music_position(double pos); void drip_play_sound(unsigned int pos); void drip_stop_sound(); void drip_pause_sound(); void drip_unpause_sound(); void drip_fadeout_sound(float seconds); // collisions int drip_rect_collide(SDL_Rect a , SDL_Rect b); unsigned int drip_rect_collide_all(SDL_Rect rect,unsigned self); int drip_get_distance(int x1,int y1,int x2,int y2); unsigned int drip_rect_collide_circle(int radius,int x1 ,int y1,unsigned self); // random void drip_randomize(); int drip_random(int low , int high); // xlength & ylength for moving in directions - what else do you name them ? (super_ultral_directiony_move_thinga_ma_jig) float xlength(float direction,float length); float ylength(float direction,float length); // map / file string drip_map_process(string data); void drip_file_write(char file[255],string data); string drip_file_load(char filen[255]);//standard text string drip_map_rawload(char filen[255]); // output in map format string drip_string_copy(string str,int pos1,int pos2); string drip_map_extract(string mapdata,int num); void drip_map_exec(string cmddata); void drip_map_execute(string mapdata); string drip_map_load(string file); /// System // Start the system SDL_Surface * init(char caption[255],int width , int height , int soundvoulme , int musicvolume); // load up all the system resources bool load(); // update objects void update(SDL_Surface * screen); // quit game and free resources void quit(); #endif // ENGIN_H_INCLUDED objects.h #include <SDL.h> #include "SDL_image.h" #include "SDL_mixer.h" #include "SDL_ttf.h" #include "SDL_rotozoom.h" #include <cstdio> #include <cmath> #include <vector> #include <iostream> #include "engine.h" // not working ??? #include "engine.h" #ifndef OBJECTS_H_INCLUDED #define OBJECTS_H_INCLUDED using namespace std; class game_object; namespace var {     extern vector<game_object*> _objects_;     extern vector<SDL_Surface*> _img_;     extern vector<TTF_Font*> _font_;     extern vector<Mix_Chunk*> _sound_;     extern vector<Mix_Music*> _music_;     // gameplay     extern int trigger[33];     extern float delta;     // settings     extern bool quit;     extern bool pause;     extern int sound_volume;     extern int music_volume;     extern string error[2];     extern int errorlevel;     // screen     extern int x;     extern int y;     extern int width;     extern int height;     // misc     extern string data_dir;     extern SDL_PixelFormat * format; } class game_object {     public:     SDL_Surface* sprite;     SDL_Rect rect;     std::string type[3];// name , group , controller     float x;     float y;     int z;     unsigned int self;     bool visable; // draw ?     bool solid; // check for collisions ?     bool remove; // kill it ?     bool center; // draw sprite centered ?     game_object()     {     }     virtual void update()     {     }     std::string get_type(int typen)     {         if (typen==0)             return type[0];         if (typen==1)             return type[1];         if (typen==2)             return type[2];     }     SDL_Surface * get_sprite()     {         return sprite;     }     SDL_Rect get_rect()     {         return rect;     } }; /// map objects class tile : public game_object {     public:     tile(float xx,float yy,int zz,unsigned int image_num)     {         x=xx;         y=yy;         z=zz;         sprite=drip_get_image(image_num);         visable=1;         solid=0;         remove=0;         center=0;         type[0]="tile";         type[1]="non-solid";         type[2]="none";         rect.w=sprite->w;         rect.h=sprite->h;         rect.x=x;         rect.y=y;     }     virtual void update()     {     } }; class player : public game_object {     public:     float direction;     float angle;     float speed;     float dspeed;     int maxspeed;     int turn;     float friction;     float acceleration;     SDL_Surface * oldsprite;     player(float xx,float yy,int zz,unsigned int image_num)     {         x=xx;         y=yy;         z=zz;         direction=90;         oldsprite=rotozoomSurface(drip_get_image(image_num),270,1,0); // change image to match with start angle         angle=direction;         speed=0;         dspeed=0;         maxspeed=2;         friction=.0075;         acceleration=.12;         turn=200;         visable=1;         solid=0;         remove=0;         center=1;         type[0]="tile";         type[1]="non-solid";         type[2]="none";         rect.w=sprite->w;         rect.h=sprite->h;         rect.x=x;         rect.y=y;     }     virtual void update()     {         // move         //speed=100;         //dspeed=speed * ( var::delta / 100.f );         sprite=rotozoomSurface(oldsprite,angle,1,0);         x+=xlength(direction,speed);         y+=ylength(direction,speed);         rect.x=x;         rect.y=y;         var::x=x-var::width/2;         var::y=y-var::height/2;         if (speed < 1)           speed-=friction;         if (speed > 0)           speed-=friction;         if (speed < 0)           speed=0;         Uint8 *keystate = SDL_GetKeyState(NULL);         if ( keystate[SDLK_LEFT] )         {             angle+=1;         }         if ( keystate[SDLK_RIGHT] )         {             angle-=1;         }         if ( keystate[SDLK_UP] )         {             speed+=acceleration;// * ( var::delta / 1000.f );             if (direction > angle)                 direction-=2;             else                 direction+=2;         }         if ( keystate[SDLK_HOME] )         {             x=0;             y=0;         }         if ( keystate[SDLK_END] )         {             speed=0;             direction=0;             angle=0;         }         if (angle > direction+360)             direction+=360;         if (angle < direction-360)             direction-=360;         if (speed > maxspeed)             speed=maxspeed;     } }; #endif // OBJECTS_H_INCLUDED (General)