From d2aa39603eb8a26142a0230188d2572fb0398af5 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Wed, 9 Dec 2015 07:47:00 -0500 Subject: dialog clicks --- assets/click.wav | Bin 0 -> 17684 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/click.wav (limited to 'assets') diff --git a/assets/click.wav b/assets/click.wav new file mode 100644 index 0000000..976fb42 Binary files /dev/null and b/assets/click.wav differ -- cgit v1.2.3 From 996a2b90c40b078dabc9a435156a836b9693d0b1 Mon Sep 17 00:00:00 2001 From: drumsetmonkey Date: Wed, 9 Dec 2015 08:21:08 -0500 Subject: Did Shit --- assets/sounds/cricket.wav | Bin 0 -> 8695476 bytes assets/sounds/longSwing.mp3 | Bin 0 -> 7941 bytes assets/sounds/longSwing.wav | Bin 0 -> 85376 bytes assets/sounds/shortSwing.wav | Bin 0 -> 100196 bytes main.cpp | 7 +++++++ src/gameplay.cpp | 2 +- src/inventory.cpp | 8 ++++++-- src/ui.cpp | 3 +-- 8 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 assets/sounds/cricket.wav create mode 100644 assets/sounds/longSwing.mp3 create mode 100644 assets/sounds/longSwing.wav create mode 100644 assets/sounds/shortSwing.wav (limited to 'assets') diff --git a/assets/sounds/cricket.wav b/assets/sounds/cricket.wav new file mode 100644 index 0000000..70be7e5 Binary files /dev/null and b/assets/sounds/cricket.wav differ diff --git a/assets/sounds/longSwing.mp3 b/assets/sounds/longSwing.mp3 new file mode 100644 index 0000000..cb6dced Binary files /dev/null and b/assets/sounds/longSwing.mp3 differ diff --git a/assets/sounds/longSwing.wav b/assets/sounds/longSwing.wav new file mode 100644 index 0000000..e9b60f2 Binary files /dev/null and b/assets/sounds/longSwing.wav differ diff --git a/assets/sounds/shortSwing.wav b/assets/sounds/shortSwing.wav new file mode 100644 index 0000000..bd42737 Binary files /dev/null and b/assets/sounds/shortSwing.wav differ diff --git a/main.cpp b/main.cpp index d1fd85e..e02677d 100644 --- a/main.cpp +++ b/main.cpp @@ -116,6 +116,8 @@ unsigned int deltaTime = 0; GLuint fragShader; GLuint shaderProgram; +Mix_Chunk *crickets; + /* * names is used to open a file containing all possible NPC names. It is externally * referenced in src/entities.cpp for getting random names. @@ -401,6 +403,9 @@ int main(/*int argc, char *argv[]*/){ */ names = fopen("assets/names_en-us", "r+"); + + crickets=Mix_LoadWAV("assets/sounds/crickets.wav"); + Mix_Volume(3,25); /* * Create all the worlds, entities, mobs, and the player. This function is defined in @@ -950,8 +955,10 @@ void logic(){ if(!(tickCount%DAY_CYCLE)||!tickCount){ if(weather==SUNNY){ weather=DARK; + Mix_PlayChannel(3,crickets,0); }else{ weather=SUNNY; + Mix_Pause(3); } } diff --git a/src/gameplay.cpp b/src/gameplay.cpp index f665b38..9eacf2a 100644 --- a/src/gameplay.cpp +++ b/src/gameplay.cpp @@ -64,7 +64,7 @@ void story(Mob *callee){ ui::waitForDialog(); ui::importantText("times."); ui::waitForDialog(); - ui::importantText("Clyne is quite satisfied."); + ui::importantText("Clyne is a faggot."); ui::waitForDialog(); callee->alive = false; } diff --git a/src/inventory.cpp b/src/inventory.cpp index c1595e8..8d8f958 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -10,6 +10,7 @@ static float hangle = 0.0f; static bool up = true; static float xc,yc; static vec2 itemLoc; +Mix_Chunk* swordSwing; static const Item item[ITEM_COUNT]= { #include "../config/items.h" @@ -23,6 +24,9 @@ void initInventorySprites(void){ for(i = 0;i < ITEM_COUNT;i++){ itemtex[i] = Texture::loadTexture(getItemTexturePath((ITEM_ID)i)); } + + swordSwing = Mix_LoadWAV("assets/sounds/shortSwing.wav"); + Mix_Volume(2,75); } char *getItemTexturePath(ITEM_ID id){ @@ -311,11 +315,11 @@ int Inventory::useItem(void){ switch(type){ case SWORD: if(!player->left){ - if(hangle==-15)up=true; + if(hangle==-15){up=true;Mix_PlayChannel(2,swordSwing,0);} if(up)hangle-=15; if(hangle<=-90)hangle=-14; }else{ - if(hangle==15)up=true; + if(hangle==15){up=true;Mix_PlayChannel(2,swordSwing,0);} if(up)hangle+=15; if(hangle>=90)hangle=14; } diff --git a/src/ui.cpp b/src/ui.cpp index f843e7d..b0ed64c 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -525,8 +525,7 @@ namespace ui { Mix_PlayChannel(1,dialogClick,0); } - }else if(!dialogImportant){ - + }else if(!dialogImportant && !fadeIntensity){ vec2 hub = { (SCREEN_WIDTH/2+offset.x)-fontSize*10, (offset.y+SCREEN_HEIGHT/2)-fontSize -- cgit v1.2.3 From fb1cb2e2f3af4a7bc5717e31b31175d850dd7be9 Mon Sep 17 00:00:00 2001 From: drumsetmonkey Date: Wed, 9 Dec 2015 08:47:45 -0500 Subject: Made sword swing at screen fps --- assets/BennyHillTheme.wav | Bin 21318852 -> 0 bytes assets/air-horn-club-sample_1.wav | Bin 149804 -> 0 bytes main.cpp | 5 ----- src/ui.cpp | 3 +++ src/world.cpp | 3 +++ 5 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 assets/BennyHillTheme.wav delete mode 100644 assets/air-horn-club-sample_1.wav (limited to 'assets') diff --git a/assets/BennyHillTheme.wav b/assets/BennyHillTheme.wav deleted file mode 100644 index a926902..0000000 Binary files a/assets/BennyHillTheme.wav and /dev/null differ diff --git a/assets/air-horn-club-sample_1.wav b/assets/air-horn-club-sample_1.wav deleted file mode 100644 index 50c5bf8..0000000 Binary files a/assets/air-horn-club-sample_1.wav and /dev/null differ diff --git a/main.cpp b/main.cpp index bde880d..b28a8da 100644 --- a/main.cpp +++ b/main.cpp @@ -829,11 +829,6 @@ void logic(){ * click detection is done as well for NPC/player interaction. * */ - if((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_LEFT)) && !ui::dialogBoxExists)player->inv->usingi = true; - if(player->inv->usingi){ - player->inv->useItem(); - } - for(auto &n : currentWorld->npc){ if(n->alive){ /* diff --git a/src/ui.cpp b/src/ui.cpp index 9ab8141..14ad64b 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -612,6 +612,9 @@ DONE: if((e.button.button&SDL_BUTTON_RIGHT)&&dialogBoxExists){ dialogAdvance(); } + if((e.button.button&SDL_BUTTON_LEFT)&&!dialogBoxExists){ + player->inv->usingi = true; + } break; /* KEYDOWN diff --git a/src/world.cpp b/src/world.cpp index 2fd3591..9674b64 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -272,6 +272,9 @@ void World::update(Player *p,unsigned int delta){ p->loc.y += p->vel.y * delta; p->loc.x +=(p->vel.x * p->speed) * delta; + if(p->inv->usingi){ + p->inv->useItem(); + } /* * Update coordinates of all entities except for structures. -- cgit v1.2.3 From 43bbcf02fd5e4e69a9aa521fa4cd572cc8675cf3 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 11 Dec 2015 08:38:38 -0500 Subject: first areas plotted --- Changelog | 20 ++++ Goals.txt | 2 +- assets/sounds/longSwing.mp3 | Bin 7941 -> 0 bytes assets/sounds/sanic.wav | Bin 0 -> 2299686 bytes config/items.h | 4 +- include/Texture.h | 2 +- include/common.h | 2 +- include/entities.h | 2 +- include/ui.h | 2 +- include/world.h | 8 +- main.cpp | 4 +- src/entities.cpp | 8 +- src/gameplay.cpp | 223 +++++++++++++++++++------------------------- src/ui.cpp | 30 ++++-- src/world.cpp | 50 +++++----- 15 files changed, 180 insertions(+), 177 deletions(-) delete mode 100644 assets/sounds/longSwing.mp3 create mode 100644 assets/sounds/sanic.wav (limited to 'assets') diff --git a/Changelog b/Changelog index fbe14bc..44e0bfc 100644 --- a/Changelog +++ b/Changelog @@ -388,3 +388,23 @@ - added border to dialogBox - fix entity movement handling; npcs stop when you talk to them - added sword animation? + +12/9/2015, +12/10/2015: +=========== + + - added sound effects + - fixed disappearing building + - began actually plotting areas + - fixed layer switching-ish + - added passive dialogs + - began working on particles stuffses + - improved village spawning + +12/11/2015: +=========== + + - plotted out a tutorial-ish area in game + - imrpoved BGM handling + - continued work on particles, made a fountain + - added sanic diff --git a/Goals.txt b/Goals.txt index 208c7e5..140cdd3 100644 --- a/Goals.txt +++ b/Goals.txt @@ -27,7 +27,7 @@ Summary: idea of a parallaxed background was applied, with up to four layers of tiled background material. Combinations of background layers were sorted and added to the World class with a World::setBackground() function. The inventory was created, with an animated inventory view based off of the player finished -by the end of the month. +by the end of the month. ... End of December: ================ diff --git a/assets/sounds/longSwing.mp3 b/assets/sounds/longSwing.mp3 deleted file mode 100644 index cb6dced..0000000 Binary files a/assets/sounds/longSwing.mp3 and /dev/null differ diff --git a/assets/sounds/sanic.wav b/assets/sounds/sanic.wav new file mode 100644 index 0000000..18708a9 Binary files /dev/null and b/assets/sounds/sanic.wav differ diff --git a/config/items.h b/config/items.h index 1bd9111..9012ff6 100644 --- a/config/items.h +++ b/config/items.h @@ -11,8 +11,8 @@ ID DEBUG_ITEM ID TEST_ITEM NAME "Dank MayMay" TYPE TOOL - WIDTH HLINE*1 - HEIGHT HLINE*1 + WIDTH HLINE*10 + HEIGHT HLINE*10 STACKSIZE 420 TEX "assets/items/ITEM_TEST.png" ENI diff --git a/include/Texture.h b/include/Texture.h index bcd95af..85225d8 100644 --- a/include/Texture.h +++ b/include/Texture.h @@ -52,7 +52,7 @@ public: * Contains an array of the GLuints returned from Texture::loadTexture(). */ - GLuint *image; + GLuint *image = NULL; /** * Populates the image array from a list of strings, with each string as a diff --git a/include/common.h b/include/common.h index f8bd935..095b3e3 100644 --- a/include/common.h +++ b/include/common.h @@ -64,7 +64,7 @@ typedef struct { * The desired width of the game window. */ -#define SCREEN_WIDTH 1280 +#define SCREEN_WIDTH 1024 /** * The desired height of the game window. diff --git a/include/entities.h b/include/entities.h index 64a251a..dd3adab 100644 --- a/include/entities.h +++ b/include/entities.h @@ -16,7 +16,7 @@ enum _TYPE { //these are the main types of entities OBJECTT = -2, - STRUCTURET = -1, + STRUCTURET, PLAYERT, NPCT, MOBT diff --git a/include/ui.h b/include/ui.h index 97e4bbf..2fe3b0a 100644 --- a/include/ui.h +++ b/include/ui.h @@ -60,7 +60,7 @@ namespace ui { * limited until a right click is given, closing the box. */ - void dialogBox(const char *name,const char *opt,const char *text,...); + void dialogBox(const char *name,const char *opt,bool passive,const char *text,...); void waitForDialog(void); /* diff --git a/include/world.h b/include/world.h index ccf93a8..1e78cd0 100644 --- a/include/world.h +++ b/include/world.h @@ -17,6 +17,11 @@ #define GEN_INC 10 + +#define GEN_MIN 80 +#define GEN_MAX 110 + + /** * Defines how many game ticks it takes for a day to elapse. */ @@ -194,8 +199,7 @@ public: */ void setBGM(const char *path); - void bgmPlay(void); - void bgmStop(void); + void bgmPlay(World *prev); /* * Looks for the furthest back layer in this world and adds a new layer of width `width` behind it. diff --git a/main.cpp b/main.cpp index b28a8da..4e45189 100644 --- a/main.cpp +++ b/main.cpp @@ -256,6 +256,7 @@ int main(/*int argc, char *argv[]*/){ std::cout << "SDL_mixer could not initialize! Error: " << Mix_GetError() << std::endl; return -1; } + Mix_AllocateChannels(8); // Run Mix_Quit when main returns atexit(Mix_CloseAudio); @@ -492,8 +493,7 @@ void mainLoop(void){ ui::handleEvents(); if(prev != currentWorld){ - prev->bgmStop(); - currentWorld->bgmPlay(); + currentWorld->bgmPlay(prev); } if(prevPrevTime + MSEC_PER_TICK <= currentTime){ diff --git a/src/entities.cpp b/src/entities.cpp index 1c36ca7..5c00cc7 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -148,7 +148,7 @@ Mob::Mob(int sub){ height = HLINE * 8; tex = new Texturec(1, "assets/robin.png"); case MS_TRIGGER: - width = HLINE * 8; + width = HLINE * 20; height = 2000; tex = new Texturec(0); break; @@ -337,7 +337,7 @@ void NPC::interact(){ //have the npc's interact back to the player if(aiFunc.size())aiFunc.erase(aiFunc.begin()); } }else{ - ui::dialogBox(name,NULL,randomDialog[randDialog]); + ui::dialogBox(name,NULL,false,randomDialog[randDialog]); } ui::waitForDialog(); canMove=true; @@ -345,7 +345,7 @@ void NPC::interact(){ //have the npc's interact back to the player void Object::interact(void){ if(questObject && alive){ - ui::dialogBox(player->name,":Yes:No",pickupDialog); + ui::dialogBox(player->name,":Yes:No",false,pickupDialog); ui::waitForDialog(); if(ui::dialogOptChosen == 1){ player->inv->addItem((ITEM_ID)(identifier), (char)1); @@ -434,8 +434,6 @@ void Mob::wander(int timeRun){ case MS_TRIGGER: if(player->loc.x + player->width / 2 > loc.x && player->loc.x + player->width / 2 < loc.x + width ){ - if(player->left)player->loc.x = loc.x + width; - else if(player->right) player->loc.x = loc.x - player->width; hey(this); } break; diff --git a/src/gameplay.cpp b/src/gameplay.cpp index b9aa328..74414d7 100644 --- a/src/gameplay.cpp +++ b/src/gameplay.cpp @@ -1,146 +1,132 @@ #include +#include #include #include -#include extern World *currentWorld; extern Player *player; -int compTestQuest(NPC *speaker){ - ui::dialogBox(speaker->name,NULL,"Ooo, that's a nice quest you got there. Lemme finish that for you ;)."); - player->qh.finish("Test",player); - return 0; +/* + * int (npc*) + * + * dialog + * wait... + * + * switch optchosen + * + * qh.assign + * addAIFunc? + * + * return 1 = repeat + */ + +void story(Mob *callee){ + player->vel.x = 0; + Mix_FadeOutMusic(0); + ui::importantText("It was a dark and stormy night..."); + ui::waitForDialog(); + callee->alive = false; } -int giveTestQuest(NPC *speaker){ - ui::dialogBox(speaker->name,":Yes:No","Here, have a quest!"); - ui::waitForDialog(); - - if(ui::dialogOptChosen == 1){ - - ui::dialogBox(speaker->name,"","Have a good day! :)"); - ui::waitForDialog(); - - player->qh.assign("Test"); - currentWorld->npc[1]->addAIFunc(compTestQuest,true); - - }else return 1; - - return 0; +float gen_worldSpawnHill1(float x){ + return (float)(pow(2,(-x+200)/5) + GEN_MIN); } -void CUTSCENEEE(Mob *callee){ - player->vel.x = 0; - - ui::dialogBox(player->name,":K then","No way I\'m gettin\' up this hill."); - ui::waitForDialog(); +float gen_worldSpawnHill3(float x){ + float tmp = 60*atan(-(x/30-20))+GEN_MIN*2; + return tmp>GEN_MIN?tmp:GEN_MIN; +} - player->right = true; - player->left = false; - player->loc.x += HLINE * 5; - +/* + * Thing-thangs + */ + +void worldSpawnHill1_hillBlock(Mob *callee){ + player->vel.x = 0; + player->loc.x = callee->loc.x + callee->width; + ui::dialogBox(player->name,NULL,false,"This hill seems to steep to climb up..."); callee->alive = true; } -void CUTSCENEEE2(Mob *callee){ - player->vel.x = 0; - ui::dialogBox(player->name,":Yeah.", - "What the fuck is this dead end supposed to mean, and why this place smell like soap."); - ui::waitForDialog(); +void worldSpawnHill2_infoSprint(Mob *callee){ + ui::dialogBox("B-) ",NULL,true,"Press \'Shift\' to run!"); callee->alive = false; } -void story(Mob *callee){ - player->vel.x = 0; - Mix_FadeOutMusic(0); - ui::importantText("It was a dark and stormy night..."); - ui::waitForDialog(); +void worldSpawnHill3_itemGet(Mob *callee){ + ui::dialogBox("B-) ",NULL,true,"Right click to pick up items!"); callee->alive = false; } -float playerSpawnHillFunc(float x){ - return (float)(pow(2,(-x+200)/5) + 80); +void worldSpawnHill3_itemSee(Mob *callee){ + ui::dialogBox("B-) ",NULL,true,"Press \'e\' to open your inventory!"); + callee->alive = false; } -static World *test; -static World *playerSpawnHill; -static IndoorWorld *iw; +void worldSpawnHill3_leave(Mob *callee){ + ui::dialogBox("B-) ",NULL,true,"Now jump in this hole, and let your journey begin :)"); + callee->alive = false; +} -void destroyEverything(void); +/* + * new world + * gen + * setbackground + * setbgm + * add... + * + */ + +/* + * World definitions + */ +static World *worldSpawnHill1; +static World *worldSpawnHill2; +static World *worldSpawnHill3; + +/* + * initEverything() start + */ + +void destroyEverything(void); void initEverything(void){ - //FILE *load; - - /* - * World creation: - */ - - test=new World(); - - test->generate(SCREEN_WIDTH*2); - test->setBackground(BG_FOREST); - test->setBGM("assets/music/embark.wav"); - - test->addHole(100,150); - test->addLayer(400); - - playerSpawnHill=new World(); - playerSpawnHill->setBackground(BG_FOREST); - playerSpawnHill->setBGM("assets/music/embark.wav"); - - /*if((load=fopen("world.dat","rb"))){ - playerSpawnHill->load(load); - fclose(load); - }else{*/ - playerSpawnHill->generateFunc(1280,playerSpawnHillFunc); - //} - - /* - * Setup the current world, making the player initially spawn in `test`. - */ - - currentWorld=playerSpawnHill; - - playerSpawnHill->toRight=test; - test->toLeft=playerSpawnHill; - - /* - * Create the player. - */ - - player=new Player(); - player->spawn(-1000,200); + + worldSpawnHill1 = new World(); + worldSpawnHill1->generateFunc(400,gen_worldSpawnHill1); + worldSpawnHill1->setBackground(BG_FOREST); + worldSpawnHill1->setBGM("assets/music/embark.wav"); + worldSpawnHill1->addMob(MS_TRIGGER,0,0,worldSpawnHill1_hillBlock); + + worldSpawnHill2 = new World(); + worldSpawnHill2->generate(700); + worldSpawnHill2->setBackground(BG_FOREST); + worldSpawnHill2->setBGM("assets/music/embark.wav"); + worldSpawnHill2->addMob(MS_TRIGGER,-400,0,worldSpawnHill2_infoSprint); - /* - * Create a structure (this will create villagers when spawned). - */ + worldSpawnHill3 = new World(); + worldSpawnHill3->generateFunc(1000,gen_worldSpawnHill3); + worldSpawnHill3->setBackground(BG_FOREST); + worldSpawnHill3->setBGM("assets/music/embark.wav"); + worldSpawnHill3->addMob(MS_TRIGGER,-500,0,worldSpawnHill3_itemGet); + worldSpawnHill3->addMob(MS_TRIGGER,0,0,worldSpawnHill3_itemSee); + worldSpawnHill3->addObject(TEST_ITEM,false,"",-200,300); + worldSpawnHill3->addMob(MS_TRIGGER,400,0,worldSpawnHill3_leave); + worldSpawnHill3->addHole(800,1000); - iw=new IndoorWorld(); - iw->setBackground(BG_WOODHOUSE); - iw->setBGM(NULL); - iw->generate(200); - iw->addMob(MS_TRIGGER,0,0,CUTSCENEEE2); + worldSpawnHill1->toRight = worldSpawnHill2; + worldSpawnHill2->toLeft = worldSpawnHill1; - /* - * Spawn some entities. - */ - - playerSpawnHill->addMob(MS_TRIGGER,player->loc.x,0,story); - - playerSpawnHill->addStructure(STRUCTURET,(rand()%120*HLINE),100,test,iw); - playerSpawnHill->addMob(MS_TRIGGER,-1300,0,CUTSCENEEE); + worldSpawnHill2->toRight = worldSpawnHill3; + worldSpawnHill3->toLeft = worldSpawnHill2; - playerSpawnHill->addObject(SWORD_WOOD, false, "", 480,200); - playerSpawnHill->addObject(FLASHLIGHT, false, "", 500,200); - playerSpawnHill->addObject(PLAYER_BAG, false, "", 520,200); - playerSpawnHill->addObject(TEST_ITEM, false, "", 540,200); + currentWorld = worldSpawnHill1; - test->addMob(MS_RABBIT,200,100); - test->addMob(MS_BIRD,-500,500); + player = new Player(); + player->spawn(200,100); - playerSpawnHill->npc[0]->addAIFunc(giveTestQuest,false); + currentWorld->bgmPlay(NULL); - currentWorld->bgmPlay(); atexit(destroyEverything); } @@ -148,21 +134,8 @@ extern std::vector AIpreload; extern std::vector AIpreaddr; void destroyEverything(void){ - //FILE *save; - - /*save = fopen("world.dat","wb"); - playerSpawnHill->save(save); - fclose(save);*/ - - delete test; - delete playerSpawnHill; - - while(!AIpreload.empty()){ + while(!AIpreload.empty()) AIpreload.pop_back(); - } - while(!AIpreaddr.empty()){ + while(!AIpreaddr.empty()) AIpreaddr.pop_back(); - } - - //delete iw; // segfaults } diff --git a/src/ui.cpp b/src/ui.cpp index ff5a84a..26b30c4 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -48,6 +48,7 @@ static char dialogBoxText[512]; static char *dialogOptText[4]; static float dialogOptLoc[4][3]; static unsigned char dialogOptCount = 0; +static bool dialogPassive = false; static bool typeOutDone = true; Mix_Chunk *dialogClick; @@ -346,7 +347,8 @@ namespace ui { if(lincground=false; } break; - }else if(!dialogBoxExists){//&&!fadeEnable){ + }else if(!dialogBoxExists || dialogPassive){ + tmp = currentWorld; switch(SDL_KEY){ case SDLK_a: player->vel.x=-.15; @@ -641,6 +646,8 @@ DONE: left = true; right = false; currentWorld=currentWorld->goWorldLeft(player); + if(tmp!=currentWorld) + dialogBoxExists = false; break; case SDLK_d: player->vel.x=.15; @@ -649,6 +656,8 @@ DONE: left = false; right = true; currentWorld=currentWorld->goWorldRight(player); + if(tmp!=currentWorld) + dialogBoxExists = false; break; case SDLK_s: if(player->ground == 2){ @@ -662,7 +671,6 @@ DONE: else currentWorld=currentWorld->goInsideStructure(player); break; case SDLK_i: - tmp=currentWorld; currentWorld=currentWorld->goWorldBack(player); // Go back a layer if possible if(tmp!=currentWorld){ currentWorld->detect(player); @@ -672,7 +680,6 @@ DONE: } break; case SDLK_k: - tmp=currentWorld; currentWorld=currentWorld->goWorldFront(player); // Go forward a layer if possible if(tmp!=currentWorld){ currentWorld->behind->detect(player); @@ -682,7 +689,13 @@ DONE: } break; case SDLK_LSHIFT: - player->speed = debug ? 4.0f : 3.0f; + if(debug){ + Mix_Chunk *sanic; + sanic = Mix_LoadWAV("assets/sounds/sanic.wav"); + Mix_PlayChannel(1,sanic,-1); + player->speed = 4.0f; + }else + player->speed = 2.0f; break; case SDLK_LCTRL: player->speed = .5; @@ -720,6 +733,9 @@ DONE: right = false; break; case SDLK_LSHIFT: + if(player->speed == 4){ + Mix_FadeOutChannel(1,2000); + } player->speed = 1; break; case SDLK_LCTRL: diff --git a/src/world.cpp b/src/world.cpp index 3fdfa7f..3f35e21 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -3,8 +3,6 @@ #define getWidth(w) ((w->lineCount-GEN_INC)*HLINE) // Calculates the width of world 'w' -#define GEN_MIN 80 -#define GEN_MAX 110 #define GEN_INIT 60 #define GRASS_HEIGHT 4 // Defines how long the grass layer of a line should be in multiples of HLINE. @@ -112,9 +110,13 @@ void World::deleteEntities(void){ } World::~World(void){ - if(behind) + if(behind != NULL) delete behind; + if(bgmObj) + Mix_FreeMusic(bgmObj); + if(bgm) + delete[] bgm; delete bgTex; delete[] star; delete[] line; @@ -314,24 +316,13 @@ void World::setBGM(const char *path){ } } -static Mix_Music *bgmC; - -void World::bgmPlay(void){ - if(bgmObj && bgmC != bgmObj){ +void World::bgmPlay(World *prev){ + if(!prev || strcmp(bgm,prev->bgm)){ Mix_VolumeMusic(50); Mix_PlayMusic(bgmObj,-1); // Loop infinitely - bgmC = bgmObj; - }else{ + }/*else{ Mix_FadeOutMusic(800); - } -} - -void World::bgmStop(void){ - if(bgmObj){ - if(bgmC != bgmObj){ - Mix_FreeMusic(bgmObj); - } - } + }*/ } int worldShade = 0; @@ -520,10 +511,7 @@ LOOP2: */ for(auto &b : current->build){ - //b->loc.y+=(yoff-DRAW_Y_OFFSET); b->draw(); - //b->loc.y-=(yoff-DRAW_Y_OFFSET); - std::cout<loc.x<<" "<loc.y<loc.y + e->height > line[i-(int)e->width/2/HLINE].y && - e->loc.y + e->height > line[i+(int)e->width/2/HLINE].y ){ + //if(e->loc.y + e->height > line[i-(int)e->width/2/HLINE].y && + // e->loc.y + e->height > line[i+(int)e->width/2/HLINE].y ){ e->loc.y=line[i].y - .001 * deltaTime; e->ground=true; e->vel.y=0; - }else{ + //}else{ /* * Push the entity out of the wall if it's trying to go through it. */ - do{ + /*do{ e->loc.x+=.001 * e->vel.x>0?-1:1; l=(e->loc.x - e->width / 2 - x_start) / HLINE; - if(l < 0){ e->alive = false; return; } + if(l < 0){ + std::cout<<"push kill lol "<type<alive = false; return; } i = l; - if(i > lineCount-1){ e->alive = false; return; } + if(i > lineCount-1){ + std::cout<<"push kill lol "<type<alive = false; return; } }while(line[i].y>e->loc.y+ e->height); - } + }*/ /* * Handle gravity if the entity is above the line. @@ -815,7 +807,7 @@ void World::singleDetect(Entity *e){ e->ground = true; return; }else if(e->vel.y > -2)e->vel.y-=.003 * deltaTime; - + } /* -- cgit v1.2.3