curCoord[a].y += float((dfp[a]) * sin(angle*PI/180));
r.end = curCoord[a];
-- glColor4f(0.0f, 0.0f, 0.0f, ((float)dfp[a]/(float)range)*0.4f);
++ glColor4f(1.0f, 1.0f, 1.0f, ((float)dfp[a]/(float)range)*0.4f);
glBegin(GL_QUADS);
glVertex2i(r.end.x-(itemWide/2), r.end.y-(itemWide/2));
glVertex2i(r.end.x-(itemWide/2)+itemWide, r.end.y-(itemWide/2));
glBindTexture(GL_TEXTURE_2D, itemtex[inv[a].id]);
glColor4f(1.0f, 1.0f, 1.0f, ((float)dfp[a]/(float)range)*0.8f);
glBegin(GL_QUADS);
-- glTexCoord2i(0,1);glVertex2i(r.end.x-(itemWide/2), r.end.y-(itemWide/2));
-- glTexCoord2i(1,1);glVertex2i(r.end.x-(itemWide/2)+itemWide, r.end.y-(itemWide/2));
-- glTexCoord2i(1,0);glVertex2i(r.end.x-(itemWide/2)+itemWide, r.end.y-(itemWide/2)+itemWide);
-- glTexCoord2i(0,0);glVertex2i(r.end.x-(itemWide/2), r.end.y-(itemWide/2)+itemWide);
-- glEnd();
++ if(item[inv[a].id].height > item[inv[a].id].width){
++ glTexCoord2i(0,1);glVertex2i(r.end.x-((itemWide/2)*((float)item[inv[a].id].width/(float)item[inv[a].id].height)), r.end.y-(itemWide/2));
++ glTexCoord2i(1,1);glVertex2i(r.end.x+((itemWide/2)*((float)item[inv[a].id].width/(float)item[inv[a].id].height)), r.end.y-(itemWide/2));
++ glTexCoord2i(1,0);glVertex2i(r.end.x+((itemWide/2)*((float)item[inv[a].id].width/(float)item[inv[a].id].height)), r.end.y+(itemWide/2));
++ glTexCoord2i(0,0);glVertex2i(r.end.x-((itemWide/2)*((float)item[inv[a].id].width/(float)item[inv[a].id].height)), r.end.y+(itemWide/2));
++ }else{
++ glTexCoord2i(0,1);glVertex2i(r.end.x-(itemWide/2), r.end.y-(itemWide/2)*((float)item[inv[a].id].height/(float)item[inv[a].id].width));
++ glTexCoord2i(1,1);glVertex2i(r.end.x+(itemWide/2), r.end.y-(itemWide/2)*((float)item[inv[a].id].height/(float)item[inv[a].id].width));
++ glTexCoord2i(1,0);glVertex2i(r.end.x+(itemWide/2), r.end.y+(itemWide/2)*((float)item[inv[a].id].height/(float)item[inv[a].id].width));
++ glTexCoord2i(0,0);glVertex2i(r.end.x-(itemWide/2), r.end.y+(itemWide/2)*((float)item[inv[a].id].height/(float)item[inv[a].id].width));
++ } glEnd();
glDisable(GL_TEXTURE_2D);
ui::putText(r.end.x-(itemWide/2),r.end.y-(itemWide*.9),"%s",item[inv[a].id].name);
ui::putText(r.end.x-(itemWide/2)+(itemWide*.85),r.end.y-(itemWide/2),"%d",inv[a].count);
}
a++;
++ if(sel==a){
++ glBegin(GL_LINES);
++ glColor4f(1.0f, 0.0f, 0.0f, 0.0f);
++ glVertex2i(r.start.x,r.start.y);
++ glColor4f(1.0f, 0.0f, 0.0f, 0.8f);
++ glVertex2i(r.end.x+20, r.end.y-20);
++ glEnd();
++ }
}
}else if(invHover){
static unsigned int highlight = 0;
}
/*
- * Lists all of the quests the player has
+ * Lists all of the quests the player is currently taking.
*/
- hub.y-=fontSize*1.15;
-
- putString(hub.x,hub.y,"Current Quests:");
-
- for(auto &c : player->qh.current){
- hub.y-=fontSize*1.15;
- putString(hub.x,hub.y,c->title);
+ if(player->inv->invOpen){
- hub.y = player->loc.y + fontSize * 10;
++ hub.y = player->loc.y + fontSize * 8;
+ hub.x = player->loc.x;
+
+ putStringCentered(hub.x,hub.y,"Current Quests:");
+
+ for(auto &c : player->qh.current){
+ hub.y -= fontSize * 1.15;
+ putString(hub.x,hub.y,c->title);
+ }
}
+
+
}
void handleEvents(void){
- static bool left=false,right=false;
static vec2 premouse={0,0};
static int heyOhLetsGo = 0;
unsigned char i;
KEYDOWN
*/
case SDL_KEYDOWN:
- if(SDL_KEY==SDLK_ESCAPE)gameRunning=false; // Exit the game with ESC
- if(!dialogBoxExists&&!fadeEnable){
- if(SDL_KEY==SDLK_a){ // Move left
- left=true;
- player->vel.x=-.15;
- player->left = true;
- player->right = false;
- currentWorld=currentWorld->goWorldLeft(player);
- }
- if(SDL_KEY==SDLK_d){ // Move right
- right=true;
- player->vel.x=.15;
- player->right = true;
- player->left = false;
- currentWorld=currentWorld->goWorldRight(player);
- }
- if(SDL_KEY==SDLK_s && player->ground==2){
- player->ground=false;
- player->loc.y-=HLINE*1.5;
- }
- if(SDL_KEY==SDLK_w){
- if(inBattle){
- currentWorld=((Arena *)currentWorld)->exitArena(player);
- }else currentWorld=currentWorld->goInsideStructure(player);
- }
- if(SDL_KEY==SDLK_SPACE){ // Jump
- if(player->ground){
- player->vel.y=.4;
- player->loc.y+=HLINE*2;
- player->ground=false;
- }
- }
- World *tmp;
- if(SDL_KEY==SDLK_i){
- tmp=currentWorld;
- currentWorld=currentWorld->goWorldBack(player); // Go back a layer if possible
- if(tmp!=currentWorld){
- currentWorld->detect(player);
- player->vel.y=.2;
- player->loc.y+=HLINE*5;
- player->ground=false;
- }
- }
- if(SDL_KEY==SDLK_k){
- tmp=currentWorld;
- currentWorld=currentWorld->goWorldFront(player); // Go forward a layer if possible
- if(tmp!=currentWorld){
- player->loc.y=0;
- currentWorld->behind->detect(player);
- player->vel.y=.2;
- player->ground=false;
- }
- }
-
- if(SDL_KEY==SDLK_LSHIFT)player->speed = debug?4:3; // Sprint
- if(SDL_KEY==SDLK_LCTRL)player->speed = .5;
- }
- if(SDL_KEY==SDLK_p)toggleBlack();
- if(SDL_KEY==SDLK_F3)debug^=true;
- if(((SDL_KEY==SDLK_b) & (SDL_KEY==SDLK_F3)))posFlag^=true;
- if(SDL_KEY==SDLK_e){
- edown=true;
- if(heyOhLetsGo == 0){
- heyOhLetsGo = loops;
- player->inv->mouseSel = false;
- }
- if(loops - heyOhLetsGo >= 2 && !(player->inv->invOpen) && !(player->inv->selected)){
- player->inv->invHover=true;
- //heyOhLetsGo = 0;
+ if(!dialogBoxExists&&!fadeEnable){
+ switch(SDL_KEY){
+ case SDLK_ESCAPE:
+ gameRunning=false;
+ break;
+ case SDLK_a:
+ player->vel.x=-.15;
+ player->left = true;
+ player->right = false;
+ currentWorld=currentWorld->goWorldLeft(player);
+ break;
+ case SDLK_d:
+ player->vel.x=.15;
+ player->right = true;
+ player->left = false;
+ currentWorld=currentWorld->goWorldRight(player);
+ break;
+ case SDLK_s:
+ if(player->ground == 2){
+ player->ground=false;
+ player->loc.y-=HLINE*1.5;
+ }
+ break;
+ case SDLK_w:
+ if(inBattle)
+ currentWorld=((Arena *)currentWorld)->exitArena(player);
+ else currentWorld=currentWorld->goInsideStructure(player);
+ break;
+ case SDLK_SPACE:
+ if(player->ground){
+ player->vel.y=.4;
+ player->loc.y+=HLINE*2;
+ player->ground=false;
+ }
+ break;
+ case SDLK_i:
+ tmp=currentWorld;
+ currentWorld=currentWorld->goWorldBack(player); // Go back a layer if possible
+ if(tmp!=currentWorld){
+ currentWorld->detect(player);
+ player->vel.y=.2;
+ player->loc.y+=HLINE*5;
+ player->ground=false;
+ }
+ break;
+ case SDLK_k:
+ tmp=currentWorld;
+ currentWorld=currentWorld->goWorldFront(player); // Go forward a layer if possible
+ if(tmp!=currentWorld){
+ player->loc.y=0;
+ currentWorld->behind->detect(player);
+ player->vel.y=.2;
+ player->ground=false;
+ }
+ break;
+ case SDLK_LSHIFT:
+ player->speed = debug ? 4 : 3;
+ break;
+ case SDLK_LCTRL:
+ player->speed = .5;
+ break;
+ case SDLK_p:
+ toggleBlack();
+ break;
+ case SDLK_F3:
+ debug ^= true;
+ break;
+ case SDLK_b:
+ if(debug)posFlag ^= true;
+ break;
+ case SDLK_e:
++ edown=true;
+ if(!heyOhLetsGo){
+ heyOhLetsGo = loops;
+ player->inv->mouseSel = false;
+ }
+ if(loops - heyOhLetsGo >= 2 && !(player->inv->invOpen) && !(player->inv->selected))
+ player->inv->invHover=true;
+ break;
+ default:
+ break;
}
}
break;
/*
- KEYUP
- */
+ * KEYUP
+ */
+
case SDL_KEYUP:
- if(SDL_KEY==SDLK_a){left=false;}// Stop the player if movement keys are released
- if(SDL_KEY==SDLK_d){right=false;}
- if(!left&&!right)player->vel.x=0;
- if(SDL_KEY==SDLK_LSHIFT)player->speed = 1;
- if(SDL_KEY==SDLK_LCTRL)player->speed = 1;
- if(SDL_KEY==SDLK_h)player->health-=5;
- if(SDL_KEY==SDLK_f)player->light ^= true;
- if(SDL_KEY==SDLK_e){
+ switch(SDL_KEY){
+ case SDLK_a:
+ player->left = false;
+ break;
+ case SDLK_d:
+ player->right = false;
+ break;
+ case SDLK_LSHIFT:
+ case SDLK_LCTRL:
+ player->speed = 1;
+ break;
+ case SDLK_e:
+ edown=false;
if(player->inv->invHover){
player->inv->invHover = false;
- heyOhLetsGo = 0;
}else{
- if(player->inv->selected == false){
- player->inv->invOpening ^= true;
- player->inv->mouseSel = false;
- heyOhLetsGo = 0;
- }else{
- player->inv->selected = false;
- player->inv->mouseSel = false;
- heyOhLetsGo = 0;
- }
+ if(!player->inv->selected)player->inv->invOpening ^= true;
+ else player->inv->selected = false;
+ player->inv->mouseSel = false;
}
+ heyOhLetsGo = 0;
+ break;
+ case SDLK_LEFT:
+ if(player->inv->sel)player->inv->sel--;
+ break;
+ case SDLK_RIGHT:
+ player->inv->sel++;
+ break;
+ default:
+ break;
}
- if(SDL_KEY==SDLK_RIGHT){player->inv->sel+=1;}
- if(SDL_KEY==SDLK_LEFT){if(player->inv->sel!=0)player->inv->sel-=1;}
+
+ if(!player->left&&!player->right)
+ player->vel.x=0;
+
break;
default:
break;