aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@clyne-lp.example.com>2015-09-17 09:22:45 -0400
committerClyne Sullivan <clyne@clyne-lp.example.com>2015-09-17 09:22:45 -0400
commitc38029fa3d4fd7488c2bd9236eec86aff4448314 (patch)
tree2807889557cbc0c5391181c3556e4978eaa9549a /src/main.cpp
parent334ee89484336412d39e509c2594dee8f47c22ad (diff)
shit
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp177
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++;
}