diff options
author | Clyne Sullivan <clyne@clyne-lp.example.com> | 2015-09-17 09:22:45 -0400 |
---|---|---|
committer | Clyne Sullivan <clyne@clyne-lp.example.com> | 2015-09-17 09:22:45 -0400 |
commit | c38029fa3d4fd7488c2bd9236eec86aff4448314 (patch) | |
tree | 2807889557cbc0c5391181c3556e4978eaa9549a /src/main.cpp | |
parent | 334ee89484336412d39e509c2594dee8f47c22ad (diff) |
shit
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 177 |
1 files changed, 13 insertions, 164 deletions
diff --git a/src/main.cpp b/src/main.cpp index a60d52c..8c78eab 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,30 +2,11 @@ #include <cstdio> #include <chrono> -#define TICKS_PER_SEC 20 -#define MSEC_PER_TICK (1000/TICKS_PER_SEC) - SDL_Window *window = NULL; SDL_Surface *renderSurface = NULL; SDL_GLContext mainGLContext = NULL; bool gameRunning = true; -static float mx,my; - -static unsigned int tickCount = 0, - prevTime = 0, - currentTime = 0, - deltaTime = 0; - -int npcAmt = 0; -Entity *entPlay; //The player base -Entity *entnpc[32]; //The NPC base -Player player; //The actual player object -NPC npc[32]; -Structures build; -World *currentWorld;//u-huh - -World *spawn; void logic(); void render(); @@ -49,9 +30,6 @@ int main(int argc, char *argv[]){ atexit(IMG_Quit); //Turn on double Buffering SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - //ANTIALIASING!!! - //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); - //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 16); //create the window window = SDL_CreateWindow("Independent Study v.0.2 alpha", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL #ifdef FULLSCREEN @@ -73,7 +51,6 @@ int main(int argc, char *argv[]){ glViewport(0,0,SCREEN_WIDTH, SCREEN_HEIGHT); glClearColor(.3,.5,.8,0); glEnable(GL_BLEND); - glEnable(GL_MULTISAMPLE); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); SDL_ShowCursor(SDL_DISABLE); @@ -81,52 +58,9 @@ int main(int argc, char *argv[]){ **** GAMELOOP **** **************************/ - ui::init("ttf/VCR_OSD_MONO_1.001.ttf"); - - irand(time(NULL)); - entPlay = &player; - entPlay->spawn(0, 0); - - build.spawn(-1, (grand()%20)-10, 0); - //build.spawn(-1, 1.5, 0); - - - // Generate the world - World *w=NULL,*w2=NULL; - w2=new World(4,w,NULL); - w=new World(20,NULL,w2); - - spawn=currentWorld=w; - currentWorld->addLayer(15); - currentWorld->addLayer(10); - // shh - unsigned char jklasdf; - for(jklasdf=0;jklasdf<npcAmt;jklasdf++){ - currentWorld->addEntity((void *)entnpc[jklasdf]); - } - - currentTime=millis(); - while(gameRunning){ - prevTime = currentTime; - currentTime = millis(); - deltaTime = currentTime - prevTime; - - player.loc.x += (player.vel.x * player.speed) * deltaTime; //update the player's x based on - player.loc.y += player.vel.y * deltaTime; - for(int i = 0; i < eAmt(entnpc); i++){ - if(npc[i].alive == true){ - npc[i].loc.y += npc[i].vel.y * deltaTime; - npc[i].loc.x += npc[i].vel.x * deltaTime; - } - } - render(); - - if(prevTime + MSEC_PER_TICK >= millis()){ //the logic loop to run at a dedicated time - logic(); - prevTime = millis(); - } + logic(); } /************************** @@ -140,22 +74,13 @@ int main(int argc, char *argv[]){ } void render(){ - static float d,fps; - static unsigned int div=0; //a matrix is a blank canvas for the computer to draw on, the matrices are stored in a "stack" //GL_PROJECTION has 2 matrices //GL_MODELVIEW has 32 matrices glMatrixMode(GL_PROJECTION); //set the matrix mode as projection so we can set the ortho size and the camera settings later on glPushMatrix(); //push the matrix to the top of the matrix stack glLoadIdentity(); //replace the entire matrix stack with the updated GL_PROJECTION mode - //set the the size of the screen - if(player.loc.x-1<-1){ - glOrtho(-1,1, -1,1, -1,1); - }else if(player.loc.x+1>-1+currentWorld->getWidth()){ - glOrtho(-3+currentWorld->getWidth(),-1+currentWorld->getWidth(),-1,1,-1,1); - }else{ - glOrtho(-1 + player.loc.x, 1 + player.loc.x , -1, 1, -1,1); - } + glOrtho(0,SCREEN_WIDTH,0,SCREEN_HEIGHT,-1,1); glMatrixMode(GL_MODELVIEW); //set the matrix to modelview so we can draw objects glPushMatrix(); //push the matrix to the top of the matrix stack glLoadIdentity(); //replace the entire matrix stack with the updated GL_MODELVIEW mode @@ -165,103 +90,27 @@ void render(){ /************************** **** RENDER STUFF HERE **** **************************/ - currentWorld->draw(); // layers dont scale x correctly... - - if((mx > player.loc.x && mx < player.loc.x + player.width) && (my > player.loc.y && my < player.loc.y + player.height)){ - glColor3ub(255,0,0); - }else{ - glColor3ub(120,30,30); //render the player - } - glRectf(player.loc.x, player.loc.y, player.loc.x + player.width, player.loc.y + player.height); - - glColor3ub(255,0,0); - glRectf(build.loc.x, build.loc.y, build.loc.x + build.width, build.loc.y + build.height); - ///BWAHHHHHHHHHHHH - - ui::setFontSize(16); - if(++div==20){ - div=0; - d=deltaTime; - fps=(1000/d); - } - //ui.putText(-.98 + player.loc.x, .88, "DT: %1.0f",d); - ui::putText(player.loc.x,player.loc.y-(HLINE*10),"(%+1.3f,%+1.3f)",player.loc.x,player.loc.y); - /************************** **** CLOSE THE LOOP **** **************************/ - //DRAW MOUSE HERE!!!!! - mx=(ui::mousex/(float)SCREEN_WIDTH)*2.0f-1.0f; - my=((SCREEN_HEIGHT-ui::mousey)/(float)SCREEN_HEIGHT)*2.0f-1.0f; - if(player.loc.x-1>-1 && player.loc.x-1<-3+currentWorld->getWidth()){ - if(ui::debug) - ui::putText(-.98 + player.loc.x, .94, "FPS: %1.0f\nDT: %1.0f",fps, d); - mx+=player.loc.x; - }else if(player.loc.x-1>=-3+currentWorld->getWidth()){ - if(ui::debug) - ui::putText(-.98 + -2+currentWorld->getWidth(), .94, "FPS: %1.0f\nDT: %1.0f",fps, d); - mx =mx-1 + -1+currentWorld->getWidth(); - }else{ - if(ui::debug) - ui::putText(-.98, .94, "FPS: %1.0f\nDT: %1.0f",fps, d); - } - - glBegin(GL_TRIANGLES); - - glColor3ub(255,255,255); - glVertex2f(mx,my); - glVertex2f(mx + (HLINE*3.5),my - (HLINE*1)); - glVertex2f(mx + (HLINE*1),my - (HLINE*6)); - - glEnd(); - glPopMatrix(); //take the matrix(s) off the stack to pass them to the renderer SDL_GL_SwapWindow(window); //give the stack to SDL to render it } void logic(){ - float gw; - - ui::handleEvents(); // Handle events - - if(player.right)player.vel.x=.00075; - else if(player.left)player.vel.x=-.00075; - else player.vel.x = 0; - - currentWorld->detect(&player.loc,&player.vel,player.width); - gw=currentWorld->getWidth(); - if(player.loc.x+player.width>-1+gw){ - if(currentWorld->toRight){ - goWorldRight(currentWorld) - player.loc.x=-1+HLINE; - }else{ - player.loc.x=gw-1-player.width-HLINE; - } - } - if(player.loc.x<-1){ - if(currentWorld->toLeft){ - goWorldLeft(currentWorld); - player.loc.x=currentWorld->getWidth()-1-player.width-HLINE; - }else{ - player.loc.x=-1+HLINE; + SDL_Event e; + while(SDL_PollEvent(&e)){ + switch(e.type){ + case SDL_QUIT: + gameRunning=false; + break; + case SDL_KEYDOWN: + if(e.key.keysym.sym==SDLK_ESCAPE)gameRunning=false; + break; + default: + break; } } - - currentWorld->detect(&build.loc,&build.vel,build.width); - for(int i = 0; i < eAmt(entnpc); i++){ - if(npc[i].alive == true){ - currentWorld->detect(&npc[i].loc,&npc[i].vel,npc[i].width); - entnpc[i]->wander((grand()%181 + 1), &npc[i].vel); - if((mx > entnpc[i]->loc.x && mx < entnpc[i]->loc.x + entnpc[i]->width) && (my > entnpc[i]->loc.y && my < entnpc[i]->loc.y + entnpc[i]->height)&&(SDL_GetMouseState(NULL,NULL) & SDL_BUTTON(SDL_BUTTON_LEFT))){ - if(pow((entnpc[i]->loc.x - player.loc.x),2) + pow((entnpc[i]->loc.y - player.loc.y),2) < pow(.2,2)){ - entnpc[i]->interact(); - ui::putText(entnpc[i]->loc.x, entnpc[i]->loc.y - HLINE * 3, "HEY", NULL); - } - } - } - - } - tickCount++; } |