]> code.bitgloo.com Git - clyne/gamedev.git/commitdiff
bug fixes
authorClyne Sullivan <tullivan99@gmail.com>
Thu, 4 Feb 2016 14:24:54 +0000 (09:24 -0500)
committerClyne Sullivan <tullivan99@gmail.com>
Thu, 4 Feb 2016 14:24:54 +0000 (09:24 -0500)
Changelog
include/entities.h
src/gameplay.cpp
src/inventory.cpp
src/ui.cpp
src/world.cpp
xml/playerSpawnHill1.xml

index 2f5cdf47beda1e6be69d99c7c2b090562cd969a3..00a0a23fec5bcad463ef546f34076c878d1484fc 100644 (file)
--- a/Changelog
+++ b/Changelog
        - removed old, unused and commented codes
        - began working on XML'ing quests
        - improved mouse
+
+2/4/2016:
+=========
+
+       - fixed world boundary glitch
+       - began work on XML'ing triggers
+       - npcs can assign quests through XML
+       - screenshots
+       - improved memory management
+       - more audio sliders
index 41f2fffa79735a0776b2f128db3d8e236109ac11..9cc1b310594e5acc6502125b2488df32da2eee5c 100644 (file)
@@ -208,6 +208,7 @@ public:
        bool aggressive;
        double init_y;
        void (*hey)(Mob *callee);
+       std::string heyid;
        
        Mob(int);
        ~Mob();
index 8a24056e0c5a9ebc5e48272bb9e253839ea42a76..ee12f9c9a83c0e4b0bdf12809424bd359cef1cdd 100644 (file)
@@ -173,7 +173,7 @@ int commonAIFunc(NPC *speaker){
                                                speaker->dialogIndex = 9999;
                                                return 0;
                                        }else if(exml->QueryBoolAttribute("pause",&stop) == XML_NO_ERROR && stop){
-                                               speaker->dialogIndex = 9999;
+                                               //speaker->dialogIndex = 9999;
                                                return 1;
                                        }else return commonAIFunc(speaker);
                                }else{
@@ -191,6 +191,38 @@ int commonAIFunc(NPC *speaker){
        return 0;
 }
 
+void commonTriggerFunc(Mob *callee){
+       static bool lock = false;
+       XMLDocument xml;
+       XMLElement *exml;
+       
+       if(!lock){
+               lock = true;
+       
+               xml.LoadFile(currentXML);
+               exml = xml.FirstChildElement("Trigger");
+               
+               while(strcmp(exml->Attribute("id"),callee->heyid.c_str()))
+                       exml = exml->NextSiblingElement();
+               
+               player->vel.x = 0;
+               
+               std::cout<<"1\n";
+               ui::toggleBlackFast();
+               std::cout<<"2\n";
+               ui::waitForCover();
+               std::cout<<"3\n";
+               ui::importantText(exml->GetText());
+               std::cout<<"4\n";
+               ui::waitForDialog();
+               std::cout<<"5\n";
+               ui::toggleBlackFast();
+               
+               callee->alive = false;
+               lock = false;
+       }
+}
+
 void destroyEverything(void);
 void initEverything(void){
        std::vector<std::string> xmlFiles;
@@ -227,17 +259,6 @@ void initEverything(void){
                }
        }
 
-       /*
-        * Spawn the player and begin the game.
-        */
-       
-       player = new Player();
-       player->spawn(200,100);
-
-       currentWorld->bgmPlay(NULL);
-       atexit(destroyEverything);
-       std::cout << "Hey";
-
        pauseMenu.items.push_back(ui::createParentButton({-256/2,0},{256,75},{0.0f,0.0f,0.0f}, "Resume"));
        pauseMenu.items.push_back(ui::createChildButton({-256/2,-100},{256,75},{0.0f,0.0f,0.0f}, "Options"));
        pauseMenu.items.push_back(ui::createButton({-256/2,-200},{256,75},{0.0f,0.0f,0.0f}, "Save and Quit", ui::quitGame));
@@ -250,6 +271,16 @@ void initEverything(void){
        optionsMenu.child = NULL;
        optionsMenu.parent = &pauseMenu;
        // optionsMenu.push_back(ui::createButton({-256/2,-200},{256,75},{0.0f,0.0f,0.0f}, (const char*)("Save and Quit"), );
+       
+       /*
+        * Spawn the player and begin the game.
+        */
+       
+       player = new Player();
+       player->spawn(200,100);
+
+       currentWorld->bgmPlay(NULL);
+       atexit(destroyEverything);
 }
 
 extern std::vector<int (*)(NPC *)> AIpreload;
index de6003054753e83132c0325758e828ce14c8bfcb..93bdeb6cb250ae616e0675ddf94d258c3a9a4403 100644 (file)
@@ -88,6 +88,12 @@ void initInventorySprites(void){
 }
 
 void destroyInventory(void){
+       
+       while(!itemMap.empty()){
+               delete itemMap.front();
+               itemMap.erase(itemMap.begin());
+       }
+       
        Mix_FreeChunk(swordSwing);
 }
 
index 47ad4350c5355aa34486ca4999b3c64b1d37350c..f11efca8339ca722c5bd18afd7333055e7b97c23 100644 (file)
@@ -937,6 +937,8 @@ namespace ui {
                fwrite(&bmih, 1,sizeof(BITMAPINFOHEADER),bmp);
                fwrite(&bgr, 1,3*SCREEN_WIDTH*SCREEN_HEIGHT,bmp);
 
+               delete[] pixels;
+               fclose(bmp);
        }
 
        void dialogAdvance(void){
@@ -959,8 +961,10 @@ DONE:
                if(dialogImportant){
                        dialogImportant = false;
                        setFontSize(16);
-                       toggleBlack();
+                       //toggleBlack();
                }
+               /*if(ui::fontSize != 16)
+                       setFontSize(16);*/
 
                dialogBoxExists = false;
        }
@@ -1191,7 +1195,8 @@ DONE:
                                        break;
                                case SDLK_F12:
                                        // Make the BYTE array, factor of 3 because it's RBG.
-                                       static GLubyte* pixels = new GLubyte[ 3 * SCREEN_WIDTH * SCREEN_HEIGHT];
+                                       static GLubyte* pixels;
+                                       pixels = new GLubyte[ 3 * SCREEN_WIDTH * SCREEN_HEIGHT];
                                        glReadPixels(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, pixels);
 
                                        takeScreenshot(pixels);
index 71260952e4bfa3dddf37eda950b504bc78138a0e..6118851ff0b0f803077904aa2e636a071238667c 100644 (file)
@@ -895,10 +895,10 @@ void World::singleDetect(Entity *e){
                 *      Insure that the entity doesn't fall off either edge of the world.
                */
                
-               if(e->loc.x<x_start){                                                                                           // Left bound
+               if(e->loc.x < x_start){                                                                                         // Left bound
                        
                        e->vel.x=0;
-                       e->loc.x=x_start + HLINE / 2;
+                       e->loc.x=(float)x_start + HLINE / 2;
                        
                }else if(e->loc.x + e->width + HLINE > x_start + getWidth(this)){       // Right bound
                        
@@ -1071,6 +1071,7 @@ char *World::setToRight(const char *file){
 
 World *World::goWorldLeft(Player *p){
        World *tmp;
+       
        if(toLeft && p->loc.x < x_start + HLINE * 15){
                tmp = loadWorldFromXML(toLeft);
                
@@ -1200,7 +1201,8 @@ void World::save(void){
 
 #include <sstream>
 
-extern int commonAIFunc(NPC *);
+extern int  commonAIFunc(NPC *);
+extern void commonTriggerFunc(Mob *);
 
 void World::load(void){
        std::string save,data,line;
@@ -1449,8 +1451,6 @@ World *loadWorldFromXML(const char *path){
        strcpy(currentXML,"xml/");
        strcat(currentXML,path);
        
-       //std::cout<<currentXML<<std::endl;
-       
        xml.LoadFile(currentXML);
        wxml = xml.FirstChildElement("World");
 
@@ -1523,7 +1523,11 @@ World *loadWorldFromXML(const char *path){
                                tmp->addStructure((BUILD_SUB)wxml->UnsignedAttribute("type"),getRand() % tmp->getTheWidth() / 2.0f,100,ptr);
                        else
                                tmp->addStructure((BUILD_SUB)wxml->UnsignedAttribute("type"),spawnx,wxml->FloatAttribute("y"),ptr);
+               }else if(!strcmp(name,"trigger")){
+                       tmp->addMob(MS_TRIGGER,wxml->FloatAttribute("x"),0,commonTriggerFunc);
+                       tmp->mob.back()->heyid = wxml->Attribute("id");
                }
+               
                wxml = wxml->NextSiblingElement();
        }
        
index 129ff4644e3cd191594673cd5ca96fa6262665fe..8fb98c755a6c4d07f82eefc3f9d3ac98d3c6daf7 100644 (file)
@@ -5,7 +5,9 @@
        
        <link right="playerSpawnHill2.xml" />
        
-       <mob type="1" aggressive="true" />
+       <mob type="1" aggressive="false" />
+       
+       <trigger x="-300" id="Test" />
        
        <npc name="Ralph" hasDialog="true" />
        <npc name="Johnny" hasDialog="true" />
@@ -13,6 +15,8 @@
 
 </World>
 
+<Trigger id="Test">It was a dark and stormy night...</Trigger>
+
 <Dialog name="Ralph">
        
        <text id="0">
 </Dialog>
 
 <Dialog name="Johnny">
-       <text id="0" nextid="1" stop="true">
+       <text id="0" nextid="1" pause="true">
                Sup bro!
                <quest assign="Quest #1" />
        </text>
        
-       <text id="1" >
+       <text id="1" stop="true">
                My name's Johnny.
                <give id="Dank Maymay" count="1" />
        </text>