aboutsummaryrefslogtreecommitdiffstats
path: root/src/old/inventory.cpp.bak
diff options
context:
space:
mode:
Diffstat (limited to 'src/old/inventory.cpp.bak')
-rw-r--r--src/old/inventory.cpp.bak747
1 files changed, 0 insertions, 747 deletions
diff --git a/src/old/inventory.cpp.bak b/src/old/inventory.cpp.bak
deleted file mode 100644
index 1b325c0..0000000
--- a/src/old/inventory.cpp.bak
+++ /dev/null
@@ -1,747 +0,0 @@
-#include <inventory.hpp>
-
-#include <numeric>
-
-#include <gametime.hpp>
-
-#include <render.hpp>
-
-#include <tinyxml2.h>
-using namespace tinyxml2;
-
-extern Player *player;
-extern GLuint invUI;
-static vec2 itemLoc;
-static const unsigned char numSlot = 7;
-Mix_Chunk* swordSwing;
-
-static std::vector<NewCurrency *> currencyMap;
-static std::vector<Item *> ItemMap;
-
-
-void itemDraw(Player *p, Item* d);
-
-bool strCaseCmp(std::string one, std::string two)
-{
- for (auto &s : one) {
- s = std::tolower(s);
- }
- for (auto &t : two) {
- t = std::tolower(t);
- }
-
- if (one == two) return true;
- return false;
-}
-
-void items(void)
-{
- XMLDocument xml;
- xml.LoadFile("config/items.xml");
- XMLElement *exml = xml.FirstChildElement("item");
- XMLElement *cxml = xml.FirstChildElement("currency");
-
- while (cxml) {
-
- // NEWEWEWEWEWEWEWEW
- // TODO
-
-
- cxml = cxml->NextSiblingElement();
- }
- while (exml) {
-
- std::string name = exml->Attribute("type");
- // if the type is blank
- if (strCaseCmp(name, "blank")) {
-
- ItemMap.push_back(new BaseItem());
-
- // if the type is a sword
- } else if (strCaseCmp(name, "sword")) {
-
- Sword *tmpSword = new Sword();
- tmpSword->setDamage(exml->FloatAttribute("damage"));
- ItemMap.push_back(tmpSword->clone());
- delete tmpSword;
-
- // if the type is a bow
- } else if (strCaseCmp(name, "bow")) {
-
- Bow *tmpBow = new Bow();
- tmpBow->setDamage(exml->FloatAttribute("damage"));
- ItemMap.push_back(tmpBow->clone());
- delete tmpBow;
-
- // arrow
- } else if (strCaseCmp(name, "arrow")) {
-
- Arrow *tmpArrow = new Arrow();
- tmpArrow->setDamage(exml->FloatAttribute("damage"));
- ItemMap.push_back(tmpArrow->clone());
- delete tmpArrow;
-
- // uncooked / raw food
- }else if (strCaseCmp(name, "raw food")) {
-
- ItemMap.push_back(new RawFood());
-
- // cooked food or natural food
- } else if (strCaseCmp(name, "food") || strCaseCmp(name, "cooked food")) {
-
- ItemMap.push_back(new Food());
-
- // light
- } else if (strCaseCmp(name, "light")) {
-
- ItemMap.push_back(new ItemLight());
-
- // if type was not specified make it a base item
- } else {
-
- ItemMap.push_back(new BaseItem());
- }
-
- // set how much of the item we can stack
- if(exml->QueryUnsignedAttribute("maxStackSize", &ItemMap.back()->maxStackSize) != XML_NO_ERROR) {
- ItemMap.back()->maxStackSize = 1;
- }
-
- // set all of the texture frames we can use
- ItemMap.back()->tex = new Texturec(1, exml->Attribute("sprite"));
-
- // get the width and height of the object based off of its sprite
- dim2 tmpDim = Texture::imageDim(exml->Attribute("sprite"));
- ItemMap.back()->dim.x = HLINES(tmpDim.x/2);
- ItemMap.back()->dim.y = HLINES(tmpDim.y/2);
-
- ItemMap.back()->name = exml->Attribute("name");
-
- exml = exml->NextSiblingElement();
- }
-}
-
-int Inventory::addItem(std::string name, uint count)
-{
- for (uint i = 0; i < ItemMap.size(); i++) {
- if (strCaseCmp(ItemMap[i]->name, name)) {
- for (auto &it : Items) {
- if (it.second && strCaseCmp(it.first->name, name)) {
- if ((it.second + count) < it.first->maxStackSize) {
- it.second += count;
- return 0;
- } else {
- count -= (it.second + count) - it.first->maxStackSize;
- it.second = it.first->maxStackSize;
- }
- }
- }
- uint tmpCount = count;
- do {
- if ((count) > ItemMap[i]->maxStackSize) {
- count -= ItemMap[i]->maxStackSize;
- tmpCount = ItemMap[i]->maxStackSize;
- } else {
- tmpCount = count;
- count = 0;
- }
- Items[os] = std::make_pair(ItemMap[i]->clone(), tmpCount);
- if (!Items[os+1].second) {
- os++;
- } else {
- for (uint z = 0; z < Items.size(); z++) {
- if (!Items[z].second) {
- os = z;
- }
- }
- }
- } while (count > 0);
- return 0;
- }
- }
- return -1;
-}
-
-int Inventory::takeItem(std::string name, uint count)
-{
-
- // returns
- // 0 = good
- // -1 = no such item exists
- // -2 = if item doesnt exist in inventory
- // postive items = number returned is how many more the item needs
-
- std::string iden;
-
- for (uint i = 0; i < ItemMap.size(); i++) {
- if (ItemMap[i]->name == name) {
- iden = name;
- break;
- }
- }
-
- if (iden.empty()) {
- return -1;
- }
-
- for (auto &i : Items) {
- if (i.second && i.first->name == iden) {
- if (count > i.second) {
- return (count - i.second);
- } else {
- i.second -= count;
-
- }
- return 0;
- }
- }
-
- return -2;
-}
-
-int Inventory::hasItem(std::string name) {
-
- for (auto &i : Items) {
- if (i.first->name == name) {
- return i.second;
- }
- }
-
- return 0;
-}
-void initInventorySprites(void) {
-
- items();
-
- // keep
- swordSwing = Mix_LoadWAV("assets/sounds/shortSwing.wav");
- Mix_Volume(2,100);
-}
-
-void destroyInventory(void) {
-
- // NEWEWEWEWEWEWEWEW
- while (!ItemMap.empty()) {
- delete ItemMap.back();
- ItemMap.pop_back();
- }
-
- Mix_FreeChunk(swordSwing);
-}
-
-
-const char *getItemTexturePath(std::string name){
- for (auto &i : ItemMap) {
- if (i->name == name)
- return i->tex->texLoc[0].c_str();
- }
- return NULL;
-}
-
-GLuint getItemTexture(std::string name) {
- for (auto &i : ItemMap) {
- if (i->name == name) {
- return i->tex->image[0];
- }
- }
- return 0;
-}
-
-float getItemWidth(std::string name) {
- for (auto &i : ItemMap) {
- if (i->name == name)
- return i->dim.x;
- }
- return 0;
-}
-
-float getItemHeight(std::string name) {
- for (auto &i : ItemMap) {
- if (i->name == name)
- return i->dim.y;
- }
- return 0;
-}
-
-Inventory::Inventory(unsigned int s) {
- sel=0;
- size=s;
-
- Items.resize(size);
- for (auto &i : Items) {
- i = std::make_pair(nullptr, 0);
- }
-}
-
-Inventory::~Inventory(void) {
-}
-
-void Inventory::setSelection(unsigned int s) {
- sel=s;
-}
-
-void Inventory::setSelectionUp() {
- if (!sel--)
- sel++;
-}
-
-void Inventory::setSelectionDown() {
- if (++sel >= numSlot)
- sel = numSlot - 1;
-}
-
-void Inventory::draw(void) {
- static std::vector<int>dfp(numSlot);
- static std::vector<Ray>iray(numSlot);
- static std::vector<vec2>curCoord(numSlot);
- static int range = 200;
-
- static std::vector<int>curdfp(4);
- static std::vector<Ray>curRay(4);
- static std::vector<vec2>curCurCoord(4);
- static int curRange = 100;
-
- static std::vector<int>massDfp(32);
- static std::vector<vec2>massRay(32);
- static std::vector<int>massOrder = {9,10,11,12,13,14,22,21,20,19,18,17,16,8,0,1,2,3,4,5,6,7,15,23,31,30,29,28,27,26,25,24};
- static std::vector<int>massOrderClosing = {31,30,23,29,22,15,28,21,14,7,27,20,13,6,26,19,12,5,25,18,11,4,24,17,10,3,16,9,2,8,1,0};
- static int massRange = 200;
-
- static int itemWide = 45;
- float angleB = (float)180/(float)numSlot;
- float angle = float(angleB/2.0f);
- unsigned int a = 0;
- //static vec2 mouseStart = {0,0};
-
- auto deltaTime = game::time::getDeltaTime();
- auto SCREEN_WIDTH = game::SCREEN_WIDTH;
- auto SCREEN_HEIGHT = game::SCREEN_HEIGHT;
-
- for (auto &r : iray) {
- r.start.x = player->loc.x + (player->width / 2);
- r.start.y = player->loc.y + (player->height / 2);
- curCoord[a++] = r.start;
- } a = 0;
-
- for (auto &cr : curRay) {
- cr.start.x = (offset.x + SCREEN_WIDTH / 2);
- cr.start.y = offset.y - (a * itemWide * 1.5f);
- curCurCoord[a++] = cr.start;
- } a = 0;
-
- for (int r = 0; r < 4; r++) {
- for (int c = 0; c < 8; c++) {
- massRay[a ].x = ((offset.x - SCREEN_WIDTH / 2) + itemWide) + c * itemWide * 1.5f;
- massRay[a++].y = ((offset.y + SCREEN_HEIGHT / 2) - itemWide * 1.5f) - r * itemWide * 1.5f;
- }
- } a = 0;
-
- auto averagef = [](const std::vector<int> &v) {
- auto sum = std::accumulate(std::begin(v), std::end(v), 0);
- return sum / v.size();
- };
-
- ui::fontTransInv = std::clamp(255 * (averagef(dfp) / range), 0ul, 255ul);
-
- if (invOpening) {
- for (auto &d : dfp) {
- if (!a || dfp[a - 1] > 50)
- d += 4.0f * deltaTime;
- if (d > range)
- d = range;
- a++;
- } a = 0;
-
- for (auto &cd : curdfp) {
- if (!a || curdfp[a - 1] > 90)
- cd += 3.0f * deltaTime;
- if (cd > curRange)
- cd = curRange;
- a++;
- } a = 0;
-
- while (a < massOrder.size()) {
- if (!a || massDfp[massOrder[a - 1]] > massRange * 0.75f)
- massDfp[massOrder[a]] += 20.0f * deltaTime;
- if (massDfp[massOrder[a]] > massRange)
- massDfp[massOrder[a]] = massRange;
- a++;
- } a = 0;
-
- if (numSlot > 0)
- invOpen = true;
- } else {
- for (auto &d : dfp) {
- if (d > 0)
- d -= 4.5f * deltaTime;
- }
- for (auto &cd : curdfp) {
- if (cd > 0)
- cd -= 3.0f * deltaTime;
- }
-
- while (a < massRay.size()) {
- if (!a || massDfp[massOrderClosing[a - 1]] <= 0)
- massDfp[massOrderClosing[a]] -= 30.0f * deltaTime;
- else if (massDfp[massOrderClosing[a - 1]] < 0)
- massDfp[massOrderClosing[a - 1]] = 0;
- a++;
- } a = 0;
-
- if (std::all_of(std::begin(massDfp), std::end(massDfp), [](auto d) { return d <= 0; })) {
- invOpen = false;
- for (auto &md : massDfp) {
- if (md < 0)
- md = 0;
- }
- }
-
- }
-
- /*
- * a = 0
- */
-
- if (invOpen) {
- Render::useShader(&Render::textShader);
- for(auto &mr : massRay) {
- float t = (((float)massDfp[a]/(float)massRange)*.5f);
- glActiveTexture(GL_TEXTURE0);
- Render::textShader.use();
-
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(0.0f,0.0f,0.0f, t >= 0? 255*t : 0)));
- glUniform1i(Render::textShader.uniform[WU_texture], 0);
-
- Render::drawRect(vec2(mr.x-(itemWide/2), mr.y-(itemWide/2)), vec2(mr.x-(itemWide/2)+itemWide, mr.y-(itemWide/2)+itemWide), -6.0);
-
- glUseProgram(0);
- if (!Items.empty() && a+numSlot < Items.size() && Items[a+numSlot].second) {
- Render::textShader.use();
- glBindTexture(GL_TEXTURE_2D, Items[a+numSlot].first->tex->image[0]);//itemtex[items[a+numSlot].id]);
- glUniform4f(Render::textShader.uniform[WU_tex_color], 1.0f, 1.0f, 1.0f, ((float)massDfp[a]/(float)(massRange?massRange:1))*0.8f);
-
- if (Items[a+numSlot].first->dim.y > Items[a+numSlot].first->dim.x) {
- Render::drawRect(vec2(mr.x-((itemWide/2)*((float)Items[a+numSlot].first->dim.x/(float)Items[a+numSlot].first->dim.y)), mr.y-(itemWide/2)),
- vec2(mr.x+((itemWide/2)*((float)Items[a+numSlot].first->dim.x/(float)Items[a+numSlot].first->dim.y)), mr.y+(itemWide/2)), -6.1);
- } else {
- Render::drawRect(vec2(mr.x-(itemWide/2),mr.y-(itemWide/2)*((float)Items[a+numSlot].first->dim.y/(float)Items[a+numSlot].first->dim.x)),
- vec2(mr.x-(itemWide/2),mr.y+(itemWide/2)*((float)Items[a+numSlot].first->dim.y/(float)Items[a+numSlot].first->dim.x)), -6.1);
- }
- ui::setFontColor(255,255,255,((float)massDfp[a]/(float)(massRange?massRange:1))*255);
- ui::putText(mr.x-(itemWide/2)+(itemWide*.85),mr.y-(itemWide/2),"%d",Items[a+numSlot].second);
- ui::setFontColor(255,255,255,255);
- Render::textShader.unuse();
- }
- a++;
- }a=0;
-
- for(auto &cr : curRay) {
- 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);
-
- Render::textShader.use();
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(0.0f, 0.0f, 0.0f, curTrans >= 0 ? 255 * curTrans : 0)));
- Render::drawRect(vec2(cr.end.x-(itemWide/2), cr.end.y-(itemWide/2)),
- vec2(cr.end.x-(itemWide/2)+itemWide,cr.end.y-(itemWide/2)+itemWide), -6.0);
- Render::textShader.unuse();
- a++;
- }a=0;
-
- for(auto &r : iray) {
- angle = 180 - (angleB * a) - angleB / 2.0f;
- curCoord[a].x += float((dfp[a]) * cos(angle*PI/180));
- curCoord[a].y += float((dfp[a]) * sin(angle*PI/180));
- r.end = curCoord[a];
-
- float t = ((float)dfp[a]/(float)(range?range:1))*0.5f;
-
- Render::textShader.use();
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(0.0f, 0.0f, 0.0f, t >= 0 ? 255 * t : 0)));
- Render::drawRect(vec2(r.end.x-(itemWide/2), r.end.y-(itemWide/2)),
- vec2(r.end.x-(itemWide/2)+itemWide,r.end.y-(itemWide/2)+itemWide), -6.0);
-
- if (!Items.empty() && a < numSlot && Items[a].second) {
- glBindTexture(GL_TEXTURE_2D, Items[a].first->tex->image[0]);//itemtex[items[a].id]);
- glUniform4f(Render::textShader.uniform[WU_tex_color], 1.0f, 1.0f, 1.0f, ((float)dfp[a]/(float)(range?range:1))*0.8f);
- if (Items[a].first->dim.y > Items[a].first->dim.x) {
- Render::drawRect(vec2(r.end.x-((itemWide/2)*((float)Items[a].first->dim.x/(float)Items[a].first->dim.y)), r.end.y-(itemWide/2)),
- vec2(r.end.x+((itemWide/2)*((float)Items[a].first->dim.x/(float)Items[a].first->dim.y)), r.end.y+(itemWide/2)), -6.1);
- } else {
- Render::drawRect(vec2(r.end.x-(itemWide/2),r.end.y-(itemWide/2)*((float)Items[a].first->dim.y/(float)Items[a].first->dim.x)),
- vec2(r.end.x+(itemWide/2),r.end.y+(itemWide/2)*((float)Items[a].first->dim.y/(float)Items[a].first->dim.x)), -6.1);
- }
- ui::setFontColor(255,255,255,((float)dfp[a]/(float)(range?range:1))*255);
- ui::putStringCentered(r.end.x,r.end.y-(itemWide*.9),Items[a].first->name);//itemMap[items[a].id]->name);
- ui::putText(r.end.x-(itemWide/2)+(itemWide*.85),r.end.y-(itemWide/2),"%d",Items[a].second);
- ui::setFontColor(255,255,255,255);
- }
- Render::textShader.unuse();
- if (sel == a) {
- static float sc = 1;
- static bool up;
- up ? sc += .0025*deltaTime : sc -= .0025*deltaTime;
- if (sc > 1.2) {
- up = false;
- sc = 1.2;
- }
- if (sc < 1.0) {
- up = true;
- sc = 1.0;
- }
- float t = ((float)dfp[a]/(float)(range?range:1));
- Render::useShader(&Render::textShader);
-
- Render::textShader.use();
- glUniform4f(Render::textShader.uniform[WU_tex_color], 1.0, 1.0, 1.0, 1.0);
-
- // bottom
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(255, 255, 255, t >= 0 ? 255 * t : 0)));
- Render::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), -6.2);
-
- // top
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(255, 255, 255, t >= 0 ? 255 * t : 0)));
- Render::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), -6.2);
-
- // left
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(255, 255, 255, t >= 0 ? 255 * t : 0)));
- Render::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 ,r.end.y + (itemWide*sc)/2 + (itemWide*sc)*.09), -6.2);
-
- // right
- glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(255, 255, 255, t >= 0 ? 255 * t : 0)));
- Render::drawRect(vec2(r.end.x + (itemWide*sc)/2 ,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 + (itemWide*sc)*.09), -6.2);
-
- //glUseProgram(0);
- }
- a++;
- }
- } /*else if (invHover) {
- static unsigned int highlight = 0;
- static unsigned int thing = 0;
-
- if (!mouseSel) {
- // setup?
- mouseStart.x = ui::mouse.x - offset.x;
- highlight = sel;
- thing = sel;
- mouseSel = true;
- } else {
- if((ui::mouse.x - offset.x) >= mouseStart.x){
- thing = (ui::mouse.x - offset.x - mouseStart.x)/80;
- highlight=sel+thing;
- if(highlight>numSlot-1)highlight=numSlot-1;
- if(SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_LEFT)){
- sel = highlight;
- mouseSel=false;
- invHover=false;
- selected = true;
- }
- }
- if ((ui::mouse.x - offset.x) < mouseStart.x) {
- thing = (mouseStart.x - (ui::mouse.x - offset.x))/80;
- if ((int)sel - (int)thing < 0)
- highlight = 0;
- else
- highlight = sel - thing;
- if(SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_LEFT)){
- sel = highlight;
- mouseSel=false;
- invHover=false;
- selected = true;
- }
- }
- }
-
- a = 0;
- for (auto &r : iray) {
- angle = 180 - (angleB * a) - angleB / 2.0f;
- curCoord[a].x += float(range) * cos(angle*PI/180);
- curCoord[a].y += float(range) * sin(angle*PI/180);
- r.end = curCoord[a];
-
- // square drawing
- glColor4f(0.0f, 0.0f, 0.0f, a == highlight ? 0.5f : 0.1f);
- glBegin(GL_QUADS);
- glVertex2i(r.end.x-(itemWide/2), r.end.y-(itemWide/2));
- glVertex2i(r.end.x+(itemWide/2), r.end.y-(itemWide/2));
- glVertex2i(r.end.x+(itemWide/2), r.end.y+(itemWide/2));
- glVertex2i(r.end.x-(itemWide/2), r.end.y+(itemWide/2));
- glEnd();
-
- if (a < items.size() && items[a].count) {
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, itemtex[items[a].id]);
- glColor4f(1.0f, 1.0f, 1.0f, a == highlight ? 0.8f : 0.2f);
- glBegin(GL_QUADS);
- if(itemMap[items[a].id]->height > itemMap[items[a].id]->width){
- glTexCoord2i(0,1);glVertex2i(r.end.x-((itemWide/2)*((float)itemMap[items[a].id]->width/(float)itemMap[items[a].id]->height)),r.end.y-(itemWide/2));
- glTexCoord2i(1,1);glVertex2i(r.end.x+((itemWide/2)*((float)itemMap[items[a].id]->width/(float)itemMap[items[a].id]->height)),r.end.y-(itemWide/2));
- glTexCoord2i(1,0);glVertex2i(r.end.x+((itemWide/2)*((float)itemMap[items[a].id]->width/(float)itemMap[items[a].id]->height)),r.end.y+(itemWide/2));
- glTexCoord2i(0,0);glVertex2i(r.end.x-((itemWide/2)*((float)itemMap[items[a].id]->width/(float)itemMap[items[a].id]->height)),r.end.y+(itemWide/2));
- }else{
- glTexCoord2i(0,1);glVertex2i(r.end.x-(itemWide/2),r.end.y-(itemWide/2)*((float)itemMap[items[a].id]->height/(float)itemMap[items[a].id]->width));
- glTexCoord2i(1,1);glVertex2i(r.end.x+(itemWide/2),r.end.y-(itemWide/2)*((float)itemMap[items[a].id]->height/(float)itemMap[items[a].id]->width));
- glTexCoord2i(1,0);glVertex2i(r.end.x+(itemWide/2),r.end.y+(itemWide/2)*((float)itemMap[items[a].id]->height/(float)itemMap[items[a].id]->width));
- glTexCoord2i(0,0);glVertex2i(r.end.x-(itemWide/2),r.end.y+(itemWide/2)*((float)itemMap[items[a].id]->height/(float)itemMap[items[a].id]->width));
- }
- glEnd();
- glDisable(GL_TEXTURE_2D);
- }
- a++;
- }
-
- if (highlight < items.size()) {
- ui::putStringCentered(player->loc.x + player->width / 2,
- player->loc.y + range * 0.75f,
- itemMap[items[highlight].id]->name
- );
- }
- }*/
- /*if (!items.empty() && items.size() > sel && items[sel].count)
- itemDraw(player,items[sel].id);*/
- if (!Items.empty() && Items.size() > sel && Items[sel].second)
- itemDraw(player, Items[sel].first);
-}
-
-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;
-
- Render::worldShader.use();
-
- if (p->left) {
- // 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(Render::worldShader.uniform[WU_transform], 1, GL_FALSE, glm::value_ptr(tro * rot * trt));
- } else {
- // 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(Render::worldShader.uniform[WU_transform], 1, GL_FALSE, glm::value_ptr(tro * rot * trt));
- }
-
- GLfloat itemTex[12] = {0.0, 0.0,
- 1.0, 0.0,
- 1.0, 1.0,
-
- 1.0, 1.0,
- 0.0, 1.0,
- 0.0, 0.0};
- if (!p->left) {
- itemTex[0] = 1.0;
- itemTex[2] = 0.0;
- itemTex[4] = 0.0;
- itemTex[6] = 0.0;
- itemTex[8] = 1.0;
- itemTex[10] = 1.0;
- }
-
- GLfloat itemCoords[] = {itemLoc.x, itemLoc.y, p->z,
- itemLoc.x+d->dim.x, itemLoc.y, p->z,
- itemLoc.x+d->dim.x, itemLoc.y+d->dim.y, p->z,
-
- itemLoc.x+d->dim.x, itemLoc.y+d->dim.y, p->z,
- itemLoc.x, itemLoc.y+d->dim.y, p->z,
- itemLoc.x, itemLoc.y, p->z};
-
- glBindTexture(GL_TEXTURE_2D,d->tex->image[0]);
-
- Render::worldShader.enable();
-
- glVertexAttribPointer(Render::worldShader.coord, 3, GL_FLOAT, GL_FALSE, 0, itemCoords);
- glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, 0, itemTex);
- glDrawArrays(GL_TRIANGLES, 0, 6);
-
- Render::worldShader.disable();
- Render::worldShader.unuse();
-}
-
-/*
- * This function is used to trigger the player's item's ability.
- */
-int Inventory::useItem(void)
-{
- return 0;
-}
-
-int Inventory::useCurrent()
-{
- if (Items[sel].second)
- return Items[sel].first->useItem();
- return -1;
-}
-
-void Inventory::currentAddInteract(Entity* e)
-{
- if (Items[sel].second)
- Items[sel].first->addInteract(e);
-}
-
-void Inventory::currentAddInteract(std::vector<Entity*> e)
-{
- if (Items[sel].second)
- Items[sel].first->addInteract(e);
-}
-
-bool Inventory::detectCollision(vec2 one, vec2 two) {
- (void)one;
- (void)two;
- return false;
-}
-
-const Item* Inventory::getCurrentItem(void)
-{
- if (Items.size() > 0)
- return Items[sel].first;
- else
- return nullptr;
-}
-
-void InventorySystem::update(entityx::EntityManager &en, entityx::EventManager &ev, entityx::TimeDelta dt)
-{
- (void)en;
- (void)ev;
- (void)dt;
-}
-
-void InventorySystem::configure(entityx::EventManager &em)
-{
- em.subscribe<MouseScrollEvent>(*this);
-}
-
-void InventorySystem::receive(const MouseScrollEvent &mse)
-{
- static int mouseWheelUpCount = 0, mouseWheelDownCount = 0;
-
- if ((mse.scrollDistance < 0) && ((++mouseWheelUpCount % 5) == 0) ) {
- mouseWheelUpCount = 0;
- player->inv->setSelectionUp();
- } else if ( (++mouseWheelDownCount % 5) == 0 ) {
- mouseWheelDownCount = 0;
- player->inv->setSelectionDown();
- }
-}