You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(44) |
Aug
(36) |
Sep
(5) |
Oct
|
Nov
(6) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
|
Apr
(87) |
May
(54) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <dv...@us...> - 2008-05-01 08:42:27
|
Revision: 227 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=227&view=rev Author: dvalin Date: 2008-05-01 01:42:12 -0700 (Thu, 01 May 2008) Log Message: ----------- * be sure to initialize m_currentFrame to NULL so that it can be checked if not NULL and deleted afterwards.. * add wait delay for intro scenes Modified Paths: -------------- branches/dunks/include/IntroState.h branches/dunks/src/IntroState.cpp Modified: branches/dunks/include/IntroState.h =================================================================== --- branches/dunks/include/IntroState.h 2008-05-01 06:15:29 UTC (rev 226) +++ branches/dunks/include/IntroState.h 2008-05-01 08:42:12 UTC (rev 227) @@ -39,7 +39,7 @@ HOLDING }; - Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, int8_t song = -1, Palette_enum pal = INTRO_PAL); + Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL); ~Frame(); bool Execute(float ft); @@ -59,8 +59,10 @@ WsafilePtr m_wsa; int m_currentFrame; float m_frametime; - int m_song; + int8_t m_song; + uint16_t m_endWait; + ImagePtr m_animSurface, m_scaledSurface; SDL_Color* m_transitionPalette; Label* m_subText; @@ -101,6 +103,7 @@ StringFile* m_introStringFile; private: + void handleInput(); IntroList m_wsaNames; TranspButton *m_butIntro; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 06:15:29 UTC (rev 226) +++ branches/dunks/src/IntroState.cpp 2008-05-01 08:42:12 UTC (rev 227) @@ -8,6 +8,7 @@ #include "boost/bind.hpp" #include "gui2/Label.h" #include "gui2/Container.h" +#include <iostream> // ------------------------------------------------------------------ // IntroState::Frame @@ -15,7 +16,7 @@ IntroState::Frame::Frame(std::string filename, Transition in, Transition out, std::vector<introText> introStrings, - bool continuation, int8_t song, Palette_enum pal) + bool continuation, uint16_t endWait, int8_t song, Palette_enum pal) { m_filename = filename; m_transition_in = in; @@ -33,6 +34,7 @@ m_palette = DataCache::Instance()->getPalette(pal); m_song = song; + m_endWait = endWait; Application::Instance()->RootWidget()->addChild(m_container); @@ -94,7 +96,7 @@ }; m_scaledSurface->blitToScreenCentered(); - + return mb_finished; } @@ -152,6 +154,7 @@ void IntroState::Frame::doTransitionOut(float dt) { + if (m_transition_out == NO_TRANSITION) { mb_finished = true; @@ -189,6 +192,25 @@ void IntroState::Frame::doHolding(float dt) { + uint16_t startTicks = SDL_GetTicks(); + uint16_t curTicks; + + SDL_Event event; + bool wait = true; + while(wait && ((curTicks = SDL_GetTicks()) - startTicks) < m_endWait) + while(SDL_PollEvent(&event)) + switch (event.type) + case (SDL_KEYDOWN): + switch( event.key.keysym.sym ){ + case SDLK_ESCAPE: + case SDLK_RETURN: + case SDLK_SPACE: + Application::Instance()->RootState()->PopState(); + wait = false; + default: + break; + } + m_state = TRANSITION_OUT; } @@ -201,13 +223,14 @@ IntroState::IntroState() { + m_currentFrame = NULL; m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. // DataCache::Instance()->getCreditsString(20))); enque( new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, m_introStrings, - false, 0, WESTWOOD_PAL) ); + false, 5000, 0, WESTWOOD_PAL) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2))); @@ -215,7 +238,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false, 1) ); + false, 2000, 1) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3))); @@ -223,7 +246,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 2000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4))); @@ -231,7 +254,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 2000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(5))); @@ -239,7 +262,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 3000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6))); @@ -247,7 +270,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 2000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(7))); @@ -255,7 +278,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 2000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8))); @@ -263,7 +286,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 3000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9))); @@ -287,7 +310,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - true) ); + true, 2000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12))); @@ -311,7 +334,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - true) ); + true, 2000) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15))); @@ -358,9 +381,9 @@ State::JustMadeInactive(); } - bool IntroState::next() { + fprintf(stderr, "loading next..\n"); IntroList::iterator it = m_wsaNames.begin(); if (it == m_wsaNames.end() ) @@ -370,9 +393,32 @@ Frame* nextFrame = *it; nextFrame->Load(m_currentFrame); +/* uint16_t startTicks = SDL_GetTicks(); + uint16_t curTicks; + + SDL_Event event; + if(m_currentFrame != NULL) + while(((curTicks = SDL_GetTicks()) - startTicks) < m_currentFrame->m_endWait){ + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case (SDL_KEYDOWN): + switch( event.key.keysym.sym ) + { + case SDLK_ESCAPE: + SkipIntro(); + return true; + default: + break; + } + } + } + }*/ m_wsaNames.pop_front(); -// if (m_currentFrame != NULL) delete m_currentFrame; + + if (m_currentFrame != NULL) delete m_currentFrame; m_currentFrame = nextFrame; return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 06:15:32
|
Revision: 226 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=226&view=rev Author: dvalin Date: 2008-04-30 23:15:29 -0700 (Wed, 30 Apr 2008) Log Message: ----------- add some missing songs Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-05-01 05:31:26 UTC (rev 225) +++ branches/dunks/src/DataCache.cpp 2008-05-01 06:15:29 UTC (rev 226) @@ -427,22 +427,46 @@ BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); - addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); + addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); + // These are actually all the same song, but three different versions.. addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3); + addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 4); + addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 5); + /* Looping.. + * addMusic(MUSIC_PEACE, "SOUND:DUNE1.ADL", 2);*/ addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6); addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6); addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6); addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6); addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6); + /* These are looping + * addMusic(MUSIC_PEACE, "SOUND:DUNE1.ADL", 6); + * addMusic(MUSIC_PEACE, "SOUND:DUNE7.ADL", 2); + * addMusic(MUSIC_PEACE, "SOUND:DUNE7.ADL", 3); + * addMusic(MUSIC_PEACE, "SOUND:DUNE7.ADL", 4); + * addMusic(MUSIC_PEACE, "SOUND:DUNE7.ADL", 6);*/ addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4); + addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 5); addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2); + addMusic(MUSIC_ATTACK, "SOUND:DUNE10.ADL", 7); addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7); addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7); addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7); addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7); addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7); + /* Looping.. + * addMusic(MUSIC_ATTACK, "SOUND:DUNE16.ADL", 7);*/ + addMusic(MUSIC_PEACE, "SOUND:DUNE16.ADL", 8); + /* Looping.. + * addMusic(MUSIC_PEACE, "SOUND:DUNE17.ADL", 4);*/ addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 2); + addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 3); addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4); + /* These are looping + * addMusic(MUSIC_WIN, "SOUND:DUNE8.ADL", 2); + * addMusic(MUSIC_WIN, "SOUND:DUNE8.ADL", 3); + */ addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2); delete data; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 05:31:28
|
Revision: 225 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=225&view=rev Author: dvalin Date: 2008-04-30 22:31:26 -0700 (Wed, 30 Apr 2008) Log Message: ----------- * make soundplayer globally available from Application class * speed up game initialization by loading things more ordered * add music for westwood intro scene Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/include/IntroState.h branches/dunks/src/DataCache.cpp branches/dunks/src/IntroState.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-05-01 05:05:26 UTC (rev 224) +++ branches/dunks/include/DataCache.h 2008-05-01 05:31:26 UTC (rev 225) @@ -431,9 +431,9 @@ // std::string getBriefingText(ObjPic_enum mission, ObjPic_enum texttype, ObjPic_enum house); std::string getIntroString(uint16_t i); + std::string getCreditsString(uint16_t i); - private: remapped_images m_objImg; remapped_images m_guiImg; @@ -449,6 +449,7 @@ Animation* Anim[NUM_ANIMATION]; Stringfile* BriefingStrings[3]; Stringfile* IntroStrings; + Stringfile* CreditsStrings; Mix_Chunk* soundChunk[NUM_SOUNDCHUNK]; }; Modified: branches/dunks/include/IntroState.h =================================================================== --- branches/dunks/include/IntroState.h 2008-05-01 05:05:26 UTC (rev 224) +++ branches/dunks/include/IntroState.h 2008-05-01 05:31:26 UTC (rev 225) @@ -39,7 +39,7 @@ HOLDING }; - Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, Palette_enum pal = INTRO_PAL); + Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, int8_t song = -1, Palette_enum pal = INTRO_PAL); ~Frame(); bool Execute(float ft); @@ -59,6 +59,7 @@ WsafilePtr m_wsa; int m_currentFrame; float m_frametime; + int m_song; ImagePtr m_animSurface, m_scaledSurface; SDL_Color* m_transitionPalette; Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-05-01 05:05:26 UTC (rev 224) +++ branches/dunks/src/DataCache.cpp 2008-05-01 05:31:26 UTC (rev 225) @@ -20,16 +20,40 @@ int len, maplen; uint8_t *data, *mapdata; - - addPalette(INTRO_PAL, "INTRO:INTRO.PAL"); + ResMan::Instance()->addRes("ENGLISH"); + + addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL"); + // Not properly decoded yet.. + // CreditsStrings = new Stringfile("ENGLISH:CREDITS.ENG"); + + addPalette(INTRO_PAL, "INTRO:INTRO.PAL"); + IntroStrings = new Stringfile("ENGLISH:INTRO.ENG"); + + ResMan::Instance()->addRes("DUNE"); + // FIXME: Something seems to be fscked up with this palette, the Bene Gesserit // mentat ends up looking a bit unhealthy greenish, needs to be corrected! addPalette(BENE_PAL, "DUNE:BENE.PAL"); addPalette(IBM_PAL, "DUNE:IBM.PAL"); - addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL"); + ResMan::Instance()->addRes("SOUND"); + addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 4); + ResMan::Instance()->addRes("ATRE"); + ResMan::Instance()->addRes("GERMAN"); + ResMan::Instance()->addRes("FINALE"); + ResMan::Instance()->addRes("HARK"); + ResMan::Instance()->addRes("HERC"); + ResMan::Instance()->addRes("INTROVOC"); + ResMan::Instance()->addRes("MENTAT"); + ResMan::Instance()->addRes("MERC"); + ResMan::Instance()->addRes("ORDOS"); + ResMan::Instance()->addRes("SCENARIO"); + ResMan::Instance()->addRes("VOC"); + ResMan::Instance()->addRes("XTRE"); + + //LOADING FILES data = ResMan::Instance()->readFile("DUNE:UNITS.SHP", &len); ShpfilePtr units(new Shpfile(data, len)); @@ -44,7 +68,7 @@ data = ResMan::Instance()->readFile("DUNE:ICON.ICN", &len); mapdata = ResMan::Instance()->readFile("DUNE:ICON.MAP", &maplen); IcnfilePtr icon(new Icnfile(data, len, mapdata, maplen)); - delete mapdata; + //delete mapdata; data = ResMan::Instance()->readFile("DUNE:STATIC.WSA", &len); WsafilePtr radar(new Wsafile(data, len)); @@ -216,6 +240,8 @@ 7|TILE_NORMAL,8|TILE_NORMAL,9|TILE_NORMAL,10|TILE_NORMAL,11|TILE_NORMAL)); // addGuiPic(UI_GameBar, PicFactory->createGameBar(); addGuiPic(UI_Indicator, units1->getPictureArray(3,1,8|TILE_NORMAL,9|TILE_NORMAL,10|TILE_NORMAL)); +// addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); + // SDL_SetColorKey(addGuiPic(UI_Indicator][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); // addGuiPic(UI_InvalidPlace, PicFactory->createInvalidPlace(); // addGuiPic(UI_ValidPlace, PicFactory->createValidPlace(); @@ -397,12 +423,11 @@ addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC")); addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC")); - IntroStrings = new Stringfile("ENGLISH:INTRO.ENG"); BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG"); BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); - addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); + addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3); addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6); addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6); @@ -622,6 +647,15 @@ return IntroStrings->getString(i); } +std::string DataCache::getCreditsString(uint16_t i){ +#ifdef THREADS + spinlock: + if(!IntroStrings) + goto spinlock; +#endif + return CreditsStrings->getString(i); +} + void DataCache::addAnimation(Animation_enum ID, std::string fileName, double frameRate) { int len; uint8_t * data = ResMan::Instance()->readFile(fileName, &len); Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 05:05:26 UTC (rev 224) +++ branches/dunks/src/IntroState.cpp 2008-05-01 05:31:26 UTC (rev 225) @@ -15,7 +15,7 @@ IntroState::Frame::Frame(std::string filename, Transition in, Transition out, std::vector<introText> introStrings, - bool continuation, Palette_enum pal) + bool continuation, int8_t song, Palette_enum pal) { m_filename = filename; m_transition_in = in; @@ -31,6 +31,8 @@ m_container->setSize(UPoint(Settings::Instance()->GetWidth(), Settings::Instance()->GetHeight())); m_palette = DataCache::Instance()->getPalette(pal); + + m_song = song; Application::Instance()->RootWidget()->addChild(m_container); @@ -99,6 +101,7 @@ void IntroState::Frame::doPlaying(float dt) { + m_frametime += dt; if (m_frametime > m_wsa->getFPS()) @@ -127,6 +130,10 @@ void IntroState::Frame::doTransitionIn(float dt) { + if(m_song != -1){ + Application::Instance()->playSound(DataCache::Instance()->getMusic(MUSIC_INTRO, m_song)); + } + if (m_transition_in == NO_TRANSITION) m_state = PLAYING; } @@ -194,12 +201,13 @@ IntroState::IntroState() { - m_introStrings.push_back(introText(0, "Original copyright by:")); + m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. + // DataCache::Instance()->getCreditsString(20))); enque( new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, m_introStrings, - false, WESTWOOD_PAL) ); + false, 0, WESTWOOD_PAL) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2))); @@ -207,7 +215,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, - false) ); + false, 1) ); m_introStrings.clear(); m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3))); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 05:05:29
|
Revision: 224 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=224&view=rev Author: dvalin Date: 2008-04-30 22:05:26 -0700 (Wed, 30 Apr 2008) Log Message: ----------- 0x04 & 0x03 is separater between strings for credits.eng, but I still need to figure out how to read the file properly :/ Modified Paths: -------------- branches/dunks/src/pakfile/Stringfile.cpp Modified: branches/dunks/src/pakfile/Stringfile.cpp =================================================================== --- branches/dunks/src/pakfile/Stringfile.cpp 2008-04-30 21:05:29 UTC (rev 223) +++ branches/dunks/src/pakfile/Stringfile.cpp 2008-05-01 05:05:26 UTC (rev 224) @@ -8,7 +8,7 @@ Stringfile::Stringfile(std::string stringFileName) { int bufsize; - unsigned char* bufFiledata = ResMan::Instance()->readFile(stringFileName.c_str(), &bufsize); + uint8_t* bufFiledata = ResMan::Instance()->readFile(stringFileName.c_str(), &bufsize); Uint16* index; SDL_RWops* RWop = SDL_RWFromMem(bufFiledata, bufsize); @@ -78,6 +78,8 @@ switch(databyte) { case 0x00: break; + case 0x04: break; + case 0x03: break; case 0x0C: out += "\n"; break; case 0x0D: out += "\n"; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 21:05:49
|
Revision: 223 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=223&view=rev Author: dvalin Date: 2008-04-30 14:05:29 -0700 (Wed, 30 Apr 2008) Log Message: ----------- something fishy happens when trying to delete the previous frame, disable it for now.. Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-04-30 20:51:39 UTC (rev 222) +++ branches/dunks/src/IntroState.cpp 2008-04-30 21:05:29 UTC (rev 223) @@ -364,7 +364,7 @@ nextFrame->Load(m_currentFrame); m_wsaNames.pop_front(); - if (m_currentFrame != NULL) delete m_currentFrame; +// if (m_currentFrame != NULL) delete m_currentFrame; m_currentFrame = nextFrame; return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 20:51:45
|
Revision: 222 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=222&view=rev Author: dvalin Date: 2008-04-30 13:51:39 -0700 (Wed, 30 Apr 2008) Log Message: ----------- add spinlocks for string getter functions Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 17:57:54 UTC (rev 221) +++ branches/dunks/src/DataCache.cpp 2008-04-30 20:51:39 UTC (rev 222) @@ -605,10 +605,20 @@ } std::string DataCache::getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house) { +#ifdef THREADS + spinlock: + if(!BriefingStrings[house]) + goto spinlock; +#endif return BriefingStrings[house]->getString(mission,textType); } std::string DataCache::getIntroString(uint16_t i){ +#ifdef THREADS + spinlock: + if(!IntroStrings) + goto spinlock; +#endif return IntroStrings->getString(i); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 17:58:48
|
Revision: 221 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=221&view=rev Author: dvalin Date: 2008-04-30 10:57:54 -0700 (Wed, 30 Apr 2008) Log Message: ----------- * fix order of intro scenes * start on adding intro text etc.. Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/include/IntroState.h branches/dunks/src/Application.cpp branches/dunks/src/DataCache.cpp branches/dunks/src/IntroState.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-30 06:11:55 UTC (rev 220) +++ branches/dunks/include/DataCache.h 2008-04-30 17:57:54 UTC (rev 221) @@ -430,7 +430,7 @@ std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house); // std::string getBriefingText(ObjPic_enum mission, ObjPic_enum texttype, ObjPic_enum house); -// std::string getBriefingText(ObjPic_enum i); + std::string getIntroString(uint16_t i); @@ -448,6 +448,7 @@ Animation* Anim[NUM_ANIMATION]; Stringfile* BriefingStrings[3]; + Stringfile* IntroStrings; Mix_Chunk* soundChunk[NUM_SOUNDCHUNK]; }; Modified: branches/dunks/include/IntroState.h =================================================================== --- branches/dunks/include/IntroState.h 2008-04-30 06:11:55 UTC (rev 220) +++ branches/dunks/include/IntroState.h 2008-04-30 17:57:54 UTC (rev 221) @@ -3,13 +3,22 @@ #include "Gfx.h" #include "State.h" + #include "gui2/Button.h" #include "pakfile/Wsafile.h" +#include "DataCache.h" #include "SDL.h" + #include <list> #include <string> +typedef std::pair <uint16_t, std::string> introText; + +class StringFile; +class Button; +class Label; +class Container; class IntroState : public State { @@ -30,7 +39,8 @@ HOLDING }; - Frame(std::string file, Transition in, Transition out, bool cont); + Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, Palette_enum pal = INTRO_PAL); + ~Frame(); bool Execute(float ft); void Load(Frame* lastframe); @@ -52,7 +62,12 @@ ImagePtr m_animSurface, m_scaledSurface; SDL_Color* m_transitionPalette; + Label* m_subText; + Container* m_container; + std::vector<introText> m_introStrings; + SDL_Palette* m_palette; + void setupTransitionIn(); void setupTransitionOut(); void cleanupTransitionIn(); @@ -66,6 +81,7 @@ typedef std::list<Frame*> IntroList; + public: @@ -81,14 +97,17 @@ bool next(); void load(Frame frame); virtual const char* GetName() { return "IntroState"; } + StringFile* m_introStringFile; private: - IntroList m_wsaNames; TranspButton *m_butIntro; Frame* m_currentFrame; + std::vector<introText> m_introStrings; + +// Font* font; }; Modified: branches/dunks/src/Application.cpp =================================================================== --- branches/dunks/src/Application.cpp 2008-04-30 06:11:55 UTC (rev 220) +++ branches/dunks/src/Application.cpp 2008-04-30 17:57:54 UTC (rev 221) @@ -204,7 +204,7 @@ void Application::SetPalette() { - SDL_Palette * pal = DataCache::Instance()->getPalette(INTRO_PAL); + SDL_Palette * pal = DataCache::Instance()->getPalette(IBM_PAL); //This fixes white wheels. Is palette broken or sth?? Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 06:11:55 UTC (rev 220) +++ branches/dunks/src/DataCache.cpp 2008-04-30 17:57:54 UTC (rev 221) @@ -397,6 +397,7 @@ addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC")); addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC")); + IntroStrings = new Stringfile("ENGLISH:INTRO.ENG"); BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG"); BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); @@ -434,13 +435,9 @@ SDL_Palette* DataCache::getPalette(Palette_enum palette) { - PalettefilePtr pal; #ifdef THREADS spinlock: -#endif -// pal = m_palette[palette]; -#ifdef THREADS - if(!m_palette[palette]->getPalette()) + if(!m_palette[palette]) goto spinlock; #endif return m_palette[palette]->getPalette(); @@ -611,9 +608,9 @@ return BriefingStrings[house]->getString(mission,textType); } -/*std::string DataCache::getBriefingText(int i){ - return BriefingStrings[0]->getString(i); -}*/ +std::string DataCache::getIntroString(uint16_t i){ + return IntroStrings->getString(i); +} void DataCache::addAnimation(Animation_enum ID, std::string fileName, double frameRate) { int len; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-04-30 06:11:55 UTC (rev 220) +++ branches/dunks/src/IntroState.cpp 2008-04-30 17:57:54 UTC (rev 221) @@ -1,17 +1,21 @@ #include "IntroState.h" #include "ResMan.h" #include "Application.h" +#include "DataCache.h" #include "Gfx.h" #include "Settings.h" #include "pakfile/Palette.h" #include "boost/bind.hpp" +#include "gui2/Label.h" +#include "gui2/Container.h" // ------------------------------------------------------------------ // IntroState::Frame IntroState::Frame::Frame(std::string filename, Transition in, Transition out, - bool continuation) + std::vector<introText> introStrings, + bool continuation, Palette_enum pal) { m_filename = filename; m_transition_in = in; @@ -21,16 +25,25 @@ m_state = TRANSITION_IN; m_hold = 0.0f; m_transitionPalette = NULL; + m_introStrings = introStrings; + m_container = new Container(); +// m_container->setPosition(UPoint(250, 400)); + m_container->setSize(UPoint(Settings::Instance()->GetWidth(), + Settings::Instance()->GetHeight())); + m_palette = DataCache::Instance()->getPalette(pal); + + Application::Instance()->RootWidget()->addChild(m_container); + } void IntroState::Frame::Load(Frame* lastframe) { - SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; +// SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; printf("intro loading %s\n", m_filename.c_str()); int len; - unsigned char* data = ResMan::Instance()->readFile(m_filename, &len); + uint8_t * data = ResMan::Instance()->readFile(m_filename, &len); assert(data != NULL); @@ -47,9 +60,13 @@ m_currentFrame = 0; mb_finished = false; - m_animSurface.reset(m_wsa->getPicture(m_currentFrame, palette)); + m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette)); m_scaledSurface = m_animSurface->getResized(2.0); - + if(m_introStrings.size() > 0){ + m_subText = new Label(m_introStrings[0].second, 49, 0); + m_container->setPosition(UPoint(50, 420)); + m_container->addChild(m_subText); + } } bool IntroState::Frame::Execute(float dt) @@ -82,8 +99,6 @@ void IntroState::Frame::doPlaying(float dt) { - SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; - m_frametime += dt; if (m_frametime > m_wsa->getFPS()) @@ -96,7 +111,7 @@ } else { - m_animSurface.reset(m_wsa->getPicture(m_currentFrame, palette)); + m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette)); m_scaledSurface = m_animSurface->getResized(2.0); }; }; @@ -118,8 +133,8 @@ void IntroState::Frame::setupTransitionOut() { m_transitionPalette = new SDL_Color[256]; - memcpy((unsigned char*)m_transitionPalette, - Application::Instance()->Screen()->getSurface()->format->palette->colors, + memcpy((unsigned char*)m_transitionPalette, + m_palette->colors, sizeof(SDL_Color) * 256); } @@ -139,7 +154,7 @@ if (m_transitionPalette == NULL) setupTransitionOut(); bool done = true; - SDL_Surface* screen = m_scaledSurface->getSurface(); //Application::Instance()->Screen(); + SDL_Surface* screen = m_scaledSurface->getSurface(); SDL_Color* col = m_transitionPalette; const int fadeAmt = 3; @@ -156,7 +171,6 @@ } }; - //SDL_SetPalette(screen, SDL_LOGPAL|SDL_PHYSPAL, m_tempPal, 0, 256); SDL_SetPalette(screen, SDL_LOGPAL, m_transitionPalette, 0, 256); if (done) @@ -171,73 +185,138 @@ m_state = TRANSITION_OUT; } +IntroState::Frame::~Frame() +{ + m_container->deleteChild(m_subText); +} // ------------------------------------------------------------------ // IntroState IntroState::IntroState() { - m_currentFrame = NULL; + m_introStrings.push_back(introText(0, "Original copyright by:")); + enque( new Frame("INTRO:WESTWOOD.WSA", + Frame::NO_TRANSITION, + Frame::NO_TRANSITION, + m_introStrings, + false, WESTWOOD_PAL) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2))); enque( new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3))); + enque( new Frame("INTRO:INTRO2.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4))); + enque( new Frame("INTRO:INTRO3.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); - enque( new Frame("INTRO:INTRO4.WSA", + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(5))); + + enque( new Frame("INTRO:INTRO9.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); - enque( new Frame("INTRO:INTRO5.WSA", + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6))); + + enque( new Frame("INTRO:INTRO10.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); - enque( new Frame("INTRO:INTRO6.WSA", + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(7))); + + enque( new Frame("INTRO:INTRO11.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8))); + + enque( new Frame("INTRO:INTRO4.WSA", + Frame::NO_TRANSITION, + Frame::FADE_OUT, + m_introStrings, + false) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9))); + + enque( new Frame("INTRO:INTRO6.WSA", + Frame::NO_TRANSITION, + Frame::FADE_OUT, + m_introStrings, + false) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(10))); + enque( new Frame("INTRO:INTRO7A.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, + m_introStrings, false) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(11))); + enque( new Frame("INTRO:INTRO7B.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, true) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12))); + enque( new Frame("INTRO:INTRO8A.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, + m_introStrings, false) ); - enque( new Frame("INTRO:INTRO8B.WSA", + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(13))); + + enque( new Frame("INTRO:INTRO8B.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, + m_introStrings, true) ); + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14))); + enque( new Frame("INTRO:INTRO8C.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, true) ); - enque( new Frame("INTRO:INTRO9.WSA", + m_introStrings.clear(); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15))); + + enque( new Frame("INTRO:INTRO5.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); - enque( new Frame("INTRO:INTRO10.WSA", - Frame::NO_TRANSITION, - Frame::FADE_OUT, - false) ); - enque( new Frame("INTRO:INTRO11.WSA", - Frame::NO_TRANSITION, - Frame::FADE_OUT, - false) ); // seems nice to play this again ;) enque( new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, + m_introStrings, false) ); next(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 06:12:02
|
Revision: 220 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=220&view=rev Author: dvalin Date: 2008-04-29 23:11:55 -0700 (Tue, 29 Apr 2008) Log Message: ----------- fix race conditions with palettes by fetching them from DataCache in stead since it has spinlocks Modified Paths: -------------- branches/dunks/src/DataCache.cpp branches/dunks/src/pakfile/Cpsfile.cpp branches/dunks/src/pakfile/Shpfile.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 04:16:12 UTC (rev 219) +++ branches/dunks/src/DataCache.cpp 2008-04-30 06:11:55 UTC (rev 220) @@ -429,7 +429,7 @@ uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len); PalettefilePtr tmp (new Palettefile(data, len)); - m_palette[palette] = tmp; + m_palette[palette] = tmp; //pal; } SDL_Palette* DataCache::getPalette(Palette_enum palette) @@ -438,12 +438,12 @@ #ifdef THREADS spinlock: #endif - pal = m_palette[palette]; +// pal = m_palette[palette]; #ifdef THREADS - if(pal == NULL) + if(!m_palette[palette]->getPalette()) goto spinlock; #endif - return pal->getPalette(); + return m_palette[palette]->getPalette(); } void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) { @@ -619,7 +619,7 @@ int len; uint8_t * data = ResMan::Instance()->readFile(fileName, &len); WsafilePtr wsafile(new Wsafile(data, len)); - SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; + SDL_Palette* palette = getPalette(IBM_PAL); Animation* animation = wsafile->getAnimation(0,wsafile->getNumFrames() - 1, palette, false); if(frameRate) Modified: branches/dunks/src/pakfile/Cpsfile.cpp =================================================================== --- branches/dunks/src/pakfile/Cpsfile.cpp 2008-04-30 04:16:12 UTC (rev 219) +++ branches/dunks/src/pakfile/Cpsfile.cpp 2008-04-30 06:11:55 UTC (rev 220) @@ -1,6 +1,6 @@ #include "pakfile/Cpsfile.h" #include <SDL_endian.h> -#include "Application.h" +#include "DataCache.h" #include <stdlib.h> #include <string.h> @@ -12,7 +12,7 @@ Filedata = bufFiledata; CpsFilesize = bufsize; if (palette == NULL) - m_palette = Application::Instance()->Screen()->getSurface()->format->palette; + m_palette = DataCache::Instance()->getPalette(IBM_PAL); else m_palette = palette; } Modified: branches/dunks/src/pakfile/Shpfile.cpp =================================================================== --- branches/dunks/src/pakfile/Shpfile.cpp 2008-04-30 04:16:12 UTC (rev 219) +++ branches/dunks/src/pakfile/Shpfile.cpp 2008-04-30 06:11:55 UTC (rev 220) @@ -1,13 +1,10 @@ -#include "Application.h" - +#include "DataCache.h" #include "pakfile/Shpfile.h" #include "pakfile/Animation.h" #include <SDL_endian.h> #include <stdlib.h> #include <string.h> -//extern SDL_Palette* palette; - Shpfile::Shpfile(unsigned char * bufFiledata, int bufsize, SDL_Palette * palette) : Decode() { Filedata = bufFiledata; @@ -15,7 +12,7 @@ Index = NULL; readIndex(); if (palette == NULL) - m_palette = Application::Instance()->Screen()->getSurface()->format->palette; + m_palette = DataCache::Instance()->getPalette(IBM_PAL); else m_palette = palette; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 04:16:43
|
Revision: 219 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=219&view=rev Author: dvalin Date: 2008-04-29 21:16:12 -0700 (Tue, 29 Apr 2008) Log Message: ----------- delete som leftovers.. Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 04:06:44 UTC (rev 218) +++ branches/dunks/src/DataCache.cpp 2008-04-30 04:16:12 UTC (rev 219) @@ -429,7 +429,7 @@ uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len); PalettefilePtr tmp (new Palettefile(data, len)); - m_palette[palette] = tmp; //pal; + m_palette[palette] = tmp; } SDL_Palette* DataCache::getPalette(Palette_enum palette) @@ -581,6 +581,7 @@ } SDL_RWclose(rwop); + delete data; return returnChunk; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 04:06:46
|
Revision: 218 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=218&view=rev Author: dvalin Date: 2008-04-29 21:06:44 -0700 (Tue, 29 Apr 2008) Log Message: ----------- store the PalettefilePtr in steadof SDL_Palette*, still something fishy going on, should probably make PalettePtr.. Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-30 03:44:22 UTC (rev 217) +++ branches/dunks/include/DataCache.h 2008-04-30 04:06:44 UTC (rev 218) @@ -439,7 +439,7 @@ remapped_images m_guiImg; remapped_music m_music; std::vector<songFile> songFiles[MUSIC_RANDOM]; - SDL_Palette* m_palette[NUM_PALETTES]; + PalettefilePtr m_palette[NUM_PALETTES]; Mix_Chunk* getChunkFromFile(std::string fileName); Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2); Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 03:44:22 UTC (rev 217) +++ branches/dunks/src/DataCache.cpp 2008-04-30 04:06:44 UTC (rev 218) @@ -5,9 +5,6 @@ #include <iostream> DataCache::DataCache() { - for(uint8_t i = 0; i < NUM_PALETTES; i++) - m_palette[i] = NULL; - } void DataCache::Init(){ @@ -29,11 +26,6 @@ // FIXME: Something seems to be fscked up with this palette, the Bene Gesserit // mentat ends up looking a bit unhealthy greenish, needs to be corrected! addPalette(BENE_PAL, "DUNE:BENE.PAL"); - // For some reason things crashes if we fetch the palette and use it here.. :/ - data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); - PalettefilePtr tmp(new Palettefile(data, len)); - SDL_Palette * pal = tmp->getPalette(); - addPalette(IBM_PAL, "DUNE:IBM.PAL"); addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL"); @@ -63,7 +55,7 @@ data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len); ShpfilePtr menshpo(new Shpfile(data, len)); data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len); - ShpfilePtr menshpm(new Shpfile(data, len, pal)); //getPalette(BENE_PAL))); + ShpfilePtr menshpm(new Shpfile(data, len, getPalette(BENE_PAL))); data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len); ShpfilePtr choam(new Shpfile(data, len)); data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len); @@ -81,7 +73,7 @@ data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len); CpsfilePtr mentath (new Cpsfile(data, len)); data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len); - CpsfilePtr mentatm (new Cpsfile(data, len, pal)); //getPalette(BENE_PAL))); + CpsfilePtr mentatm (new Cpsfile(data, len, getPalette(BENE_PAL))); data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len); ShpfilePtr mentat (new Shpfile(data, len)); @@ -437,13 +429,12 @@ uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len); PalettefilePtr tmp (new Palettefile(data, len)); - SDL_Palette * pal = tmp->getPalette(); - m_palette[palette] = pal; + m_palette[palette] = tmp; //pal; } SDL_Palette* DataCache::getPalette(Palette_enum palette) { - SDL_Palette* pal; + PalettefilePtr pal; #ifdef THREADS spinlock: #endif @@ -452,7 +443,7 @@ if(pal == NULL) goto spinlock; #endif - return pal; + return pal->getPalette(); } void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 03:44:48
|
Revision: 217 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=217&view=rev Author: dvalin Date: 2008-04-29 20:44:22 -0700 (Tue, 29 Apr 2008) Log Message: ----------- use smart pointers.. Modified Paths: -------------- branches/dunks/include/pakfile/Palette.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/pakfile/Palette.h =================================================================== --- branches/dunks/include/pakfile/Palette.h 2008-04-30 03:32:05 UTC (rev 216) +++ branches/dunks/include/pakfile/Palette.h 2008-04-30 03:44:22 UTC (rev 217) @@ -3,6 +3,11 @@ #include "SDL.h" +#include <boost/shared_ptr.hpp> + +class Palettefile; +typedef boost::shared_ptr<Palettefile> PalettefilePtr; + class Palettefile { public: Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 03:32:05 UTC (rev 216) +++ branches/dunks/src/DataCache.cpp 2008-04-30 03:44:22 UTC (rev 217) @@ -31,8 +31,8 @@ addPalette(BENE_PAL, "DUNE:BENE.PAL"); // For some reason things crashes if we fetch the palette and use it here.. :/ data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); - Palettefile tmp (data, len); - SDL_Palette * pal = tmp.getPalette(); + PalettefilePtr tmp(new Palettefile(data, len)); + SDL_Palette * pal = tmp->getPalette(); addPalette(IBM_PAL, "DUNE:IBM.PAL"); addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL"); @@ -63,7 +63,7 @@ data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len); ShpfilePtr menshpo(new Shpfile(data, len)); data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len); - ShpfilePtr menshpm(new Shpfile(data, len, getPalette(BENE_PAL))); + ShpfilePtr menshpm(new Shpfile(data, len, pal)); //getPalette(BENE_PAL))); data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len); ShpfilePtr choam(new Shpfile(data, len)); data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len); @@ -81,7 +81,7 @@ data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len); CpsfilePtr mentath (new Cpsfile(data, len)); data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len); - CpsfilePtr mentatm (new Cpsfile(data, len, getPalette(BENE_PAL))); + CpsfilePtr mentatm (new Cpsfile(data, len, pal)); //getPalette(BENE_PAL))); data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len); ShpfilePtr mentat (new Shpfile(data, len)); @@ -435,9 +435,9 @@ { int len; uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len); - Palettefile tmp (data, len); + PalettefilePtr tmp (new Palettefile(data, len)); - SDL_Palette * pal = tmp.getPalette(); + SDL_Palette * pal = tmp->getPalette(); m_palette[palette] = pal; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 03:32:08
|
Revision: 216 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=216&view=rev Author: dvalin Date: 2008-04-29 20:32:05 -0700 (Tue, 29 Apr 2008) Log Message: ----------- add spinlocks for palettes (something's busted though :/) Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/Application.cpp branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-30 03:22:55 UTC (rev 215) +++ branches/dunks/include/DataCache.h 2008-04-30 03:32:05 UTC (rev 216) @@ -23,7 +23,7 @@ #define NUM_MAPCHOICEPIECES 28 #define NUM_MAPCHOICEARROWS 9 class Animation; - +//class SDL_Palette; //! \enum MUSICTYPE /*! Types of music available in the game*/ typedef enum { MUSIC_ATTACK, /*!<Played when at least one of player's units was hit. */ @@ -34,6 +34,13 @@ MUSIC_RANDOM /*!<Player used key combination to change current music. */ } MUSICTYPE; +typedef enum { + INTRO_PAL, + BENE_PAL, + IBM_PAL, + WESTWOOD_PAL, + NUM_PALETTES +} Palette_enum; // ObjPics typedef enum { @@ -411,6 +418,8 @@ void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0); void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp); void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum); + void addPalette(Palette_enum palette, std::string paletteFile); + SDL_Palette* getPalette(Palette_enum palette); Mix_Chunk* addMusic(MUSICTYPE musicType, uint16_t ID); ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); @@ -430,6 +439,7 @@ remapped_images m_guiImg; remapped_music m_music; std::vector<songFile> songFiles[MUSIC_RANDOM]; + SDL_Palette* m_palette[NUM_PALETTES]; Mix_Chunk* getChunkFromFile(std::string fileName); Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2); Modified: branches/dunks/src/Application.cpp =================================================================== --- branches/dunks/src/Application.cpp 2008-04-30 03:22:55 UTC (rev 215) +++ branches/dunks/src/Application.cpp 2008-04-30 03:32:05 UTC (rev 216) @@ -204,13 +204,8 @@ void Application::SetPalette() { - int len; - unsigned char* data = ResMan::Instance()->readFile("INTRO:INTRO.PAL", &len); + SDL_Palette * pal = DataCache::Instance()->getPalette(INTRO_PAL); - Palettefile tmp (data, len); - - SDL_Palette * pal = tmp.getPalette(); - //This fixes white wheels. Is palette broken or sth?? pal->colors[205].r = 109; @@ -308,16 +303,8 @@ SetPalette(); - int len; - - unsigned char * data; + m_cursor.reset(DataCache::Instance()->getGuiPic(UI_MouseCursor).get()); //mouse.getPicture(0)); - data = ResMan::Instance()->readFile("DUNE:MOUSE.SHP", &len); - - Shpfile mouse (data, len); - - m_cursor.reset(mouse.getPicture(0)); - fprintf(stdout, "starting sound...\n"); SoundPlayerClass* soundPlayer = new SoundPlayerClass(); Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 03:22:55 UTC (rev 215) +++ branches/dunks/src/DataCache.cpp 2008-04-30 03:32:05 UTC (rev 216) @@ -4,8 +4,12 @@ #include <string> #include <iostream> -DataCache::DataCache() {} +DataCache::DataCache() { + for(uint8_t i = 0; i < NUM_PALETTES; i++) + m_palette[i] = NULL; +} + void DataCache::Init(){ for (uint8_t i=0; i< NUM_HOUSES; i++) { @@ -21,13 +25,19 @@ uint8_t *data, *mapdata; + addPalette(INTRO_PAL, "INTRO:INTRO.PAL"); + // FIXME: Something seems to be fscked up with this palette, the Bene Gesserit + // mentat ends up looking a bit unhealthy greenish, needs to be corrected! + addPalette(BENE_PAL, "DUNE:BENE.PAL"); + // For some reason things crashes if we fetch the palette and use it here.. :/ + data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); + Palettefile tmp (data, len); + SDL_Palette * pal = tmp.getPalette(); - // FIXM: Something seems to be fscked up with this palette, the Bene Gesserit - // mentat ends up looking a bit unhealthy greenish, needs to be corrected! - data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); - Palettefile tmp (data, len); - SDL_Palette * pal = tmp.getPalette(); - + addPalette(IBM_PAL, "DUNE:IBM.PAL"); + addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL"); + + //LOADING FILES data = ResMan::Instance()->readFile("DUNE:UNITS.SHP", &len); ShpfilePtr units(new Shpfile(data, len)); @@ -53,7 +63,7 @@ data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len); ShpfilePtr menshpo(new Shpfile(data, len)); data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len); - ShpfilePtr menshpm(new Shpfile(data, len, pal)); + ShpfilePtr menshpm(new Shpfile(data, len, getPalette(BENE_PAL))); data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len); ShpfilePtr choam(new Shpfile(data, len)); data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len); @@ -71,7 +81,7 @@ data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len); CpsfilePtr mentath (new Cpsfile(data, len)); data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len); - CpsfilePtr mentatm (new Cpsfile(data, len, pal)); + CpsfilePtr mentatm (new Cpsfile(data, len, getPalette(BENE_PAL))); data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len); ShpfilePtr mentat (new Shpfile(data, len)); @@ -395,6 +405,10 @@ addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC")); addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC")); + BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG"); + BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); + BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); + addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3); addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6); @@ -413,13 +427,34 @@ addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4); addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2); - BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG"); - BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); - BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); delete data; } +void DataCache::addPalette(Palette_enum palette, std::string paletteFile) +{ + int len; + uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len); + Palettefile tmp (data, len); + + SDL_Palette * pal = tmp.getPalette(); + m_palette[palette] = pal; +} + +SDL_Palette* DataCache::getPalette(Palette_enum palette) +{ + SDL_Palette* pal; +#ifdef THREADS + spinlock: +#endif + pal = m_palette[palette]; +#ifdef THREADS + if(pal == NULL) + goto spinlock; +#endif + return pal; +} + void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) { m_objImg[house]->insert(std::pair<ObjPic_enum, ImagePtr>(ID, @@ -437,7 +472,7 @@ images::iterator iter; #ifdef THREADS spinlock: -#endif +#endif iter = m_objImg[house]->find(ID); if (iter != m_objImg[house]->end()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 03:22:58
|
Revision: 215 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=215&view=rev Author: dvalin Date: 2008-04-29 20:22:55 -0700 (Tue, 29 Apr 2008) Log Message: ----------- bah, I removed wrong, really move SDL_image and not SDL_mixer Modified Paths: -------------- branches/dunks/SConstruct Modified: branches/dunks/SConstruct =================================================================== --- branches/dunks/SConstruct 2008-04-30 03:20:51 UTC (rev 214) +++ branches/dunks/SConstruct 2008-04-30 03:22:55 UTC (rev 215) @@ -36,7 +36,7 @@ env.Append(CCFLAGS = ["/O2", "/EHsc", "/MD", "/Op", "/DEBUG", "/Zi", "/GR"]) env.Append(LIBS = [ "SDL", - "SDL_image", + "SDL_mixer", "SDL_net", "SDL_ttf", ]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 03:20:54
|
Revision: 214 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=214&view=rev Author: dvalin Date: 2008-04-29 20:20:51 -0700 (Tue, 29 Apr 2008) Log Message: ----------- don't link against SDL_image as we no longer use it Modified Paths: -------------- branches/dunks/SConstruct Modified: branches/dunks/SConstruct =================================================================== --- branches/dunks/SConstruct 2008-04-30 02:02:51 UTC (rev 213) +++ branches/dunks/SConstruct 2008-04-30 03:20:51 UTC (rev 214) @@ -36,7 +36,6 @@ env.Append(CCFLAGS = ["/O2", "/EHsc", "/MD", "/Op", "/DEBUG", "/Zi", "/GR"]) env.Append(LIBS = [ "SDL", - "SDL_mixer", "SDL_image", "SDL_net", "SDL_ttf", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 02:02:55
|
Revision: 213 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=213&view=rev Author: dvalin Date: 2008-04-29 19:02:51 -0700 (Tue, 29 Apr 2008) Log Message: ----------- improve spinlock for getGuiPic & getObjPic Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-30 01:45:01 UTC (rev 212) +++ branches/dunks/include/DataCache.h 2008-04-30 02:02:51 UTC (rev 213) @@ -154,6 +154,7 @@ typedef enum { UI_RadarAnimation, UI_CursorShape, + UI_MouseCursor, UI_CreditsDigits, UI_GameBar, UI_Indicator, Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 01:45:01 UTC (rev 212) +++ branches/dunks/src/DataCache.cpp 2008-04-30 02:02:51 UTC (rev 213) @@ -208,6 +208,7 @@ // addGuiPic(UI_RadarAnimation, radar->getAnimationAsPictureRow()); addGuiPic(UI_CursorShape, mouse->getPictureArray(7,1,0|TILE_NORMAL,1|TILE_NORMAL,2|TILE_NORMAL,3|TILE_NORMAL,4|TILE_NORMAL,5|TILE_NORMAL,6|TILE_NORMAL)); + addGuiPic(UI_MouseCursor, mouse->getPicture(0)); // SDL_SetColorKey(addGuiPic(UI_CursorShape][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); addGuiPic(UI_CreditsDigits, shapes->getPictureArray(10,1,2|TILE_NORMAL,3|TILE_NORMAL,4|TILE_NORMAL,5|TILE_NORMAL,6|TILE_NORMAL, 7|TILE_NORMAL,8|TILE_NORMAL,9|TILE_NORMAL,10|TILE_NORMAL,11|TILE_NORMAL)); @@ -444,11 +445,13 @@ } else { - ImagePtr source = m_objImg[house]->find(ID)->second; #ifdef THREADS - if (source == NULL) + // If house is harkonnen we know that there shouldn't be any other + // to look for and therefore must be that graphic hasn't been loaded yet. + if (house == HOUSE_HARKONNEN) goto spinlock; #endif + ImagePtr source = m_objImg[house]->find(ID)->second; ImagePtr copy = source->getRecoloredByHouse(house); m_objImg[house]->insert(std::pair<ObjPic_enum, ImagePtr>(ID, copy)); return copy; @@ -469,12 +472,11 @@ } else { - - ImagePtr source = m_guiImg[house]->find(ID)->second; #ifdef THREADS - if (source == NULL) + if (house == HOUSE_HARKONNEN) goto spinlock; #endif + ImagePtr source = m_guiImg[house]->find(ID)->second; ImagePtr copy = source->getRecoloredByHouse(house); m_guiImg[house]->insert(std::pair<GuiPic_enum, ImagePtr>(ID, copy)); return copy; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 01:45:05
|
Revision: 212 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=212&view=rev Author: dvalin Date: 2008-04-29 18:45:01 -0700 (Tue, 29 Apr 2008) Log Message: ----------- do conditional on THREADS and not on __linux__.. Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 01:41:10 UTC (rev 211) +++ branches/dunks/src/DataCache.cpp 2008-04-30 01:45:01 UTC (rev 212) @@ -489,7 +489,7 @@ void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum) { songFiles[musicType].push_back(songFile(filename, trackNum)); -#ifdef __linux__ +#ifdef THREADS addMusic(musicType, songFiles[musicType].size()-1); #endif } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 01:41:17
|
Revision: 211 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=211&view=rev Author: dvalin Date: 2008-04-29 18:41:10 -0700 (Tue, 29 Apr 2008) Log Message: ----------- add spinlocks for getGuiPic & getObjPic Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 01:34:05 UTC (rev 210) +++ branches/dunks/src/DataCache.cpp 2008-04-30 01:41:10 UTC (rev 211) @@ -433,7 +433,11 @@ ImagePtr DataCache::getObjPic(ObjPic_enum ID, HOUSETYPE house) { - images::iterator iter = m_objImg[house]->find(ID); + images::iterator iter; +#ifdef THREADS + spinlock: +#endif + iter = m_objImg[house]->find(ID); if (iter != m_objImg[house]->end()) { return m_objImg[house]->find(ID)->second; @@ -441,6 +445,10 @@ else { ImagePtr source = m_objImg[house]->find(ID)->second; +#ifdef THREADS + if (source == NULL) + goto spinlock; +#endif ImagePtr copy = source->getRecoloredByHouse(house); m_objImg[house]->insert(std::pair<ObjPic_enum, ImagePtr>(ID, copy)); return copy; @@ -450,14 +458,23 @@ ImagePtr DataCache::getGuiPic(GuiPic_enum ID, HOUSETYPE house) { - images::iterator iter = m_guiImg[house]->find(ID); + images::iterator iter; +#ifdef THREADS + spinlock: +#endif + iter = m_guiImg[house]->find(ID); if (iter != m_guiImg[house]->end()) { return m_guiImg[house]->find(ID)->second; } else { + ImagePtr source = m_guiImg[house]->find(ID)->second; +#ifdef THREADS + if (source == NULL) + goto spinlock; +#endif ImagePtr copy = source->getRecoloredByHouse(house); m_guiImg[house]->insert(std::pair<GuiPic_enum, ImagePtr>(ID, copy)); return copy; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 01:34:17
|
Revision: 210 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=210&view=rev Author: dvalin Date: 2008-04-29 18:34:05 -0700 (Tue, 29 Apr 2008) Log Message: ----------- add some more gui graphics.. Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 01:05:18 UTC (rev 209) +++ branches/dunks/src/DataCache.cpp 2008-04-30 01:34:05 UTC (rev 210) @@ -206,23 +206,101 @@ addAnimation(Anim_Sardaukar, "MENTAT:SARDUKAR.WSA"); addAnimation(Anim_Frigate, "MENTAT:FRIGATE.WSA"); - addGuiPic(UI_HouseChoiceBackground, herald->getPicture()); - - addGuiPic(UI_MentatYes, mentat->getPicture(0)); - addGuiPic(UI_MentatYes_Pressed, mentat->getPicture(1)); - addGuiPic(UI_MentatNo, mentat->getPicture(2)); - addGuiPic(UI_MentatNo_Pressed, mentat->getPicture(3)); +// addGuiPic(UI_RadarAnimation, radar->getAnimationAsPictureRow()); + addGuiPic(UI_CursorShape, mouse->getPictureArray(7,1,0|TILE_NORMAL,1|TILE_NORMAL,2|TILE_NORMAL,3|TILE_NORMAL,4|TILE_NORMAL,5|TILE_NORMAL,6|TILE_NORMAL)); +// SDL_SetColorKey(addGuiPic(UI_CursorShape][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); + addGuiPic(UI_CreditsDigits, shapes->getPictureArray(10,1,2|TILE_NORMAL,3|TILE_NORMAL,4|TILE_NORMAL,5|TILE_NORMAL,6|TILE_NORMAL, + 7|TILE_NORMAL,8|TILE_NORMAL,9|TILE_NORMAL,10|TILE_NORMAL,11|TILE_NORMAL)); +// addGuiPic(UI_GameBar, PicFactory->createGameBar(); + addGuiPic(UI_Indicator, units1->getPictureArray(3,1,8|TILE_NORMAL,9|TILE_NORMAL,10|TILE_NORMAL)); +// SDL_SetColorKey(addGuiPic(UI_Indicator][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); +// addGuiPic(UI_InvalidPlace, PicFactory->createInvalidPlace(); +// addGuiPic(UI_ValidPlace, PicFactory->createValidPlace(); +// addGuiPic(UI_MenuBackground, PicFactory->createMainBackground(); +// addGuiPic(UI_Background, PicFactory->createBackground(); +// addGuiPic(UI_SelectionBox, SDL_LoadBMP_RW(pFileManager->OpenFile("UI_SelectionBox.bmp"),true); +// SDL_SetColorKey(addGuiPic(UI_SelectionBox][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); +// addGuiPic(UI_TopBar, PicFactory->createTopBar(); + addGuiPic(UI_ButtonUp, choam->getPicture(0)); + addGuiPic(UI_ButtonUp_Pressed, choam->getPicture(1)); + addGuiPic(UI_ButtonDown, choam->getPicture(2)); + addGuiPic(UI_ButtonDown_Pressed, choam->getPicture(3)); +// addGuiPic(UI_MessageBox, PicFactory->createMessageBoxBorder(); + addGuiPic(UI_Mentat, bttn->getPicture(0)); + addGuiPic(UI_Mentat_Pressed, bttn->getPicture(1)); + addGuiPic(UI_Options, bttn->getPicture(2)); + addGuiPic(UI_Options_Pressed, bttn->getPicture(3)); + addGuiPic(UI_Upgrade, choam->getPicture(4)); +// SDL_SetColorKey(addGuiPic(UI_Upgrade][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); + addGuiPic(UI_Upgrade_Pressed, choam->getPicture(5)); +// SDL_SetColorKey(addGuiPic(UI_Upgrade_Pressed][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); +// addGuiPic(UI_Repair, SDL_LoadBMP_RW(pFileManager->OpenFile("Button_Repair.bmp"),true); +// addGuiPic(UI_Repair_Pressed, SDL_LoadBMP_RW(pFileManager->OpenFile("Button_RepairPushed.bmp"),true); +// addGuiPic(UI_Difficulty, SDL_LoadBMP_RW(pFileManager->OpenFile("Menu_Difficulty.bmp"),true); +// SDL_Rect dest1 = { 0,0,addGuiPic(UI_Difficulty][HOUSE_HARKONNEN]->w,30}; +// PicFactory->drawFrame(addGuiPic(UI_Difficulty][HOUSE_HARKONNEN],PictureFactory::DecorationFrame1,&dest1); +// SDL_SetColorKey(addGuiPic(UI_Difficulty][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); +// addGuiPic(UI_Dif_Easy, SDL_LoadBMP_RW(pFileManager->OpenFile("Difficulty_Easy.bmp"),true); +// addGuiPic(UI_Dif_Hard, SDL_LoadBMP_RW(pFileManager->OpenFile("Difficulty_Hard.bmp"),true); +// addGuiPic(UI_Dif_Medium, SDL_LoadBMP_RW(pFileManager->OpenFile("Difficulty_Medium.bmp"),true); +// addGuiPic(UI_Minus, SDL_LoadBMP_RW(pFileManager->OpenFile("Button_Minus.bmp"),true); +// addGuiPic(UI_Minus_Pressed, SDL_LoadBMP_RW(pFileManager->OpenFile("Button_MinusPushed.bmp"),true); +// addGuiPic(UI_Plus, SDL_LoadBMP_RW(pFileManager->OpenFile("Button_Plus.bmp"),true); +// addGuiPic(UI_Plus_Pressed, SDL_LoadBMP_RW(pFileManager->OpenFile("Button_PlusPushed.bmp"),true); +// addGuiPic(UI_MissionSelect, SDL_LoadBMP_RW(pFileManager->OpenFile("Menu_MissionSelect.bmp"),true); +// PicFactory->drawFrame(addGuiPic(UI_MissionSelect][HOUSE_HARKONNEN],PictureFactory::SimpleFrame,NULL); +// SDL_SetColorKey(addGuiPic(UI_MissionSelect][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); +// addGuiPic(UI_OptionsMenu, PicFactory->createOptionsMenu(); +// SDL_Surface* tmp; +// if((tmp = SDL_CreateRGBSurface(SDL_HWSURFACE,192,27,8,0,0,0,0)) == NULL) { +// fprintf(stderr,"DataManager::DataManager(): Cannot create surface!\n"); +// exit(EXIT_FAILURE); +// } +// SDL_SetColors(tmp, palette->colors, 0, palette->ncolors); +// SDL_FillRect(tmp,NULL,133); +// addGuiPic(UI_LoadSaveWindow, PicFactory->createMenu(tmp,208); +// SDL_FreeSurface(tmp); +// addGuiPic(UI_DuneLegacy, SDL_LoadBMP_RW(pFileManager->OpenFile("DuneLegacy.bmp"),true); +// addGuiPic(UI_GameMenu, PicFactory->createMenu(addGuiPic(UI_DuneLegacy][HOUSE_HARKONNEN],158); +// PicFactory->drawFrame(addGuiPic(UI_DuneLegacy][HOUSE_HARKONNEN],PictureFactory::SimpleFrame); + addGuiPic(UI_PlanetBackground, bigplan->getPicture()); +// PicFactory->drawFrame(addGuiPic(UI_PlanetBackground, PictureFactory::SimpleFrame); +// addGuiPic(UI_MenuButtonBorder, PicFactory->createFrame(PictureFactory::DecorationFrame1,190,123,false); + +// PicFactory->drawFrame(addGuiPic(UI_DuneLegacy, PictureFactory::SimpleFrame); + addGuiPic(UI_MentatBackground, mentata->getPicture(), HOUSE_ATREIDES); addGuiPic(UI_MentatBackground, mentata->getPicture(), HOUSE_FREMEN); addGuiPic(UI_MentatBackground, mentato->getPicture(), HOUSE_ORDOS); addGuiPic(UI_MentatBackground, mentato->getPicture(), HOUSE_MERCENARY); addGuiPic(UI_MentatBackground, mentath->getPicture(), HOUSE_HARKONNEN); + addGuiPic(UI_MentatBackground, mentatm->getPicture(), HOUSE_SARDAUKAR); + addGuiPic(UI_MentatYes, mentat->getPicture(0)); + addGuiPic(UI_MentatYes_Pressed, mentat->getPicture(1)); + addGuiPic(UI_MentatNo, mentat->getPicture(2)); + addGuiPic(UI_MentatNo_Pressed, mentat->getPicture(3)); + addGuiPic(UI_MentatExit,mentat->getPicture(4)); + addGuiPic(UI_MentatExit_Pressed, mentat->getPicture(5)); + addGuiPic(UI_MentatProcced, mentat->getPicture(6)); + addGuiPic(UI_MentatProcced_Pressed, mentat->getPicture(7)); + addGuiPic(UI_MentatRepeat, mentat->getPicture(8)); + addGuiPic(UI_MentatRepeat_Pressed, mentat->getPicture(9)); + addGuiPic(UI_HouseChoiceBackground, herald->getPicture()); +// addGuiPic(UI_HouseSelect, PicFactory->createHouseSelect(addGuiPic(UI_HouseChoiceBackground][HOUSE_HARKONNEN]); +// addGuiPic(UI_HeraldAtre_Coloured, GetSubPicture(addGuiPic(UI_HouseChoiceBackground][HOUSE_HARKONNEN],20,54,83,91); +// addGuiPic(UI_HeraldOrd_Coloured, GetSubPicture(addGuiPic(UI_HouseChoiceBackground][HOUSE_HARKONNEN],117,54,83,91); +// addGuiPic(UI_HeraldHark_Coloured, GetSubPicture(addGuiPic(UI_HouseChoiceBackground][HOUSE_HARKONNEN],215,54,82,91); - //addAnimation(Anim_OrdosPlanet, ordosplanet); +// addGuiPic(UI_MapChoiceScreen,[HOUSE_ATREIDES] = PicFactory->createMapChoiceScreen(HOUSE_ATREIDES); +// addGuiPic(UI_MapChoiceScreen,[HOUSE_ORDOS] = PicFactory->createMapChoiceScreen(HOUSE_ORDOS); +// addGuiPic(UI_MapChoiceScreen,[HOUSE_HARKONNEN] = PicFactory->createMapChoiceScreen(HOUSE_HARKONNEN); + addGuiPic(UI_MapChoiceMapOnly,dunemap->getPicture()); +// SDL_SetColorKey(m_guiImgUIGraphic,UI_MapChoiceMapOnly][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); + addGuiPic(UI_MapChoiceMap, dunergn->getPicture()); +// SDL_SetColorKey(UIGraphic,UI_MapChoiceMap][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); + addGuiPic(UI_MapChoiceClickMap, rgnclk->getPicture()); - addGuiPic(UI_MentatBackground, mentatm->getPicture(), HOUSE_SARDAUKAR); - addSoundChunk(YesSir, getChunkFromFile("VOC:ZREPORT1.VOC")); addSoundChunk(Reporting, getChunkFromFile("VOC:ZREPORT2.VOC")); addSoundChunk(Acknowledged, getChunkFromFile("VOC:ZREPORT3.VOC")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 01:05:24
|
Revision: 209 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=209&view=rev Author: dvalin Date: 2008-04-29 18:05:18 -0700 (Tue, 29 Apr 2008) Log Message: ----------- give threading a touch of cosmetics Modified Paths: -------------- branches/dunks/include/Application.h branches/dunks/src/Application.cpp branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/Application.h =================================================================== --- branches/dunks/include/Application.h 2008-04-30 00:57:00 UTC (rev 208) +++ branches/dunks/include/Application.h 2008-04-30 01:05:18 UTC (rev 209) @@ -2,12 +2,18 @@ #define DUNE_APPLICATION_H #include "singleton.h" -#include "State.h" #include "SDL.h" #include "gui2/Container.h" #include "State.h" #include "TopLevelState.h" + +#ifdef __linux__ +#define THREADS 1 +#include <pthread.h> +extern "C" void *dataCacheThread(void * arg); +#endif + typedef enum { CURSOR_NORMAL, @@ -55,6 +61,7 @@ void UpdateVideoMode(Uint16 w, Uint16 h, bool fullscreen); private: +// void *testis(void * arg); void InitSettings(); void InitAudio(); void InitNet(); @@ -85,8 +92,3 @@ #endif // DUNE_APPLICATION_H - - - - - Modified: branches/dunks/src/Application.cpp =================================================================== --- branches/dunks/src/Application.cpp 2008-04-30 00:57:00 UTC (rev 208) +++ branches/dunks/src/Application.cpp 2008-04-30 01:05:18 UTC (rev 209) @@ -35,15 +35,11 @@ #define VERSION "0.94.1" -#ifdef __linux__ -# define _P __P -#include <pthread.h> +#ifdef THREADS #include "DataCache.h" -extern "C" void *dataCacheThread(void * arg); - void *dataCacheThread(void * arg) { - DataCache::Instance(); + DataCache::Instance()->Init(); return NULL; } @@ -325,24 +321,10 @@ fprintf(stdout, "starting sound...\n"); SoundPlayerClass* soundPlayer = new SoundPlayerClass(); - //Mix_Chunk* myChunk = DataCache::Instance()->getMusic(MUSIC_INTRO, 0); -// myChunk = DataCache::Instance()->getMusic(MUSIC_PEACE, 0); - - //soundPlayer->playSound(myChunk); -} -#if 0 -extern "C" void *testis(void * arg); - -void *testis(void * arg){ - fprintf(stdout, "starting sound...\n"); - SoundPlayerClass* soundPlayer = new SoundPlayerClass(); Mix_Chunk* myChunk = DataCache::Instance()->getMusic(MUSIC_INTRO, 0); -// myChunk = DataCache::Instance()->getMusic(MUSIC_PEACE, 0); - soundPlayer->playSound(myChunk); - return NULL; } -#endif + void Application::Die() { FontManager::Destroy(); Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 00:57:00 UTC (rev 208) +++ branches/dunks/src/DataCache.cpp 2008-04-30 01:05:18 UTC (rev 209) @@ -419,7 +419,7 @@ Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID) { music::iterator iter; -#ifdef __linux__ +#ifdef THREADS spinlock: #endif iter = m_music[musicType]->find(ID); @@ -429,7 +429,7 @@ } else { -#ifdef __linux__ +#ifdef THREADS goto spinlock; #endif return addMusic(musicType, ID); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 00:57:03
|
Revision: 208 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=208&view=rev Author: dvalin Date: 2008-04-29 17:57:00 -0700 (Tue, 29 Apr 2008) Log Message: ----------- add spinlock for getMusic Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 00:44:29 UTC (rev 207) +++ branches/dunks/src/DataCache.cpp 2008-04-30 00:57:00 UTC (rev 208) @@ -418,7 +418,11 @@ // If loaded, it will return the song, if not it will load and return the song. Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID) { - music::iterator iter = m_music[musicType]->find(ID); + music::iterator iter; +#ifdef __linux__ + spinlock: +#endif + iter = m_music[musicType]->find(ID); if (iter != m_music[musicType]->end()) { return m_music[musicType]->find(ID)->second; @@ -426,7 +430,7 @@ else { #ifdef __linux__ - return NULL; + goto spinlock; #endif return addMusic(musicType, ID); } @@ -439,9 +443,9 @@ Mix_Chunk* DataCache::getChunkFromFile(std::string fileName) { Mix_Chunk* returnChunk; SDL_RWops* rwop; - unsigned char * data; + int len; + uint8_t * data; - int len; data = ResMan::Instance()->readFile(fileName.c_str(), &len); if((rwop = SDL_RWFromMem(data, len)) ==NULL) { fprintf(stderr,"DataManager::getChunkFromFile(): Cannot open %s!\n",fileName.c_str()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 00:44:38
|
Revision: 207 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=207&view=rev Author: dvalin Date: 2008-04-29 17:44:29 -0700 (Tue, 29 Apr 2008) Log Message: ----------- grf, accidently commited some debugging code in previous commit, revert it.. Modified Paths: -------------- branches/dunks/src/DataCache.cpp Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 00:41:30 UTC (rev 206) +++ branches/dunks/src/DataCache.cpp 2008-04-30 00:44:29 UTC (rev 207) @@ -408,7 +408,6 @@ CadlPlayer *p = new CadlPlayer(test); Mix_Chunk* tmp = p->getUpsampledSubsong(song.second, 22050, AUDIO_S16LSB, 1); SDL_RWclose(test); - std::cout << "ferdig" << std::endl; m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp)); delete data; delete p; @@ -427,11 +426,9 @@ else { #ifdef __linux__ - std::cout << "NULL" << std::endl; - exit(1); return NULL; #endif -// return addMusic(musicType, ID); + return addMusic(musicType, ID); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 00:41:33
|
Revision: 206 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=206&view=rev Author: dvalin Date: 2008-04-29 17:41:30 -0700 (Tue, 29 Apr 2008) Log Message: ----------- make constructor minimal to ensure that class is fast to initialize and won't be referenced before initialized when using threads Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-30 00:11:04 UTC (rev 205) +++ branches/dunks/include/DataCache.h 2008-04-30 00:41:30 UTC (rev 206) @@ -403,6 +403,7 @@ ~DataCache(); public: + void Init(); void addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN); void addGuiPic(GuiPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN); void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0); Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-30 00:11:04 UTC (rev 205) +++ branches/dunks/src/DataCache.cpp 2008-04-30 00:41:30 UTC (rev 206) @@ -3,7 +3,10 @@ #include "pakfile/sound/adl/adl.h" #include <string> #include <iostream> -DataCache::DataCache() { + +DataCache::DataCache() {} + +void DataCache::Init(){ for (uint8_t i=0; i< NUM_HOUSES; i++) { m_objImg.push_back(new images()); @@ -335,6 +338,7 @@ BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); delete data; + } void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) { @@ -390,6 +394,9 @@ void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum) { songFiles[musicType].push_back(songFile(filename, trackNum)); +#ifdef __linux__ + addMusic(musicType, songFiles[musicType].size()-1); +#endif } Mix_Chunk* DataCache::addMusic(MUSICTYPE musicType, uint16_t ID) @@ -401,6 +408,7 @@ CadlPlayer *p = new CadlPlayer(test); Mix_Chunk* tmp = p->getUpsampledSubsong(song.second, 22050, AUDIO_S16LSB, 1); SDL_RWclose(test); + std::cout << "ferdig" << std::endl; m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp)); delete data; delete p; @@ -418,7 +426,12 @@ } else { - return addMusic(musicType, ID); +#ifdef __linux__ + std::cout << "NULL" << std::endl; + exit(1); + return NULL; +#endif +// return addMusic(musicType, ID); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-30 00:11:24
|
Revision: 205 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=205&view=rev Author: dvalin Date: 2008-04-29 17:11:04 -0700 (Tue, 29 Apr 2008) Log Message: ----------- add threading on linux, this will make all game data to be loaded instantly at start in the backgrund. Probably no way near safe yet though.. ;p Modified Paths: -------------- branches/dunks/src/Application.cpp Modified: branches/dunks/src/Application.cpp =================================================================== --- branches/dunks/src/Application.cpp 2008-04-29 22:17:18 UTC (rev 204) +++ branches/dunks/src/Application.cpp 2008-04-30 00:11:04 UTC (rev 205) @@ -4,7 +4,8 @@ //#include "SDL_ttf.h" //#include "SDL_net.h" #include "SDL_mixer.h" - +#include "SDL_rwops.h" +#include "pakfile/sound/adl/adl.h" #include <stdio.h> #include <stdlib.h> #include <assert.h> @@ -34,6 +35,20 @@ #define VERSION "0.94.1" +#ifdef __linux__ +# define _P __P +#include <pthread.h> +#include "DataCache.h" +extern "C" void *dataCacheThread(void * arg); + +void *dataCacheThread(void * arg) +{ + DataCache::Instance(); + return NULL; +} + +#endif + Uint8 gpaloff; Application::Application() @@ -287,7 +302,15 @@ ResMan::Instance()->addRes("VOC"); ResMan::Instance()->addRes("XTRE"); printf("done loading resources\n"); +#ifdef __linux__ + pthread_t threads[1]; + pthread_create(&threads[0], + NULL, + dataCacheThread, + NULL); +#endif + SetPalette(); int len; @@ -301,10 +324,25 @@ fprintf(stdout, "starting sound...\n"); SoundPlayerClass* soundPlayer = new SoundPlayerClass(); -// Mix_Chunk* sound = DataCache::Instance()->concat2Chunks(Intro_TheBuilding, Intro_OfADynasty); -// soundPlayer->playSound(sound); + + //Mix_Chunk* myChunk = DataCache::Instance()->getMusic(MUSIC_INTRO, 0); +// myChunk = DataCache::Instance()->getMusic(MUSIC_PEACE, 0); + + //soundPlayer->playSound(myChunk); } +#if 0 +extern "C" void *testis(void * arg); +void *testis(void * arg){ + fprintf(stdout, "starting sound...\n"); + SoundPlayerClass* soundPlayer = new SoundPlayerClass(); + Mix_Chunk* myChunk = DataCache::Instance()->getMusic(MUSIC_INTRO, 0); +// myChunk = DataCache::Instance()->getMusic(MUSIC_PEACE, 0); + + soundPlayer->playSound(myChunk); + return NULL; +} +#endif void Application::Die() { FontManager::Destroy(); @@ -327,14 +365,15 @@ const int fps_interval = 10 * 1000; // 10 seconds float fps; - //Font* fnt = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); +// Font* fnt = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); m_running = true; assert(m_rootWidget != NULL); gpaloff = 0 ; - + + while (m_running) { SDL_FillRect(m_screen->getSurface(), NULL, m_clearColor); @@ -359,13 +398,10 @@ m_rootWidget->draw(m_screen, SPoint(0, 0)); BlitCursor(); - -#if 0 - fnt->render((const char*)"ABCDEFGHIJKLMOPQRSTUVWXYZ", m_screen, 10, 10, gpaloff); - fnt->render((const char*)"abcdefghijklmnopqrstuvwxz", m_screen, 10, 30, gpaloff); -#endif +#if 0 + fnt->render((const char*)"ABCDEFGHIJKLMOPQRSTUVWXYZ", m_screen->getSurface(), 10, 10, gpaloff); + fnt->render((const char*)"abcdefghijklmnopqrstuvwxz", m_screen->getSurface(), 10, 30, gpaloff); -#if 0 SDL_Rect pdest = {10, 10, 5, 10}; for (Uint32 i=0; i!=256; i++) @@ -373,8 +409,7 @@ pdest.x = 7 * i; SDL_FillRect(m_screen->getSurface(), &pdest, i); } -#endif - +#endif SDL_Flip(m_screen->getSurface()); fps_frames ++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-29 22:17:36
|
Revision: 204 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=204&view=rev Author: dvalin Date: 2008-04-29 15:17:18 -0700 (Tue, 29 Apr 2008) Log Message: ----------- don't load all songs at once, only load them when needed (avoids long time loading all at once) Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-29 20:11:59 UTC (rev 203) +++ branches/dunks/include/DataCache.h 2008-04-29 22:17:18 UTC (rev 204) @@ -392,8 +392,8 @@ typedef std::map <unsigned, Mix_Chunk*> music; typedef std::vector <music*> remapped_music; -typedef std::map <unsigned, std::string> musicFile; -typedef std::vector <musicFile*> remapped_musicFile; +typedef std::pair <std::string, uint16_t> songFile; + class DataCache : public Singleton<DataCache> { friend class Singleton<DataCache>; @@ -408,8 +408,8 @@ void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0); void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0); void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp); - void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID); - void addMusic(MUSICTYPE musicType, Mix_Chunk* tmp, uint16_t ID); + void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum); + Mix_Chunk* addMusic(MUSICTYPE musicType, uint16_t ID); ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); Animation* getAnimation(Animation_enum id); @@ -427,16 +427,16 @@ remapped_images m_objImg; remapped_images m_guiImg; remapped_music m_music; - remapped_musicFile m_musicFile; + std::vector<songFile> songFiles[MUSIC_RANDOM]; Mix_Chunk* getChunkFromFile(std::string fileName); Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2); Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3); Mix_Chunk* createEmptyChunk(); - Animation* Anim[NUM_ANIMATION]; - Stringfile* BriefingStrings[3]; - Mix_Chunk* soundChunk[NUM_SOUNDCHUNK]; + Animation* Anim[NUM_ANIMATION]; + Stringfile* BriefingStrings[3]; + Mix_Chunk* soundChunk[NUM_SOUNDCHUNK]; }; Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-29 20:11:59 UTC (rev 203) +++ branches/dunks/src/DataCache.cpp 2008-04-29 22:17:18 UTC (rev 204) @@ -4,12 +4,15 @@ #include <string> #include <iostream> DataCache::DataCache() { - for (int i=0; i< NUM_HOUSES; i++) + for (uint8_t i=0; i< NUM_HOUSES; i++) { m_objImg.push_back(new images()); m_guiImg.push_back(new images()); + } + for (uint8_t i = 0; i < MUSIC_RANDOM; i++) + { m_music.push_back(new music()); - } + } int len, maplen; uint8_t *data, *mapdata; @@ -310,23 +313,23 @@ addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC")); addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC")); - addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2, 0); - addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3, 0); - addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6, 0); - addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6, 1); - addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6, 2); - addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6, 3); - addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6, 4); - addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4, 5); - addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2, 6); - addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7, 0); - addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7, 1); - addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7, 2); - addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7, 3); - addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7, 4); - addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6, 0); - addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4, 1); - addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2 ,0); + addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); + addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3); + addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4); + addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2); + addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7); + addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7); + addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7); + addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7); + addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7); + addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6); + addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4); + addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2); BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG"); BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); @@ -384,30 +387,38 @@ soundChunk[ID] = tmp; } -void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID) +void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum) { + songFiles[musicType].push_back(songFile(filename, trackNum)); +} + +Mix_Chunk* DataCache::addMusic(MUSICTYPE musicType, uint16_t ID) +{ + songFile song = songFiles[musicType][ID]; int len; - uint8_t * data = ResMan::Instance()->readFile(filename, &len); + uint8_t * data = ResMan::Instance()->readFile(song.first, &len); SDL_RWops* test = SDL_RWFromMem(data, len); CadlPlayer *p = new CadlPlayer(test); - Mix_Chunk* tmp = p->getUpsampledSubsong(trackNum, 22050, AUDIO_S16LSB, 1); + Mix_Chunk* tmp = p->getUpsampledSubsong(song.second, 22050, AUDIO_S16LSB, 1); SDL_RWclose(test); m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp)); delete data; delete p; + return tmp; } +// Searches through list of loaded songs to see if the specific song is loaded. +// If loaded, it will return the song, if not it will load and return the song. Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID) { music::iterator iter = m_music[musicType]->find(ID); if (iter != m_music[musicType]->end()) - { + { return m_music[musicType]->find(ID)->second; } else { - Mix_Chunk* source = m_music[musicType]->find(ID)->second; - return source; + return addMusic(musicType, ID); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-29 20:12:19
|
Revision: 203 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=203&view=rev Author: dvalin Date: 2008-04-29 13:11:59 -0700 (Tue, 29 Apr 2008) Log Message: ----------- load music (slow for now, must find a way to improve later..) Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-04-29 16:37:27 UTC (rev 202) +++ branches/dunks/include/DataCache.h 2008-04-29 20:11:59 UTC (rev 203) @@ -14,6 +14,7 @@ #include "pakfile/Shpfile.h" #include "pakfile/Wsafile.h" #include "pakfile/Stringfile.h" + #include "houses.h" #include <map> @@ -23,6 +24,17 @@ #define NUM_MAPCHOICEARROWS 9 class Animation; +//! \enum MUSICTYPE +/*! Types of music available in the game*/ +typedef enum { MUSIC_ATTACK, /*!<Played when at least one of player's units was hit. */ + MUSIC_INTRO, /*!<Background music for intro. */ + MUSIC_LOSE, /*!<Failure screen background music. */ + MUSIC_PEACE, /*!<Played most of the time when the enemy is not attacking. */ + MUSIC_WIN, /*!<Victory screen background music.. */ + MUSIC_RANDOM /*!<Player used key combination to change current music. */ + } MUSICTYPE; + + // ObjPics typedef enum { ObjPic_Tank_Base, @@ -377,6 +389,11 @@ typedef std::map <unsigned, ImagePtr> images; typedef std::vector <images*> remapped_images; //One for each house +typedef std::map <unsigned, Mix_Chunk*> music; +typedef std::vector <music*> remapped_music; + +typedef std::map <unsigned, std::string> musicFile; +typedef std::vector <musicFile*> remapped_musicFile; class DataCache : public Singleton<DataCache> { friend class Singleton<DataCache>; @@ -391,10 +408,13 @@ void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0); void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0); void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp); + void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID); + void addMusic(MUSICTYPE musicType, Mix_Chunk* tmp, uint16_t ID); ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); Animation* getAnimation(Animation_enum id); Mix_Chunk* getSoundChunk(Sound_enum ID); + Mix_Chunk* getMusic(MUSICTYPE musicType, uint16_t ID); Mix_Chunk* concat2Chunks(Sound_enum ID1, Sound_enum ID2); std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house); @@ -406,7 +426,9 @@ private: remapped_images m_objImg; remapped_images m_guiImg; - + remapped_music m_music; + remapped_musicFile m_musicFile; + Mix_Chunk* getChunkFromFile(std::string fileName); Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2); Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3); Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-29 16:37:27 UTC (rev 202) +++ branches/dunks/src/DataCache.cpp 2008-04-29 20:11:59 UTC (rev 203) @@ -1,5 +1,6 @@ #include "DataCache.h" #include "pakfile/sound/Vocfile.h" +#include "pakfile/sound/adl/adl.h" #include <string> #include <iostream> DataCache::DataCache() { @@ -7,6 +8,7 @@ { m_objImg.push_back(new images()); m_guiImg.push_back(new images()); + m_music.push_back(new music()); } int len, maplen; @@ -308,6 +310,24 @@ addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC")); addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC")); + addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2, 0); + addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3, 0); + addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6, 0); + addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6, 1); + addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6, 2); + addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6, 3); + addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6, 4); + addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4, 5); + addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2, 6); + addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7, 0); + addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7, 1); + addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7, 2); + addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7, 3); + addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7, 4); + addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6, 0); + addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4, 1); + addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2 ,0); + BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG"); BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG"); BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); @@ -364,9 +384,37 @@ soundChunk[ID] = tmp; } +void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID) +{ + int len; + uint8_t * data = ResMan::Instance()->readFile(filename, &len); + SDL_RWops* test = SDL_RWFromMem(data, len); + CadlPlayer *p = new CadlPlayer(test); + Mix_Chunk* tmp = p->getUpsampledSubsong(trackNum, 22050, AUDIO_S16LSB, 1); + SDL_RWclose(test); + m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp)); + delete data; + delete p; +} + +Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID) +{ + music::iterator iter = m_music[musicType]->find(ID); + if (iter != m_music[musicType]->end()) + { + return m_music[musicType]->find(ID)->second; + } + else + { + Mix_Chunk* source = m_music[musicType]->find(ID)->second; + return source; + } +} + Mix_Chunk* DataCache::getSoundChunk(Sound_enum ID){ return soundChunk[ID]; } + Mix_Chunk* DataCache::getChunkFromFile(std::string fileName) { Mix_Chunk* returnChunk; SDL_RWops* rwop; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |