From 82d5e77a3fa4f3f9cc3145969d99ba8326af9892 Mon Sep 17 00:00:00 2001 From: Andy Belle-Isle Date: Wed, 16 Sep 2015 11:48:48 -0400 Subject: Fixed mouse, and debug --- include/UIClass.h | 1 + include/World.h | 6 +++--- include/common.h | 1 + include/entities.h | 2 ++ src/UIClass.cpp | 3 +++ src/World.cpp | 1 + src/entities.cpp | 3 ++- src/main.cpp | 37 +++++++++++++++++++++++++++++-------- 8 files changed, 42 insertions(+), 12 deletions(-) diff --git a/include/UIClass.h b/include/UIClass.h index e6f4825..9bf301c 100644 --- a/include/UIClass.h +++ b/include/UIClass.h @@ -16,6 +16,7 @@ public: void msgBox(const char *str,...); void handleEvents(); int mousex, mousey; + bool debug = false; }; #endif // UICLASS_H diff --git a/include/World.h b/include/World.h index fca108d..7d9224e 100644 --- a/include/World.h +++ b/include/World.h @@ -4,7 +4,7 @@ #include // Total amount of entities that can be bound to a layer -#define MAX_ENTITIES 16 +#define MAX_ENTITIES 32 // Easy shortcuts used in UIClass #define goWorldLeft(w) if(w->toLeft){w=w->toLeft;} @@ -18,7 +18,7 @@ private: } __attribute__ ((packed)) *line; unsigned int lineCount; // Size of line array, calculated in the constructor unsigned int entCount; // Count of currently bound entities - void *entity[MAX_ENTITIES]; + void **entity; public: World *behind,*infront; // As in layers World *toLeft,*toRight; // 'new' worlds (off screen) @@ -31,4 +31,4 @@ public: void addEntity(void *e); // Adds (binds) an entity to the world }; -#endif // WORLD_H +#endif // WORLD_H diff --git a/include/common.h b/include/common.h index 290e47a..bddb1b3 100644 --- a/include/common.h +++ b/include/common.h @@ -7,6 +7,7 @@ typedef struct{float x; float y;}vec2; #include #include +#include #include #include #include diff --git a/include/entities.h b/include/entities.h index 7d5e356..bc277cd 100644 --- a/include/entities.h +++ b/include/entities.h @@ -16,6 +16,8 @@ public: bool right,left, canMove; bool alive; + unsigned int texture[]; + void spawn(float, float); void draw(void); void wander(int, vec2*); diff --git a/src/UIClass.cpp b/src/UIClass.cpp index 0497575..0ee56ca 100644 --- a/src/UIClass.cpp +++ b/src/UIClass.cpp @@ -144,6 +144,9 @@ void UIClass::handleEvents(){ currentWorld=currentWorld->infront; } } + if(e.key.keysym.sym == SDLK_F3){ + debug = !debug; + } break; case SDL_KEYUP: if(e.key.keysym.sym == SDLK_d) player.right = false; diff --git a/src/World.cpp b/src/World.cpp index bde35de..4237d42 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -24,6 +24,7 @@ World::World(const float width,World *l,World *r){ toRight=r; behind=infront=NULL; entCount=0; + entity=(void**)calloc(MAX_ENTITIES,sizeof(void**)); if(toLeft){ // Make sure linked worlds link back if(toLeft->toRight){ std::cout<<"There's already a world to the left!"<addLayer(3); - currentWorld->addLayer(4); + currentWorld->addLayer(15); + currentWorld->addLayer(10); // shh unsigned char jklasdf; for(jklasdf=0;jklasdfdraw(); // layers dont scale x correctly... - glColor3ub(120,30,30); //render the player + + 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); @@ -180,7 +185,6 @@ void render(){ d=deltaTime; fps=(1000/d); } - ui.putText(-.98 + player.loc.x, .94, "FPS: %1.0f\nDT: %1.0f",fps); //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); @@ -188,10 +192,21 @@ void render(){ **** CLOSE THE LOOP **** **************************/ - //DRAW MOUSE HERE!!!!!W + //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)mx+=player.loc.x; + 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); @@ -238,6 +253,12 @@ void logic(){ 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++; -- cgit v1.2.3