Advertisement
Mr-A

A-Engine <main> v0.03

Dec 18th, 2013
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.83 KB | None | 0 0
  1. #define GL_GLEXT_PROTOTYPES
  2. #define GLEW_STATIC
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <math.h>
  6. #include <stdlib.h>
  7. #include <time.h>
  8. #include <string>
  9. #include <vector>
  10. #include <fstream>
  11. #include <sstream>
  12. #include <GL/glew.h>
  13. #include "SDL.h"
  14. #include "SDL_image.h"
  15. //#include <GL/glext.h>
  16. #include "SDL_opengl.h"
  17. #include "globals.h"
  18. #include "Object.h"
  19. #include <typeinfo>
  20.  
  21.  
  22.  
  23.  
  24. struct comp_by_zpos
  25. {
  26.     bool operator() (const objcopy lhs, const objcopy rhs) { return lhs.posz < rhs.posz; }
  27. };
  28.  
  29. int main( int argc, char* args[] )
  30. {
  31.  
  32.     //Start SDL
  33.     SDL_Init( SDL_INIT_EVERYTHING );
  34.  
  35.  
  36.     //SDL_Surface *MainSurf  = NULL; //SDL 1.2
  37.     SDL_Event event;
  38.     A_UP=false; A_DOWN=false; A_LEFT=false; A_RIGHT=false; A_ATTACK=false; A_JUMP=false; A_DEFEND=false; A_SPECIAL=false;
  39.    
  40.     SDL_Window *MainSurf = SDL_CreateWindow(CAPT, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SFWIDTH, SFHEIGHT, SDL_WINDOW_OPENGL);
  41.  
  42.  
  43.     //ini OPENGL
  44.     SDL_GL_CreateContext(MainSurf);
  45.     glMatrixMode( GL_PROJECTION);
  46.     glLoadIdentity();
  47.  
  48.     glClearColor( 0.f, 0.f, 0.f, 1.f);
  49.    
  50.     glEnable( GL_TEXTURE_2D );
  51.     glViewport(0, 0, SFWIDTH, SFHEIGHT);
  52.     glOrtho(0.0f, SFWIDTH, SFHEIGHT, 0.0f, -1.0f, 1.0f);
  53.     glMatrixMode( GL_MODELVIEW );
  54.     glLoadIdentity();
  55.     glEnable( GL_BLEND ); glDisable( GL_DEPTH_TEST ); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );        
  56.                        //SDL_SetWindowFullscreen(MainSurf, (255, 255, 255));      
  57.                        //SDL_SetWindowFullscreen(MainSurf, (255, 255, 255));    
  58.     LOAD LOADED(LOADTXTDIR, LOADTOKEN);
  59.     LOADED.LoadOBJ();
  60.     background A_Field(570, 180, 30, 964, "punkhazard1.bmp", "shadow.bmp");
  61.     //background A_Field(445, 310, 30, 964, "sand.bmp", "shadow.bmp");
  62.     //SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");  // make the scaled rendering look smoother.
  63.     //SDL_RenderSetLogicalSize(MainRend, SFWIDTH, SFHEIGHT);
  64.  
  65.     //MainSurf = SDL_SetVideoMode( SFWIDTH, SFHEIGHT, 24, SDL_HWSURFACE|SDL_DOUBLEBUF); //SDL 1.2
  66.     //SDL_WM_SetCaption( CAPT, NULL ); //SDL 1.2
  67.     SDL_Surface *upperscreen= SDL_LoadBMP("sys\\bar.BMP");
  68.     //SDL_Rect barspos[8]={{0,0,0,0},{240,0,0,0}, {480,0,0,0},{720,0,0,0},{0,60,0,0},{240,60,0,0},{480,60,0,0},{720,60,0,0}};
  69.     const Uint8 *keystates = SDL_GetKeyboardState(NULL);
  70.     int countahframe = SDL_GetTicks();
  71.  
  72.     while (RUNNING == true){
  73.         //for (int i=0;i<8;i++) SDL_BlitSurface (upperscreen, NULL, MainSurf, &barspos[i]);
  74.          
  75.           A_Field.Blit();
  76.           for (int x=0;x < LOADED.ON_SCREEN_OBJCOUNT;x++){
  77.               //SDL_PumpEvents();
  78.               //Check control states
  79.               A_RIGHT = keystates[ SDL_SCANCODE_RIGHT ];
  80.               A_LEFT = keystates[ SDL_SCANCODE_LEFT ];
  81.               A_UP = keystates[ SDL_SCANCODE_UP ];
  82.               A_DOWN = keystates[ SDL_SCANCODE_DOWN ];
  83.               A_ATTACK = keystates[ SDL_SCANCODE_C ];
  84.               A_DEFEND = keystates[ SDL_SCANCODE_X ];
  85.               A_JUMP = keystates[ SDL_SCANCODE_Z ];
  86.               A_SPECIAL = keystates[ SDL_SCANCODE_V ];
  87.              
  88.               if (keystates[ SDL_SCANCODE_F1 ]) {PAUSE=!PAUSE;Sleep(90);}
  89.               //end;
  90.                  if (A_UP && !LOADED.ON_SCREEN_OBJS[x]->iscom){
  91.                     if (LOADED.ON_SCREEN_OBJS[x]->P_UP_C) LOADED.ON_SCREEN_OBJS[x]->P_UP_C=false;
  92.                     if (LOADED.ON_SCREEN_OBJS[x]->Tu) {LOADED.ON_SCREEN_OBJS[x]->P_UP_C=true; LOADED.ON_SCREEN_OBJS[x]->Tu=false;}
  93.                     LOADED.ON_SCREEN_OBJS[x]->P_UP= true; LOADED.ON_SCREEN_OBJS[x]->P_DOWN= false;LOADED.ON_SCREEN_OBJS[x]->DASHL=0;LOADED.ON_SCREEN_OBJS[x]->DASHR=0;
  94.                 }else{
  95.                     LOADED.ON_SCREEN_OBJS[x]->Tu=true;
  96.                     LOADED.ON_SCREEN_OBJS[x]->P_UP= false;
  97.                 }
  98.                
  99.                if (A_DOWN && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  100.                 if (LOADED.ON_SCREEN_OBJS[x]->P_DOWN_C) LOADED.ON_SCREEN_OBJS[x]->P_DOWN_C=false;
  101.                     if (LOADED.ON_SCREEN_OBJS[x]->Td) {LOADED.ON_SCREEN_OBJS[x]->P_DOWN_C=true; LOADED.ON_SCREEN_OBJS[x]->Td=false;}
  102.                     LOADED.ON_SCREEN_OBJS[x]->P_DOWN= true; LOADED.ON_SCREEN_OBJS[x]->P_UP=false;LOADED.ON_SCREEN_OBJS[x]->DASHL=0;LOADED.ON_SCREEN_OBJS[x]->DASHR=0;
  103.                    }else{
  104.                     LOADED.ON_SCREEN_OBJS[x]->Td=true;
  105.                     LOADED.ON_SCREEN_OBJS[x]->P_DOWN= false;
  106.                    }
  107.                
  108.                if (A_LEFT && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  109.                 if (LOADED.ON_SCREEN_OBJS[x]->P_LEFT_C) LOADED.ON_SCREEN_OBJS[x]->P_LEFT_C=false;
  110.                     if (LOADED.ON_SCREEN_OBJS[x]->Tl) {LOADED.ON_SCREEN_OBJS[x]->P_LEFT_C=true; LOADED.ON_SCREEN_OBJS[x]->Tl=false;}
  111.                     LOADED.ON_SCREEN_OBJS[x]->P_LEFT= true; LOADED.ON_SCREEN_OBJS[x]->P_RIGHT=false;LOADED.ON_SCREEN_OBJS[x]->DshClksIntrvlL=SDL_GetTicks();LOADED.ON_SCREEN_OBJS[x]->DshClksIntrvlR=0;LOADED.ON_SCREEN_OBJS[x]->DASHR=0;
  112.                    }else if (!A_LEFT && LOADED.ON_SCREEN_OBJS[x]->P_LEFT){
  113.                     LOADED.ON_SCREEN_OBJS[x]->Tl=true;
  114.                     LOADED.ON_SCREEN_OBJS[x]->P_LEFT= false;
  115.                     if (!LOADED.ON_SCREEN_OBJS[x]->P_LEFT)if (SDL_GetTicks()-LOADED.ON_SCREEN_OBJS[x]->DshClksIntrvlL<110)LOADED.ON_SCREEN_OBJS[x]->DASHL=1;LOADED.ON_SCREEN_OBJS[x]->DASHR=0;
  116.                    }
  117.                
  118.                if (A_RIGHT && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  119.                 if (LOADED.ON_SCREEN_OBJS[x]->P_RIGHT_C) LOADED.ON_SCREEN_OBJS[x]->P_RIGHT_C=false;
  120.                     if (LOADED.ON_SCREEN_OBJS[x]->Tr) {LOADED.ON_SCREEN_OBJS[x]->P_RIGHT_C=true; LOADED.ON_SCREEN_OBJS[x]->Tr=false;}
  121.                     LOADED.ON_SCREEN_OBJS[x]->P_RIGHT=true; LOADED.ON_SCREEN_OBJS[x]->P_LEFT=false;LOADED.ON_SCREEN_OBJS[x]->DshClksIntrvlR=SDL_GetTicks();LOADED.ON_SCREEN_OBJS[x]->DshClksIntrvlL=0;LOADED.ON_SCREEN_OBJS[x]->DASHL=0;
  122.                     }else if (!A_RIGHT && LOADED.ON_SCREEN_OBJS[x]->P_RIGHT){
  123.                         LOADED.ON_SCREEN_OBJS[x]->Tr=true;
  124.                         LOADED.ON_SCREEN_OBJS[x]->P_RIGHT=false;
  125.                         if(!LOADED.ON_SCREEN_OBJS[x]->P_RIGHT)if (SDL_GetTicks()-LOADED.ON_SCREEN_OBJS[x]->DshClksIntrvlR<110)LOADED.ON_SCREEN_OBJS[x]->DASHR=1;LOADED.ON_SCREEN_OBJS[x]->DASHL=0;
  126.  
  127.                     }
  128.  
  129.                if ( A_ATTACK && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  130.                 if (LOADED.ON_SCREEN_OBJS[x]->P_ATTACK_C) LOADED.ON_SCREEN_OBJS[x]->P_ATTACK_C=false;
  131.                     if (LOADED.ON_SCREEN_OBJS[x]->TA) {LOADED.ON_SCREEN_OBJS[x]->P_ATTACK_C=true; LOADED.ON_SCREEN_OBJS[x]->TA=false;}
  132.                     LOADED.ON_SCREEN_OBJS[x]->P_ATTACK=true;
  133.                        }else{
  134.                         LOADED.ON_SCREEN_OBJS[x]->TA=true;
  135.                         LOADED.ON_SCREEN_OBJS[x]->P_ATTACK=false;
  136.                        }
  137.          
  138.  
  139.                if (A_DEFEND && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  140.                 if (LOADED.ON_SCREEN_OBJS[x]->P_DEFEND_C) LOADED.ON_SCREEN_OBJS[x]->P_DEFEND_C=false;
  141.                     if (LOADED.ON_SCREEN_OBJS[x]->TD) {LOADED.ON_SCREEN_OBJS[x]->P_DEFEND_C=true; LOADED.ON_SCREEN_OBJS[x]->TD=false;}
  142.                     LOADED.ON_SCREEN_OBJS[x]->P_DEFEND=true;
  143.                        }else{
  144.                         LOADED.ON_SCREEN_OBJS[x]->TD=true;
  145.                         LOADED.ON_SCREEN_OBJS[x]->P_DEFEND=false;
  146.                        }
  147.                                                            
  148.  
  149.                if ( A_JUMP && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  150.                 if (LOADED.ON_SCREEN_OBJS[x]->P_JUMP_C) LOADED.ON_SCREEN_OBJS[x]->P_JUMP_C=false;
  151.                     if (LOADED.ON_SCREEN_OBJS[x]->TJ) {LOADED.ON_SCREEN_OBJS[x]->P_JUMP_C=true; LOADED.ON_SCREEN_OBJS[x]->TJ=false;}
  152.                     LOADED.ON_SCREEN_OBJS[x]->P_JUMP=true;
  153.                        }else{
  154.                         LOADED.ON_SCREEN_OBJS[x]->TJ=true;
  155.                         LOADED.ON_SCREEN_OBJS[x]->P_JUMP=false;
  156.                        }
  157.          
  158.  
  159.                if ( A_SPECIAL && !LOADED.ON_SCREEN_OBJS[x]->iscom ){
  160.                 if (LOADED.ON_SCREEN_OBJS[x]->P_SPECIAL_C) LOADED.ON_SCREEN_OBJS[x]->P_SPECIAL_C=false;
  161.                     if (LOADED.ON_SCREEN_OBJS[x]->TS) {LOADED.ON_SCREEN_OBJS[x]->P_SPECIAL_C=true; LOADED.ON_SCREEN_OBJS[x]->TS=false;}
  162.                     LOADED.ON_SCREEN_OBJS[x]->P_SPECIAL=true;                                      
  163.                 }else{
  164.                     LOADED.ON_SCREEN_OBJS[x]->TS=true;
  165.                     LOADED.ON_SCREEN_OBJS[x]->P_SPECIAL=false;  
  166.                 }
  167.                
  168.              
  169.              
  170.               if( SDL_PollEvent(&event)){
  171.                    
  172.  
  173.                      if (event.type == SDL_QUIT){
  174.                                    RUNNING = false;
  175.                      }
  176.               }
  177.    
  178.         if (LOADED.ON_SCREEN_OBJS[x]->deleteobj==false){
  179.             if (!PAUSE)
  180.         LOADED.OBJECTS[LOADED.ON_SCREEN_OBJS[x]->id].Update(A_Field, &LOADED, LOADED.ON_SCREEN_OBJS[x]);
  181.         LOADED.OBJECTS[LOADED.ON_SCREEN_OBJS[x]->id].BlitShadow(A_Field, LOADED.ON_SCREEN_OBJS[x]);
  182.        
  183.     }
  184.         }
  185.         if ( (SDL_GetTicks()-countahframe) < (1000/FPS) )
  186.                          {SDL_Delay((1000/FPS) - (SDL_GetTicks()-countahframe));SDL_SetWindowTitle(MainSurf, (stringify(1000/(SDL_GetTicks()-countahframe)).c_str()));}
  187.                          else{
  188.                             SDL_SetWindowTitle(MainSurf, (stringify(1000/(SDL_GetTicks()-countahframe)).c_str()));
  189.                          }
  190.         countahframe = SDL_GetTicks();
  191.         //
  192.        
  193.        
  194.        
  195.  
  196.         for (int a=LOADED.ON_SCREEN_OBJCOUNT-1; a >=0; a--){
  197.            
  198.             if (LOADED.ON_SCREEN_REAL_OBJS[a].deleteobj==true && LOADED.ON_SCREEN_REAL_OBJS[a].deleted==false){
  199.                 LOADED.DELETED_OBJS[LOADED.D_O_INDEX++]=a;  LOADED.ON_SCREEN_REAL_OBJS[a].deleted=true;
  200.  
  201.             }
  202.         }
  203.         for (int a=0; a <= SFHEIGHT; a++){
  204.             for (int b=0; b<LOADED.ON_SCREEN_OBJCOUNT;b++){
  205.                 if ( LOADED.ON_SCREEN_OBJS[b]->posz == a && LOADED.ON_SCREEN_OBJS[b]->deleteobj==false) LOADED.OBJECTS[LOADED.ON_SCREEN_OBJS[b]->id].Blit(A_Field, LOADED.ON_SCREEN_OBJS[b], &LOADED);
  206.             }
  207.         }
  208.        
  209.  
  210.         //SDL_SetRenderDrawColor(MainRend, 0, 255, 0, 55);
  211.         //SDL_RenderPresent(MainRend);
  212.         //SDL_RenderClear(MainRend);
  213.         SDL_GL_SwapWindow(MainSurf);
  214.        
  215.         //
  216.        
  217.  
  218.         //SDL_Flip( MainSurf );  //SDL 1.2
  219.         //SDL_FillRect( MainSurf, NULL, SDL_MapRGB( MainSurf->format, 0x00, 0x00, 0x00 ) );   //SDL 1.2
  220.        
  221.         //std::sort(*(LOADED.ON_SCREEN_OBJS).begin(), *(LOADED.ON_SCREEN_OBJS).begin()+LOADED.ON_SCREEN_OBJCOUNT, comp_by_zpos());
  222.  
  223.    
  224.  
  225.     }
  226.  
  227.    
  228.  
  229.    
  230.     SDL_Quit();
  231.    
  232.     return 0;    
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement