aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Belle-Isle <abelleisle@roadrunner.com>2015-09-10 11:50:13 -0400
committerAndy Belle-Isle <abelleisle@roadrunner.com>2015-09-10 11:50:13 -0400
commit1f769cf0e589001adc4a65d621f7968550209799 (patch)
tree284f5dab7378970ad524b3aaaedac5266b068e8c
parentb6ee2b7c296abcfff1ae7f7ac4db976dc4d6fd8e (diff)
a
-rw-r--r--include/World.h2
-rw-r--r--include/common.h13
-rw-r--r--src/UIClass.cpp18
-rw-r--r--src/World.cpp10
-rw-r--r--src/main.cpp88
5 files changed, 96 insertions, 35 deletions
diff --git a/include/World.h b/include/World.h
index 212fe38..6da0972 100644
--- a/include/World.h
+++ b/include/World.h
@@ -3,8 +3,6 @@
#include <common.h>
-#define HLINE (2.0f/ 200 )
-
class World {
private:
struct line_t {
diff --git a/include/common.h b/include/common.h
index 816de5a..e4de2c5 100644
--- a/include/common.h
+++ b/include/common.h
@@ -1,6 +1,8 @@
#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>
@@ -9,18 +11,21 @@
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_opengl.h>
#include <UIClass.h>
+#include <entities.h>
#include <World.h>
-#define SCREEN_WIDTH 640
-#define SCREEN_HEIGHT 480
+#define SCREEN_WIDTH 1280
+#define SCREEN_HEIGHT 720
//#define FULLSCREEN
+#define HLINE (2.0f / (SCREEN_WIDTH / 4))
+
//SDL VARIABLES
extern SDL_Window *window;
extern SDL_Surface *renderSurface;
extern SDL_GLContext mainGLContext;
-//WINODWS VARIABLES
+//WINDOW VARIABLES
extern bool gameRunning;
-#endif // COMMON_H
+#endif // COMMON_H \ No newline at end of file
diff --git a/src/UIClass.cpp b/src/UIClass.cpp
index 9cdf735..6bb8aec 100644
--- a/src/UIClass.cpp
+++ b/src/UIClass.cpp
@@ -1,4 +1,5 @@
#include <UIClass.h>
+extern Player player;
void UIClass::handleEvents(){
SDL_Event e;
@@ -9,9 +10,24 @@ void UIClass::handleEvents(){
break;
case SDL_KEYDOWN:
switch(e.key.keysym.sym){
- case 27:
+ case 27: ///ESCAPE
gameRunning=false;
break;
+ case SDLK_d: ///D
+ player.velg.x = 10;
+ break;
+ case SDLK_a: ///A
+ player.velg.x = -10;
+ break;
+ default:
+ break;
+ }
+ case SDL_KEYUP:
+ switch(e.key.keysym.sym){
+ /*case SDLK_d: ///D
+ break;
+ case SDLK_a: ///A
+ break;*/
default:
break;
}
diff --git a/src/World.cpp b/src/World.cpp
index 3d8cfb7..f38cfc0 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -2,7 +2,7 @@
World::World(float width){
unsigned int i;
- lineCount=width/HLINE;
+ 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();
@@ -19,11 +19,11 @@ void World::draw(void){
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-0.02);
- glVertex2f((HLINE*i)-1 ,line[i].start-0.02);
+ 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-0.02);
- glVertex2f((HLINE*i)-1+HLINE,line[i].start-0.02);
+ 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);
}
diff --git a/src/main.cpp b/src/main.cpp
index cb93ff4..f5d7e8b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -7,8 +7,29 @@ SDL_GLContext mainGLContext = NULL;
bool gameRunning = true;
+const float ticksPerSec = 20;
+const float msecPerTick = 1000 / ticksPerSec;
+int prevTime = GetTickCount();
+int currentTime = 0;
+float deltaTime = 0;
+
+Entities *entit1;
+Player player;
UIClass ui;
+float interpolate(float goal, float current, float dt){
+ float difference = goal - current;
+ if(difference > dt){
+ return current + dt;}
+ if(difference < dt){
+ return current - dt;}
+ return goal;
+}
+
+
+World *w=new World(2);
+void render();
+
int main(int argc,char **argv){
//runs start-up procedures
if(!SDL_Init(SDL_INIT_VIDEO)){
@@ -48,18 +69,54 @@ int main(int argc,char **argv){
/**************************
**** GAMELOOP ****
**************************/
-
- World *w=new World(2);
+
+ entit1 = &player;
+ entit1->spawn(4, 0);
while(gameRunning){
- ui.handleEvents(); // Handle events
+ prevTime = currentTime;
+ currentTime = GetTickCount();
+ deltaTime = currentTime - prevTime;
+
+ if(prevTime + msecPerTick <= GetTickCount()){ //HANDLE ALL LOGIC STUFF HERE
+ ui.handleEvents(); // Handle events
+
+ player.vel.x = 0;
+
+ std::cout << player.vel.x << std::endl;
+ std::cout << player.velg.y << std::endl;
+ std::cout << "d:" << deltaTime << std::endl;
+
+ prevTime = GetTickCount();
+ }
+ //DO ALL RENDERING HERE
+ player.vel.x = interpolate(player.velg.x, player.vel.x, deltaTime) * .001;
+ if(player.vel.x > .05) player.vel.x = .05;
+ if(player.vel.x < -.05) player.vel.x = -.05;
+ player.loci.x += player.vel.x;
+
+ render();
+
+ }
+
+ /**************************
+ **** CLOSE PROGRAM ****
+ **************************/
+
+ //closes the window and frees resources
+ SDL_GL_DeleteContext(mainGLContext);
+ SDL_DestroyWindow(window);
+ return 0;
+}
+
+void render(){
//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(0,SCREEN_WIDTH, 0,SCREEN_HEIGHT, -1,1); //set the the size of the screen
+ glOrtho(-1 + player.loci.x, 1 + player.loci.x , -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
@@ -69,15 +126,10 @@ int main(int argc,char **argv){
/**************************
**** RENDER STUFF HERE ****
**************************/
-
- /*glColor3f(1.0f, 0.0f, 0.0f); //color to red
- glRectf(0,0, 50,50); //draw a test rectangle
- glColor3f(0.0f, 1.0f, 0.0f); //color to blue
- glRectf(50,0, 100,50); //draw a test rectangle
- glColor3f(0.0f, 0.0f, 1.0f); //color to green
- glRectf(100,0,150,50); //draw a test rectangle*/
-
+
w->draw();
+ glColor3ub(0,0,0);
+ glRectf(player.loci.x, player.loci.y, player.loci.x + player.width, player.loci.y + player.height);
/**************************
**** CLOSE THE LOOP ****
@@ -85,14 +137,4 @@ int main(int argc,char **argv){
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;
-}
+} \ No newline at end of file