From: <dv...@us...> - 2008-04-28 19:51:27
|
Revision: 182 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=182&view=rev Author: dvalin Date: 2008-04-28 12:50:37 -0700 (Mon, 28 Apr 2008) Log Message: ----------- make text colour overridable Modified Paths: -------------- branches/dunks/include/gui2/Label.h branches/dunks/src/gui2/Label.cpp Modified: branches/dunks/include/gui2/Label.h =================================================================== --- branches/dunks/include/gui2/Label.h 2008-04-28 18:46:29 UTC (rev 181) +++ branches/dunks/include/gui2/Label.h 2008-04-28 19:50:37 UTC (rev 182) @@ -16,9 +16,10 @@ /*! Caption of label should always be set when constructing label @param caption std::string a caption of label - @param bgcolour sets background colour of label. 115(dune yellow) by default + @param textColour sets text colour of label. 49(dune red) by default + @param bgColour sets background colour of label. 115(dune yellow) by default */ - Label(std::string caption, int bgcolour = 115); + Label(std::string caption, int textColour = 49, int bgColour = 115); ~Label(); //@} Modified: branches/dunks/src/gui2/Label.cpp =================================================================== --- branches/dunks/src/gui2/Label.cpp 2008-04-28 18:46:29 UTC (rev 181) +++ branches/dunks/src/gui2/Label.cpp 2008-04-28 19:50:37 UTC (rev 182) @@ -5,7 +5,7 @@ #include "Application.h" #include "Gfx.h" -Label::Label(std::string caption, int bgcolour) +Label::Label(std::string caption, int textColour, int bgColour) { m_caption = caption; Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); @@ -17,11 +17,11 @@ /*If surface width was not %4 == 0 then you'd get a text in italics */ m_surface.reset(new Image(UPoint(textw + 4-(textw%4) , texth))); - m_surface->fillRect(bgcolour); + m_surface->fillRect(bgColour); font->render(m_caption.c_str(), m_surface, m_surface->getSurface()->w/2 - textw/2, - m_surface->getSurface()->h/2 - texth/2, 49); + m_surface->getSurface()->h/2 - texth/2, textColour); // Is it needed in case of label. It's not clickable or anything. // Widget::setSize(SPoint(textw, texth)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-28 19:52:44
|
Revision: 183 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=183&view=rev Author: dvalin Date: 2008-04-28 12:52:22 -0700 (Mon, 28 Apr 2008) Log Message: ----------- add methods for fetching briefing text 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-28 19:50:37 UTC (rev 182) +++ branches/dunks/include/DataCache.h 2008-04-28 19:52:22 UTC (rev 183) @@ -13,7 +13,7 @@ #include "pakfile/Palette.h" #include "pakfile/Shpfile.h" #include "pakfile/Wsafile.h" -//#include "pakfile/BriefingText.h" +#include "pakfile/Stringfile.h" #include "houses.h" #include <map> @@ -191,7 +191,6 @@ UI_MentatProcced_Pressed, UI_MentatRepeat, UI_MentatRepeat_Pressed, - UI_Mentat_BeneGesserit, UI_PlanetBackground, UI_MenuButtonBorder, UI_DuneLegacy, @@ -391,6 +390,8 @@ ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN); Mix_Chunk* getSoundChunk(Sound_enum ID); Mix_Chunk* concat2Chunks(Sound_enum ID1, Sound_enum ID2); + 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); @@ -405,7 +406,7 @@ Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3); Mix_Chunk* createEmptyChunk(); -// BriefingText* BriefingStrings[1]; + Stringfile* BriefingStrings[3]; Mix_Chunk* soundChunk[NUM_SOUNDCHUNK]; }; Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-28 19:50:37 UTC (rev 182) +++ branches/dunks/src/DataCache.cpp 2008-04-28 19:52:22 UTC (rev 183) @@ -15,9 +15,6 @@ Shpfile* units; Shpfile* units1; Shpfile* units2; - Cpsfile* herald; - Shpfile* mentat; -// CpsfilePtr mentatm; @@ -31,18 +28,24 @@ data = ResMan::Instance()->readFile("DUNE:UNITS2.SHP", &len); units2 = new Shpfile(data, len); + data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len); + ShpfilePtr mentat (new Shpfile(data, len)); + data = ResMan::Instance()->readFile("ENGLISH:HERALD.ENG", &len); - herald = new Cpsfile(data, len); - - data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len); - mentat = new Shpfile(data, len); - - data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); - + CpsfilePtr herald(new Cpsfile(data, len)); + data = ResMan::Instance()->readFile("DUNE:MENTATA.CPS", &len); + CpsfilePtr mentata (new Cpsfile(data, len)); + data = ResMan::Instance()->readFile("DUNE:MENTATO.CPS", &len); + CpsfilePtr mentato (new Cpsfile(data, len)); + 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)); +// Anim[Anim_OrdosPlanet]->setFrameRate(12); +/* data = ResMan::Instance()->readFile("MENTAT:FORDOS.WSA", &len); + WsafilePtr ordosplanet (new Wsafile(data, len)); +*/ int maplen; unsigned char * mapdata; @@ -111,17 +114,25 @@ addObjPic(ObjPic_SandDamage, units1->getPictureArray(3,1,5|TILE_NORMAL,6|TILE_NORMAL,7|TILE_NORMAL)); addObjPic(ObjPic_Terrain_Hidden, icon->getPictureRow(108,123)); - //addGuiPic(UI_HouseChoiceBackground, herald->getPicture()); + 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_MentatBackground, mentata->getPicture(), HOUSE_ATREIDES); + addGuiPic(UI_MentatBackground, mentata->getPicture(), HOUSE_ORDOS); + addGuiPic(UI_MentatBackground, mentato->getPicture(), HOUSE_FREMEN); + addGuiPic(UI_MentatBackground, mentato->getPicture(), HOUSE_MERCENARY); + addGuiPic(UI_MentatBackground, mentath->getPicture(), HOUSE_HARKONNEN); + + //addAnim(Anim_OrdosPlanet, ordosplanet); + data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); Palettefile tmp (data, len); SDL_Palette * pal = tmp.getPalette(); - addGuiPic(UI_Mentat_BeneGesserit, mentatm->getPicture(pal)); + addGuiPic(UI_MentatBackground, mentatm->getPicture(pal), HOUSE_SARDAUKAR); addSoundChunk(YesSir, getChunkFromFile("VOC:ZREPORT1.VOC")); addSoundChunk(Reporting, getChunkFromFile("VOC:ZREPORT2.VOC")); @@ -215,6 +226,27 @@ addSoundChunk(Intro_WhoEver, getChunkFromFile("INTROVOC:WHOEVER.VOC")); 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"); +/* SDL_RWops* text[3]; + data = ResMan::Instance()->readFile("TEXTA.ENG", &len); + text[0] = SDL_RWFromMem(data, len); + data = ResMan::Instance()->readFile("TEXTO.ENG", &len); + text[1] = SDL_RWFromMem(data, len); + data = ResMan::Instance()->readFile("TEXTH.ENG", &len); + text[2] = SDL_RWFromMem(data, len); + + + for(int i=0;i<3;i++) { + if(text[i] == NULL) { + fprintf(stderr,"DataManager::DataManager: Can not open language file\n"); + exit(EXIT_FAILURE); + } + BriefingStrings[i] = new Stringfile(); + SDL_RWclose(text[i]); + } */ } void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) { @@ -312,15 +344,15 @@ return returnChunk; } -/* -std::string DataCache::getBriefingText(ObjPic_enum mission, ObjPic_enum texttype, int house) { - return BriefingStrings[0]->getString(0,0); + +std::string DataCache::getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house) { + return BriefingStrings[house]->getString(mission,textType); } -std::string DataCache::getBriefingText(int i){ +/*std::string DataCache::getBriefingText(int i){ return BriefingStrings[0]->getString(i); -} -*/ +}*/ + Mix_Chunk* DataCache::concat2Chunks(Sound_enum ID1, Sound_enum ID2) { return concat2Chunks(soundChunk[ID1], soundChunk[ID2]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-28 21:52:19
|
Revision: 186 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=186&view=rev Author: dvalin Date: 2008-04-28 14:52:15 -0700 (Mon, 28 Apr 2008) Log Message: ----------- add getAnimation() Modified Paths: -------------- branches/dunks/include/pakfile/Shpfile.h branches/dunks/src/pakfile/Shpfile.cpp Modified: branches/dunks/include/pakfile/Shpfile.h =================================================================== --- branches/dunks/include/pakfile/Shpfile.h 2008-04-28 21:29:23 UTC (rev 185) +++ branches/dunks/include/pakfile/Shpfile.h 2008-04-28 21:52:15 UTC (rev 186) @@ -19,7 +19,7 @@ Uint32 EndOffset; }; - +class Animation; class Shpfile; typedef boost::shared_ptr<Shpfile> ShpfilePtr; @@ -60,6 +60,17 @@ @return picture in this shp-File containing all specified pictures */ Image * getPictureArray(unsigned int tilesX, unsigned int tilesY, ...); + /// Returns an animation +/*! + This method returns a new animation object with all pictures from startindex to endindex + in it. The returned pointer should be freed with delete if no longer needed. If an error + occured, NULL is returned. + @param startindex index of the first picture + @param endindex index of the last picture + @param SetColorKey if true, black is set as transparency + @return a new animation object or NULL on error +*/ + Animation* getAnimation(unsigned int startindex, unsigned int endindex, bool SetColorKey=true); inline int getNumFiles() {return (int) NumFiles;}; Modified: branches/dunks/src/pakfile/Shpfile.cpp =================================================================== --- branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 21:29:23 UTC (rev 185) +++ branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 21:52:15 UTC (rev 186) @@ -1,6 +1,7 @@ #include "Application.h" #include "pakfile/Shpfile.h" +#include "pakfile/Animation." #include <SDL_endian.h> #include <stdlib.h> #include <string.h> @@ -318,6 +319,35 @@ } +/// Returns an animation +/** + This method returns a new animation object with all pictures from startindex to endindex + in it. The returned pointer should be freed with delete if no longer needed. If an error + occured, NULL is returned. + \param startindex index of the first picture + \param endindex index of the last picture + \param SetColorKey if true, black is set as transparency + \return a new animation object or NULL on error +*/ +Animation* Shpfile::getAnimation(unsigned int startindex, unsigned int endindex, bool SetColorKey) +{ + Animation* tmpAnimation; + Image* tmp; + + if((tmpAnimation = new Animation()) == NULL) { + return NULL; + } + + for(unsigned int i = startindex; i <= endindex; i++) { + if((tmp = getPicture(i)) == NULL) { + delete tmpAnimation; + return NULL; + } + tmpAnimation->addFrame(tmp,SetColorKey); + } + return tmpAnimation; +} + void Shpfile::readIndex() { // First get number of files in shp-file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-28 21:57:10
|
Revision: 188 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=188&view=rev Author: dvalin Date: 2008-04-28 14:57:04 -0700 (Mon, 28 Apr 2008) Log Message: ----------- add the remaining animations 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-28 21:55:02 UTC (rev 187) +++ branches/dunks/include/DataCache.h 2008-04-28 21:57:04 UTC (rev 188) @@ -21,6 +21,7 @@ #define NUM_MAPCHOICEPIECES 28 #define NUM_MAPCHOICEARROWS 9 +class Animation; // ObjPics typedef enum { @@ -385,9 +386,12 @@ public: 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); + void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0); void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp); 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* concat2Chunks(Sound_enum ID1, Sound_enum ID2); std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house); @@ -406,6 +410,7 @@ 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]; Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-28 21:55:02 UTC (rev 187) +++ branches/dunks/src/DataCache.cpp 2008-04-28 21:57:04 UTC (rev 188) @@ -135,28 +135,17 @@ addObjPic(ObjPic_SandDamage, units1->getPictureArray(3,1,5|TILE_NORMAL,6|TILE_NORMAL,7|TILE_NORMAL)); addObjPic(ObjPic_Terrain_Hidden, icon->getPictureRow(108,123)); - /*Anim[Anim_AtreidesEyes] = menshpa->getAnimation(0,4,true,true); - Anim[Anim_AtreidesEyes]->setFrameRate(0.5); - Anim[Anim_AtreidesMouth] = menshpa->getAnimation(5,9,true,true); - Anim[Anim_AtreidesMouth]->setFrameRate(5.0); - Anim[Anim_AtreidesShoulder] = menshpa->getAnimation(10,10,true,true); - Anim[Anim_AtreidesShoulder]->setFrameRate(1.0); - Anim[Anim_AtreidesBook] = menshpa->getAnimation(11,12,true,true); - Anim[Anim_AtreidesBook]->setFrameRate(0.1); - Anim[Anim_HarkonnenEyes] = menshph->getAnimation(0,4,true,true); - Anim[Anim_HarkonnenEyes]->setFrameRate(0.3); - Anim[Anim_HarkonnenMouth] = menshph->getAnimation(5,9,true,true); - Anim[Anim_HarkonnenMouth]->setFrameRate(5.0); - Anim[Anim_HarkonnenShoulder] = menshph->getAnimation(10,10,true,true); - Anim[Anim_HarkonnenShoulder]->setFrameRate(1.0); - Anim[Anim_OrdosEyes] = menshpo->getAnimation(0,4,true,true); - Anim[Anim_OrdosEyes]->setFrameRate(0.5); - Anim[Anim_OrdosMouth] = menshpo->getAnimation(5,9,true,true); - Anim[Anim_OrdosMouth]->setFrameRate(5.0); - Anim[Anim_OrdosShoulder] = menshpo->getAnimation(10,10,true,true); - Anim[Anim_OrdosShoulder]->setFrameRate(1.0); - Anim[Anim_OrdosRing] = menshpo->getAnimation(11,14,true,true); - Anim[Anim_OrdosRing]->setFrameRate(6.0);*/ + addAnimation(Anim_AtreidesEyes, menshpa->getAnimation(0,4,true), 0.5); + addAnimation(Anim_AtreidesMouth, menshpa->getAnimation(5,9,true), 5.0); + addAnimation(Anim_AtreidesShoulder, menshpa->getAnimation(10,10,true), 1.0); + addAnimation(Anim_AtreidesBook, menshpa->getAnimation(11,12,true), 0.1); + addAnimation(Anim_HarkonnenEyes, menshph->getAnimation(0,4,true), 0.3); + addAnimation(Anim_HarkonnenMouth, menshph->getAnimation(5,9,true), 0.5); + addAnimation(Anim_HarkonnenShoulder, menshph->getAnimation(10,10,true), 1.0); + addAnimation(Anim_OrdosEyes, menshpo->getAnimation(0,4,true), 0.5); + addAnimation(Anim_OrdosMouth, menshpo->getAnimation(5,9,true), 5.0); + addAnimation(Anim_OrdosShoulder, menshpo->getAnimation(10,10,true), 1.0); + addAnimation(Anim_OrdosRing, menshpo->getAnimation(11,14,true), 6.0); addAnimation(Anim_AtreidesPlanet, "MENTAT:FARTR.WSA", 12); addAnimation(Anim_HarkonnenPlanet, "MENTAT:FHARK.WSA", 12); addAnimation(Anim_OrdosPlanet, "MENTAT:FORDOS.WSA", 12); @@ -426,19 +415,25 @@ return BriefingStrings[0]->getString(i); }*/ -void DataCache::addAnimation(Animation_enum ID, std::string fileName, uint16_t frameRate) { +void DataCache::addAnimation(Animation_enum ID, std::string fileName, double frameRate) { 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; - Animation* ret = wsafile->getAnimation(0,wsafile->getNumFrames() - 1, palette, false); + Animation* animation = wsafile->getAnimation(0,wsafile->getNumFrames() - 1, palette, false); if(frameRate) - ret->setFrameRate(frameRate); - Anim[ID] = ret; + animation->setFrameRate(frameRate); + Anim[ID] = animation; delete data; } +void DataCache::addAnimation(Animation_enum ID, Animation* animation, double frameRate) { + if(frameRate) + animation->setFrameRate(frameRate); + Anim[ID] = animation; +} + Animation* DataCache::getAnimation(Animation_enum id) { if(id >= NUM_ANIMATION) { fprintf(stderr,"DataManager::getAnimation(): Animation with id %d is not available!\n",id); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-28 22:55:18
|
Revision: 190 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=190&view=rev Author: dvalin Date: 2008-04-28 15:55:16 -0700 (Mon, 28 Apr 2008) Log Message: ----------- store palette in class object Modified Paths: -------------- branches/dunks/include/pakfile/Cpsfile.h branches/dunks/include/pakfile/Shpfile.h branches/dunks/src/pakfile/Cpsfile.cpp branches/dunks/src/pakfile/Shpfile.cpp Modified: branches/dunks/include/pakfile/Cpsfile.h =================================================================== --- branches/dunks/include/pakfile/Cpsfile.h 2008-04-28 22:36:54 UTC (rev 189) +++ branches/dunks/include/pakfile/Cpsfile.h 2008-04-28 22:55:16 UTC (rev 190) @@ -4,7 +4,6 @@ #include "Gfx.h" #include "pakfile/Decode.h" #include "SDL.h" -#include "Application.h" #include <boost/shared_ptr.hpp> @@ -14,16 +13,17 @@ class Cpsfile : public Decode { public: - Cpsfile(unsigned char * bufFiledata, int bufsize); + Cpsfile(unsigned char * bufFiledata, int bufsize, SDL_Palette* palette = NULL); ~Cpsfile(); - Image * getPicture(SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette); + Image * getPicture(); Image * getSubPicture(unsigned int left, unsigned int top, unsigned int width, unsigned int height); private: unsigned char* Filedata; Uint32 CpsFilesize; + SDL_Palette * m_palette; }; #endif // CPSFILE_H_INCLUDED Modified: branches/dunks/include/pakfile/Shpfile.h =================================================================== --- branches/dunks/include/pakfile/Shpfile.h 2008-04-28 22:36:54 UTC (rev 189) +++ branches/dunks/include/pakfile/Shpfile.h 2008-04-28 22:55:16 UTC (rev 190) @@ -21,12 +21,13 @@ class Animation; class Shpfile; +class SDL_Palette; typedef boost::shared_ptr<Shpfile> ShpfilePtr; class Shpfile : public Decode { public: - Shpfile(unsigned char * bufFiledata, int bufsize); + Shpfile(unsigned char * bufFiledata, int bufsize, SDL_Palette * palette = NULL); ~Shpfile(); /*! @@ -81,6 +82,7 @@ unsigned char* Filedata; Uint32 ShpFilesize; Uint16 NumFiles; + SDL_Palette * m_palette; }; Modified: branches/dunks/src/pakfile/Cpsfile.cpp =================================================================== --- branches/dunks/src/pakfile/Cpsfile.cpp 2008-04-28 22:36:54 UTC (rev 189) +++ branches/dunks/src/pakfile/Cpsfile.cpp 2008-04-28 22:55:16 UTC (rev 190) @@ -1,15 +1,20 @@ #include "pakfile/Cpsfile.h" #include <SDL_endian.h> +#include "Application.h" #include <stdlib.h> #include <string.h> #define SIZE_X 320 #define SIZE_Y 240 -Cpsfile::Cpsfile(unsigned char * bufFiledata, int bufsize) : Decode() +Cpsfile::Cpsfile(unsigned char * bufFiledata, int bufsize, SDL_Palette* palette) : Decode() { Filedata = bufFiledata; CpsFilesize = bufsize; + if (palette == NULL) + m_palette = Application::Instance()->Screen()->getSurface()->format->palette; + else + m_palette = palette; } Cpsfile::~Cpsfile() @@ -17,7 +22,7 @@ ; } -Image * Cpsfile::getPicture(SDL_Palette* palette) +Image * Cpsfile::getPicture() { unsigned char * ImageOut; SDL_Surface *pic = NULL; @@ -47,7 +52,7 @@ } - SDL_SetColors(pic, palette->colors, 0, palette->ncolors); + SDL_SetColors(pic, m_palette->colors, 0, m_palette->ncolors); SDL_LockSurface(pic); Modified: branches/dunks/src/pakfile/Shpfile.cpp =================================================================== --- branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 22:36:54 UTC (rev 189) +++ branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 22:55:16 UTC (rev 190) @@ -8,12 +8,16 @@ //extern SDL_Palette* palette; -Shpfile::Shpfile(unsigned char * bufFiledata, int bufsize) : Decode() +Shpfile::Shpfile(unsigned char * bufFiledata, int bufsize, SDL_Palette * palette) : Decode() { Filedata = bufFiledata; ShpFilesize = bufsize; Index = NULL; readIndex(); + if (palette == NULL) + m_palette = Application::Instance()->Screen()->getSurface()->format->palette; + else + m_palette = palette; } Shpfile::~Shpfile() @@ -25,7 +29,6 @@ Image * Shpfile::getPicture(Uint32 IndexOfFile) { - SDL_Palette *palette = Application::Instance()->Screen()->getSurface()->format->palette; SDL_Surface *pic = NULL; unsigned char *DecodeDestination = NULL; unsigned char *ImageOut = NULL; @@ -117,7 +120,7 @@ if((pic = SDL_CreateRGBSurface(SDL_SWSURFACE,sizeX,sizeY,8,0,0,0,0))== NULL) { return NULL; } - SDL_SetColors(pic, palette->colors, 0, palette->ncolors); + SDL_SetColors(pic, m_palette->colors, 0, m_palette->ncolors); SDL_LockSurface(pic); //Now we can copy line by line @@ -138,7 +141,6 @@ } Image * Shpfile::getPictureArray(unsigned int tilesX, unsigned int tilesY, ...) { - SDL_Palette *palette = Application::Instance()->Screen()->getSurface()->format->palette; SDL_Surface *pic = NULL; unsigned char *DecodeDestination = NULL; unsigned char *ImageOut = NULL; @@ -187,7 +189,7 @@ exit(EXIT_FAILURE); } - SDL_SetColors(pic, palette->colors, 0, palette->ncolors); + SDL_SetColors(pic, m_palette->colors, 0, m_palette->ncolors); SDL_LockSurface(pic); for(j = 0; j < tilesY; j++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-28 22:56:29
|
Revision: 191 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=191&view=rev Author: dvalin Date: 2008-04-28 15:56:25 -0700 (Mon, 28 Apr 2008) Log Message: ----------- * add bene gesserit mentat eyes and mouth * pass palette as argument to constructor in stead of get functions 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-28 22:55:16 UTC (rev 190) +++ branches/dunks/include/DataCache.h 2008-04-28 22:56:25 UTC (rev 191) @@ -215,6 +215,9 @@ Anim_OrdosMouth, Anim_OrdosShoulder, Anim_OrdosRing, + Anim_BeneGesseritEyes, + Anim_BeneGesseritMouth, + Anim_BeneGesseritShoulder, Anim_AtreidesPlanet, Anim_HarkonnenPlanet, Anim_OrdosPlanet, Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-28 22:55:16 UTC (rev 190) +++ branches/dunks/src/DataCache.cpp 2008-04-28 22:56:25 UTC (rev 191) @@ -14,6 +14,11 @@ int maplen; uint8_t * mapdata; + + data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); + Palettefile tmp (data, len); + SDL_Palette * pal = tmp.getPalette(); + //LOADING FILES data = ResMan::Instance()->readFile("DUNE:UNITS.SHP", &len); @@ -37,6 +42,8 @@ ShpfilePtr menshph(new Shpfile(data, len)); 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)); data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len); ShpfilePtr choam(new Shpfile(data, len)); data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len); @@ -54,7 +61,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)); + CpsfilePtr mentatm (new Cpsfile(data, len, pal)); data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len); ShpfilePtr mentat (new Shpfile(data, len)); @@ -146,6 +153,9 @@ addAnimation(Anim_OrdosMouth, menshpo->getAnimation(5,9,true), 5.0); addAnimation(Anim_OrdosShoulder, menshpo->getAnimation(10,10,true), 1.0); addAnimation(Anim_OrdosRing, menshpo->getAnimation(11,14,true), 6.0); + addAnimation(Anim_BeneGesseritEyes, menshpm->getAnimation(0,4,true), 0.5); + addAnimation(Anim_BeneGesseritMouth, menshpm->getAnimation(5,9,true), 5.0); + addAnimation(Anim_BeneGesseritShoulder, menshpm->getAnimation(10,10,true), 1.0); addAnimation(Anim_AtreidesPlanet, "MENTAT:FARTR.WSA", 12); addAnimation(Anim_HarkonnenPlanet, "MENTAT:FHARK.WSA", 12); addAnimation(Anim_OrdosPlanet, "MENTAT:FORDOS.WSA", 12); @@ -208,10 +218,7 @@ //addAnimation(Anim_OrdosPlanet, ordosplanet); - data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len); - Palettefile tmp (data, len); - SDL_Palette * pal = tmp.getPalette(); - addGuiPic(UI_MentatBackground, mentatm->getPicture(pal), HOUSE_SARDAUKAR); + addGuiPic(UI_MentatBackground, mentatm->getPicture(), HOUSE_SARDAUKAR); addSoundChunk(YesSir, getChunkFromFile("VOC:ZREPORT1.VOC")); addSoundChunk(Reporting, getChunkFromFile("VOC:ZREPORT2.VOC")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-28 23:06:17
|
Revision: 192 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=192&view=rev Author: dvalin Date: 2008-04-28 16:06:09 -0700 (Mon, 28 Apr 2008) Log Message: ----------- add animated mentat graphics Modified Paths: -------------- branches/dunks/include/MentatMenu.h branches/dunks/src/MentatMenu.cpp Modified: branches/dunks/include/MentatMenu.h =================================================================== --- branches/dunks/include/MentatMenu.h 2008-04-28 22:56:25 UTC (rev 191) +++ branches/dunks/include/MentatMenu.h 2008-04-28 23:06:09 UTC (rev 192) @@ -3,40 +3,26 @@ #include "MenuBase.h" #include "houses.h" -#include "gui2/Button.h" -#include "gui2/VBox.h" - -#include "SDL.h" - +class Label; +class AnimationLabel; class MentatMenuState : public MenuBaseState { public: MentatMenuState(HOUSETYPE newHouse); ~MentatMenuState(); -/* void DrawSpecificStuff(); - - void setText(std::string text) { - TextLabel.SetText(text.c_str()); - TextLabel.SetVisible(true); - TextLabel.Resize(620,120); - }*/ + void setText(std::string text); int Execute(float dt); virtual const char* GetName() { return "MentatMenuState"; } protected: HOUSETYPE house; ImagePtr m_surf; - VBox* m_vbox; -// void initMenuState(HOUSETYPE newHouse); - -/* StaticContainer WindowWidget; - AnimationLabel eyesAnim; - AnimationLabel mouthAnim; - AnimationLabel specialAnim; - AnimationLabel shoulderAnim; - Label TextLabel; -*/ + Label* m_textLabel; + AnimationLabel* m_eyesAnim; + AnimationLabel* m_mouthAnim; + AnimationLabel* m_specialAnim; + AnimationLabel* m_shoulderAnim; }; #endif // MENTATMENU_H_INCLUDED Modified: branches/dunks/src/MentatMenu.cpp =================================================================== --- branches/dunks/src/MentatMenu.cpp 2008-04-28 22:56:25 UTC (rev 191) +++ branches/dunks/src/MentatMenu.cpp 2008-04-28 23:06:09 UTC (rev 192) @@ -5,6 +5,7 @@ #include "DataCache.h" #include "pakfile/Cpsfile.h" #include "boost/bind.hpp" +#include "gui2/Label.h" MentatMenuState::MentatMenuState(HOUSETYPE newHouse) { @@ -13,101 +14,75 @@ m_surf.reset(mentat); m_surf = m_surf->getResized(2); - m_vbox = new VBox(); -/* m_butYes = new GraphicButton(DataCache::Instance()->getGuiPic(UI_MentatYes)->getResized(2), DataCache::Instance()->getGuiPic(UI_MentatYes_Pressed)->getResized(2)); - m_vbox->addChild(m_butYes); - - m_vbox->fit(2); - m_vbox->setPosition(UPoint(336,366)); - m_vbox->reshape(); - - m_container->addChild(m_vbox); - - m_vbox = new VBox(); - m_butNo = new GraphicButton(DataCache::Instance()->getGuiPic(UI_MentatNo)->getResized(2), DataCache::Instance()->getGuiPic(UI_MentatNo_Pressed)->getResized(2)); - m_vbox->addChild(m_butNo); - - m_vbox->fit(2); - m_vbox->setPosition(UPoint(480,366)); - m_vbox->reshape(); - - m_container->addChild(m_vbox);*/ - -/* - // set up window - SDL_Surface *surf; - surf = pDataManager->getUIGraphic(UI_MentatBackground,house); - - SetBackground(surf,false); - - int xpos = std::max(0,(screen->w - surf->w)/2); - int ypos = std::max(0,(screen->h - surf->h)/2); - - SetCurrentPosition(xpos,ypos,surf->w,surf->h); - - SetWindowWidget(&WindowWidget); - switch(house) { case HOUSE_ATREIDES: case HOUSE_FREMEN: - anim = pDataManager->getAnimation(Anim_AtreidesEyes); - eyesAnim.SetAnimation(anim); - WindowWidget.AddWidget(&eyesAnim,Point(80,160),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesEyes)); + m_eyesAnim->setPosition(UPoint(80, 191)); + m_container->addChild(m_eyesAnim); - anim = pDataManager->getAnimation(Anim_AtreidesMouth); - mouthAnim.SetAnimation(anim); - WindowWidget.AddWidget(&mouthAnim,Point(80,192),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesMouth)); + m_mouthAnim->setPosition(UPoint(80, 223)); + m_container->addChild(m_mouthAnim); - anim = pDataManager->getAnimation(Anim_AtreidesBook); - specialAnim.SetAnimation(anim); - WindowWidget.AddWidget(&specialAnim,Point(145,305),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_specialAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesBook)); + m_specialAnim->setPosition(UPoint(145, 336)); + m_container->addChild(m_specialAnim); - anim = pDataManager->getAnimation(Anim_AtreidesShoulder); - shoulderAnim.SetAnimation(anim); - // don't add shoulderAnim, draw it in DrawSpecificStuff break; case HOUSE_ORDOS: case HOUSE_MERCENARY: - anim = pDataManager->getAnimation(Anim_OrdosEyes); - eyesAnim.SetAnimation(anim); - WindowWidget.AddWidget(&eyesAnim,Point(32,160),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosEyes)); + m_eyesAnim->setPosition(UPoint(32, 191)); + m_container->addChild(m_eyesAnim); - anim = pDataManager->getAnimation(Anim_OrdosMouth); - mouthAnim.SetAnimation(anim); - WindowWidget.AddWidget(&mouthAnim,Point(32,192),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosMouth)); + m_mouthAnim->setPosition(UPoint(32, 223)); + m_container->addChild(m_mouthAnim); - anim = pDataManager->getAnimation(Anim_OrdosRing); - specialAnim.SetAnimation(anim); - WindowWidget.AddWidget(&specialAnim,Point(178,289),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_specialAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosRing)); + m_specialAnim->setPosition(UPoint(178, 320)); + m_container->addChild(m_specialAnim); - anim = pDataManager->getAnimation(Anim_OrdosShoulder); - shoulderAnim.SetAnimation(anim); - // don't add shoulderAnim, draw it in DrawSpecificStuff break; case HOUSE_HARKONNEN: + m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenEyes)); + m_eyesAnim->setPosition(UPoint(64, 207)); + m_container->addChild(m_eyesAnim); + + m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenMouth)); + m_mouthAnim->setPosition(UPoint(64, 239)); + m_container->addChild(m_mouthAnim); + + break; case HOUSE_SARDAUKAR: default: - anim = pDataManager->getAnimation(Anim_HarkonnenEyes); - eyesAnim.SetAnimation(anim); - WindowWidget.AddWidget(&eyesAnim,Point(64,176),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_BeneGesseritEyes)); + m_eyesAnim->setPosition(UPoint(128, 190)); + m_container->addChild(m_eyesAnim); - anim = pDataManager->getAnimation(Anim_HarkonnenMouth); - mouthAnim.SetAnimation(anim); - WindowWidget.AddWidget(&mouthAnim,Point(64,208),Point(anim->getFrame()->w,anim->getFrame()->h)); + m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_BeneGesseritMouth)); + m_mouthAnim->setPosition(UPoint(112, 223)); + m_container->addChild(m_mouthAnim); - anim = pDataManager->getAnimation(Anim_HarkonnenShoulder); - shoulderAnim.SetAnimation(anim); - // don't add shoulderAnim, draw it in DrawSpecificStuff - break; + break; + } - TextLabel.SetTextColor(255); +/* TextLabel.SetTextColor(255); TextLabel.SetVisible(false);*/ } MentatMenuState::~MentatMenuState() { } +/*void MentatMenuState::setText(std::string text) +{ + m_textLabel.SetText(text.c_str()); + TextLabel.SetVisible(true); + TextLabel.Resize(620,120); +}*/ + int MentatMenuState::Execute(float dt) { m_surf.get()->blitToScreen(SPoint(Settings::Instance()->GetWidth() / 2 - m_surf->getSurface()->w/2, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-29 06:08:36
|
Revision: 196 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=196&view=rev Author: dvalin Date: 2008-04-28 23:08:34 -0700 (Mon, 28 Apr 2008) Log Message: ----------- * palettes are always rather small, so use unsigned shorts (uint16_t) rather than int * s/unsigned char/uint8_t) Modified Paths: -------------- branches/dunks/include/pakfile/Palette.h branches/dunks/src/pakfile/Palette.cpp Modified: branches/dunks/include/pakfile/Palette.h =================================================================== --- branches/dunks/include/pakfile/Palette.h 2008-04-29 05:45:14 UTC (rev 195) +++ branches/dunks/include/pakfile/Palette.h 2008-04-29 06:08:34 UTC (rev 196) @@ -6,7 +6,7 @@ class Palettefile { public: - Palettefile(unsigned char* buf, int bufsize); + Palettefile(uint8_t * buf, uint16_t bufsize); ~Palettefile(); SDL_Palette* getPalette() { return m_palette; } Modified: branches/dunks/src/pakfile/Palette.cpp =================================================================== --- branches/dunks/src/pakfile/Palette.cpp 2008-04-29 05:45:14 UTC (rev 195) +++ branches/dunks/src/pakfile/Palette.cpp 2008-04-29 06:08:34 UTC (rev 196) @@ -1,6 +1,6 @@ #include "pakfile/Palette.h" -Palettefile::Palettefile(unsigned char* buf, int bufsize) +Palettefile::Palettefile(unsigned char* buf, uint16_t bufsize) { printf("loading palette...\n"); @@ -9,9 +9,9 @@ m_palette->colors = new SDL_Color[m_palette->ncolors]; SDL_Color* c = m_palette->colors; - unsigned char* dunepal = buf; + uint8_t* dunepal = buf; - for (int i=0; i!=m_palette->ncolors; i++, c++, dunepal+=3) + for (uint16_t i=0; i!=m_palette->ncolors; i++, c++, dunepal+=3) { c->r = (dunepal[0] << 2) + 3; c->g = (dunepal[1] << 2) + 3; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-29 07:22:33
|
Revision: 198 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=198&view=rev Author: dvalin Date: 2008-04-29 00:22:02 -0700 (Tue, 29 Apr 2008) Log Message: ----------- Bene Gesserit mentat doesn't need to have shoulder graphic redrawn, so drop it 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 06:56:15 UTC (rev 197) +++ branches/dunks/include/DataCache.h 2008-04-29 07:22:02 UTC (rev 198) @@ -217,7 +217,6 @@ Anim_OrdosRing, Anim_BeneGesseritEyes, Anim_BeneGesseritMouth, - Anim_BeneGesseritShoulder, Anim_AtreidesPlanet, Anim_HarkonnenPlanet, Anim_OrdosPlanet, @@ -295,7 +294,7 @@ HouseHarkonnen, PlaceStructure, ButtonClick, -// InvalidAction, + // InvalidAction, CreditsTick, RadarNoise, Sound_ExplosionGas, @@ -314,7 +313,7 @@ Sound_Scream4, Sound_Scream5, Sound_MachineGun, -// Sound_Sonic, + // Sound_Sonic, Sound_RocketSmall, Intro_3Houses, Intro_AndNow, @@ -344,7 +343,7 @@ Intro_RulesOfEngagement, Intro_Territories, Intro_AndThe, -// Intro_Filler, + // Intro_Filler, Intro_Flesh, Intro_Glass_6, Intro_Glass, @@ -380,13 +379,13 @@ class DataCache : public Singleton<DataCache> { - friend class Singleton<DataCache>; - - protected: - DataCache(); - ~DataCache(); + friend class Singleton<DataCache>; - public: + protected: + DataCache(); + ~DataCache(); + + public: 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-29 06:56:15 UTC (rev 197) +++ branches/dunks/src/DataCache.cpp 2008-04-29 07:22:02 UTC (rev 198) @@ -151,7 +151,6 @@ addAnimation(Anim_OrdosRing, menshpo->getAnimation(11,14,true), 6.0); addAnimation(Anim_BeneGesseritEyes, menshpm->getAnimation(0,4,true), 0.5); addAnimation(Anim_BeneGesseritMouth, menshpm->getAnimation(5,9,true), 5.0); - addAnimation(Anim_BeneGesseritShoulder, menshpm->getAnimation(10,10,true), 1.0); addAnimation(Anim_AtreidesPlanet, "MENTAT:FARTR.WSA", 12); addAnimation(Anim_HarkonnenPlanet, "MENTAT:FHARK.WSA", 12); addAnimation(Anim_OrdosPlanet, "MENTAT:FORDOS.WSA", 12); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-29 07:23:21
|
Revision: 199 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=199&view=rev Author: dvalin Date: 2008-04-29 00:22:57 -0700 (Tue, 29 Apr 2008) Log Message: ----------- be sure to redraw mentat shoulder on top of graphics Modified Paths: -------------- branches/dunks/include/MentatMenu.h branches/dunks/src/HouseChoiceInfoMenu.cpp branches/dunks/src/MentatMenu.cpp Modified: branches/dunks/include/MentatMenu.h =================================================================== --- branches/dunks/include/MentatMenu.h 2008-04-29 07:22:02 UTC (rev 198) +++ branches/dunks/include/MentatMenu.h 2008-04-29 07:22:57 UTC (rev 199) @@ -23,6 +23,7 @@ AnimationLabel* m_mouthAnim; AnimationLabel* m_specialAnim; AnimationLabel* m_shoulderAnim; + void drawSpecificStuff(); }; #endif // MENTATMENU_H_INCLUDED Modified: branches/dunks/src/HouseChoiceInfoMenu.cpp =================================================================== --- branches/dunks/src/HouseChoiceInfoMenu.cpp 2008-04-29 07:22:02 UTC (rev 198) +++ branches/dunks/src/HouseChoiceInfoMenu.cpp 2008-04-29 07:22:57 UTC (rev 199) @@ -38,6 +38,7 @@ m_textLabel = new Label(desc.substr(linebreak,desc.length()-linebreak), 158, 0); //DataCache::Instance()->getBriefingText(0, MISSION_DESCRIPTION, newHouse), 0); m_textLabel->setPosition(UPoint(0,35)); m_container->addChild(m_textLabel); + drawSpecificStuff(); } Modified: branches/dunks/src/MentatMenu.cpp =================================================================== --- branches/dunks/src/MentatMenu.cpp 2008-04-29 07:22:02 UTC (rev 198) +++ branches/dunks/src/MentatMenu.cpp 2008-04-29 07:22:57 UTC (rev 199) @@ -29,6 +29,10 @@ m_specialAnim->setPosition(UPoint(145, 336)); m_container->addChild(m_specialAnim); + m_shoulderAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesShoulder)); + m_shoulderAnim->setPosition(UPoint(256,286)); + + break; case HOUSE_ORDOS: case HOUSE_MERCENARY: @@ -44,6 +48,10 @@ m_specialAnim->setPosition(UPoint(178, 320)); m_container->addChild(m_specialAnim); + m_shoulderAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosShoulder)); + m_shoulderAnim->setPosition(UPoint(256,286)); + + break; case HOUSE_HARKONNEN: m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenEyes)); @@ -54,6 +62,9 @@ m_mouthAnim->setPosition(UPoint(64, 239)); m_container->addChild(m_mouthAnim); + m_shoulderAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenShoulder)); + m_shoulderAnim->setPosition(UPoint(256,238)); + break; case HOUSE_SARDAUKAR: default: @@ -69,20 +80,11 @@ } -/* TextLabel.SetTextColor(255); - TextLabel.SetVisible(false);*/ } MentatMenuState::~MentatMenuState() { } -/*void MentatMenuState::setText(std::string text) -{ - m_textLabel.SetText(text.c_str()); - TextLabel.SetVisible(true); - TextLabel.Resize(620,120); -}*/ - int MentatMenuState::Execute(float dt) { m_surf.get()->blitToScreen(SPoint(Settings::Instance()->GetWidth() / 2 - m_surf->getSurface()->w/2, @@ -91,24 +93,8 @@ return 0; } -/*void MentatMenu::DrawSpecificStuff() { - Point shoulderPos; - switch(house) { - case HOUSE_ATREIDES: - case HOUSE_FREMEN: { - shoulderPos = Point(256,257) + GetPosition(); - } break; - case HOUSE_ORDOS: - case HOUSE_MERCENARY: { - shoulderPos = Point(256,257) + GetPosition(); - } break; - case HOUSE_HARKONNEN: - case HOUSE_SARDAUKAR: - default: { - shoulderPos = Point(256,209) + GetPosition(); - } break; - } - - shoulderAnim.Draw(screen,shoulderPos); - TextLabel.Draw(screen,Point(10,5) + GetPosition()); -}*/ +// Should needs to be drawn later, otherwise graphics will be drawn on top of it +void MentatMenuState::drawSpecificStuff() { + if(house != HOUSE_SARDAUKAR) + m_container->addChild(m_shoulderAnim); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-04-29 16:34:34
|
Revision: 200 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=200&view=rev Author: dvalin Date: 2008-04-29 09:34:21 -0700 (Tue, 29 Apr 2008) Log Message: ----------- move all source for sound into it's own subdir since it will be a lot of files Modified Paths: -------------- branches/dunks/src/DataCache.cpp branches/dunks/src/SoundPlayerClass.cpp branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/samplerate.c branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_linear.c branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_sinc.c branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_zoh.c Added Paths: ----------- branches/dunks/include/pakfile/sound/ branches/dunks/include/pakfile/sound/Vocfile.h branches/dunks/src/pakfile/sound/ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/ Copied: branches/dunks/include/pakfile/sound/Vocfile.h (from rev 166, branches/dunks/include/pakfile/Vocfile.h) =================================================================== --- branches/dunks/include/pakfile/sound/Vocfile.h (rev 0) +++ branches/dunks/include/pakfile/sound/Vocfile.h 2008-04-29 16:34:21 UTC (rev 200) @@ -0,0 +1,19 @@ +#ifndef VOCFILE_H_INCLUDED +#define VOCFILE_H_INCLUDED + +#include <SDL.h> +#include <SDL_rwops.h> +#include <SDL_mixer.h> + +/** + Try to load a VOC from the RWop. Returns a pointer to Mix_Chunk. + It is the callers responsibility to deallocate that data again later on + with Mix_FreeChunk()! + \param rwop The source SDL_RWops as a pointer. The sample is loaded from this VOC-File. + \param freesrc A non-zero value mean it will automatically close/free the src for you. + \return a pointer to the sample as a Mix_Chunk. NULL is returned on errors. + */ +extern Mix_Chunk* LoadVOC_RW(SDL_RWops* rwop, int freesrc); + +#endif // VOCFILE_H_INCLUDED + Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-04-29 07:22:57 UTC (rev 199) +++ branches/dunks/src/DataCache.cpp 2008-04-29 16:34:21 UTC (rev 200) @@ -1,5 +1,5 @@ #include "DataCache.h" -#include "pakfile/Vocfile.h" +#include "pakfile/sound/Vocfile.h" #include <string> #include <iostream> DataCache::DataCache() { Modified: branches/dunks/src/SoundPlayerClass.cpp =================================================================== --- branches/dunks/src/SoundPlayerClass.cpp 2008-04-29 07:22:57 UTC (rev 199) +++ branches/dunks/src/SoundPlayerClass.cpp 2008-04-29 16:34:21 UTC (rev 200) @@ -1,7 +1,7 @@ #include <stdlib.h> #include <math.h> -#include "pakfile/Vocfile.h" +#include "pakfile/sound/Vocfile.h" #include "SoundPlayerClass.h" #include "SDL_mixer.h" #include "DuneConstants.h" Copied: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate (from rev 156, branches/dunks/src/pakfile/IntegratedLibSampleRate) Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/samplerate.c =================================================================== --- branches/dunks/src/pakfile/IntegratedLibSampleRate/samplerate.c 2008-04-24 22:22:22 UTC (rev 156) +++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/samplerate.c 2008-04-29 16:34:21 UTC (rev 200) @@ -20,11 +20,11 @@ #include <stdlib.h> #include <string.h> -#include "pakfile/IntegratedLibSampleRate/config.h" +#include "pakfile/sound/IntegratedLibSampleRate/config.h" -#include "pakfile/IntegratedLibSampleRate/samplerate.h" -#include "pakfile/IntegratedLibSampleRate/common.h" -#include "pakfile/IntegratedLibSampleRate/float_cast.h" +#include "pakfile/sound/IntegratedLibSampleRate/samplerate.h" +#include "pakfile/sound/IntegratedLibSampleRate/common.h" +#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h" static int psrc_set_converter (SRC_PRIVATE *psrc, int converter_type) ; Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_linear.c =================================================================== --- branches/dunks/src/pakfile/IntegratedLibSampleRate/src_linear.c 2008-04-24 22:22:22 UTC (rev 156) +++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_linear.c 2008-04-29 16:34:21 UTC (rev 200) @@ -20,9 +20,9 @@ #include <stdlib.h> #include <string.h> -#include "pakfile/IntegratedLibSampleRate/config.h" -#include "pakfile/IntegratedLibSampleRate/float_cast.h" -#include "pakfile/IntegratedLibSampleRate/common.h" +#include "pakfile/sound/IntegratedLibSampleRate/config.h" +#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h" +#include "pakfile/sound/IntegratedLibSampleRate/common.h" static int linear_process (SRC_PRIVATE *psrc, SRC_DATA *data) ; static void linear_reset (SRC_PRIVATE *psrc) ; Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_sinc.c =================================================================== --- branches/dunks/src/pakfile/IntegratedLibSampleRate/src_sinc.c 2008-04-24 22:22:22 UTC (rev 156) +++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_sinc.c 2008-04-29 16:34:21 UTC (rev 200) @@ -20,9 +20,9 @@ #include <stdlib.h> #include <string.h> -#include "pakfile/IntegratedLibSampleRate/config.h" -#include "pakfile/IntegratedLibSampleRate/float_cast.h" -#include "pakfile/IntegratedLibSampleRate/common.h" +#include "pakfile/sound/IntegratedLibSampleRate/config.h" +#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h" +#include "pakfile/sound/IntegratedLibSampleRate/common.h" #define SINC_MAGIC_MARKER MAKE_MAGIC (' ', 's', 'i', 'n', 'c', ' ') @@ -95,17 +95,17 @@ static coeff_t const high_qual_coeffs [] = { -#include "pakfile/IntegratedLibSampleRate/high_qual_coeffs.h" +#include "pakfile/sound/IntegratedLibSampleRate/high_qual_coeffs.h" } ; /* high_qual_coeffs */ static coeff_t const mid_qual_coeffs [] = { -#include "pakfile/IntegratedLibSampleRate/mid_qual_coeffs.h" +#include "pakfile/sound/IntegratedLibSampleRate/mid_qual_coeffs.h" } ; /* mid_qual_coeffs */ static coeff_t const fastest_coeffs [] = { -#include "pakfile/IntegratedLibSampleRate/fastest_coeffs.h" +#include "pakfile/sound/IntegratedLibSampleRate/fastest_coeffs.h" } ; /* fastest_coeffs */ /*---------------------------------------------------------------------------------------- Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_zoh.c =================================================================== --- branches/dunks/src/pakfile/IntegratedLibSampleRate/src_zoh.c 2008-04-24 22:22:22 UTC (rev 156) +++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_zoh.c 2008-04-29 16:34:21 UTC (rev 200) @@ -20,9 +20,9 @@ #include <stdlib.h> #include <string.h> -#include "pakfile/IntegratedLibSampleRate/config.h" -#include "pakfile/IntegratedLibSampleRate/float_cast.h" -#include "pakfile/IntegratedLibSampleRate/common.h" +#include "pakfile/sound/IntegratedLibSampleRate/config.h" +#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h" +#include "pakfile/sound/IntegratedLibSampleRate/common.h" static int zoh_process (SRC_PRIVATE *psrc, SRC_DATA *data) ; static void zoh_reset (SRC_PRIVATE *psrc) ; 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. |
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-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 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 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 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: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 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 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-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 11:17:38
|
Revision: 228 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=228&view=rev Author: dvalin Date: 2008-05-01 04:17:01 -0700 (Thu, 01 May 2008) Log Message: ----------- add text strings at correct places 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 08:42:12 UTC (rev 227) +++ branches/dunks/include/IntroState.h 2008-05-01 11:17:01 UTC (rev 228) @@ -14,6 +14,7 @@ #include <string> typedef std::pair <uint16_t, std::string> introText; +typedef std::pair <uint16_t, Mix_Chunk*> introSound; class StringFile; class Button; @@ -39,11 +40,13 @@ HOLDING }; - 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(std::string filename, Transition in, Transition out, + bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL); ~Frame(); bool Execute(float ft); void Load(Frame* lastframe); + addTextString(introText); private: std::string m_filename; @@ -110,6 +113,7 @@ Frame* m_currentFrame; std::vector<introText> m_introStrings; + std::vector<introSound> m_introSounds; // Font* font; }; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 08:42:12 UTC (rev 227) +++ branches/dunks/src/IntroState.cpp 2008-05-01 11:17:01 UTC (rev 228) @@ -13,9 +13,8 @@ // ------------------------------------------------------------------ // IntroState::Frame -IntroState::Frame::Frame(std::string filename, - Transition in, Transition out, - std::vector<introText> introStrings, +IntroState::Frame::Frame(std::string filename, Transition in, Transition out, + std::vector<introText> introStrings, //std::vector<introSound> sounds, bool continuation, uint16_t endWait, int8_t song, Palette_enum pal) { m_filename = filename; @@ -28,9 +27,9 @@ 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_subText = NULL; m_palette = DataCache::Instance()->getPalette(pal); m_song = song; @@ -44,6 +43,8 @@ { // SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; + m_startTick = SDL_GetTicks(); + printf("intro loading %s\n", m_filename.c_str()); int len; @@ -66,11 +67,6 @@ 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) @@ -103,6 +99,15 @@ void IntroState::Frame::doPlaying(float dt) { + if(m_introStrings.size() > 0){ + if(m_currentFrame == m_introStrings[0].first){ + if(m_subText != NULL) m_container->deleteChild(m_subText); + m_subText = new Label(m_introStrings[0].second, 49, 0); + m_introStrings.erase(m_introStrings.begin()); + m_container->setPosition(UPoint(50, 420)); + m_container->addChild(m_subText); + } + } m_frametime += dt; @@ -193,30 +198,35 @@ 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) + while(wait && (SDL_GetTicks() - startTicks) < m_endWait){ + std::cout << "curticks:\t" << SDL_GetTicks() - startTicks << std::endl; + std::cout << "endwait:\t" << m_endWait << std::endl; + 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; + break; + case SDLK_ESCAPE: + if(m_subText != NULL) m_container->deleteChild(m_subText); + Application::Instance()->RootState()->PopState(); + return; default: break; - } + }}} + } m_state = TRANSITION_OUT; } IntroState::Frame::~Frame() { - m_container->deleteChild(m_subText); + if(m_subText != NULL) m_container->deleteChild(m_subText); } // ------------------------------------------------------------------ // IntroState @@ -224,119 +234,125 @@ IntroState::IntroState() { m_currentFrame = NULL; - m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. + +// 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, + Frame::FADE_OUT, m_introStrings, false, 5000, 0, WESTWOOD_PAL) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2))); + m_introStrings.push_back(introText(48, "The Building of a Dynasty")); enque( new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, false, 2000, 1) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3))); + 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, 2000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4))); + m_introStrings.push_back(introText(33, DataCache::Instance()->getIntroString(5))); enque( new Frame("INTRO:INTRO3.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, false, 2000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(5))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6))); + m_introStrings.push_back(introText(50, DataCache::Instance()->getIntroString(7))); enque( new Frame("INTRO:INTRO9.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, false, 3000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8))); enque( new Frame("INTRO:INTRO10.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, false, 2000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(7))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9))); + m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(10))); + m_introStrings.push_back(introText(41, DataCache::Instance()->getIntroString(11))); enque( new Frame("INTRO:INTRO11.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, false, 2000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12))); + m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(13))); enque( new Frame("INTRO:INTRO4.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, false, 3000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14))); 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))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15))); 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))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(16))); enque( new Frame("INTRO:INTRO7B.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, true, 2000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(17))); enque( new Frame("INTRO:INTRO8A.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, m_introStrings, false) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(13))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(18))); 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))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(19))); enque( new Frame("INTRO:INTRO8C.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, m_introStrings, true, 2000) ); m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15))); + m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(20))); enque( new Frame("INTRO:INTRO5.WSA", Frame::NO_TRANSITION, @@ -364,6 +380,7 @@ void IntroState::SkipIntro() { + delete m_currentFrame; mp_parent->PopState(); } @@ -393,28 +410,6 @@ 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(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 12:12:09
|
Revision: 229 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=229&view=rev Author: dvalin Date: 2008-05-01 05:12:01 -0700 (Thu, 01 May 2008) Log Message: ----------- pass strings etc. to Frame object with functions in stead of passing them as arguments to constructor 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 11:17:01 UTC (rev 228) +++ branches/dunks/include/IntroState.h 2008-05-01 12:12:01 UTC (rev 229) @@ -41,12 +41,14 @@ }; Frame(std::string filename, Transition in, Transition out, - bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL); + bool cont, uint16_t endWait = 0); ~Frame(); bool Execute(float ft); void Load(Frame* lastframe); - addTextString(introText); + void addText(uint16_t playAt, std::string introText); + void setPalette(Palette_enum palette); + void setSong(uint8_t song); private: std::string m_filename; @@ -112,6 +114,7 @@ TranspButton *m_butIntro; Frame* m_currentFrame; + Frame* frame; std::vector<introText> m_introStrings; std::vector<introSound> m_introSounds; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 11:17:01 UTC (rev 228) +++ branches/dunks/src/IntroState.cpp 2008-05-01 12:12:01 UTC (rev 229) @@ -14,8 +14,7 @@ // IntroState::Frame IntroState::Frame::Frame(std::string filename, Transition in, Transition out, - std::vector<introText> introStrings, //std::vector<introSound> sounds, - bool continuation, uint16_t endWait, int8_t song, Palette_enum pal) + bool continuation, uint16_t endWait) { m_filename = filename; m_transition_in = in; @@ -25,26 +24,38 @@ m_state = TRANSITION_IN; m_hold = 0.0f; m_transitionPalette = NULL; - m_introStrings = introStrings; m_container = new Container(); m_container->setSize(UPoint(Settings::Instance()->GetWidth(), Settings::Instance()->GetHeight())); m_subText = NULL; - m_palette = DataCache::Instance()->getPalette(pal); + m_palette = DataCache::Instance()->getPalette(INTRO_PAL); - m_song = song; + m_song = -1; m_endWait = endWait; Application::Instance()->RootWidget()->addChild(m_container); } +void IntroState::Frame::addText(uint16_t playAt, std::string text) +{ + m_introStrings.push_back(introText(playAt, text)); +} + +void IntroState::Frame::setPalette(Palette_enum palette) +{ + m_palette = DataCache::Instance()->getPalette(palette); +} + +void IntroState::Frame::setSong(uint8_t song) +{ + m_song = song; +} + void IntroState::Frame::Load(Frame* lastframe) { // SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; - m_startTick = SDL_GetTicks(); - printf("intro loading %s\n", m_filename.c_str()); int len; @@ -202,8 +213,6 @@ SDL_Event event; bool wait = true; while(wait && (SDL_GetTicks() - startTicks) < m_endWait){ - std::cout << "curticks:\t" << SDL_GetTicks() - startTicks << std::endl; - std::cout << "endwait:\t" << m_endWait << std::endl; while(SDL_PollEvent(&event)){ switch (event.type){ case (SDL_KEYDOWN): @@ -237,134 +246,124 @@ // m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. // DataCache::Instance()->getCreditsString(20))); - enque( new Frame("INTRO:WESTWOOD.WSA", + frame = new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 5000, 0, WESTWOOD_PAL) ); - m_introStrings.clear(); + false, 5000); + frame->setSong(0); + frame->setPalette(WESTWOOD_PAL); + enque(frame); - m_introStrings.push_back(introText(48, "The Building of a Dynasty")); - enque( new Frame("INTRO:INTRO1.WSA", - Frame::NO_TRANSITION, + frame = new Frame("INTRO:INTRO1.WSA", + Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 2000, 1) ); - m_introStrings.clear(); - - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3))); - enque( new Frame("INTRO:INTRO2.WSA", + false, 2000); + frame->setSong(1); + frame->addText(48, "The Building of a Dynasty"); + enque(frame); + + frame = new Frame("INTRO:INTRO2.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 2000) ); - m_introStrings.clear(); + false, 2000); + frame->addText(0, DataCache::Instance()->getIntroString(3)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4))); - m_introStrings.push_back(introText(33, DataCache::Instance()->getIntroString(5))); - enque( new Frame("INTRO:INTRO3.WSA", + frame = new Frame("INTRO:INTRO3.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 2000) ); - m_introStrings.clear(); + false, 2000); + frame->addText(0, DataCache::Instance()->getIntroString(4)); + frame->addText(33, DataCache::Instance()->getIntroString(5)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6))); - m_introStrings.push_back(introText(50, DataCache::Instance()->getIntroString(7))); - enque( new Frame("INTRO:INTRO9.WSA", + frame = new Frame("INTRO:INTRO9.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 3000) ); - m_introStrings.clear(); + false, 3000); + frame->addText(0, DataCache::Instance()->getIntroString(6)); + frame->addText(50, DataCache::Instance()->getIntroString(7)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8))); - enque( new Frame("INTRO:INTRO10.WSA", + frame = new Frame("INTRO:INTRO10.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 2000) ); - m_introStrings.clear(); + false, 2000); + frame->addText(0, DataCache::Instance()->getIntroString(8)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9))); - m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(10))); - m_introStrings.push_back(introText(41, DataCache::Instance()->getIntroString(11))); - enque( new Frame("INTRO:INTRO11.WSA", + frame = new Frame("INTRO:INTRO11.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 2000) ); - m_introStrings.clear(); + false, 2000); + frame->addText(0, DataCache::Instance()->getIntroString(9)); + frame->addText(25, DataCache::Instance()->getIntroString(10)); + frame->addText(41, DataCache::Instance()->getIntroString(11)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12))); - m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(13))); - enque( new Frame("INTRO:INTRO4.WSA", + frame = new Frame("INTRO:INTRO4.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false, 3000) ); - m_introStrings.clear(); + false, 3000); + frame->addText(0, DataCache::Instance()->getIntroString(12)); + frame->addText(25, DataCache::Instance()->getIntroString(13)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14))); - enque( new Frame("INTRO:INTRO6.WSA", + frame = new Frame("INTRO:INTRO6.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false) ); - m_introStrings.clear(); + false); + frame->addText(0, DataCache::Instance()->getIntroString(14)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15))); - enque( new Frame("INTRO:INTRO7A.WSA", + frame = new Frame("INTRO:INTRO7A.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, - m_introStrings, - false) ); - m_introStrings.clear(); + false); + frame->addText(0, DataCache::Instance()->getIntroString(15)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(16))); - enque( new Frame("INTRO:INTRO7B.WSA", + frame = new Frame("INTRO:INTRO7B.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - true, 2000) ); - m_introStrings.clear(); + true, 2000); + frame->addText(0, DataCache::Instance()->getIntroString(16)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(17))); - enque( new Frame("INTRO:INTRO8A.WSA", + frame = new Frame("INTRO:INTRO8A.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, - m_introStrings, - false) ); - m_introStrings.clear(); + false); + frame->addText(0, DataCache::Instance()->getIntroString(17)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(18))); - enque( new Frame("INTRO:INTRO8B.WSA", + frame = new Frame("INTRO:INTRO8B.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, - m_introStrings, - true) ); - m_introStrings.clear(); + true); + frame->addText(0, DataCache::Instance()->getIntroString(18)); + enque(frame); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(19))); - enque( new Frame("INTRO:INTRO8C.WSA", + frame = new Frame("INTRO:INTRO8C.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - true, 2000) ); - m_introStrings.clear(); - m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(20))); + true, 2000); + frame->addText(0, DataCache::Instance()->getIntroString(19)); + enque(frame); - enque( new Frame("INTRO:INTRO5.WSA", + frame = new Frame("INTRO:INTRO5.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false) ); + false); + frame->addText(0, DataCache::Instance()->getIntroString(20)); + enque(frame); + // seems nice to play this again ;) - enque( new Frame("INTRO:INTRO1.WSA", + frame = new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - m_introStrings, - false) ); + false); + enque(frame); next(); m_butIntro = new TranspButton(Settings::Instance()->GetWidth(), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 13:01:43
|
Revision: 231 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=231&view=rev Author: dvalin Date: 2008-05-01 06:01:31 -0700 (Thu, 01 May 2008) Log Message: ----------- add spinlocks for soundChunks Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/src/DataCache.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-05-01 12:19:38 UTC (rev 230) +++ branches/dunks/include/DataCache.h 2008-05-01 13:01:31 UTC (rev 231) @@ -450,7 +450,7 @@ Stringfile* BriefingStrings[3]; Stringfile* IntroStrings; Stringfile* CreditsStrings; - Mix_Chunk* soundChunk[NUM_SOUNDCHUNK]; + std::vector<Mix_Chunk*> soundChunk; }; Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-05-01 12:19:38 UTC (rev 230) +++ branches/dunks/src/DataCache.cpp 2008-05-01 13:01:31 UTC (rev 231) @@ -18,6 +18,7 @@ m_music.push_back(new music()); } + soundChunk.resize(NUM_SOUNDCHUNK); int len, maplen; uint8_t *data, *mapdata; @@ -428,6 +429,7 @@ BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG"); addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2); +#if 0 // 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); @@ -468,7 +470,7 @@ * addMusic(MUSIC_WIN, "SOUND:DUNE8.ADL", 3); */ addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2); - +#endif delete data; } @@ -606,6 +608,11 @@ } Mix_Chunk* DataCache::getSoundChunk(Sound_enum ID){ +#ifdef THREADS +spinlock: + if(!soundChunk[ID]) + goto spinlock; +#endif return soundChunk[ID]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 20:35:28
|
Revision: 234 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=234&view=rev Author: dvalin Date: 2008-05-01 13:35:05 -0700 (Thu, 01 May 2008) Log Message: ----------- * add most of the rest sounds to intro * concatenate the appropriate sounds in stead of adding them one by one add each specific location 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 18:58:21 UTC (rev 233) +++ branches/dunks/include/IntroState.h 2008-05-01 20:35:05 UTC (rev 234) @@ -15,6 +15,7 @@ typedef std::pair <uint16_t, std::string> introText; typedef std::pair <uint16_t, Sound_enum> introSound; +typedef std::pair <uint16_t, Mix_Chunk*> soundChunk; class StringFile; class Button; @@ -48,6 +49,7 @@ void Load(Frame* lastframe); void addText(uint16_t playAt, std::string introText); void addSound(uint16_t playAt, Sound_enum sound); + void concatSound(uint16_t playAt, Sound_enum sound); void setPalette(Palette_enum palette); void setSong(uint8_t song); @@ -75,6 +77,7 @@ Container* m_container; std::vector<introText> m_introStrings; std::vector<introSound> m_introSounds; + std::vector<soundChunk> m_soundChunks; SDL_Palette* m_palette; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 18:58:21 UTC (rev 233) +++ branches/dunks/src/IntroState.cpp 2008-05-01 20:35:05 UTC (rev 234) @@ -47,6 +47,45 @@ m_introSounds.push_back(introSound(playAt, sound)); } +void IntroState::Frame::concatSound(uint16_t playAt, Sound_enum sound) +{ + Mix_Chunk* sound1; + Mix_Chunk* sound2 = DataCache::Instance()->getSoundChunk(sound); + bool exists = false; + uint8_t i; + for(i = 0; i < m_soundChunks.size(); i++) + { + if(m_soundChunks[i].first == playAt) + { + exists = true; + sound1 = m_soundChunks[i].second; + break; + } + } + if(!exists){ + m_soundChunks.push_back(soundChunk(playAt, sound2)); + return; + } + + Mix_Chunk* newChunk; + if((newChunk = (Mix_Chunk*) malloc(sizeof(Mix_Chunk))) == NULL) { + return; + } + + newChunk->allocated = 1; + newChunk->volume = sound1->volume; + newChunk->alen = sound1->alen + sound2->alen; + + if((newChunk->abuf = (Uint8 *)malloc(newChunk->alen)) == NULL) { + free(newChunk); + return; + } + + memcpy(newChunk->abuf, sound1->abuf, sound1->alen); + memcpy(newChunk->abuf + sound1->alen, sound2->abuf, sound2->alen); + m_soundChunks[i] = soundChunk(playAt, newChunk); +} + void IntroState::Frame::setPalette(Palette_enum palette) { m_palette = DataCache::Instance()->getPalette(palette); @@ -132,6 +171,14 @@ m_introSounds.erase(m_introSounds.begin()); } } + if(m_soundChunks.size() > 0){ + if(m_currentFrame == m_soundChunks[0].first){ + Mix_Chunk* sound = m_soundChunks[0].second; + Application::Instance()->playSound(sound); +// delete(m_soundChunks[0].second); + m_soundChunks.erase(m_soundChunks.begin()); + } + } m_frametime += dt; @@ -273,8 +320,8 @@ false, 2000); frame->setSong(1); frame->addSound(5, Intro_Dune); - frame->addSound(25, Intro_TheBuilding); - frame->addSound(49, Intro_OfADynasty); + frame->concatSound(48, Intro_TheBuilding); + frame->concatSound(48, Intro_OfADynasty); frame->addText(48, "The Building of a Dynasty"); enque(frame); @@ -282,8 +329,8 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false, 2000); - frame->addSound(0, Intro_ThePlanetArrakis); - frame->addSound(11, Intro_KnownAsDune); + frame->concatSound(0, Intro_ThePlanetArrakis); + frame->concatSound(0, Intro_KnownAsDune); frame->addText(0, DataCache::Instance()->getIntroString(3)); enque(frame); @@ -293,9 +340,9 @@ false, 2000); frame->addSound(0, Intro_LandOfSand); frame->addText(0, DataCache::Instance()->getIntroString(4)); - frame->addSound(20, Intro_Home); - frame->addSound(33, Intro_OfTheSpice); - frame->addSound(39, Intro_Melange); + frame->concatSound(23, Intro_Home); + frame->concatSound(23, Intro_OfTheSpice); + frame->concatSound(33, Intro_Melange); frame->addText(33, DataCache::Instance()->getIntroString(5)); enque(frame); @@ -303,25 +350,27 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false, 3000); - frame->addSound(0, Intro_TheSpice); - frame->addSound(5, Intro_Controls); - frame->addSound(9, Intro_TheEmpire); - frame->addSound(10, Intro_Clank); - frame->addSound(25, Intro_WhoEver); - frame->addSound(29, Intro_ControlsDune); - frame->addSound(35, Intro_ControlsTheSpice); - frame->addSound(50, Intro_Brakes_2p); - frame->addSound(58, Intro_Clank); frame->addText(0, DataCache::Instance()->getIntroString(6)); - frame->addText(50, DataCache::Instance()->getIntroString(7)); + frame->concatSound(0, Intro_TheSpice); + frame->concatSound(0, Intro_Controls); + frame->concatSound(0, Intro_TheEmpire); + frame->addSound(18, Intro_Clank); + frame->addText(32, DataCache::Instance()->getIntroString(7)); + frame->concatSound(32, Intro_WhoEver); + frame->concatSound(32, Intro_ControlsDune); + frame->concatSound(32, Intro_ControlsTheSpice); + frame->addSound(53, Intro_Brakes_2p); + frame->addSound(61, Intro_Clank); enque(frame); frame = new Frame("INTRO:INTRO10.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 2000); + false, 7500); frame->addText(0, DataCache::Instance()->getIntroString(8)); - frame->addSong(0, Intro_TheEmperor); + frame->concatSound(0, Intro_TheEmperor); + frame->concatSound(0, Intro_HasProposedAChallenge); + frame->concatSound(0, Intro_ToEachOfTheHouses); enque(frame); frame = new Frame("INTRO:INTRO11.WSA", @@ -329,16 +378,33 @@ Frame::FADE_OUT, false, 2000); frame->addText(0, DataCache::Instance()->getIntroString(9)); - frame->addText(25, DataCache::Instance()->getIntroString(10)); - frame->addText(41, DataCache::Instance()->getIntroString(11)); + frame->concatSound(0, Intro_TheHouse); + frame->concatSound(0, Intro_ThatProduces); + frame->concatSound(0, Intro_TheMostSpice); + frame->concatSound(0, Intro_WillControlDune); + // The video should actually loop a bit here, needs to be implemented.. + frame->concatSound(41, Intro_ThereAreNoSet); + frame->concatSound(41, Intro_Territories); + frame->concatSound(41, Intro_AndNo); + frame->concatSound(41, Intro_RulesOfEngagement); + + frame->addText(41, DataCache::Instance()->getIntroString(10)); + frame->addText(44, DataCache::Instance()->getIntroString(11)); enque(frame); + frame = new Frame("INTRO:INTRO4.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 3000); frame->addText(0, DataCache::Instance()->getIntroString(12)); + frame->concatSound(0, Intro_VastArmies); + frame->concatSound(0, Intro_HasArrived); frame->addText(25, DataCache::Instance()->getIntroString(13)); + frame->concatSound(25, Intro_AndNow); + frame->concatSound(25, Intro_3Houses); + frame->concatSound(25, Intro_ForControl); + frame->concatSound(25, Intro_OfDune); enque(frame); frame = new Frame("INTRO:INTRO6.WSA", @@ -346,6 +412,13 @@ Frame::FADE_OUT, false); frame->addText(0, DataCache::Instance()->getIntroString(14)); + frame->addSound(0, Intro_TheNobleAtreides); + frame->addSound(31, Intro_Glass); + frame->addSound(32, Intro_Glass); + frame->addSound(33, Intro_Glass); + frame->addSound(63, Intro_Glass); + frame->addSound(64, Intro_Glass); + frame->addSound(65, Intro_Glass); enque(frame); frame = new Frame("INTRO:INTRO7A.WSA", @@ -353,6 +426,12 @@ Frame::NO_TRANSITION, false); frame->addText(0, DataCache::Instance()->getIntroString(15)); + frame->concatSound(0, Intro_TheInsideous); + frame->concatSound(0, Intro_Ordos); + frame->addSound(2, Intro_Missile_8); + frame->addSound(7, Intro_Missile_8); + frame->addSound(26, Intro_Missile_8); + frame->addSound(37, Intro_Missile_8); enque(frame); frame = new Frame("INTRO:INTRO7B.WSA", @@ -367,6 +446,11 @@ Frame::NO_TRANSITION, false); frame->addText(0, DataCache::Instance()->getIntroString(17)); + frame->concatSound(0, Intro_AndThe); + frame->concatSound(0, Intro_EvilHarkonnen); + frame->addSound(0, Sound_Gun); + frame->addSound(3, Sound_Gun); + frame->addSound(8, Sound_Gun); enque(frame); frame = new Frame("INTRO:INTRO8B.WSA", @@ -381,6 +465,8 @@ Frame::FADE_OUT, true, 2000); frame->addText(0, DataCache::Instance()->getIntroString(19)); + frame->addSound(16, Sound_ExplosionSmall); + frame->addSound(25, Sound_ExplosionMedium); enque(frame); frame = new Frame("INTRO:INTRO5.WSA", @@ -388,8 +474,28 @@ Frame::FADE_OUT, false); frame->addText(0, DataCache::Instance()->getIntroString(20)); + frame->concatSound(0, Intro_OnlyOneHouse); + frame->concatSound(0, Intro_WillPrevail); enque(frame); +/* frame = new Frame("Your battle for Dune begins", + Frame::NO_TRANSITION, + Frame::FADE_OUT, + false); + frame->concatSound(0, Intro_Your); + frame->concatSound(0, Intro_Battle); + frame->concatSound(0, Intro_ForDune); + frame->concatSound(0, Intro_Begins); + enque(frame); + + + frame = new Frame("Now", + Frame::NO_TRANSITION, + Frame::FADE_OUT, + false); + frame->addSound(0, Intro_Now); + enque(frame);*/ + // seems nice to play this again ;) frame = new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |