]> code.bitgloo.com Git - clyne/gamedev.git/commitdiff
bug fixesssssss
authorClyne Sullivan <tullivan99@gmail.com>
Mon, 23 May 2016 12:48:34 +0000 (08:48 -0400)
committerClyne Sullivan <tullivan99@gmail.com>
Mon, 23 May 2016 12:48:34 +0000 (08:48 -0400)
Changelog
brice.dat
include/world.hpp
src/brice.cpp
src/entities.cpp
src/world.cpp

index 00374d514b73eacdcf6c1cb17b79c352faca1b7e..c81def97b153c9bd9640c9e29a72a075a9851f3e 100644 (file)
--- a/Changelog
+++ b/Changelog
        - added onHit and onDeath routines to mobs
        - added mob drops on arena kills
        - continued work on new renderings
+
+5/23/2016:
+==========
+
+       - fixed grass squishing
+       - player sits on cat better
+       - world shading is good-er
index ea71945339f7a7cd6d35324a11df49578bb93bfc..051568e6307a034d42f5b52f7113ce37e815df20 100644 (file)
--- a/brice.dat
+++ b/brice.dat
@@ -1,5 +1,9 @@
+4
 2
 canSprint
+canSprint
+1
 0
 canJump
-0
+canJump
+1
index 74f9cb76b665b1b1bf4877ae12e90d20167c6146..ce50244175c2bd30b98cbd1decc39df6e77b2d66 100644 (file)
@@ -264,7 +264,6 @@ protected:
         * @see addStructure()
         * @see getStructurePos()
         */
-       std::vector<Structures *> build;
 
        /**
         * A vector of all villages in the world.
@@ -291,6 +290,7 @@ protected:
 
 public:
 
+       std::vector<Structures *> build;
        /**
         * A vector of pointers to all entities from the other vectors.
         * This is used to mass-manage entities, or operate on entities
index fb9834dfa1712e2e03b98d978dae403c69e1e967..07cd05dc8deac330a330daeba05ebcac280350e8 100644 (file)
@@ -56,8 +56,7 @@ namespace game {
                if (datas.size() != 0) {
                        const unsigned int count = datas[0][0] - '0';
 
-                       for (unsigned int i = 1; i <= count; i += 2) {
-                               std::cout << datas[i] << ' ' << datas[i + 1] << '\n';
+                       for (unsigned int i = 1; i <= count * 2; i += 2) {
                                brice.emplace(std::make_pair(datas[i], datas[i + 1]));
                        }
                }
index b417f1156180b0584fa6d4ce3717e9334eb997c3..550748a583b88bbbc94044966815ad031f0c0e99 100644 (file)
@@ -330,7 +330,7 @@ void Object::reloadTexture(void)
 }
 
 bool Entity::isNear(const Entity *e) {
-       return pow(e->loc.x - loc.x, 2) + pow(e->loc.y - loc.y, 2) <= pow(HLINES(40), 2);
+       return (e != nullptr) ? (pow(e->loc.x - loc.x, 2) + pow(e->loc.y - loc.y, 2) <= pow(HLINES(40), 2)) : false;
 }
 
 void NPC::drawThingy(void) const
@@ -412,8 +412,9 @@ void Entity::draw(void)
        } else if (type == MOBT) {
                if (Mobp(this)->rider != nullptr) {
                        Mobp(this)->rider->loc.x = loc.x + width * 0.25f;
-               Mobp(this)->rider->loc.y = loc.y + height - game::HLINE;
+               Mobp(this)->rider->loc.y = loc.y + height - HLINES(5);
                Mobp(this)->rider->vel.y = .12;
+                       Mobp(this)->rider->z     = z + 0.01;
            }
        }
        switch(type) {
index e6c5f0dfcfa6467f3ea78c8dafbb96ea5797a077..2ecccecd12e593e9716967762de74cb7bd290d6e 100644 (file)
@@ -689,6 +689,8 @@ void World::draw(Player *p)
 
        // flatten grass under the player if the player is on the ground
        if (p->ground) {
+               pOffset = (p->loc.x + p->width / 2 - worldStart) / HLINE;
+
                for (unsigned int i = 0; i < worldData.size(); i++)
                        worldData[i].grassUnpressed = !(i < static_cast<unsigned int>(pOffset + 6) && i > static_cast<unsigned int>(pOffset - 6));
        } else {
@@ -752,6 +754,9 @@ singleDetect(Entity *e)
 
     auto deltaTime = game::time::getDeltaTime();
 
+       if (e == nullptr)
+               return;
+
        // kill dead entities
        if (!e->isAlive()) {
         return;
@@ -803,7 +808,9 @@ singleDetect(Entity *e)
         e->handleHits();
 
                // calculate the line that this entity is currently standing on
-        l = (e->loc.x + e->width / 2 - worldStart) / game::HLINE;
+        l = std::clamp(static_cast<int>((e->loc.x + e->width / 2 - worldStart) / game::HLINE),
+                       0,
+                       static_cast<int>(lineCount));
 
                // if the entity is under the world/line, pop it back to the surface
                if (e->loc.y < worldData[l].groundHeight) {
@@ -1040,7 +1047,7 @@ Mob *World::
 getNearMob(Entity &e)
 {
     auto n = std::find_if(std::begin(mob), std::end(mob), [&](Mob *&a) {
-        return e.isNear(a) && (e.left ? (a->loc.x < e.loc.x + e.width / 2) : (a->loc.x > e.loc.x + e.width / 2));
+        return e.isNear(a) && (e.left ? (a->loc.x < e.loc.x + e.width / 2) : (a->loc.x + a->width > e.loc.x + e.width / 2));
     });
 
     return n == std::end(mob) ? nullptr : *n;
@@ -1892,7 +1899,7 @@ World *loadWorldFromPtr(World *ptr)
  */
 World *
 loadWorldFromXMLNoSave(std::string path) {
-       XMLDocument xml;
+XMLDocument currentXMLDoc;
        XMLElement *wxml;
        XMLElement *vil;
 
@@ -1909,18 +1916,18 @@ loadWorldFromXMLNoSave(std::string path) {
         return NULL;
 
     currentXML = std::string(xmlFolder + path);
-       xml.LoadFile(currentXML.c_str());
+       currentXMLDoc.LoadFile(currentXML.c_str());
 
     // attempt to load a <World> tag
-       if ((wxml = xml.FirstChildElement("World"))) {
+       if ((wxml = currentXMLDoc.FirstChildElement("World"))) {
                wxml = wxml->FirstChildElement();
-               vil = xml.FirstChildElement("World")->FirstChildElement("village");
+               vil = currentXMLDoc.FirstChildElement("World")->FirstChildElement("village");
                tmp = new World();
         Indoor = false;
        }
 
     // attempt to load an <IndoorWorld> tag
-    else if ((wxml = xml.FirstChildElement("IndoorWorld"))) {
+    else if ((wxml = currentXMLDoc.FirstChildElement("IndoorWorld"))) {
                wxml = wxml->FirstChildElement();
                vil = NULL;
                tmp = new IndoorWorld();
@@ -2079,10 +2086,12 @@ loadWorldFromXMLNoSave(std::string path) {
        Village *vptr;
 
        if (vil) {
-               vptr = tmp->addVillage(vil->Attribute("name"), tmp);
+               vptr = tmp->addVillage(vil->StrAttribute("name"), tmp);
                vil = vil->FirstChildElement();
        }
 
+       std::cout << currentXML << ' ' << tmp->build.size() << '\n';
+
        while(vil) {
                name = vil->Name();
                randx = 0;