aboutsummaryrefslogtreecommitdiffstats
path: root/src/inventory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inventory.cpp')
-rw-r--r--src/inventory.cpp42
1 files changed, 31 insertions, 11 deletions
diff --git a/src/inventory.cpp b/src/inventory.cpp
index c64f62f..29e2dc9 100644
--- a/src/inventory.cpp
+++ b/src/inventory.cpp
@@ -408,7 +408,7 @@ void Inventory::draw(void) {
float t = (((float)massDfp[a]/(float)massRange)*.5f);
glActiveTexture(GL_TEXTURE0);
glUseProgram(textShader);
-
+
glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(0.0f,0.0f,0.0f, t >= 0? 255*t : 0)));
glUniform1i(textShader_uniform_texture, 0);
@@ -438,7 +438,7 @@ void Inventory::draw(void) {
curCurCoord[a].x -= float((curdfp[a]) * cos(-1));
curCurCoord[a].y += float((curdfp[a]) * sin(0));
cr.end = curCurCoord[a];
-
+
float curTrans = (((float)curdfp[a]/(float)(curRange?curRange:1))*0.5f);
glUseProgram(textShader);
@@ -495,7 +495,7 @@ void Inventory::draw(void) {
&textShader_uniform_texture,
&textShader_attribute_coord,
&textShader_attribute_tex);
-
+
glUseProgram(textShader);
glUniform4f(textShader_uniform_color, 1.0, 1.0, 1.0, 1.0);
@@ -503,7 +503,7 @@ void Inventory::draw(void) {
glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(255, 255, 255, t >= 0 ? 255 * t : 0)));
drawRect(vec2(r.end.x - (itemWide*sc)/2 - (itemWide*sc)*.09,r.end.y - (itemWide*sc)/2 - (itemWide*sc)*.09),
vec2(r.end.x + (itemWide*sc)/2 + (itemWide*sc)*.09,r.end.y - (itemWide*sc)/2));
-
+
// top
glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(255, 255, 255, t >= 0 ? 255 * t : 0)));
drawRect(vec2(r.end.x - (itemWide*sc)/2 - (itemWide*sc)*.09,r.end.y + (itemWide*sc)/2 + (itemWide*sc)*.09),
@@ -617,14 +617,34 @@ void itemDraw(Player *p, Item *d) {
itemLoc.y = p->loc.y+(p->height/3);
itemLoc.x = p->left?p->loc.x-d->dim.x/2:p->loc.x+p->width-d->dim.x/2;
+ glUseProgram(worldShader);
+
if (p->left) {
- glTranslatef(itemLoc.x+d->dim.x/2,itemLoc.y,0);
- glRotatef(d->rotation, 0.0f, 0.0f, 1.0f);
- glTranslatef(-itemLoc.x-d->dim.x/2,-itemLoc.y,0);
+ // move to center of screen
+ glm::mat4 tro = glm::translate(glm::mat4(1.0f),
+ glm::vec3(itemLoc.x+d->dim.x/2, itemLoc.y, 0));
+ // rotate off center
+ glm::mat4 rot = glm::rotate(glm::mat4(1.0f),
+ static_cast<GLfloat>((d->rotation*3.14159)/180.0f),
+ glm::vec3(0.0f, 0.0f, 1.0f));
+ // move back to player
+ glm::mat4 trt = glm::translate(glm::mat4(1.0f),
+ glm::vec3(-itemLoc.x-d->dim.x/2, -itemLoc.y, 0));
+ // tell shader to translate the object using steps above
+ glUniformMatrix4fv(worldShader_uniform_transform, 1, GL_FALSE, glm::value_ptr(tro * rot * trt));
} else {
- glTranslatef(itemLoc.x+d->dim.x/2,itemLoc.y,0);
- glRotatef(d->rotation, 0.0f, 0.0f, 1.0f);
- glTranslatef(-itemLoc.x-d->dim.x/2,-itemLoc.y,0);
+ // move to center of screen
+ glm::mat4 tro = glm::translate(glm::mat4(1.0f),
+ glm::vec3(itemLoc.x+d->dim.x/2,itemLoc.y,0));
+ // rotate off center
+ glm::mat4 rot = glm::rotate(glm::mat4(1.0f),
+ static_cast<GLfloat>((d->rotation*3.14159)/180.0f),
+ glm::vec3(0.0f, 0.0f, 1.0f));
+ // move back to player
+ glm::mat4 trt = glm::translate(glm::mat4(1.0f),
+ glm::vec3(-itemLoc.x-d->dim.x/2,-itemLoc.y,0));
+ // tell shader to translate the object using steps above
+ glUniformMatrix4fv(worldShader_uniform_transform, 1, GL_FALSE, glm::value_ptr(tro * rot * trt));
}
GLfloat itemTex[12] = {0.0, 0.0,
@@ -650,7 +670,7 @@ void itemDraw(Player *p, Item *d) {
itemLoc.x+d->dim.x, itemLoc.y+d->dim.y, 1.0,
itemLoc.x, itemLoc.y+d->dim.y, 1.0,
itemLoc.x, itemLoc.y, 1.0};
- glUseProgram(worldShader);
+
glBindTexture(GL_TEXTURE_2D,d->tex->image[0]);
glEnableVertexAttribArray(worldShader_attribute_coord);