You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(44) |
Aug
(36) |
Sep
(5) |
Oct
|
Nov
(6) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
|
Apr
(87) |
May
(54) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <dv...@us...> - 2008-05-03 00:16:57
|
Revision: 252 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=252&view=rev Author: dvalin Date: 2008-05-02 17:16:51 -0700 (Fri, 02 May 2008) Log Message: ----------- move text a bit to the right Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-03 00:14:52 UTC (rev 251) +++ branches/dunks/src/IntroState.cpp 2008-05-03 00:16:51 UTC (rev 252) @@ -394,7 +394,7 @@ frame->concatSound(66, Intro_TheBuilding); frame->concatSound(66, Intro_OfADynasty); frame->addText(66, DataCache::Instance()->getIntroString(2)); - frame->setTextLocation(SPoint(0,-20)); + frame->setTextLocation(SPoint(25,-20)); enque(frame); frame = new Frame("INTRO:INTRO2.WSA", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-03 00:14:54
|
Revision: 251 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=251&view=rev Author: dvalin Date: 2008-05-02 17:14:52 -0700 (Fri, 02 May 2008) Log Message: ----------- make it possible to override default location of text 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-03 00:00:49 UTC (rev 250) +++ branches/dunks/include/IntroState.h 2008-05-03 00:14:52 UTC (rev 251) @@ -57,6 +57,7 @@ void setFps(float fps); void setLoop(uint8_t loopAt, uint8_t rewindTo, uint8_t numLoops, uint8_t wait); void setTextColor(uint8_t textColor); + void setTextLocation(SPoint textLocation); private: std::string m_filename; @@ -74,8 +75,9 @@ float m_frametime; int8_t m_song; - uint8_t m_endWait; - uint8_t m_textColor; + uint8_t m_endWait, m_textColor; + SPoint m_textLocation; + float m_fps; videoLoop m_loop, m_loopTime; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-03 00:00:49 UTC (rev 250) +++ branches/dunks/src/IntroState.cpp 2008-05-03 00:14:52 UTC (rev 251) @@ -32,6 +32,7 @@ m_loopTime = videoLoop(0,0); m_textColor = 49; m_textSurface.reset(new Image(UPoint(320,40))); + m_textLocation = SPoint(0,0); font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); } @@ -111,6 +112,11 @@ m_textColor = textColor; } +void IntroState::Frame::setTextLocation(SPoint textLocation) +{ + m_textLocation = textLocation; +} + void IntroState::Frame::Load(Frame* lastframe) { printf("intro loading %s\n", m_filename.c_str()); @@ -258,7 +264,7 @@ }; }; - m_textSurface->blitToScreen(SPoint(0,Application::Instance()->Screen()->getSurface()->h/2 + m_scaledSurface->getSurface()->h/2 + 20)); + m_textSurface->blitToScreen(SPoint(0 + m_textLocation.x,Application::Instance()->Screen()->getSurface()->h/2 + m_scaledSurface->getSurface()->h/2 + 20 + m_textLocation.y)); } @@ -348,7 +354,7 @@ // m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. // DataCache::Instance()->getCreditsString(20))); - frame = new Frame("INTRO:WESTWOOD.WSA", + /*frame = new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 30); @@ -374,9 +380,9 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false, 20); - DataCache::Instance()->getIntroString(1), + frame->addText(0,DataCache::Instance()->getIntroString(1)); enque(frame); - +*/ frame = new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, @@ -388,6 +394,7 @@ frame->concatSound(66, Intro_TheBuilding); frame->concatSound(66, Intro_OfADynasty); frame->addText(66, DataCache::Instance()->getIntroString(2)); + frame->setTextLocation(SPoint(0,-20)); enque(frame); frame = new Frame("INTRO:INTRO2.WSA", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-03 00:00:58
|
Revision: 250 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=250&view=rev Author: dvalin Date: 2008-05-02 17:00:49 -0700 (Fri, 02 May 2008) Log Message: ----------- * actually draw the text * fix text displayed at wrong time Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-02 23:54:01 UTC (rev 249) +++ branches/dunks/src/IntroState.cpp 2008-05-03 00:00:49 UTC (rev 250) @@ -370,10 +370,11 @@ false, 30); enque(frame); - frame = new Frame(DataCache::Instance()->getIntroString(1), + frame = new Frame("", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 20); + DataCache::Instance()->getIntroString(1), enque(frame); @@ -386,7 +387,7 @@ frame->concatSound(66, Intro_Dune); frame->concatSound(66, Intro_TheBuilding); frame->concatSound(66, Intro_OfADynasty); - frame->addText(66, "The Building of a Dynasty"); + frame->addText(66, DataCache::Instance()->getIntroString(2)); enque(frame); frame = new Frame("INTRO:INTRO2.WSA", @@ -511,14 +512,13 @@ Frame::FADE_OUT, true, 5); frame->addSound(10, Intro_Missile_8); - frame->addText(0, DataCache::Instance()->getIntroString(16)); enque(frame); frame = new Frame("INTRO:INTRO8A.WSA", Frame::NO_TRANSITION, Frame::NO_TRANSITION, false); - frame->addText(0, DataCache::Instance()->getIntroString(17)); + frame->addText(0, DataCache::Instance()->getIntroString(16)); frame->concatSound(0, Intro_AndThe); frame->concatSound(0, Intro_EvilHarkonnen); frame->addSound(5, Sound_Gun); @@ -547,26 +547,28 @@ false); frame->setFps(0.2); frame->setLoop(3, 0, 10, 0); - frame->addText(0, DataCache::Instance()->getIntroString(18)); + frame->addText(0, DataCache::Instance()->getIntroString(17)); frame->concatSound(0, Intro_OnlyOneHouse); frame->concatSound(0, Intro_WillPrevail); enque(frame); - frame = new Frame(DataCache::Instance()->getIntroString(18), + frame = new Frame("", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 20); + frame->addText(0, DataCache::Instance()->getIntroString(18)); frame->concatSound(0, Intro_Your); frame->concatSound(0, Intro_BattleForDune); frame->concatSound(0, Intro_Begins); enque(frame); - frame = new Frame(DataCache::Instance()->getIntroString(19), + frame = new Frame("", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 15); + frame->addText(0, DataCache::Instance()->getIntroString(19)); frame->addSound(0, Intro_Now); enque(frame); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 23:54:02
|
Revision: 249 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=249&view=rev Author: dvalin Date: 2008-05-02 16:54:01 -0700 (Fri, 02 May 2008) Log Message: ----------- draw text in Frame class rather than Wsafile class 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-02 23:41:31 UTC (rev 248) +++ branches/dunks/include/IntroState.h 2008-05-02 23:54:01 UTC (rev 249) @@ -18,6 +18,7 @@ typedef std::pair <uint16_t, Mix_Chunk*> soundChunk; typedef std::pair <uint8_t, uint8_t> videoLoop; +class Font; class StringFile; class Button; class Label; @@ -78,10 +79,9 @@ float m_fps; videoLoop m_loop, m_loopTime; - ImagePtr m_animSurface, m_scaledSurface; + ImagePtr m_animSurface, m_scaledSurface, m_textSurface; SDL_Color* m_transitionPalette; - Label* m_subText; - Container* m_container; + Font* font; std::vector<introText> m_introStrings; std::vector<introSound> m_introSounds; std::vector<soundChunk> m_soundChunks; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-02 23:41:31 UTC (rev 248) +++ branches/dunks/src/IntroState.cpp 2008-05-02 23:54:01 UTC (rev 249) @@ -6,9 +6,8 @@ #include "Settings.h" #include "pakfile/Palette.h" #include "boost/bind.hpp" -#include "gui2/Label.h" -#include "gui2/Container.h" #include <iostream> +#include "Font.h" // ------------------------------------------------------------------ // IntroState::Frame @@ -24,10 +23,6 @@ m_state = TRANSITION_IN; m_hold = 0.0f; m_transitionPalette = NULL; - m_container = new Container(); - m_container->setSize(UPoint(Settings::Instance()->GetWidth(), - Settings::Instance()->GetHeight())); - m_subText = NULL; m_palette = DataCache::Instance()->getPalette(INTRO_PAL); m_song = -1; @@ -36,9 +31,9 @@ m_loop = videoLoop(0,0); m_loopTime = videoLoop(0,0); m_textColor = 49; + m_textSurface.reset(new Image(UPoint(320,40))); + font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); - Application::Instance()->RootWidget()->addChild(m_container); - } void IntroState::Frame::addText(uint16_t playAt, std::string text) @@ -145,7 +140,7 @@ } } else - m_wsa.reset(new Wsafile(m_filename, m_textColor)); + m_wsa.reset(new Wsafile()); m_frametime = 0; m_currentFrame = 0; @@ -188,13 +183,36 @@ void IntroState::Frame::doPlaying(float dt) { + Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); + if(m_introStrings.size() > 0){ if(m_framesPlayed == m_introStrings[0].first){ - if(m_subText != NULL) m_container->deleteChild(m_subText); - m_subText = new Label(m_introStrings[0].second, m_textColor, 0); + ImagePtr tmp(new Image(UPoint(320,40))); + std::string text = m_introStrings[0].second; + + uint8_t numLines = 0; + int linebreak = text.find("\n",0)+ 1; + std::string thisLine; + // This is a bit hairy and needs to be cleaned up a bit.. + + Uint16 textw, texth; + + while(text.substr(0, linebreak-1).length() > 0){ + thisLine = text.substr(0, linebreak-1); + if(linebreak != -1) + thisLine += " "; + + font->extents(thisLine, textw, texth); + + font->render(thisLine, tmp->getSurface(), tmp->getSurface()->w/2 - textw/2, 10+(numLines++*20) - texth/2, m_textColor); + if(linebreak == -1 || text == text.substr(linebreak, text.length()-linebreak)) + break; + text = text.substr(linebreak, text.length()-linebreak); + linebreak = text.find("\n",0); + } + m_textSurface = tmp->getResized(2); + m_introStrings.erase(m_introStrings.begin()); - m_container->setPosition(UPoint(50, 420)); - m_container->addChild(m_subText); } } @@ -238,7 +256,11 @@ m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette)); m_scaledSurface = m_animSurface->getResized(2.0); }; + }; + m_textSurface->blitToScreen(SPoint(0,Application::Instance()->Screen()->getSurface()->h/2 + m_scaledSurface->getSurface()->h/2 + 20)); + + } void IntroState::Frame::setupTransitionIn() @@ -312,7 +334,6 @@ void IntroState::Frame::doHolding(float dt) { m_state = TRANSITION_OUT; - if(m_subText != NULL) m_container->deleteChild(m_subText); } IntroState::Frame::~Frame() @@ -335,10 +356,11 @@ frame->setPalette(WESTWOOD_PAL); enque(frame); - frame = new Frame("and", + frame = new Frame("", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 30); + frame->addText(0, "and"); enque(frame); // VIRGIN.CPS has it's own palette, handling of this needs to be implemented.. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 23:41:36
|
Revision: 248 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=248&view=rev Author: dvalin Date: 2008-05-02 16:41:31 -0700 (Fri, 02 May 2008) Log Message: ----------- don't draw text in wsa object, just return a tiny 1x1 image in stead and do the drawing in IntroState class Modified Paths: -------------- branches/dunks/include/pakfile/Wsafile.h branches/dunks/src/pakfile/Wsafile.cpp Modified: branches/dunks/include/pakfile/Wsafile.h =================================================================== --- branches/dunks/include/pakfile/Wsafile.h 2008-05-02 18:22:29 UTC (rev 247) +++ branches/dunks/include/pakfile/Wsafile.h 2008-05-02 23:41:31 UTC (rev 248) @@ -19,8 +19,8 @@ public: Wsafile(uint8_t * bufFiledata, int bufsize, SDL_Surface* lastframe = NULL, float setFps = 0 ); - Wsafile(std::string text, uint8_t textColor); Wsafile(Cpsfile* cpsFile); + Wsafile(); ~Wsafile(); Modified: branches/dunks/src/pakfile/Wsafile.cpp =================================================================== --- branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 18:22:29 UTC (rev 247) +++ branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 23:41:31 UTC (rev 248) @@ -68,11 +68,11 @@ decodeFrames(); } -Wsafile::Wsafile(std::string text, uint8_t textColor) : Decode() +Wsafile::Wsafile(Cpsfile* cpsFile) : Decode() { - WsaFilesize = -1; + WsaFilesize = -2; - printf("loading fake wsa...\n"); + printf("loading cps file as wsa...\n"); NumFrames = 1; fps = 0.1; @@ -80,15 +80,14 @@ printf("FramesPer1024ms = %d\n", FramesPer1024ms); printf("FPS = %.3f\n", fps); decodedFrames = NULL; - m_text = text; - m_textColor = textColor; + m_cpsFile = cpsFile; } -Wsafile::Wsafile(Cpsfile* cpsFile) : Decode() +Wsafile::Wsafile() : Decode() { - WsaFilesize = -2; + WsaFilesize = -1; - printf("loading cps file as wsa...\n"); + printf("loading empty image as wsa...\n"); NumFrames = 1; fps = 0.1; @@ -96,7 +95,6 @@ printf("FramesPer1024ms = %d\n", FramesPer1024ms); printf("FPS = %.3f\n", fps); decodedFrames = NULL; - m_cpsFile = cpsFile; } Wsafile::~Wsafile() @@ -106,33 +104,9 @@ Image * Wsafile::getPicture(Uint32 FrameNumber, SDL_Palette *palette) { + Image* img; if(WsaFilesize == -1){ - Image* img = new Image(UPoint(320,240)); - - std::string text = m_text; - Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); - - Uint16 textw, texth; - - img->fillRect(0); - - uint8_t numLines = 0; - int linebreak = text.find("\n",0)+ 1; - std::string thisLine; - // This is a bit hairy and needs to be cleaned up a bit.. - while(text.substr(0, linebreak-1).length() > 0){ - thisLine = text.substr(0, linebreak-1); - - font->extents(thisLine, textw, texth); - - font->render(thisLine, img->getSurface(), - img->getSurface()->w/2 - textw/2, - img->getSurface()->h/2+(numLines++*20) - texth/2, m_textColor); - if(linebreak == -1 || text == text.substr(linebreak, text.length()-linebreak)) - break; - text = text.substr(linebreak, text.length()-linebreak); - linebreak = text.find("\n",0); - } + img = new Image(UPoint(1,1)); return img; } @@ -174,7 +148,7 @@ SDL_UnlockSurface(pic); - Image * img = new Image(pic); + img = new Image(pic); return img; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 18:22:39
|
Revision: 247 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=247&view=rev Author: dvalin Date: 2008-05-02 11:22:29 -0700 (Fri, 02 May 2008) Log Message: ----------- fix display of strings Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-02 18:18:11 UTC (rev 246) +++ branches/dunks/src/IntroState.cpp 2008-05-02 18:22:29 UTC (rev 247) @@ -145,7 +145,7 @@ } } else - m_wsa.reset(new Wsafile(m_filename)); + m_wsa.reset(new Wsafile(m_filename, m_textColor)); m_frametime = 0; m_currentFrame = 0; @@ -440,15 +440,10 @@ frame = new Frame("INTRO:INTRO4.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 10); + false, 5); frame->addText(11, DataCache::Instance()->getIntroString(12)); frame->concatSound(11, Intro_VastArmies); frame->concatSound(11, 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(DataCache::Instance()->getIntroString(13), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 18:18:18
|
Revision: 246 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=246&view=rev Author: dvalin Date: 2008-05-02 11:18:11 -0700 (Fri, 02 May 2008) Log Message: ----------- fix so that strings without newline won't be printed twice (a bit ugly and needs to be cleaned up, but it works at least;) Modified Paths: -------------- branches/dunks/src/pakfile/Wsafile.cpp Modified: branches/dunks/src/pakfile/Wsafile.cpp =================================================================== --- branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 18:08:39 UTC (rev 245) +++ branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 18:18:11 UTC (rev 246) @@ -119,6 +119,7 @@ uint8_t numLines = 0; int linebreak = text.find("\n",0)+ 1; std::string thisLine; + // This is a bit hairy and needs to be cleaned up a bit.. while(text.substr(0, linebreak-1).length() > 0){ thisLine = text.substr(0, linebreak-1); @@ -127,7 +128,7 @@ font->render(thisLine, img->getSurface(), img->getSurface()->w/2 - textw/2, img->getSurface()->h/2+(numLines++*20) - texth/2, m_textColor); - if(linebreak == -1) + if(linebreak == -1 || text == text.substr(linebreak, text.length()-linebreak)) break; text = text.substr(linebreak, text.length()-linebreak); linebreak = text.find("\n",0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 18:08:43
|
Revision: 245 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=245&view=rev Author: dvalin Date: 2008-05-02 11:08:39 -0700 (Fri, 02 May 2008) Log Message: ----------- fix handling of newlines in text Modified Paths: -------------- branches/dunks/include/pakfile/Wsafile.h branches/dunks/src/pakfile/Wsafile.cpp Modified: branches/dunks/include/pakfile/Wsafile.h =================================================================== --- branches/dunks/include/pakfile/Wsafile.h 2008-05-02 17:14:48 UTC (rev 244) +++ branches/dunks/include/pakfile/Wsafile.h 2008-05-02 18:08:39 UTC (rev 245) @@ -19,9 +19,8 @@ public: Wsafile(uint8_t * bufFiledata, int bufsize, SDL_Surface* lastframe = NULL, float setFps = 0 ); - Wsafile(std::string text); + Wsafile(std::string text, uint8_t textColor); Wsafile(Cpsfile* cpsFile); -// wsafil ~Wsafile(); @@ -39,9 +38,11 @@ std::string m_text; Cpsfile* m_cpsFile; - unsigned char *decodedFrames; + uint8_t* decodedFrames; - unsigned char* Filedata; + uint8_t* Filedata; + uint8_t m_textColor; + Uint32* Index; int WsaFilesize; Modified: branches/dunks/src/pakfile/Wsafile.cpp =================================================================== --- branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 17:14:48 UTC (rev 244) +++ branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 18:08:39 UTC (rev 245) @@ -6,7 +6,7 @@ #include <string> #include "Font.h" -Wsafile::Wsafile(unsigned char * bufFiledata, int bufsize, +Wsafile::Wsafile(uint8_t * bufFiledata, int bufsize, SDL_Surface* lastframe, float setFps ) : Decode() { Filedata = bufFiledata; @@ -68,7 +68,7 @@ decodeFrames(); } -Wsafile::Wsafile(std::string text) : Decode() +Wsafile::Wsafile(std::string text, uint8_t textColor) : Decode() { WsaFilesize = -1; @@ -81,7 +81,7 @@ printf("FPS = %.3f\n", fps); decodedFrames = NULL; m_text = text; - m_fakeWsa = ImagePtr(new Image(UPoint(100,100))); + m_textColor = textColor; } Wsafile::Wsafile(Cpsfile* cpsFile) : Decode() @@ -107,28 +107,34 @@ Image * Wsafile::getPicture(Uint32 FrameNumber, SDL_Palette *palette) { if(WsaFilesize == -1){ -// ImagePtr m_surface = m_fakeWsa; //ImagePtr(new Image(UPoint(10,10))); - Image* m_surface = new Image(UPoint(320,240)); + Image* img = new Image(UPoint(320,240)); + + std::string text = m_text; + Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); + + Uint16 textw, texth; + + img->fillRect(0); + + uint8_t numLines = 0; + int linebreak = text.find("\n",0)+ 1; + std::string thisLine; + while(text.substr(0, linebreak-1).length() > 0){ + thisLine = text.substr(0, linebreak-1); + + font->extents(thisLine, textw, texth); + + font->render(thisLine, img->getSurface(), + img->getSurface()->w/2 - textw/2, + img->getSurface()->h/2+(numLines++*20) - texth/2, m_textColor); + if(linebreak == -1) + break; + text = text.substr(linebreak, text.length()-linebreak); + linebreak = text.find("\n",0); + } + return img; + } - std::string m_caption = m_text; - Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); - - Uint16 textw, texth; - - font->extents(m_caption.c_str(), textw, texth); - - /*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(0); - - font->render(m_caption.c_str(), m_surface->getSurface(), - m_surface->getSurface()->w/2 - textw/2, - m_surface->getSurface()->h/2 - texth/2, 49); - - return m_surface; -// return m_fakeWsa->getCopy().get(); - } if(WsaFilesize == -2){ return m_cpsFile->getPicture(); } @@ -162,7 +168,7 @@ //Now we can copy line by line for(int y = 0; y < SizeY;y++) { - memcpy( ((unsigned char*) (pic->pixels)) + y * pic->pitch , Frame + y * SizeX, SizeX); + memcpy( ((uint8_t*) (pic->pixels)) + y * pic->pitch , Frame + y * SizeX, SizeX); } SDL_UnlockSurface(pic); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 17:14:50
|
Revision: 244 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=244&view=rev Author: dvalin Date: 2008-05-02 10:14:48 -0700 (Fri, 02 May 2008) Log Message: ----------- convert to use C++ string in stead of C const char * Modified Paths: -------------- branches/dunks/include/Font.h branches/dunks/src/Font.cpp Modified: branches/dunks/include/Font.h =================================================================== --- branches/dunks/include/Font.h 2008-05-02 15:33:16 UTC (rev 243) +++ branches/dunks/include/Font.h 2008-05-02 17:14:48 UTC (rev 244) @@ -46,9 +46,11 @@ Font(FNTCharacter* characters, FNTHeader* header); ~Font(); - void extents(const char* text, Uint16& w, Uint16& h); - void render(const char* text, ImagePtr image, int x, int y, Uint8 paloff); + void extents(std::string text, Uint16& w, Uint16& h); + void render(std::string text, ImagePtr image, int x, int y, Uint8 paloff); + void render(std::string text, SDL_Surface* image, int x, int y, Uint8 paloff); + private: FNTHeader* m_header; FNTCharacter* m_characters; @@ -60,19 +62,19 @@ { friend class Singleton<FontManager>; - typedef std::map<const char*, Font*> FontList; + typedef std::map<std::string, Font*> FontList; protected: FontManager(); ~FontManager(); public: - Font* getFont(const char* fn); + Font* getFont(std::string fn); private: FontList m_fonts; - Font* loadFont(const char* fn); + Font* loadFont(std::string fn); }; class TTFFontManager : public Singleton<TTFFontManager> Modified: branches/dunks/src/Font.cpp =================================================================== --- branches/dunks/src/Font.cpp 2008-05-02 15:33:16 UTC (rev 243) +++ branches/dunks/src/Font.cpp 2008-05-02 17:14:48 UTC (rev 244) @@ -5,6 +5,7 @@ #include <assert.h> #include <stdlib.h> #include <stdio.h> +#include <iostream> Font::Font(FNTCharacter* characters, FNTHeader* header) { @@ -18,21 +19,21 @@ delete m_header; } -void Font::extents(const char* text, Uint16& w, Uint16& h) +void Font::extents(std::string text, Uint16& w, Uint16& h) { FNTCharacter* ch; w = 0; h = m_header->height; - for (unsigned int c=0; c!=strlen(text); c++) + for (unsigned int c=0; c!=text.length(); c++) { ch = &m_characters[text[c]]; w += (2 * ch->width) + 1; }; } -void Font::render(const char* text, ImagePtr image, int offx, int offy, Uint8 paloff) +void Font::render(std::string text, ImagePtr image, int offx, int offy, Uint8 paloff) { FNTCharacter* ch; byte* bitmap; @@ -41,7 +42,7 @@ Uint8* pixels = (Uint8*)surface->pixels; - for (unsigned int c=0; c!=strlen(text); c++) + for (unsigned int c=0; c!=text.length(); c++) { ch = &m_characters[text[c]]; bitmap = ch->bitmap; @@ -70,6 +71,45 @@ } +void Font::render(std::string text, SDL_Surface* image, int offx, int offy, Uint8 paloff) +{ + std::string test = text; + FNTCharacter* ch; + byte* bitmap; + + SDL_Surface * surface = image; + + Uint8* pixels = (Uint8*)surface->pixels; + + for (unsigned int c=0; c!=text.length(); c++) + { + ch = &m_characters[text[c]]; + bitmap = ch->bitmap; + + for (byte y=0; y!=ch->height; y++) + { + for (byte x=0; x!=ch->width*2; x+=2) + { + byte lobyte = bitmap[(x/2) + (y*ch->width)] >> 4; + byte hibyte = bitmap[(x/2) + (y*ch->width)] & 0x0F; + + if (hibyte!=0) + { + pixels[(offx + x) + ((ch->y_offset + y + offy) * surface->w)] = paloff + Uint8(hibyte); + }; + + if (lobyte!=0) //(2 < ch->width) lobyte!=0) + { + pixels[(offx + x + 1) + ((ch->y_offset + y + offy) * surface->w)] = paloff + Uint8(lobyte); + }; + }; + + }; + offx += (2*ch->width) + 1; + }; + +} + FontManager::FontManager() { @@ -80,21 +120,21 @@ } -Font* FontManager::getFont(const char* fn) +Font* FontManager::getFont(std::string fn) { FontList::iterator it = m_fonts.find(fn); if (it == m_fonts.end()) { - printf("loading %s\n", fn); + std::cout << "loading" << fn << std::endl; m_fonts[fn] = loadFont(fn); }; return m_fonts[fn]; } -Font* FontManager::loadFont(const char* fn) +Font* FontManager::loadFont(std::string fn) { - printf("loadFont %s\n", fn); + std::cout << "loadFont " << fn << std::endl; //FILE* file = fopen(fn, "rb"); FileLike* file = ResMan::Instance()->readFile(fn); @@ -118,7 +158,7 @@ file->seek(header->wpos); file->read(wchar, sizeof(byte) * (header->nchars+1)); - if (wchar[0] != 8) printf("bad!!\n"); + if (wchar[0] != 8) printf("%d: bad!!\n", wchar[0]); word* hchar = new word[header->nchars+1]; @@ -133,7 +173,7 @@ { byte offset = hchar[i] & 0xFF; byte height = hchar[i] >> 8; - byte width =( wchar[i] + 1) / 2; + byte width =( wchar[i] + 1)/ 2; characters[i].width = width; characters[i].height = height; @@ -168,18 +208,18 @@ fprintf(stdout, "loading fonts...\n"); - const char *fn = "data/font.ttf"; + std::string fn = "data/font.ttf"; for (int i=MIN_FONT_SIZE; i < MAX_FONT_SIZE; i++) { - if ( (m_fonts[i - MIN_FONT_SIZE] = TTF_OpenFont(fn, i)) = NULL ) + if ( (m_fonts[i - MIN_FONT_SIZE] = TTF_OpenFont(fn.c_str(), i)) = NULL ) { - fprintf(stderr, "ERROR: unable to load %s size %d\n", fn, i); + std::cerr << "ERROR: unable to load " << fn << " size " << i << std::endl; Application::Instance()->Die(); } else { - fprintf(stdout, "loaded font %s %d\n", fn, i); + std::cout << "loaded font " << fn << " " << i << std::endl; }; }; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 15:35:53
|
Revision: 243 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=243&view=rev Author: dvalin Date: 2008-05-02 08:33:16 -0700 (Fri, 02 May 2008) Log Message: ----------- add text only scenes and virgin logo scene 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-02 15:32:19 UTC (rev 242) +++ branches/dunks/include/IntroState.h 2008-05-02 15:33:16 UTC (rev 243) @@ -16,6 +16,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; +typedef std::pair <uint8_t, uint8_t> videoLoop; class StringFile; class Button; @@ -42,7 +43,7 @@ }; Frame(std::string filename, Transition in, Transition out, - bool cont, uint16_t endWait = 0); + bool cont, uint8_t endWait = 0); ~Frame(); bool Execute(float ft); @@ -52,6 +53,9 @@ void concatSound(uint16_t playAt, Sound_enum sound); void setPalette(Palette_enum palette); void setSong(uint8_t song); + void setFps(float fps); + void setLoop(uint8_t loopAt, uint8_t rewindTo, uint8_t numLoops, uint8_t wait); + void setTextColor(uint8_t textColor); private: std::string m_filename; @@ -65,12 +69,15 @@ bool mb_finished; WsafilePtr m_wsa; - int m_currentFrame; + uint8_t m_currentFrame, m_framesPlayed; + float m_frametime; int8_t m_song; - uint16_t m_endWait; + uint8_t m_endWait; + uint8_t m_textColor; + float m_fps; + videoLoop m_loop, m_loopTime; - ImagePtr m_animSurface, m_scaledSurface; SDL_Color* m_transitionPalette; Label* m_subText; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-02 15:32:19 UTC (rev 242) +++ branches/dunks/src/IntroState.cpp 2008-05-02 15:33:16 UTC (rev 243) @@ -119,20 +119,33 @@ void IntroState::Frame::Load(Frame* lastframe) { printf("intro loading %s\n", m_filename.c_str()); - - int len; - uint8_t * data = ResMan::Instance()->readFile(m_filename, &len); - assert(data != NULL); + std::string::size_type wsaSuffix = m_filename.rfind(".WSA", m_filename.size() - 1); + std::string::size_type cpsSuffix = m_filename.rfind(".CPS", m_filename.size() - 1); + bool isWsa = m_filename.size() > 3 && wsaSuffix == m_filename.size() - 4; + bool isCps = m_filename.size() > 3 && cpsSuffix == m_filename.size() - 4; - if (m_continuation) - { - m_wsa.reset(new Wsafile(data, len, lastframe->m_animSurface->getSurface(), m_fps)); - } - else - { - m_wsa.reset(new Wsafile(data, len, NULL, m_fps)); - } + if(isWsa || isCps){ + int len; + uint8_t * data = ResMan::Instance()->readFile(m_filename, &len); + + assert(data != NULL); + + if(isWsa){ + if (m_continuation) + { + m_wsa.reset(new Wsafile(data, len, lastframe->m_animSurface->getSurface(), m_fps)); + } + else + { + m_wsa.reset(new Wsafile(data, len, NULL, m_fps)); + } + }else if(isCps){ + m_wsa.reset(new Wsafile(new Cpsfile(data, len, m_palette))); + } + } + else + m_wsa.reset(new Wsafile(m_filename)); m_frametime = 0; m_currentFrame = 0; @@ -143,7 +156,6 @@ m_scaledSurface = m_animSurface->getResized(2.0); if(m_endWait && !m_loop.first) setLoop(m_wsa->getNumFrames(), m_wsa->getNumFrames(), 1, m_endWait); - } bool IntroState::Frame::Execute(float dt) @@ -315,7 +327,7 @@ // m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. // DataCache::Instance()->getCreditsString(20))); - frame = new Frame("INTRO:WESTWOOD.WSA", + frame = new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 30); @@ -323,6 +335,26 @@ frame->setPalette(WESTWOOD_PAL); enque(frame); + frame = new Frame("and", + Frame::NO_TRANSITION, + Frame::FADE_OUT, + false, 30); + enque(frame); + + // VIRGIN.CPS has it's own palette, handling of this needs to be implemented.. + frame = new Frame("INTRO:VIRGIN.CPS", + Frame::NO_TRANSITION, + Frame::FADE_OUT, + false, 30); + enque(frame); + + frame = new Frame(DataCache::Instance()->getIntroString(1), + Frame::NO_TRANSITION, + Frame::FADE_OUT, + false, 20); + enque(frame); + + frame = new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, @@ -419,16 +451,17 @@ frame->concatSound(25, Intro_OfDune); enque(frame); -/* frame = new Frame(DataCache::Instance()->getIntroString(13) , + frame = new Frame(DataCache::Instance()->getIntroString(13), Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 20); + false, 50); frame->concatSound(0, Intro_AndNow); frame->concatSound(0, Intro_3Houses); frame->concatSound(0, Intro_ForControl); frame->concatSound(0, Intro_OfDune); enque(frame); -*/ + + frame = new Frame("INTRO:INTRO6.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, @@ -502,23 +535,23 @@ frame->concatSound(0, Intro_WillPrevail); enque(frame); -/* frame = new Frame("Your battle for Dune begins", + + frame = new Frame(DataCache::Instance()->getIntroString(18), Frame::NO_TRANSITION, Frame::FADE_OUT, - false); + false, 20); frame->concatSound(0, Intro_Your); - frame->concatSound(0, Intro_Battle); - frame->concatSound(0, Intro_ForDune); - frame->concatSound(0, Intro_Begins); + frame->concatSound(0, Intro_BattleForDune); + frame->concatSound(0, Intro_Begins); enque(frame); - frame = new Frame("Now", + frame = new Frame(DataCache::Instance()->getIntroString(19), Frame::NO_TRANSITION, Frame::FADE_OUT, - false); + false, 15); frame->addSound(0, Intro_Now); - enque(frame);*/ + enque(frame); // seems nice to play this again ;) /* frame = new Frame("INTRO:INTRO1.WSA", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 15:32:22
|
Revision: 242 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=242&view=rev Author: dvalin Date: 2008-05-02 08:32:19 -0700 (Fri, 02 May 2008) Log Message: ----------- make it possible to create a video from text strings and cps images Modified Paths: -------------- branches/dunks/include/pakfile/Wsafile.h branches/dunks/src/pakfile/Wsafile.cpp Modified: branches/dunks/include/pakfile/Wsafile.h =================================================================== --- branches/dunks/include/pakfile/Wsafile.h 2008-05-02 15:06:29 UTC (rev 241) +++ branches/dunks/include/pakfile/Wsafile.h 2008-05-02 15:32:19 UTC (rev 242) @@ -5,18 +5,24 @@ #include "pakfile/Decode.h" #include "pakfile/Animation.h" #include "SDL.h" +#include <string> #include <boost/shared_ptr.hpp> class Wsafile; - typedef boost::shared_ptr<Wsafile> WsafilePtr; +class Cpsfile; + class Wsafile : public Decode { public: - Wsafile(unsigned char * bufFiledata, int bufsize, + Wsafile(uint8_t * bufFiledata, int bufsize, SDL_Surface* lastframe = NULL, float setFps = 0 ); + Wsafile(std::string text); + Wsafile(Cpsfile* cpsFile); +// wsafil + ~Wsafile(); Image * getPicture(Uint32 FrameNumber, SDL_Palette *palette); @@ -29,6 +35,9 @@ private: void decodeFrames(); + ImagePtr m_fakeWsa; + std::string m_text; + Cpsfile* m_cpsFile; unsigned char *decodedFrames; Modified: branches/dunks/src/pakfile/Wsafile.cpp =================================================================== --- branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 15:06:29 UTC (rev 241) +++ branches/dunks/src/pakfile/Wsafile.cpp 2008-05-02 15:32:19 UTC (rev 242) @@ -1,8 +1,10 @@ #include "Gfx.h" #include "pakfile/Wsafile.h" +#include "pakfile/Cpsfile.h" #include <SDL_endian.h> #include <stdlib.h> -#include <string.h> +#include <string> +#include "Font.h" Wsafile::Wsafile(unsigned char * bufFiledata, int bufsize, SDL_Surface* lastframe, float setFps ) : Decode() @@ -66,6 +68,37 @@ decodeFrames(); } +Wsafile::Wsafile(std::string text) : Decode() +{ + WsaFilesize = -1; + + printf("loading fake wsa...\n"); + + NumFrames = 1; + fps = 0.1; + + printf("FramesPer1024ms = %d\n", FramesPer1024ms); + printf("FPS = %.3f\n", fps); + decodedFrames = NULL; + m_text = text; + m_fakeWsa = ImagePtr(new Image(UPoint(100,100))); +} + +Wsafile::Wsafile(Cpsfile* cpsFile) : Decode() +{ + WsaFilesize = -2; + + printf("loading cps file as wsa...\n"); + + NumFrames = 1; + fps = 0.1; + + printf("FramesPer1024ms = %d\n", FramesPer1024ms); + printf("FPS = %.3f\n", fps); + decodedFrames = NULL; + m_cpsFile = cpsFile; +} + Wsafile::~Wsafile() { free(decodedFrames); @@ -73,12 +106,39 @@ Image * Wsafile::getPicture(Uint32 FrameNumber, SDL_Palette *palette) { + if(WsaFilesize == -1){ +// ImagePtr m_surface = m_fakeWsa; //ImagePtr(new Image(UPoint(10,10))); + Image* m_surface = new Image(UPoint(320,240)); + + std::string m_caption = m_text; + Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT"); + + Uint16 textw, texth; + + font->extents(m_caption.c_str(), textw, texth); + + /*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(0); + + font->render(m_caption.c_str(), m_surface->getSurface(), + m_surface->getSurface()->w/2 - textw/2, + m_surface->getSurface()->h/2 - texth/2, 49); + + return m_surface; +// return m_fakeWsa->getCopy().get(); + } + if(WsaFilesize == -2){ + return m_cpsFile->getPicture(); + } + if(FrameNumber >= NumFrames) { return NULL; } SDL_Surface * pic; - unsigned char * Frame = decodedFrames + (FrameNumber * SizeX * SizeY); + uint8_t * Frame = decodedFrames + (FrameNumber * SizeX * SizeY); // create new picture surface if((pic = SDL_CreateRGBSurface(SDL_SWSURFACE,SizeX,SizeY,8,0,0,0,0))== NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 15:06:48
|
Revision: 241 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=241&view=rev Author: dvalin Date: 2008-05-02 08:06:29 -0700 (Fri, 02 May 2008) Log Message: ----------- revert to 0x0D being '\n', font drawing should be able to handle newline Modified Paths: -------------- branches/dunks/src/pakfile/Stringfile.cpp Modified: branches/dunks/src/pakfile/Stringfile.cpp =================================================================== --- branches/dunks/src/pakfile/Stringfile.cpp 2008-05-02 15:04:41 UTC (rev 240) +++ branches/dunks/src/pakfile/Stringfile.cpp 2008-05-02 15:06:29 UTC (rev 241) @@ -81,7 +81,7 @@ case 0x04: break; case 0x03: break; case 0x0C: out += "\n"; break; - case 0x0D: out += " "; break; + case 0x0D: out += "\n"; break; case 0x80: out += " t"; break; case 0x81: out += " a"; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 15:04:55
|
Revision: 240 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=240&view=rev Author: dvalin Date: 2008-05-02 08:04:41 -0700 (Fri, 02 May 2008) Log Message: ----------- rename sound name from Intro_Battle to Intro_BattleForDune 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-02 01:38:04 UTC (rev 239) +++ branches/dunks/include/DataCache.h 2008-05-02 15:04:41 UTC (rev 240) @@ -338,7 +338,7 @@ Intro_3Houses, Intro_AndNow, Intro_HasArrived, - Intro_Battle, + Intro_BattleForDune, Intro_Begins, Intro_Blaster, Intro_TheBuilding, Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-05-02 01:38:04 UTC (rev 239) +++ branches/dunks/src/DataCache.cpp 2008-05-02 15:04:41 UTC (rev 240) @@ -370,7 +370,7 @@ addSoundChunk(Intro_3Houses, getChunkFromFile("INTROVOC:3HOUSES.VOC")); addSoundChunk(Intro_AndNow, getChunkFromFile("INTROVOC:ANDNOW.VOC")); addSoundChunk(Intro_HasArrived, getChunkFromFile("INTROVOC:ARRIVED.VOC")); - addSoundChunk(Intro_Battle, getChunkFromFile("INTROVOC:BATTLE.VOC")); + addSoundChunk(Intro_BattleForDune, getChunkFromFile("INTROVOC:BATTLE.VOC")); addSoundChunk(Intro_Begins, getChunkFromFile("INTROVOC:BEGINS.VOC")); addSoundChunk(Intro_Blaster, getChunkFromFile("INTROVOC:BLASTER.VOC")); addSoundChunk(Intro_TheBuilding, getChunkFromFile("INTROVOC:BLDING.VOC")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 01:38:07
|
Revision: 239 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=239&view=rev Author: dvalin Date: 2008-05-01 18:38:04 -0700 (Thu, 01 May 2008) Log Message: ----------- give the text for emperor the correct color Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-02 01:18:17 UTC (rev 238) +++ branches/dunks/src/IntroState.cpp 2008-05-02 01:38:04 UTC (rev 239) @@ -14,7 +14,7 @@ // IntroState::Frame IntroState::Frame::Frame(std::string filename, Transition in, Transition out, - bool continuation, uint16_t endWait) + bool continuation, uint8_t endWait) { m_filename = filename; m_transition_in = in; @@ -35,9 +35,8 @@ m_endWait = endWait; m_loop = videoLoop(0,0); m_loopTime = videoLoop(0,0); -/* if(endWait) - setLoop(m_wsa->getNumFrames(), m_wsa->getNumFrames(), 1, 30); -*/ + m_textColor = 49; + Application::Instance()->RootWidget()->addChild(m_container); } @@ -112,6 +111,11 @@ m_loopTime = videoLoop(numLoops, wait); } +void IntroState::Frame::setTextColor(uint8_t textColor) +{ + m_textColor = textColor; +} + void IntroState::Frame::Load(Frame* lastframe) { printf("intro loading %s\n", m_filename.c_str()); @@ -175,7 +179,7 @@ if(m_introStrings.size() > 0){ if(m_framesPlayed == m_introStrings[0].first){ if(m_subText != NULL) m_container->deleteChild(m_subText); - m_subText = new Label(m_introStrings[0].second, 49, 0); + m_subText = new Label(m_introStrings[0].second, m_textColor, 0); m_introStrings.erase(m_introStrings.begin()); m_container->setPosition(UPoint(50, 420)); m_container->addChild(m_subText); @@ -386,6 +390,7 @@ false); frame->setFps(0.095); frame->addText(0, DataCache::Instance()->getIntroString(9)); + frame->setTextColor(208); frame->concatSound(0, Intro_TheHouse); frame->concatSound(0, Intro_ThatProduces); frame->concatSound(0, Intro_TheMostSpice); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 01:18:20
|
Revision: 238 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=238&view=rev Author: dvalin Date: 2008-05-01 18:18:17 -0700 (Thu, 01 May 2008) Log Message: ----------- * delete text labels in doHolding() rather than in Frame object destructor * yet more timing fixes.. Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-02 01:06:12 UTC (rev 237) +++ branches/dunks/src/IntroState.cpp 2008-05-02 01:18:17 UTC (rev 238) @@ -140,7 +140,6 @@ if(m_endWait && !m_loop.first) setLoop(m_wsa->getNumFrames(), m_wsa->getNumFrames(), 1, m_endWait); - } bool IntroState::Frame::Execute(float dt) @@ -173,14 +172,6 @@ void IntroState::Frame::doPlaying(float dt) { - std::cout << "\n\nframes played:\t\t" << (int)m_framesPlayed << std::endl; - /*m_framesPlayed++; - if(m_numLoops != 0 && m_currentFrame == m_loop.first) - { - m_currentFrame = m_loop.second; - m_numLoops--; - }*/ - if(m_introStrings.size() > 0){ if(m_framesPlayed == m_introStrings[0].first){ if(m_subText != NULL) m_container->deleteChild(m_subText); @@ -207,19 +198,6 @@ } } -/* if(m_loopTime.first != 0 && m_currentFrame == m_loop.first) - { - m_currentFrame = m_loop.second; - m_loopTime.first--; - }*/ - -/* if(m_numLoops != 0 && m_currentFrame == m_loop.first) - { - std::cout << "jaggu!" << std::endl; - m_currentFrame = m_loop.second; - m_numLoops--; - } -*/ m_frametime += dt; if (m_frametime > m_wsa->getFPS()) @@ -317,34 +295,12 @@ void IntroState::Frame::doHolding(float dt) { -/* uint16_t startTicks = SDL_GetTicks(); - - SDL_Event event; - bool wait = true; - while(wait && (SDL_GetTicks() - startTicks) < m_endWait){ - while(SDL_PollEvent(&event)){ - switch (event.type){ - case (SDL_KEYDOWN): - switch( event.key.keysym.sym ){ - case SDLK_RETURN: - case SDLK_SPACE: - 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; + if(m_subText != NULL) m_container->deleteChild(m_subText); } IntroState::Frame::~Frame() { - if(m_subText != NULL) m_container->deleteChild(m_subText); } // ------------------------------------------------------------------ // IntroState @@ -441,14 +397,14 @@ frame->concatSound(61, Intro_RulesOfEngagement); frame->addText(61, DataCache::Instance()->getIntroString(10)); - frame->addText(66, DataCache::Instance()->getIntroString(11)); + frame->addText(83, DataCache::Instance()->getIntroString(11)); enque(frame); frame = new Frame("INTRO:INTRO4.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 10); - frame->addText(10, DataCache::Instance()->getIntroString(12)); + frame->addText(11, DataCache::Instance()->getIntroString(12)); frame->concatSound(11, Intro_VastArmies); frame->concatSound(11, Intro_HasArrived); frame->addText(25, DataCache::Instance()->getIntroString(13)); @@ -458,7 +414,7 @@ frame->concatSound(25, Intro_OfDune); enque(frame); - frame = new Frame(DataCache::Instance()->getIntroString(13) , +/* frame = new Frame(DataCache::Instance()->getIntroString(13) , Frame::NO_TRANSITION, Frame::FADE_OUT, false, 20); @@ -467,7 +423,7 @@ frame->concatSound(0, Intro_ForControl); frame->concatSound(0, Intro_OfDune); enque(frame); - +*/ frame = new Frame("INTRO:INTRO6.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-02 01:06:16
|
Revision: 237 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=237&view=rev Author: dvalin Date: 2008-05-01 18:06:12 -0700 (Thu, 01 May 2008) Log Message: ----------- * add loops to the appropriate scenes * make waiting rely on (fake) frames rather than time * more timing fixes Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 22:52:34 UTC (rev 236) +++ branches/dunks/src/IntroState.cpp 2008-05-02 01:06:12 UTC (rev 237) @@ -33,7 +33,11 @@ m_song = -1; m_fps = 0; m_endWait = endWait; - + m_loop = videoLoop(0,0); + m_loopTime = videoLoop(0,0); +/* if(endWait) + setLoop(m_wsa->getNumFrames(), m_wsa->getNumFrames(), 1, 30); +*/ Application::Instance()->RootWidget()->addChild(m_container); } @@ -102,10 +106,14 @@ m_fps = fps; } +void IntroState::Frame::setLoop(uint8_t loopAt, uint8_t rewindTo, uint8_t numLoops, uint8_t wait) +{ + m_loop = videoLoop(loopAt, rewindTo); + m_loopTime = videoLoop(numLoops, wait); +} + void IntroState::Frame::Load(Frame* lastframe) { -// SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; - printf("intro loading %s\n", m_filename.c_str()); int len; @@ -124,10 +132,15 @@ m_frametime = 0; m_currentFrame = 0; + m_framesPlayed = 0; mb_finished = false; m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette)); m_scaledSurface = m_animSurface->getResized(2.0); + if(m_endWait && !m_loop.first) + setLoop(m_wsa->getNumFrames(), m_wsa->getNumFrames(), 1, m_endWait); + + } bool IntroState::Frame::Execute(float dt) @@ -160,8 +173,16 @@ void IntroState::Frame::doPlaying(float dt) { + std::cout << "\n\nframes played:\t\t" << (int)m_framesPlayed << std::endl; + /*m_framesPlayed++; + if(m_numLoops != 0 && m_currentFrame == m_loop.first) + { + m_currentFrame = m_loop.second; + m_numLoops--; + }*/ + if(m_introStrings.size() > 0){ - if(m_currentFrame == m_introStrings[0].first){ + if(m_framesPlayed == 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()); @@ -171,14 +192,14 @@ } if(m_introSounds.size() > 0){ - if(m_currentFrame == m_introSounds[0].first){ + if(m_framesPlayed == m_introSounds[0].first){ Mix_Chunk* sound = DataCache::Instance()->getSoundChunk(m_introSounds[0].second); Application::Instance()->playSound(sound); m_introSounds.erase(m_introSounds.begin()); } } if(m_soundChunks.size() > 0){ - if(m_currentFrame == m_soundChunks[0].first){ + if(m_framesPlayed == m_soundChunks[0].first){ Mix_Chunk* sound = m_soundChunks[0].second; Application::Instance()->playSound(sound); // delete(m_soundChunks[0].second); @@ -186,11 +207,33 @@ } } +/* if(m_loopTime.first != 0 && m_currentFrame == m_loop.first) + { + m_currentFrame = m_loop.second; + m_loopTime.first--; + }*/ + +/* if(m_numLoops != 0 && m_currentFrame == m_loop.first) + { + std::cout << "jaggu!" << std::endl; + m_currentFrame = m_loop.second; + m_numLoops--; + } +*/ m_frametime += dt; if (m_frametime > m_wsa->getFPS()) { - m_currentFrame ++; + if(!(m_currentFrame == m_loop.first - 1 && m_framesPlayed < m_loop.first + m_loopTime.second)) + m_currentFrame++; + if(m_loopTime.first != 0 && m_currentFrame == m_loop.first) + { + m_currentFrame = m_loop.second; + m_loopTime.first--; + } + + + m_framesPlayed++; m_frametime = 0.0f; if (m_currentFrame >= m_wsa->getNumFrames()) { @@ -274,7 +317,7 @@ void IntroState::Frame::doHolding(float dt) { - uint16_t startTicks = SDL_GetTicks(); +/* uint16_t startTicks = SDL_GetTicks(); SDL_Event event; bool wait = true; @@ -295,7 +338,7 @@ break; }}} } - +*/ m_state = TRANSITION_OUT; } @@ -315,7 +358,7 @@ frame = new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 5000); + false, 30); frame->setSong(0); frame->setPalette(WESTWOOD_PAL); enque(frame); @@ -323,32 +366,32 @@ frame = new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 2000); + false, 50); frame->setFps(0.05); frame->setSong(1); - frame->addSound(5, Intro_Dune); - frame->concatSound(48, Intro_TheBuilding); - frame->concatSound(48, Intro_OfADynasty); - frame->addText(48, "The Building of a Dynasty"); + frame->concatSound(66, Intro_Dune); + frame->concatSound(66, Intro_TheBuilding); + frame->concatSound(66, Intro_OfADynasty); + frame->addText(66, "The Building of a Dynasty"); enque(frame); frame = new Frame("INTRO:INTRO2.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 2000); - frame->concatSound(0, Intro_ThePlanetArrakis); - frame->concatSound(0, Intro_KnownAsDune); - frame->addText(0, DataCache::Instance()->getIntroString(3)); + false, 5); + frame->concatSound(5, Intro_ThePlanetArrakis); + frame->concatSound(5, Intro_KnownAsDune); + frame->addText(5, DataCache::Instance()->getIntroString(3)); enque(frame); frame = new Frame("INTRO:INTRO3.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 2000); + false, 30); frame->addSound(0, Intro_LandOfSand); frame->addText(0, DataCache::Instance()->getIntroString(4)); - frame->concatSound(23, Intro_Home); - frame->concatSound(23, Intro_OfTheSpice); + frame->concatSound(33, Intro_Home); + frame->concatSound(33, Intro_OfTheSpice); frame->concatSound(33, Intro_Melange); frame->addText(33, DataCache::Instance()->getIntroString(5)); enque(frame); @@ -356,7 +399,7 @@ frame = new Frame("INTRO:INTRO9.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 3000); + false, 2); frame->setFps(0.18); frame->addText(0, DataCache::Instance()->getIntroString(6)); frame->concatSound(0, Intro_TheSpice); @@ -374,7 +417,7 @@ frame = new Frame("INTRO:INTRO10.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 7500); + false, 25); frame->addText(0, DataCache::Instance()->getIntroString(8)); frame->concatSound(0, Intro_TheEmperor); frame->concatSound(0, Intro_HasProposedAChallenge); @@ -384,26 +427,27 @@ frame = new Frame("INTRO:INTRO11.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 2000); + false); + frame->setFps(0.095); frame->addText(0, DataCache::Instance()->getIntroString(9)); 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->setLoop(45, 0, 1, 15); + frame->concatSound(61, Intro_ThereAreNoSet); + frame->concatSound(61, Intro_Territories); + frame->concatSound(61, Intro_AndNo); + frame->concatSound(61, Intro_RulesOfEngagement); - frame->addText(41, DataCache::Instance()->getIntroString(10)); - frame->addText(44, DataCache::Instance()->getIntroString(11)); + frame->addText(61, DataCache::Instance()->getIntroString(10)); + frame->addText(66, DataCache::Instance()->getIntroString(11)); enque(frame); frame = new Frame("INTRO:INTRO4.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 3000); + false, 10); frame->addText(10, DataCache::Instance()->getIntroString(12)); frame->concatSound(11, Intro_VastArmies); frame->concatSound(11, Intro_HasArrived); @@ -417,13 +461,13 @@ frame = new Frame(DataCache::Instance()->getIntroString(13) , Frame::NO_TRANSITION, Frame::FADE_OUT, - false, 3000); + false, 20); frame->concatSound(0, Intro_AndNow); frame->concatSound(0, Intro_3Houses); frame->concatSound(0, Intro_ForControl); frame->concatSound(0, Intro_OfDune); enque(frame); -* + frame = new Frame("INTRO:INTRO6.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, @@ -449,13 +493,13 @@ 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", Frame::NO_TRANSITION, Frame::FADE_OUT, - true, 2000); + true, 5); + frame->addSound(10, Intro_Missile_8); frame->addText(0, DataCache::Instance()->getIntroString(16)); enque(frame); @@ -490,6 +534,8 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false); + frame->setFps(0.2); + frame->setLoop(3, 0, 10, 0); frame->addText(0, DataCache::Instance()->getIntroString(18)); frame->concatSound(0, Intro_OnlyOneHouse); frame->concatSound(0, Intro_WillPrevail); @@ -514,11 +560,11 @@ enque(frame);*/ // seems nice to play this again ;) - frame = new Frame("INTRO:INTRO1.WSA", + /* frame = new Frame("INTRO:INTRO1.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false); - enque(frame); + 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 22:52:42
|
Revision: 236 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=236&view=rev Author: dvalin Date: 2008-05-01 15:52:34 -0700 (Thu, 01 May 2008) Log Message: ----------- * fix proper frame rate of scenes * fix timing of sounds Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 21:19:22 UTC (rev 235) +++ branches/dunks/src/IntroState.cpp 2008-05-01 22:52:34 UTC (rev 236) @@ -31,6 +31,7 @@ m_palette = DataCache::Instance()->getPalette(INTRO_PAL); m_song = -1; + m_fps = 0; m_endWait = endWait; Application::Instance()->RootWidget()->addChild(m_container); @@ -96,6 +97,11 @@ m_song = song; } +void IntroState::Frame::setFps(float fps) +{ + m_fps = fps; +} + void IntroState::Frame::Load(Frame* lastframe) { // SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette; @@ -109,11 +115,11 @@ if (m_continuation) { - m_wsa.reset(new Wsafile(data, len, lastframe->m_animSurface->getSurface())); + m_wsa.reset(new Wsafile(data, len, lastframe->m_animSurface->getSurface(), m_fps)); } else { - m_wsa.reset(new Wsafile(data, len)); + m_wsa.reset(new Wsafile(data, len, NULL, m_fps)); } m_frametime = 0; @@ -318,6 +324,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false, 2000); + frame->setFps(0.05); frame->setSong(1); frame->addSound(5, Intro_Dune); frame->concatSound(48, Intro_TheBuilding); @@ -350,6 +357,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false, 3000); + frame->setFps(0.18); frame->addText(0, DataCache::Instance()->getIntroString(6)); frame->concatSound(0, Intro_TheSpice); frame->concatSound(0, Intro_Controls); @@ -392,14 +400,13 @@ 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(10, DataCache::Instance()->getIntroString(12)); + frame->concatSound(11, Intro_VastArmies); + frame->concatSound(11, Intro_HasArrived); frame->addText(25, DataCache::Instance()->getIntroString(13)); frame->concatSound(25, Intro_AndNow); frame->concatSound(25, Intro_3Houses); @@ -407,10 +414,21 @@ frame->concatSound(25, Intro_OfDune); enque(frame); + frame = new Frame(DataCache::Instance()->getIntroString(13) , + Frame::NO_TRANSITION, + Frame::FADE_OUT, + false, 3000); + frame->concatSound(0, Intro_AndNow); + frame->concatSound(0, Intro_3Houses); + frame->concatSound(0, Intro_ForControl); + frame->concatSound(0, Intro_OfDune); + enque(frame); +* frame = new Frame("INTRO:INTRO6.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false); + frame->setFps(0.1); frame->addText(0, DataCache::Instance()->getIntroString(14)); frame->addSound(0, Intro_TheNobleAtreides); frame->addSound(31, Intro_Glass); @@ -448,8 +466,7 @@ 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(5, Sound_Gun); frame->addSound(8, Sound_Gun); enque(frame); @@ -457,14 +474,14 @@ Frame::NO_TRANSITION, Frame::NO_TRANSITION, true); - frame->addText(0, DataCache::Instance()->getIntroString(18)); enque(frame); + frame->addSound(1, Sound_Gun); + frame = new Frame("INTRO:INTRO8C.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, - true, 2000); - frame->addText(0, DataCache::Instance()->getIntroString(19)); + true); frame->addSound(16, Sound_ExplosionSmall); frame->addSound(25, Sound_ExplosionMedium); enque(frame); @@ -473,7 +490,7 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, false); - frame->addText(0, DataCache::Instance()->getIntroString(20)); + frame->addText(0, DataCache::Instance()->getIntroString(18)); frame->concatSound(0, Intro_OnlyOneHouse); frame->concatSound(0, Intro_WillPrevail); enque(frame); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dv...@us...> - 2008-05-01 21:19:27
|
Revision: 235 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=235&view=rev Author: dvalin Date: 2008-05-01 14:19:22 -0700 (Thu, 01 May 2008) Log Message: ----------- make it possible to set fps for cut scenes.. Modified Paths: -------------- branches/dunks/include/DataCache.h branches/dunks/include/pakfile/Wsafile.h branches/dunks/src/DataCache.cpp branches/dunks/src/pakfile/Wsafile.cpp Modified: branches/dunks/include/DataCache.h =================================================================== --- branches/dunks/include/DataCache.h 2008-05-01 20:35:05 UTC (rev 234) +++ branches/dunks/include/DataCache.h 2008-05-01 21:19:22 UTC (rev 235) @@ -337,6 +337,7 @@ Sound_RocketSmall, Intro_3Houses, Intro_AndNow, + Intro_HasArrived, Intro_Battle, Intro_Begins, Intro_Blaster, @@ -358,7 +359,7 @@ Intro_TheHouse, Intro_TheMostSpice, Intro_TheEmpire, - Intro_ThereAreNoSetTerritories, + Intro_ThereAreNoSet, Intro_ThatProduces, Intro_RulesOfEngagement, Intro_Territories, Modified: branches/dunks/include/pakfile/Wsafile.h =================================================================== --- branches/dunks/include/pakfile/Wsafile.h 2008-05-01 20:35:05 UTC (rev 234) +++ branches/dunks/include/pakfile/Wsafile.h 2008-05-01 21:19:22 UTC (rev 235) @@ -16,7 +16,7 @@ { public: Wsafile(unsigned char * bufFiledata, int bufsize, - SDL_Surface* lastframe = NULL); + SDL_Surface* lastframe = NULL, float setFps = 0 ); ~Wsafile(); Image * getPicture(Uint32 FrameNumber, SDL_Palette *palette); Modified: branches/dunks/src/DataCache.cpp =================================================================== --- branches/dunks/src/DataCache.cpp 2008-05-01 20:35:05 UTC (rev 234) +++ branches/dunks/src/DataCache.cpp 2008-05-01 21:19:22 UTC (rev 235) @@ -369,7 +369,8 @@ addSoundChunk(Intro_3Houses, getChunkFromFile("INTROVOC:3HOUSES.VOC")); addSoundChunk(Intro_AndNow, getChunkFromFile("INTROVOC:ANDNOW.VOC")); - addSoundChunk(Intro_Battle, getChunkFromFile("INTROVOC:ARRIVED.VOC")); + addSoundChunk(Intro_HasArrived, getChunkFromFile("INTROVOC:ARRIVED.VOC")); + addSoundChunk(Intro_Battle, getChunkFromFile("INTROVOC:BATTLE.VOC")); addSoundChunk(Intro_Begins, getChunkFromFile("INTROVOC:BEGINS.VOC")); addSoundChunk(Intro_Blaster, getChunkFromFile("INTROVOC:BLASTER.VOC")); addSoundChunk(Intro_TheBuilding, getChunkFromFile("INTROVOC:BLDING.VOC")); @@ -390,7 +391,7 @@ addSoundChunk(Intro_TheHouse, getChunkFromFile("INTROVOC:EHOUSE.VOC")); addSoundChunk(Intro_TheMostSpice, getChunkFromFile("INTROVOC:EMOST.VOC")); addSoundChunk(Intro_TheEmpire, getChunkFromFile("INTROVOC:EMPIRE.VOC")); - addSoundChunk(Intro_ThereAreNoSetTerritories, getChunkFromFile("INTROVOC:ENOSET.VOC")); + addSoundChunk(Intro_ThereAreNoSet, getChunkFromFile("INTROVOC:ENOSET.VOC")); addSoundChunk(Intro_ThatProduces, getChunkFromFile("INTROVOC:EPRODUCE.VOC")); addSoundChunk(Intro_RulesOfEngagement, getChunkFromFile("INTROVOC:ERULES.VOC")); addSoundChunk(Intro_Territories, getChunkFromFile("INTROVOC:ETERRIT.VOC")); Modified: branches/dunks/src/pakfile/Wsafile.cpp =================================================================== --- branches/dunks/src/pakfile/Wsafile.cpp 2008-05-01 20:35:05 UTC (rev 234) +++ branches/dunks/src/pakfile/Wsafile.cpp 2008-05-01 21:19:22 UTC (rev 235) @@ -5,7 +5,7 @@ #include <string.h> Wsafile::Wsafile(unsigned char * bufFiledata, int bufsize, - SDL_Surface* lastframe ) : Decode() + SDL_Surface* lastframe, float setFps ) : Decode() { Filedata = bufFiledata; WsaFilesize = bufsize; @@ -35,7 +35,10 @@ } // surely /1000.0f not 100?! - fps = (FramesPer1024ms / 1024.0f) / 100.0f; + if(setFps) + fps = setFps; + else + fps = (FramesPer1024ms / 1024.0f) / 100.0f; printf("FramesPer1024ms = %d\n", FramesPer1024ms); printf("FPS = %.3f\n", fps); 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. |
From: <dv...@us...> - 2008-05-01 18:58:50
|
Revision: 233 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=233&view=rev Author: dvalin Date: 2008-05-01 11:58:21 -0700 (Thu, 01 May 2008) Log Message: ----------- add some more sounds to intro.. Modified Paths: -------------- branches/dunks/src/IntroState.cpp Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 13:07:27 UTC (rev 232) +++ branches/dunks/src/IntroState.cpp 2008-05-01 18:58:21 UTC (rev 233) @@ -259,7 +259,7 @@ // m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. // DataCache::Instance()->getCreditsString(20))); -/* frame = new Frame("INTRO:WESTWOOD.WSA", + frame = new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 5000); @@ -298,18 +298,18 @@ frame->addSound(39, Intro_Melange); frame->addText(33, DataCache::Instance()->getIntroString(5)); enque(frame); -*/ + frame = new Frame("INTRO:INTRO9.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 3000); frame->addSound(0, Intro_TheSpice); - frame->addSound(3, Intro_Controls); - frame->addSound(7, Intro_TheEmpire); - frame->addSound(3, Intro_ControlsDune); - frame->addSound(9, Intro_WhoEver); - frame->addSound(10, Intro_Clank); - frame->addSound(10, Intro_ControlsTheSpice); + 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)); @@ -321,6 +321,7 @@ Frame::FADE_OUT, false, 2000); frame->addText(0, DataCache::Instance()->getIntroString(8)); + frame->addSong(0, Intro_TheEmperor); enque(frame); frame = new Frame("INTRO:INTRO11.WSA", 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:07:49
|
Revision: 232 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=232&view=rev Author: dvalin Date: 2008-05-01 06:07:27 -0700 (Thu, 01 May 2008) Log Message: ----------- start adding sounds.. 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 13:01:31 UTC (rev 231) +++ branches/dunks/include/IntroState.h 2008-05-01 13:07:27 UTC (rev 232) @@ -14,7 +14,7 @@ #include <string> typedef std::pair <uint16_t, std::string> introText; -typedef std::pair <uint16_t, Mix_Chunk*> introSound; +typedef std::pair <uint16_t, Sound_enum> introSound; class StringFile; class Button; @@ -47,6 +47,7 @@ bool Execute(float ft); void Load(Frame* lastframe); void addText(uint16_t playAt, std::string introText); + void addSound(uint16_t playAt, Sound_enum sound); void setPalette(Palette_enum palette); void setSong(uint8_t song); @@ -73,6 +74,8 @@ Label* m_subText; Container* m_container; std::vector<introText> m_introStrings; + std::vector<introSound> m_introSounds; + SDL_Palette* m_palette; Modified: branches/dunks/src/IntroState.cpp =================================================================== --- branches/dunks/src/IntroState.cpp 2008-05-01 13:01:31 UTC (rev 231) +++ branches/dunks/src/IntroState.cpp 2008-05-01 13:07:27 UTC (rev 232) @@ -42,6 +42,11 @@ m_introStrings.push_back(introText(playAt, text)); } +void IntroState::Frame::addSound(uint16_t playAt, Sound_enum sound) +{ + m_introSounds.push_back(introSound(playAt, sound)); +} + void IntroState::Frame::setPalette(Palette_enum palette) { m_palette = DataCache::Instance()->getPalette(palette); @@ -120,6 +125,14 @@ } } + if(m_introSounds.size() > 0){ + if(m_currentFrame == m_introSounds[0].first){ + Mix_Chunk* sound = DataCache::Instance()->getSoundChunk(m_introSounds[0].second); + Application::Instance()->playSound(sound); + m_introSounds.erase(m_introSounds.begin()); + } + } + m_frametime += dt; if (m_frametime > m_wsa->getFPS()) @@ -246,7 +259,7 @@ // m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet.. // DataCache::Instance()->getCreditsString(20))); - frame = new Frame("INTRO:WESTWOOD.WSA", +/* frame = new Frame("INTRO:WESTWOOD.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 5000); @@ -259,13 +272,18 @@ Frame::FADE_OUT, false, 2000); frame->setSong(1); + frame->addSound(5, Intro_Dune); + frame->addSound(25, Intro_TheBuilding); + frame->addSound(49, Intro_OfADynasty); frame->addText(48, "The Building of a Dynasty"); enque(frame); - - frame = new Frame("INTRO:INTRO2.WSA", + + frame = new Frame("INTRO:INTRO2.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 2000); + frame->addSound(0, Intro_ThePlanetArrakis); + frame->addSound(11, Intro_KnownAsDune); frame->addText(0, DataCache::Instance()->getIntroString(3)); enque(frame); @@ -273,14 +291,27 @@ Frame::NO_TRANSITION, Frame::FADE_OUT, 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->addText(33, DataCache::Instance()->getIntroString(5)); enque(frame); - +*/ frame = new Frame("INTRO:INTRO9.WSA", Frame::NO_TRANSITION, Frame::FADE_OUT, false, 3000); + frame->addSound(0, Intro_TheSpice); + frame->addSound(3, Intro_Controls); + frame->addSound(7, Intro_TheEmpire); + frame->addSound(3, Intro_ControlsDune); + frame->addSound(9, Intro_WhoEver); + frame->addSound(10, Intro_Clank); + frame->addSound(10, 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)); enque(frame); 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 12:19:56
|
Revision: 230 http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=230&view=rev Author: dvalin Date: 2008-05-01 05:19:38 -0700 (Thu, 01 May 2008) Log Message: ----------- '\n' gets rendered as '!' by font manager, make it be read as ' ' in stead.. Modified Paths: -------------- branches/dunks/src/pakfile/Stringfile.cpp Modified: branches/dunks/src/pakfile/Stringfile.cpp =================================================================== --- branches/dunks/src/pakfile/Stringfile.cpp 2008-05-01 12:12:01 UTC (rev 229) +++ branches/dunks/src/pakfile/Stringfile.cpp 2008-05-01 12:19:38 UTC (rev 230) @@ -81,7 +81,7 @@ case 0x04: break; case 0x03: break; case 0x0C: out += "\n"; break; - case 0x0D: out += "\n"; break; + case 0x0D: out += " "; break; case 0x80: out += " t"; break; case 0x81: out += " a"; break; 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 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. |