diff options
Diffstat (limited to 'src/old/mob.cpp.bak')
-rw-r--r-- | src/old/mob.cpp.bak | 539 |
1 files changed, 0 insertions, 539 deletions
diff --git a/src/old/mob.cpp.bak b/src/old/mob.cpp.bak deleted file mode 100644 index e78e5cd..0000000 --- a/src/old/mob.cpp.bak +++ /dev/null @@ -1,539 +0,0 @@ -#include <mob.hpp> -#include <ui.hpp> -#include <world.hpp> -#include <brice.hpp> - -extern World *currentWorld; - -Mob::Mob(void) -{ - type = MOBT; - inv = nullptr; - rider = nullptr; - xmle = nullptr; - canMove = true; - loc = 0; -} - -Page::Page(void) : Mob() -{ - - ridable = false; - aggressive = false; - maxHealth = health = 50; - width = HLINES(6); - height = HLINES(4); - tex = TextureIterator({"assets/items/ITEM_PAGE.png"}); - pageTexture = 0; -} - -void Page::act(void) -{ - if (player->loc.x > loc.x - 100 && player->loc.x < loc.x + 100 && isInside(ui::mouse) && - (SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_RIGHT))) { - std::thread([this](void){ - ui::drawPage(pageTexture); - ui::waitForDialog(); - game::setValue(cId, cValue); - game::briceUpdate(); - die(); - }).detach(); - } -} - -void Page::onHit(unsigned int _health) -{ - (void)_health; - act(); -} - -bool Page::bindTex(void) -{ - glActiveTexture(GL_TEXTURE0); - tex(0); - return true; -} - -void Page::createFromXML(XMLElement *e, World *w=nullptr) -{ - (void)w; - float Xlocx; - if (e->QueryFloatAttribute("x", &Xlocx) == XML_NO_ERROR) - loc.x = Xlocx; - pageTexPath = e->StrAttribute("id"); - pageTexture = Texture::loadTexture(pageTexPath); - - cId = e->StrAttribute("cid"); - cValue = e->StrAttribute("cvalue"); - - xmle = e; -} - -void Page::saveToXML(void) -{} - -Door::Door(void) : Mob() -{ - ridable = false; - aggressive = false; - maxHealth = health = 50; - width = HLINES(12); - height = HLINES(20); - tex = TextureIterator({"assets/style/classic/door.png"}); -} - -void Door::act(void) -{ -} - -void Door::onHit(unsigned int _health) -{ - (void)_health; -} - -bool Door::bindTex(void) -{ - glActiveTexture(GL_TEXTURE0); - tex(0); - return true; -} - -void Door::createFromXML(XMLElement *e, World *w=nullptr) -{ - (void)w; - float Xlocx; - if (e->QueryFloatAttribute("x", &Xlocx) == XML_NO_ERROR) - loc.x = Xlocx; -} - -void Door::saveToXML(void) -{} - -Cat::Cat(void) : Mob() -{ - ridable = true; - aggressive = false; - maxHealth = health = 100000; - width = HLINES(19); - height = HLINES(15); - tex = TextureIterator({"assets/cat.png"}); - actCounterInitial = 0; - actCounter = 1; -} - -void Cat::act(void) -{ - static float vely = 0; - if (rider != nullptr) { - if (!rider->ground) { - loc.y += HLINES(2); - vel.y = .4; - } - if (rider->speed > 1) { - vely = .5; - } else if (rider->speed == .5) { - vely = -.5; - } else { - vely = 0; - } - vel.y = vely; - if (!rider->ground) { - if ((vel.y -= .015) < -.2) - rider->ground = true; - } - vel.x = .1 * (rider->left ? -1 : 1); - } else { - vel = 0; - } -} - -void Cat::onHit(unsigned int _health) -{ - health += _health; -} - -bool Cat::bindTex(void) -{ - glActiveTexture(GL_TEXTURE0); - tex(0); - return true; -} - -void Cat::createFromXML(XMLElement *e, World *w=nullptr) -{ - (void)w; - float spawnc; - - if (e->QueryFloatAttribute("x", &spawnc) == XML_NO_ERROR) - loc.x = spawnc; - else - loc.x = e->FloatAttribute("spawnx"); - - if (e->QueryFloatAttribute("y", &spawnc) == XML_NO_ERROR) - loc.y = spawnc; - - xmle = e; -} - -void Cat::saveToXML(void) -{ - E_SAVE_COORDS; - xmle->SetAttribute("alive", alive); -} - -Rabbit::Rabbit(void) : Mob() -{ - ridable = true; - aggressive = false; - maxHealth = health = 50; - width = HLINES(10); - height = HLINES(8); - tex = TextureIterator({"assets/rabbit.png", "assets/rabbit1.png"}); - actCounterInitial = randGet() % 240 + 15; - actCounter = 1; - - drop = { - std::make_tuple("Dank MayMay", 5, 1.00f) - }; -} - -void Rabbit::act(void) -{ - static int direction = 0; - - if (!--actCounter) { - actCounter = actCounterInitial; - direction = (randGet() % 3 - 1); //sets the direction to either -1, 0, 1 - if (direction == 0) - ticksToUse /= 2; - vel.x *= direction; - } - - if (ground && direction) { - ground = false; - vel.y = .15; - loc.y += HLINES(0.25f); - vel.x = 0.05f * direction; - } -} - -void Rabbit::onHit(unsigned int _health) -{ - takeHit(_health, 600); -} - -bool Rabbit::bindTex(void) -{ - glActiveTexture(GL_TEXTURE0); - tex(!ground); - return true; -} - -void Rabbit::createFromXML(XMLElement *e, World *w=nullptr) -{ - (void)w; - float spawnc; - - xmle = e; - - if (e->QueryFloatAttribute("x", &spawnc) == XML_NO_ERROR) - loc.x = spawnc; - else - loc.x = e->FloatAttribute("spawnx"); - - if (e->QueryFloatAttribute("y", &spawnc) == XML_NO_ERROR) - loc.y = spawnc; - - E_LOAD_HEALTH; - - if (e->QueryBoolAttribute("aggressive", &aggressive) != XML_NO_ERROR) - aggressive = false; -} - -void Rabbit::saveToXML(void) -{ - E_SAVE_HEALTH; -} - -Bird::Bird(void) : Mob() -{ - ridable = true; - aggressive = false; - maxHealth = health = 50; - width = HLINES(8); - height = HLINES(8); - tex = TextureIterator({"assets/robin.png"}); - actCounterInitial = actCounter = 200; -} - -void Bird::act(void) -{ - static bool direction = false; - static const float wstart = currentWorld->getWorldStart(); - - if (!--actCounter) { - actCounter = actCounterInitial; - direction ^= 1; - } - - if (loc.x > -wstart - HLINES(10.0f)) - loc.x = wstart + HLINES(10.0f); - else if (loc.x < wstart + HLINES(10.0f)) - loc.x = -wstart - HLINES(10.0f); - - if (loc.y <= initialY) - vel.y = 0.3f; - vel.x = direction ? -0.3f : 0.3f; -} - -void Bird::onHit(unsigned int _health) -{ - takeHit(_health, 1000); -} - -bool Bird::bindTex(void) -{ - glActiveTexture(GL_TEXTURE0); - tex(0); - return true; -} - -void Bird::createFromXML(XMLElement *e, World *w=nullptr) -{ - (void)w; - float Xlocx; - - xmle = e; - - if (e->QueryFloatAttribute("x", &Xlocx) == XML_NO_ERROR) - loc.x = Xlocx; - if (e->QueryFloatAttribute("y", &initialY) != XML_NO_ERROR) - initialY = 300; - - E_LOAD_HEALTH; - - if (e->QueryBoolAttribute("aggressive", &aggressive) != XML_NO_ERROR) - aggressive = false; -} - -void Bird::saveToXML(void) -{ - E_SAVE_COORDS; - E_SAVE_HEALTH; -} - -Trigger::Trigger(void) : Mob() -{ - ridable = false; - aggressive = false; - maxHealth = health = 50; - width = HLINES(20); - height = 2000; - //tex = TextureIterator(); - triggered = false; - notext = false; -} - -void Trigger::act(void) -{ - auto c = player->loc.x + player->width / 2; - static bool running = false; - - if (triggered) { - die(); - } else if (!running && c > loc.x && c < loc.x + width) { - std::thread([&]{ - running = true; - - XMLDocument xml; - XMLElement *exml; - - xml.LoadFile(currentXML.c_str()); - exml = xml.FirstChildElement("Trigger"); - - while(exml && exml->StrAttribute("id") != id) - exml = exml->NextSiblingElement(); - - player->vel.x = 0; - - if (notext) { - for (auto &e : currentWorld->entity) { - if (e->type == NPCT && e->name == exml->GetText()) { - e->interact(); - break; - } - } - } else { - - /*if (exml == nullptr) { - auto id = xmle->StrAttribute("cid"); - if (!id.empty()) { - game::setValue(id, xmle->StrAttribute("cvalue")); - game::briceUpdate(); - } - return; - }*/ - - ui::toggleBlackFast(); - ui::waitForCover(); - - std::string text = exml->GetText(); - char *pch = strtok(&text[0], "\n"); - - while (pch) { - ui::importantText(pch); - ui::waitForDialog(); - pch = strtok(NULL, "\n"); - } - - ui::toggleBlackFast(); - } - - triggered = true; - running = false; - }).detach(); - } -} - -void Trigger::onHit(unsigned int _health) -{ - (void)_health; -} - -bool Trigger::bindTex(void) -{ - return false; -} - -void Trigger::createFromXML(XMLElement *e, World *w=nullptr) -{ - (void)w; - float Xlocx; - - if (e->QueryFloatAttribute("spawnx", &Xlocx) == XML_NO_ERROR) - loc.x = Xlocx; - - if (e->QueryBoolAttribute("notext", ¬ext) != XML_NO_ERROR) - notext = false; - - id = e->StrAttribute("id"); - - xmle = e; -} - -void Trigger::saveToXML(void) -{} - -Chest::Chest(void) : Mob() -{ - ridable = false; - aggressive = false; - maxHealth = health = 100; - width = HLINES(10); - height = HLINES(5); - tex = TextureIterator({"assets/chest.png"}); - inv = new Inventory(1); -} - -void Chest::act(void) -{ - if (isInside(ui::mouse) && player->isNear(this)) { - if ((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_RIGHT)) && !ui::dialogBoxExists) - for (auto &i : inv->Items) { - player->inv->addItem(i.first->name, i.second); - inv->takeItem(i.first->name, i.second); - } - } - - for (auto &e : currentWorld->entity) { - if (e->type == OBJECTT && e->isNear(this)) { - auto o = dynamic_cast<Object *>(e); - inv->addItem(o->iname, 1); - e->health = 0; - } - } -} - -void Chest::onHit(unsigned int _health) -{ - (void)_health; - die(); -} - -bool Chest::bindTex(void) -{ - glActiveTexture(GL_TEXTURE0); - tex(0); - return true; -} - -void Chest::createFromXML(XMLElement *e, World *w) -{ - (void)w; - loc = vec2 { 0, 100 }; - xmle = e; -} - -void Chest::saveToXML(void) -{ - xmle->SetAttribute("alive", alive); -} - - - -Mob::~Mob() -{ - delete inv; -} - -extern World *currentWorld; -extern Arena *arena; - -void Mob::wander(void) -{ - static bool YAYA = false; - - if (forcedMove) - return; - - if (aggressive && !YAYA && isInside(vec2 {player->loc.x + width / 2, player->loc.y + height / 4})) { - if (!ui::dialogBoxExists) { - std::thread([&](void){ - arena->fight(currentWorld, player, this); - ui::toggleWhiteFast(); - YAYA = true; - ui::waitForCover(); - YAYA = false; - currentWorld = arena; - ui::toggleWhiteFast(); - }).detach(); - } - } - act(); -} - -void Mob::ride(Entity *e) -{ - if (!ridable) - return; - - if (rider == e) - rider = nullptr; - else - rider = e; -} - -void Mob::onDeath(void) -{ - vec2 q = vec2 {player->loc.x, game::SCREEN_HEIGHT - 100.0f}; - - ui::putTextL(q, "Player got: "); - - for (const auto &d : drop) { - if ((randGet() % 100) < std::get<float>(d) * 100.0f) { - q.y -= 20; - ui::putTextL(q, "%d x %s", std::get<unsigned int>(d), std::get<std::string>(d).c_str()); - player->inv->addItem(std::get<std::string>(d), std::get<unsigned int>(d)); - } - } -} |