aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/World.h64
-rw-r--r--include/common.h34
-rw-r--r--src/World.cpp171
-rw-r--r--src/main.cpp111
4 files changed, 110 insertions, 270 deletions
diff --git a/include/World.h b/include/World.h
index dd133b9..d8440a0 100644
--- a/include/World.h
+++ b/include/World.h
@@ -1,42 +1,24 @@
-<<<<<<< HEAD
-#ifndef WORLD_H
-#define WORLD_H
-
-#include <common.h>
-
-class World {
-private:
- struct line_t {
- // x = 2.0 (window width) / HLINES
- float start; // Where to change to dirt, going down (y)
- } *line;
- unsigned int lineCount;
-public:
- World(float width);
- void draw(void);
-};
-
+#ifndef WORLD_H
+#define WORLD_H
+
+#include <common.h>
+
+#define goWorldLeft(w) if(w->toLeft){w=w->toLeft;}
+#define goWorldRight(w) if(w->toRight){w=w->toRight;}
+
+class World {
+private:
+ struct line_t {
+ // x = 2.0 (window width) / HLINES
+ double start; // Where to change to dirt, going down (y)
+ } *line;
+ unsigned int lineCount;
+public:
+ World *toLeft,*toRight;
+ World(void);
+ World(const float width,World *l,World *r);
+ void draw(void);
+ void detect(vec2 *v,const float width);
+};
+
#endif // WORLD_H
-=======
-#ifndef WORLD_H
-#define WORLD_H
-
-#include <common.h>
-
-#define HLINE (2.0f/(SCREEN_WIDTH/4))
-
-class World {
-private:
- struct line_t {
- // x = 2.0 (window width) / HLINES
- double start; // Where to change to dirt, going down (y)
- } *line;
- unsigned int lineCount;
-public:
- World(float width);
- void draw(void);
- void detect(vec2 *v,const float width);
-};
-
-#endif // WORLD_H
->>>>>>> origin/master
diff --git a/include/common.h b/include/common.h
index 48a068d..df5b6ac 100644
--- a/include/common.h
+++ b/include/common.h
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
#ifndef COMMON_H
#define COMMON_H
@@ -30,36 +29,3 @@ extern SDL_GLContext mainGLContext;
extern bool gameRunning;
#endif // COMMON_H
-=======
-#ifndef COMMON_H
-#define COMMON_H
-
-typedef struct{float x; float y;}vec2;
-
-///THIS FILE IS USED FOR VARIABLES THAT WILL BE ACCESED BY MULTIPLE CLASSES/FILES
-
-#include <iostream>
-#include <cstdlib>
-#include <SDL2/SDL.h>
-#include <SDL2/SDL_image.h>
-#include <SDL2/SDL_opengl.h>
-#include <UIClass.h>
-#include <entities.h>
-#include <World.h>
-
-#define SCREEN_WIDTH 1280
-#define SCREEN_HEIGHT 800
-#define FULLSCREEN
-
-
-
-//SDL VARIABLES
-extern SDL_Window *window;
-extern SDL_Surface *renderSurface;
-extern SDL_GLContext mainGLContext;
-
-//WINODWS VARIABLES
-extern bool gameRunning;
-
-#endif // COMMON_H
->>>>>>> origin/master
diff --git a/src/World.cpp b/src/World.cpp
index 52cfb40..c3a76c7 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -1,91 +1,80 @@
-<<<<<<< HEAD
-#include <World.h>
-
-World::World(float width){
- unsigned int i;
- lineCount=width/HLINE+1;
- if((line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)))==NULL){
- std::cout<<"Failed to allocate memory!"<<std::endl;
- abort();
- }
- line[0].start=(rand()%100)/100.0f-1; // lazy
- for(i=1;i<lineCount;i++){
- line[i].start=line[i-1].start+(float)((rand()%20)-10)/1000.0f;
- }
-}
-void World::draw(void){
- unsigned int i;
- glBegin(GL_QUADS);
- for(i=0;i<lineCount;i++){
- glColor3ub(0,255,0);
- glVertex2f((HLINE*i)-1 ,line[i].start);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start-HLINE*2);
- glVertex2f((HLINE*i)-1 ,line[i].start-HLINE*2);
- glColor3ub(150,100,50);
- glVertex2f((HLINE*i)-1 ,line[i].start-HLINE*2);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start-HLINE*2);
- glVertex2f((HLINE*i)-1+HLINE,-1);
- glVertex2f((HLINE*i)-1 ,-1);
- }
- glEnd();
-}
-=======
-#include <World.h>
-
-World::World(float width){
- unsigned int i;
- double f;
- lineCount=width/HLINE+1;
- if((line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)))==NULL){
- std::cout<<"Failed to allocate memory!"<<std::endl;
- abort();
- }
- line[0].start=(rand()%100)/100.0f-0.8f; // lazy
- if(line[0].start>-0.5f)line[0].start=-0.7f;
- for(i=10;i<lineCount;i+=10){
- line[i].start=((double)(rand()%40+200))/1000.0f-1;
- }
- for(i=0;i<lineCount;i++){
- if(!(i%10)||!i){
- f=line[i+10].start-line[i].start;
- f/=10.0f;
- }else{
- line[i].start=line[i-1].start+f;
- }
- }
-}
-void World::draw(void){
- unsigned int i;
- glBegin(GL_QUADS);
- for(i=0;i<lineCount;i++){
- glColor3ub(0,255,0);
- glVertex2f((HLINE*i)-1 ,line[i].start);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start-HLINE*2);
- glVertex2f((HLINE*i)-1 ,line[i].start-HLINE*2);
- glColor3ub(150,100,50);
- glVertex2f((HLINE*i)-1 ,line[i].start-HLINE*2);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start-HLINE*2);
- glVertex2f((HLINE*i)-1+HLINE,-1);
- glVertex2f((HLINE*i)-1 ,-1);
- }
- glEnd();
-}
-void World::detect(vec2 *v,const float width){
- unsigned int i;
- for(i=0;i<lineCount;i++){
- if(v->y<line[i].start){
- if(v->x>(HLINE*i)-1&&v->x<(HLINE*i)-1+HLINE){
- v->x=(HLINE*i)-1+HLINE;
- }else if(v->x+width>(HLINE*i)-1&&v->x+width<(HLINE*i)-1+HLINE){
- v->x=(HLINE*i)-1-width;
- }else{
- v->y=line[i].start;
- }
- }else if(v->y>line[i].start+HLINE/2){
- v->y-=HLINE/4;
- }
- }
-}
->>>>>>> origin/master
+#include <World.h>
+
+World::World(void){
+ line=NULL;
+ lineCount=0;
+ toLeft=toRight=NULL;
+}
+World::World(const float width,World *l,World *r){
+ unsigned int i;
+ double f;
+ lineCount=width/HLINE+1;
+ if((line=(struct line_t *)calloc(lineCount,sizeof(struct line_t)))==NULL){
+ std::cout<<"Failed to allocate memory!"<<std::endl;
+ abort();
+ }
+ toLeft=l;
+ toRight=r;
+ if(toLeft){
+ if(toLeft->toRight){
+ std::cout<<"There's already a world to the left!"<<std::endl;
+ abort();
+ }else{
+ toLeft->toRight=this;
+ }
+ }
+ if(toRight){
+ if(toRight->toLeft){
+ std::cout<<"There's already a world to the right!"<<std::endl;
+ abort();
+ }else{
+ toRight->toLeft=this;
+ }
+ }
+ line[0].start=(rand()%100)/100.0f-0.8f; // lazy
+ if(line[0].start>-0.5f)line[0].start=-0.7f;
+ for(i=10;i<lineCount;i+=10){
+ line[i].start=((double)(rand()%40+200))/1000.0f-1;
+ }
+ for(i=0;i<lineCount;i++){
+ if(!(i%10)||!i){
+ f=line[i+10].start-line[i].start;
+ f/=10.0f;
+ }else{
+ line[i].start=line[i-1].start+f;
+ }
+ }
+}
+void World::draw(void){
+ unsigned int i;
+ glBegin(GL_QUADS);
+ for(i=0;i<lineCount;i++){
+ glColor3ub(0,255,0);
+ glVertex2f((HLINE*i)-1 ,line[i].start);
+ glVertex2f((HLINE*i)-1+HLINE,line[i].start);
+ glVertex2f((HLINE*i)-1+HLINE,line[i].start-HLINE*2);
+ glVertex2f((HLINE*i)-1 ,line[i].start-HLINE*2);
+ glColor3ub(150,100,50);
+ glVertex2f((HLINE*i)-1 ,line[i].start-HLINE*2);
+ glVertex2f((HLINE*i)-1+HLINE,line[i].start-HLINE*2);
+ glVertex2f((HLINE*i)-1+HLINE,-1);
+ glVertex2f((HLINE*i)-1 ,-1);
+ }
+ glEnd();
+}
+void World::detect(vec2 *v,const float width){
+ unsigned int i;
+ for(i=0;i<lineCount;i++){
+ if(v->y<line[i].start){
+ if(v->x>(HLINE*i)-1&&v->x<(HLINE*i)-1+HLINE){
+ v->x=(HLINE*i)-1+HLINE;
+ }else if(v->x+width>(HLINE*i)-1&&v->x+width<(HLINE*i)-1+HLINE){
+ v->x=(HLINE*i)-1-width;
+ }else{
+ v->y=line[i].start;
+ }
+ }else if(v->y>line[i].start+HLINE/2){
+ v->y-=HLINE/4;
+ }
+ }
+}
diff --git a/src/main.cpp b/src/main.cpp
index e5c2339..8bc01e2 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
#include <common.h>
#include <ctime>
@@ -17,6 +16,7 @@ float deltaTime = 0;
Entities *entit1;
Player player;
UIClass ui;
+World *currentWorld;
float interpolate(float goal, float current, float dt){
float difference = goal - current;
@@ -27,8 +27,6 @@ float interpolate(float goal, float current, float dt){
return goal;
}
-
-World *w=new World(2);
void render();
int main(int argc,char **argv){
@@ -73,6 +71,11 @@ int main(int argc,char **argv){
entit1 = &player;
entit1->spawn(4, 0);
+
+ World *w=NULL;
+ World *w2=new World(4,w,NULL);
+ w=new World(2,NULL,w2);
+ currentWorld=w;
while(gameRunning){
prevTime = currentTime;
@@ -128,7 +131,7 @@ void render(){
**** RENDER STUFF HERE ****
**************************/
- w->draw();
+ currentWorld->draw();
glColor3ub(0,0,0);
glRectf(player.loci.x, player.loci.y, player.loci.x + player.width, player.loci.y + player.height);
@@ -139,103 +142,3 @@ void render(){
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
}
-=======
-#include <common.h>
-#include <ctime>
-
-SDL_Window *window = NULL;
-SDL_Surface *renderSurface = NULL;
-SDL_GLContext mainGLContext = NULL;
-
-bool gameRunning = true;
-
-UIClass ui;
-Entities *entit1;
-Player player;
-
-int main(int argc,char **argv){
- // Initialize SDL
- if(!SDL_Init(SDL_INIT_VIDEO)){
- atexit(SDL_Quit);
- }else{
- std::cout << "SDL was not able to initialize! Error: " << SDL_GetError() << std::endl;
- return -1;
- }
- // Initialize SDL_image
- if((IMG_Init(IMG_INIT_PNG|IMG_INIT_JPG)&(IMG_INIT_PNG|IMG_INIT_JPG))){
- atexit(IMG_Quit);
- }else{
- std::cout<<"Could not init image libraries!\n"<<std::endl;
- return -1;
- }
- // Create the window
- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
- window = SDL_CreateWindow("Independent Study v.0.1 alpha", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL
- #ifdef FULLSCREEN
- | SDL_WINDOW_FULLSCREEN
- #endif // FULLSCREEN
- );
- if(!window){
- std::cout << "The window failed to generate! Error: " << SDL_GetError() << std::endl;
- return -1;
- }
- // Set OpenGL context
- if((mainGLContext = SDL_GL_CreateContext(window))==NULL){
- std::cout << "The OpenGL context failed to initialize! Error: " << SDL_GetError() << std::endl;
- }
- // Setup rand() and OpenGL
- srand(time(NULL));
- glClearColor(.3,.5,.8,0);
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
-
- /**************************
- **** GAMELOOP ****
- **************************/
-
- entit1 = &player;
- entit1->spawn(0,0);
-
- World *w=new World(2);
-
- while(gameRunning){
- ui.handleEvents(); // Handle events
- //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
- glOrtho(-1,1,-1,1,-1,1); //set the the size of the screen
- 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
- glPushMatrix(); //basically here we put a blank canvas (new matrix) on the screen to draw on
- glClear(GL_COLOR_BUFFER_BIT); //clear the matrix on the top of the stack
-
- /**************************
- **** RENDER STUFF HERE ****
- **************************/
-
- w->draw();
- glColor3ub(0,0,0);
- glRectf(player.loc.x, player.loc.y, player.loc.x + player.width, player.loc.y + player.height);
-
- /**************************
- **** CLOSE THE LOOP ****
- **************************/
-
- 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
- }
-
- /**************************
- **** CLOSE PROGRAM ****
- **************************/
-
- //closes the window and frees resources
- SDL_GL_DeleteContext(mainGLContext);
- SDL_DestroyWindow(window);
- return 0;
-}
->>>>>>> origin/master