aboutsummaryrefslogtreecommitdiffstats
path: root/src/items.cpp.bak
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2016-10-20 08:44:58 -0400
committerClyne Sullivan <tullivan99@gmail.com>2016-10-20 08:44:58 -0400
commitcb408a63a0f03ccb0b0ce7c338527a3b4964aff9 (patch)
treec373f7f74d0c1b5c834dccf47b7f3b343a0b870b /src/items.cpp.bak
parent4f838cdf582f0ace6d7de8cb376dfce7100fbea3 (diff)
removed all old entity stuff
Diffstat (limited to 'src/items.cpp.bak')
-rw-r--r--src/items.cpp.bak301
1 files changed, 301 insertions, 0 deletions
diff --git a/src/items.cpp.bak b/src/items.cpp.bak
new file mode 100644
index 0000000..180c5fa
--- /dev/null
+++ b/src/items.cpp.bak
@@ -0,0 +1,301 @@
+#include <inventory.hpp>
+#include <entities.hpp>
+#include <world.hpp>
+
+extern Player *player;
+extern World *currentWorld;
+
+/************************************************************************************
+* GLOBAL *
+************************************************************************************/
+
+/**************************************************
+* USE ITEM *
+**************************************************/
+
+int BaseItem::useItem()
+{
+ return 0;
+}
+
+int Sword::useItem()
+{
+ if (inUse())
+ return -1;
+
+ std::thread([this]{
+ setUse(true);
+ volatile bool swing = true;
+ bool back = false;
+ float coef = 0.0f;
+
+ while (swing) {
+
+ // handle swinging
+ if (!back)
+ coef += .8f;
+ else
+ coef -= .4f;
+
+ if (player->left)
+ rotation = coef;
+ else
+ rotation = -coef;
+
+ if (coef > 80 && !back)
+ back = true;
+
+ if (coef <= 0 && back) {
+ swing = false;
+ coef = 0.0f;
+ rotation = 0.0f;
+ }
+
+ if (!back) {
+ // handle collision with interaction
+ hitbox.start.y = player->loc.y+(player->height/3);
+ hitbox.start.x = player->left ? player->loc.x : player->loc.x + player->width;
+
+ for (auto &e : interact) {
+ float dist = 0.0f;
+ while (dist < dim.y) {
+ hitbox.end = hitbox.start;
+ if (player->left)
+ hitbox.end.x -= dist * cos(rotation*PI/180);
+ else
+ hitbox.end.x += dist * cos(rotation*PI/180);
+
+ hitbox.end.y += dist * sin(rotation*PI/180);
+
+ if (hitbox.end.x > e->loc.x && hitbox.end.x < e->loc.x + e->width) {
+ if (hitbox.end.y > e->loc.y && hitbox.end.y < e->loc.y + e->height) {
+ if (e->type == MOBT)
+ Mobp(e)->onHit(damage);
+ else
+ e->takeHit(damage, 600);
+
+ // add some blood
+ //for(int r = 0; r < (rand()%5);r++)
+ //currentWorld->addParticle(rand()%game::HLINE*3 + e->loc.x - .05f,e->loc.y + e->height*.5, game::HLINE,game::HLINE, -(rand()%10)*.01,((rand()%4)*.001-.002), {(rand()%75+10)/100.0f,0,0}, 10000);
+ }
+ }
+
+ dist += HLINES(0.5f);
+ }
+ }
+ }
+
+ // add a slight delay
+ SDL_Delay(1);
+ }
+ for (auto &e : interact)
+ e->setCooldown(0);
+ setUse(false);
+ }).detach();
+
+ return 0;
+}
+
+int Arrow::useItem()
+{
+
+ return 0;
+}
+
+int Bow::useItem()
+{
+ if (inUse())
+ return -1;
+
+ std::thread([this](void) {
+ setUse(true);
+
+ static Particles* part = nullptr;
+
+ if (part == nullptr) {
+ float rot = atan(sqrt(pow(ui::mouse.y-(player->loc.y + player->height),2)/pow(ui::mouse.x-player->loc.x,2)));
+ float speed = 1.0;
+ float vx = speed * cos(rot);
+ float vy = speed * sin(rot);
+
+ vx *= (ui::mouse.x < player->loc.x) ? -1 : 1;
+ vy *= (ui::mouse.y < player->loc.y + player->height) ? -1 : 1;
+
+ currentWorld->addParticle(player->loc.x, // x
+ player->loc.y + player->height, // y
+ HLINES(3), // width
+ HLINES(3), // height
+ vx, // vel.x
+ vy, // vel.y
+ {139, 69, 19}, // RGB color
+ 2500 // duration (ms)
+ );
+ part = &currentWorld->particles.back();
+ } else {
+ if (part->vel.x < 0.05 && part->vel.y < 0.05) {
+ part->duration = 0;
+ part = nullptr;
+ }
+ }
+
+ setUse(false);
+ }).detach();
+
+ return 0;
+}
+
+// TODO chance to hurt
+int RawFood::useItem()
+{
+ return 0;
+}
+
+int Food::useItem()
+{
+ std::cout << "Yum!" << std::endl;
+ return 0;
+}
+
+int ItemLight::useItem()
+{
+ if (player->light.radius > 0)
+ player->light.radius = 0;
+ else
+ player->light.radius = 500;
+ return 0;
+}
+
+/**************************************************
+* CLONE *
+**************************************************/
+
+BaseItem* BaseItem::clone()
+{
+ return new BaseItem(*this);
+}
+
+Sword* Sword::clone()
+{
+ return new Sword(*this);
+}
+
+Arrow* Arrow::clone()
+{
+ return new Arrow(*this);
+}
+
+Bow* Bow::clone()
+{
+ return new Bow(*this);
+}
+
+Food* Food::clone()
+{
+ return new Food(*this);
+}
+
+RawFood* RawFood::clone()
+{
+ return new RawFood(*this);
+}
+
+ItemLight* ItemLight::clone()
+{
+ return new ItemLight(*this);
+}
+/************************************************************************************
+* ITEM SPECIFIC *
+************************************************************************************/
+
+/**************************************************
+* ITEM *
+**************************************************/
+
+bool Item::inUse()
+{
+ return beingUsed;
+}
+
+void Item::setUse(bool use)
+{
+ beingUsed = use;
+}
+
+void Item::addInteract(Entity* e)
+{
+ interact.push_back(e);
+}
+
+void Item::addInteract(std::vector<Entity*> e)
+{
+ for (auto &v : e) {
+ interact.push_back(v);
+ }
+}
+
+GLuint Item::rtex()
+{
+ return tex->image[0];
+}
+
+GLuint Item::rtex(int n)
+{
+ return tex->image[n];
+}
+
+Item::~Item()
+{
+ delete tex;
+}
+
+/**************************************************
+* SWORD *
+**************************************************/
+
+float Sword::getDamage()
+{
+ return damage;
+}
+
+void Sword::setDamage(float d)
+{
+ damage = d;
+}
+
+/**************************************************
+* ARROW *
+**************************************************/
+
+float Arrow::getDamage()
+{
+ return damage;
+}
+
+void Arrow::setDamage(float d)
+{
+ damage = d;
+}
+
+
+/**************************************************
+* BOW *
+**************************************************/
+
+float Bow::getDamage()
+{
+ return damage;
+}
+
+void Bow::setDamage(float d)
+{
+ damage = d;
+}
+
+/**************************************************
+* FOODS *
+**************************************************/
+
+float RawFood::getHealth()
+{
+ return health;
+}