Advertisement
Mr-A

A-Engine <main.cpp> v0.07

Aug 5th, 2014
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.53 KB | None | 0 0
  1. //==========main.cpp===========
  2. #define GL_GLEXT_PROTOTYPES
  3. #define GLEW_STATIC
  4.  
  5. #include <iostream>
  6. #include <algorithm>
  7. #include <math.h>
  8. #include <stdlib.h>
  9. #include <time.h>
  10. #include <string>
  11. #include <vector>
  12. #include <fstream>
  13. #include <sstream>
  14. #include "SDL.h"
  15. #include "SDL_image.h"
  16. //#include <GL/glext.h>
  17. #include "SDL_opengl.h"
  18. #include "globals.h"
  19. #include "Object.h"
  20. #include "Interface.h"
  21. #include "AI.h"
  22. #include <typeinfo>
  23. #include "Eval.h"
  24.  
  25. bool A_UP, A_DOWN, A_LEFT, A_RIGHT, A_ATTACK, A_JUMP, A_DEFEND, A_SPECIAL;   //key presses
  26. SDL_Event event;
  27. bool RUNNING = true;
  28. std::string OBJECTSTOLOAD= "";
  29. int PLAYER1CONTROLS[]= {82, 81, 80, 79, 6, 27, 29, 25};
  30. int PLAYER2CONTROLS[]= {12, 14, 13, 15, 8, 26, 20, 21};
  31. bool PAUSE=false;
  32. bool FULL_SCREEN=false;
  33. char* CAPT = "A-Engine";
  34.  
  35. struct comp_by_zpos
  36. {
  37.     //bool operator() (const objcopy * lhs, const objcopy * rhs) { return lhs->posz < rhs->posz; }
  38.     bool operator() (const objcopy * lhs, const objcopy * rhs)
  39.     {
  40.         if (lhs->rndrbackid!=4321 && rhs->rndrbackid!=4321)
  41.         {
  42.             if (lhs->deleteobj)
  43.                 return true;
  44.             else if (rhs->deleteobj)
  45.                 return false;
  46.             if (lhs->rndrngpriority!=rhs->rndrngpriority)
  47.             {
  48.                 return lhs->rndrngpriority > rhs->rndrngpriority;
  49.             }
  50.             else
  51.             {
  52.                 return lhs->posz <= rhs->posz;
  53.             }
  54.         }
  55.         if (lhs->rndrbackid!=4321) return false;
  56.         if (rhs->rndrbackid!=4321) return true;
  57.  
  58.         if (lhs->deleteobj&&rhs->deleteobj) return false;
  59.         if (lhs->deleteobj) return false;
  60.         if (rhs->deleteobj) return true;
  61.         if (lhs->rndrngpriority!=rhs->rndrngpriority)
  62.         {
  63.             return lhs->rndrngpriority > rhs->rndrngpriority;
  64.         }
  65.         else
  66.         {
  67.             return lhs->posz <= rhs->posz;
  68.         }
  69.     }
  70. };
  71.  
  72. int Menus(SDL_Window * MainSurf, LOAD * LOADED);
  73.  
  74.  
  75.  
  76. /*struct comp_by_zpos{
  77.     bool operator() (const int lhs[2], const int rhs[2]) { return lhs[1] < rhs[1]; }
  78. };*/
  79.  
  80.  
  81.  
  82.  
  83.  
  84. int main(int argc,char* args[])
  85. {
  86.     SDL_Init( SDL_INIT_EVERYTHING );
  87.  
  88.     A_UP=false;
  89.     A_DOWN=false;
  90.     A_LEFT=false;
  91.     A_RIGHT=false;
  92.     A_ATTACK=false;
  93.     A_JUMP=false;
  94.     A_DEFEND=false;
  95.     A_SPECIAL=false;
  96.  
  97.     SDL_Window *MainSurf = SDL_CreateWindow(CAPT, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SFWIDTH, SFHEIGHT, SDL_WINDOW_OPENGL);
  98.  
  99.  
  100.     //ini OPENGL
  101.     SDL_GL_CreateContext(MainSurf);
  102.     glMatrixMode( GL_PROJECTION);
  103.     glLoadIdentity();
  104.     glClearColor( 0.f, 0.f, 0.f, 1.f);
  105.     glEnable( GL_TEXTURE_2D );
  106.     glViewport(0, 0, SFWIDTH, SFHEIGHT);
  107.     glOrtho(0.0f, SFWIDTH, SFHEIGHT, 0.0f, -1.0f, 1.0f);
  108.     glMatrixMode( GL_MODELVIEW );
  109.     glLoadIdentity();
  110.     glEnable( GL_BLEND );
  111.     glDisable( GL_DEPTH_TEST );
  112.     glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
  113.     LoadTxt Load_Txt(LOADTXTDIR);
  114.     //SDL_SetWindowFullscreen(MainSurf, (255, 255, 255));    //fullscreen
  115.     LOAD LOADED;
  116.     LOADED.initHeavy(LOADTXTDIR);
  117.     Menus(MainSurf, &LOADED);
  118.     LOADED.LoadObjsForGame(Load_Txt, OBJECTSTOLOAD, 0, &LOADED);
  119.     LOADED.LoadSettigns_OnScreenObjs();
  120.     AI_Stuff AI;
  121.     //glMatrixMode(GL_PROJECTION);
  122.     //glLoadIdentity();
  123.     //glOrtho( 0, SFWIDTH * 2, SFHEIGHT * 2, 0.0, 1.0, -1.0 );
  124.     /*for (int x=0; x<LOADED.OBJID_INDEX; x++){
  125.         LOADED.OBJECTS[LOADED.IDS[x]].LOADED=&LOADED;
  126.     }*/
  127.     for (int x=1000; x<1011; x++)
  128.     {
  129.         LOADED.OBJECTS[x].LOADED=&LOADED;
  130.     }
  131.  
  132.  
  133.     const Uint8 *keystates = SDL_GetKeyboardState(NULL);
  134.     int countahframe = SDL_GetTicks();
  135.     bool PAUSE=false, PAUSENOW=false, SKIPFRAME=false;
  136.     while (RUNNING == true)
  137.     {
  138.         /*if (!PAUSENOW || (PAUSENOW&&SKIPFRAME)){                          //RENDER BEHIND THE BG
  139.             if (LOADED.OBJSBEHIND_INDEX>0){
  140.                 for (int a=0; a <= SFHEIGHT; a++){
  141.                     for (int b=0; b<LOADED.OBJSBEHIND_INDEX;b++){
  142.                         if (LOADED.OBJSBEHIND[b]!=4321){
  143.                             if ( LOADED.ON_SCREEN_OBJS[LOADED.OBJSBEHIND[b]]->posz == a && LOADED.ON_SCREEN_OBJS[LOADED.OBJSBEHIND[b]]->deleteobj==false)
  144.  
  145.                         }
  146.                     }
  147.                 }
  148.             }
  149.         }*/
  150.  
  151.  
  152.  
  153.         if (!PAUSENOW || (PAUSENOW&&SKIPFRAME))
  154.         {
  155.             for (int b=LOADED.OBJID_INDEX-LOADED.OBJSBEHIND_INDEX; b<LOADED.OBJID_INDEX; b++)
  156.             {
  157.                 if (LOADED.ON_SCREEN_OBJS[b]->deleteobj==false)
  158.                 {
  159.                     LOADED.OBJECTS[LOADED.ON_SCREEN_OBJS[b]->id].Blit(LOADED.ON_SCREEN_OBJS[b]);
  160.                 }
  161.             }
  162.         }
  163.  
  164.         if(!PAUSENOW || (PAUSENOW&&SKIPFRAME)) LOADED.BACKGROUNDS[LOADED.CURRBG].Blit(&LOADED);
  165.         for (int object_copy_indx=0; object_copy_indx < LOADED.ON_SCREEN_OBJCOUNT; object_copy_indx++)
  166.         {
  167.             LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].index=object_copy_indx;
  168.  
  169.  
  170.             switch(LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].playerno)
  171.             {
  172.             case 1:
  173.                 A_RIGHT = keystates[ SDL_SCANCODE_RIGHT ];
  174.                 A_LEFT = keystates[ SDL_SCANCODE_LEFT ];
  175.                 A_UP = keystates[ SDL_SCANCODE_UP ];
  176.                 A_DOWN = keystates[ SDL_SCANCODE_DOWN ];
  177.                 A_ATTACK = keystates[ SDL_SCANCODE_C ];
  178.                 A_DEFEND = keystates[ SDL_SCANCODE_X ];
  179.                 A_JUMP = keystates[ SDL_SCANCODE_Z ];
  180.                 A_SPECIAL = keystates[ SDL_SCANCODE_V ];
  181.                 break;
  182.             case 2:
  183.                 A_RIGHT = keystates[ SDL_SCANCODE_L ];
  184.                 A_LEFT = keystates[ SDL_SCANCODE_J ];
  185.                 A_UP = keystates[ SDL_SCANCODE_I ];
  186.                 A_DOWN = keystates[ SDL_SCANCODE_K ];
  187.                 A_ATTACK = keystates[ SDL_SCANCODE_E ];
  188.                 A_DEFEND = keystates[ SDL_SCANCODE_W ];
  189.                 A_JUMP = keystates[ SDL_SCANCODE_Q ];
  190.                 A_SPECIAL = keystates[ SDL_SCANCODE_R ];
  191.                 break;
  192.             default:
  193.                 A_RIGHT = false;
  194.                 A_LEFT = false;
  195.                 A_UP = false;
  196.                 A_DOWN = false;
  197.                 A_ATTACK = false;
  198.                 A_DEFEND = false;
  199.                 A_JUMP = false;
  200.                 A_SPECIAL = false;
  201.                 break;
  202.             }
  203.  
  204.  
  205.             if (!LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].iscom)
  206.             {
  207.                 if (A_UP)
  208.                 {
  209.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP_C=false;
  210.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tu)
  211.                     {
  212.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP_C=true;
  213.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tu=false;
  214.                     }
  215.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP= true;
  216.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DOWN= false;
  217.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHL=0;
  218.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHR=0;
  219.                 }
  220.                 else
  221.                 {
  222.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tu=true;
  223.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP= false;
  224.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP_C=false;
  225.                 }
  226.  
  227.                 if (A_DOWN)
  228.                 {
  229.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DOWN_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DOWN_C=false;
  230.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Td)
  231.                     {
  232.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DOWN_C=true;
  233.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Td=false;
  234.                     }
  235.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DOWN= true;
  236.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_UP=false;
  237.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHL=0;
  238.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHR=0;
  239.                 }
  240.                 else
  241.                 {
  242.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Td=true;
  243.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DOWN= false;
  244.                 }
  245.  
  246.                 if (A_LEFT)
  247.                 {
  248.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT_C=false;
  249.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tl)
  250.                     {
  251.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT_C=true;
  252.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tl=false;
  253.                     }
  254.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT= true;
  255.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT=false;
  256.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DshClksIntrvlL=SDL_GetTicks();
  257.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DshClksIntrvlR=0;
  258.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHR=0;
  259.                 }
  260.                 else if (!A_LEFT && LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT)
  261.                 {
  262.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tl=true;
  263.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT= false;
  264.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT_C=false;
  265.                     if (!LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT)
  266.                         if (SDL_GetTicks()-LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DshClksIntrvlL<110)
  267.                         {
  268.                             LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHL=1;
  269.                             LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHR=0;
  270.                         }
  271.                 }
  272.  
  273.                 if (A_RIGHT)
  274.                 {
  275.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT_C=false;
  276.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tr)
  277.                     {
  278.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT_C=true;
  279.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tr=false;
  280.                     }
  281.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT=true;
  282.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_LEFT=false;
  283.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DshClksIntrvlR=SDL_GetTicks();
  284.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DshClksIntrvlL=0;
  285.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHL=0;
  286.                 }
  287.                 else if (!A_RIGHT && LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT)
  288.                 {
  289.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].Tr=true;
  290.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT=false;
  291.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT_C=false;
  292.                     if(!LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_RIGHT)
  293.                         if (SDL_GetTicks()-LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DshClksIntrvlR<110)
  294.                         {
  295.                             LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHR=1;
  296.                             LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].DASHL=0;
  297.                         }
  298.  
  299.                 }
  300.  
  301.                 if (A_ATTACK)
  302.                 {
  303.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_ATTACK_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_ATTACK_C=false;
  304.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TA)
  305.                     {
  306.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_ATTACK_C=true;
  307.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TA=false;
  308.                     }
  309.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_ATTACK=true;
  310.                 }
  311.                 else
  312.                 {
  313.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TA=true;
  314.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_ATTACK=false;
  315.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_ATTACK_C=false;
  316.                 }
  317.  
  318.  
  319.                 if (A_DEFEND)
  320.                 {
  321.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DEFEND_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DEFEND_C=false;
  322.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TD)
  323.                     {
  324.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DEFEND_C=true;
  325.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TD=false;
  326.                     }
  327.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DEFEND=true;
  328.                 }
  329.                 else
  330.                 {
  331.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TD=true;
  332.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DEFEND=false;
  333.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_DEFEND_C=false;
  334.                 }
  335.  
  336.  
  337.                 if (A_JUMP)
  338.                 {
  339.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_JUMP_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_JUMP_C=false;
  340.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TJ)
  341.                     {
  342.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_JUMP_C=true;
  343.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TJ=false;
  344.                     }
  345.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_JUMP=true;
  346.                 }
  347.                 else
  348.                 {
  349.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TJ=true;
  350.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_JUMP=false;
  351.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_JUMP_C=false;
  352.                 }
  353.  
  354.  
  355.                 if (A_SPECIAL)
  356.                 {
  357.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_SPECIAL_C) LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_SPECIAL_C=false;
  358.                     if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TS)
  359.                     {
  360.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_SPECIAL_C=true;
  361.                         LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TS=false;
  362.                     }
  363.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_SPECIAL=true;
  364.                 }
  365.                 else
  366.                 {
  367.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].TS=true;
  368.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_SPECIAL=false;
  369.                     LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].P_SPECIAL_C=false;
  370.                 }
  371.             }
  372.  
  373.  
  374.  
  375.             if (LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].iscom)
  376.             {
  377.                 if (AI._current_target==4321)
  378.                 {
  379.                     AI.setTarget(LOADED.ON_SCREEN_OBJS[object_copy_indx], &LOADED);
  380.                 }
  381.                 AI.playAI(&LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx], &LOADED);
  382.             }
  383.  
  384.             if( SDL_PollEvent(&event))
  385.             {
  386.                 if (event.type == SDL_QUIT || keystates[ SDL_SCANCODE_ESCAPE ])
  387.                 {
  388.                     RUNNING = false;
  389.                 }
  390.             }
  391.             LOADED.ON_SCREEN_OBJS[object_copy_indx]=&LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx];
  392.         }
  393.         if (!PAUSENOW || (PAUSENOW&&SKIPFRAME))
  394.         {
  395.             for (int object_copy_indx=0; object_copy_indx<LOADED.ON_SCREEN_OBJCOUNT; object_copy_indx++)    //UPDATING THE STATES AND BLITTING THE SHADOWN
  396.             {
  397.                 if (!LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].deleteobj)
  398.                 {
  399.                     LOADED.OBJECTS[LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].id].UpdateStat(&LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx]);
  400.                 }
  401.             }
  402.             for (int object_copy_indx=0; object_copy_indx<LOADED.ON_SCREEN_OBJCOUNT; object_copy_indx++)   //CHECKING FOR COLLISIONS
  403.             {
  404.                 if (!LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].deleteobj)
  405.                 {
  406.                     LOADED.OBJECTS[LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].id].CheckCollision(&LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx]);
  407.                 }
  408.             }
  409.             for (int object_copy_indx=0; object_copy_indx<LOADED.ON_SCREEN_OBJCOUNT; object_copy_indx++)   //UPDATING THE MOVEMENTS AND VELCOCITIES
  410.             {
  411.                 if (!LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].deleteobj)
  412.                 {
  413.                     LOADED.OBJECTS[LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].id].UpdateMove(&LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx]);
  414.                     LOADED.OBJECTS[LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx].id].BlitShadow(&LOADED.ON_SCREEN_REAL_OBJS[object_copy_indx]);
  415.                 }
  416.             }
  417.         }
  418.         if (!SKIPFRAME)
  419.             if ( (SDL_GetTicks()-countahframe) < (1000/LOADED.FPS) )
  420.             {
  421.                 SDL_Delay((1000/LOADED.FPS) - (SDL_GetTicks()-countahframe));
  422.                 SDL_SetWindowTitle(MainSurf, (stringify(1000/(SDL_GetTicks()-countahframe)).c_str()));
  423.             }
  424.             else
  425.             {
  426.                 SDL_SetWindowTitle(MainSurf, (stringify(1000/(SDL_GetTicks()-countahframe)).c_str()));
  427.             }
  428.         countahframe = SDL_GetTicks();
  429.  
  430.  
  431.         for (int crsid=0; crsid <100; crsid++)
  432.         {
  433.             if (LOADED.CATCHINGIDS[crsid][6]>0 &&LOADED.CATCHINGIDS[crsid][6]!=4321 )
  434.             {
  435.                 LOADED.CATCHINGIDS[crsid][6]=LOADED.CATCHINGIDS[crsid][6]==4321?4321:LOADED.CATCHINGIDS[crsid][6]-1;
  436.             }
  437.         }
  438.  
  439.  
  440.         for (int a=LOADED.ON_SCREEN_OBJCOUNT-1; a >=0; a--)
  441.         {
  442.  
  443.             if (LOADED.ON_SCREEN_REAL_OBJS[a].deleteobj && LOADED.ON_SCREEN_REAL_OBJS[a].deleted==false)
  444.             {
  445.                 if (LOADED.ON_SCREEN_REAL_OBJS[a].rndrbackid!=4321)
  446.                     LOADED.OBJSBEHIND_INDEX--;
  447.                 LOADED.DELETED_OBJS[LOADED.D_O_INDEX++]=a;
  448.                 LOADED.ON_SCREEN_REAL_OBJS[a].deleted=true;
  449.  
  450.             }
  451.         }
  452.  
  453.         std::sort((LOADED.ON_SCREEN_OBJS).begin(), (LOADED.ON_SCREEN_OBJS).begin()+(LOADED.ON_SCREEN_OBJCOUNT), comp_by_zpos());
  454.  
  455.         if (!PAUSENOW || (PAUSENOW&&SKIPFRAME))
  456.         {
  457.  
  458.             for (int b=0; b<LOADED.ON_SCREEN_OBJCOUNT; b++)
  459.             {
  460.                 if (LOADED.ON_SCREEN_OBJS[b]->deleteobj==false && LOADED.ON_SCREEN_OBJS[b]->rndrbackid==4321)
  461.                 {
  462.                     LOADED.OBJECTS[LOADED.ON_SCREEN_OBJS[b]->id].Blit(LOADED.ON_SCREEN_OBJS[b]);
  463.                 }
  464.             }
  465.  
  466.         }
  467.         SKIPFRAME=false;
  468.         if (keystates[ SDL_SCANCODE_F1 ])
  469.         {
  470.             PAUSE=PAUSE==PAUSENOW?!PAUSE:PAUSE;
  471.             Sleep(200);
  472.         }
  473.         if (keystates[ SDL_SCANCODE_F2 ])
  474.         {
  475.             SKIPFRAME=true;
  476.             Sleep(200);
  477.         }
  478.         if (keystates[ SDL_SCANCODE_F3 ])
  479.         {
  480.             if (FULL_SCREEN)
  481.                 SDL_SetWindowFullscreen(MainSurf, (255, 255, 255));
  482.             else
  483.                 SDL_SetWindowFullscreen(MainSurf, (255, 255, 255));    //fullscreen
  484.             FULL_SCREEN=!FULL_SCREEN;
  485.         }
  486.  
  487.         SDL_GL_SwapWindow(MainSurf);
  488.         std::cout <<"Number Of Objects: "<< LOADED.ON_SCREEN_OBJCOUNT<<std::endl;
  489.         PAUSENOW=PAUSE;
  490.  
  491.     }
  492.     SDL_Quit();
  493.     return 0;
  494. }
  495.  
  496.  
  497.  
  498.  
  499.  
  500. int Menus(SDL_Window *MainSurf, LOAD * LOADED)
  501. {
  502.     LoadMenuStuff Interface( LOADED );
  503.     const Uint8 *keystates = SDL_GetKeyboardState(NULL);
  504.     int countahframe = SDL_GetTicks();
  505.     for (int a=0; a<4; a++)
  506.     {
  507.         for (int b=0; b<8; b++)
  508.         {
  509.             LOADED->PKEYS[a][b]=false;
  510.         }
  511.     }
  512.     while (true)
  513.     {
  514.  
  515.  
  516.         LOADED->PKEYS[0][0] = keystates[ SDL_SCANCODE_UP ];
  517.         LOADED->PKEYS[0][1] = keystates[ SDL_SCANCODE_DOWN ];
  518.         LOADED->PKEYS[0][2] = keystates[ SDL_SCANCODE_LEFT ];
  519.         LOADED->PKEYS[0][3] = keystates[ SDL_SCANCODE_RIGHT ];
  520.         LOADED->PKEYS[0][4] = keystates[ SDL_SCANCODE_C ];
  521.         LOADED->PKEYS[0][5] = keystates[ SDL_SCANCODE_X ];
  522.         LOADED->PKEYS[0][6] = keystates[ SDL_SCANCODE_Z ];
  523.         LOADED->PKEYS[0][7] = keystates[ SDL_SCANCODE_V ];
  524.  
  525.         LOADED->PKEYS[1][0] = keystates[ SDL_SCANCODE_I ];
  526.         LOADED->PKEYS[1][1] = keystates[ SDL_SCANCODE_K ];
  527.         LOADED->PKEYS[1][2] = keystates[ SDL_SCANCODE_J ];
  528.         LOADED->PKEYS[1][3] = keystates[ SDL_SCANCODE_L ];
  529.         LOADED->PKEYS[1][4] = keystates[ SDL_SCANCODE_E ];
  530.         LOADED->PKEYS[1][5] = keystates[ SDL_SCANCODE_W ];
  531.         LOADED->PKEYS[1][6] = keystates[ SDL_SCANCODE_Q ];
  532.         LOADED->PKEYS[1][7] = keystates[ SDL_SCANCODE_R ];
  533.  
  534.         LOADED->PKEYS[2][4] = keystates[ SDL_SCANCODE_M ];
  535.  
  536.         LOADED->PKEYS[3][4] = keystates[ SDL_SCANCODE_N ];
  537.         if( SDL_PollEvent(&event))  //check for input
  538.         {
  539.             if (event.type == SDL_QUIT)
  540.             {
  541.                 RUNNING = false;
  542.                 SDL_Quit();
  543.                 return 1;
  544.             }
  545.         }
  546.  
  547.         Interface.Update_Interface( LOADED );
  548.         SDL_GL_SwapWindow(MainSurf);
  549.  
  550.         glBindTexture( GL_TEXTURE_2D, NULL );
  551.         glColor4f(0, 0, 0, 255);
  552.         glBegin(GL_QUADS);
  553.         glVertex2f(0, 0);
  554.         glVertex2f(SW, 0);
  555.         glVertex2f(SW, SH);
  556.         glVertex2f(0, SH);
  557.  
  558.         glEnd();
  559.         if ( (SDL_GetTicks()-countahframe) < (1000/LOADED->FPS) )
  560.         {
  561.             SDL_Delay((1000/LOADED->FPS) - (SDL_GetTicks()-countahframe));
  562.             SDL_SetWindowTitle(MainSurf, (stringify(1000/(SDL_GetTicks()-countahframe)).c_str()));
  563.         }
  564.         else
  565.         {
  566.             SDL_SetWindowTitle(MainSurf, (stringify(1000/(SDL_GetTicks()-countahframe)).c_str()));
  567.         }
  568.         countahframe = SDL_GetTicks();
  569.         if (Interface.LOADNOW)
  570.         {
  571.             OBJECTSTOLOAD=Interface._objectstoload;
  572.             return 1;
  573.         }
  574.     }
  575. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement