|
From: <dv...@us...> - 2008-04-28 19:51:27
|
Revision: 182
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=182&view=rev
Author: dvalin
Date: 2008-04-28 12:50:37 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
make text colour overridable
Modified Paths:
--------------
branches/dunks/include/gui2/Label.h
branches/dunks/src/gui2/Label.cpp
Modified: branches/dunks/include/gui2/Label.h
===================================================================
--- branches/dunks/include/gui2/Label.h 2008-04-28 18:46:29 UTC (rev 181)
+++ branches/dunks/include/gui2/Label.h 2008-04-28 19:50:37 UTC (rev 182)
@@ -16,9 +16,10 @@
/*!
Caption of label should always be set when constructing label
@param caption std::string a caption of label
- @param bgcolour sets background colour of label. 115(dune yellow) by default
+ @param textColour sets text colour of label. 49(dune red) by default
+ @param bgColour sets background colour of label. 115(dune yellow) by default
*/
- Label(std::string caption, int bgcolour = 115);
+ Label(std::string caption, int textColour = 49, int bgColour = 115);
~Label();
//@}
Modified: branches/dunks/src/gui2/Label.cpp
===================================================================
--- branches/dunks/src/gui2/Label.cpp 2008-04-28 18:46:29 UTC (rev 181)
+++ branches/dunks/src/gui2/Label.cpp 2008-04-28 19:50:37 UTC (rev 182)
@@ -5,7 +5,7 @@
#include "Application.h"
#include "Gfx.h"
-Label::Label(std::string caption, int bgcolour)
+Label::Label(std::string caption, int textColour, int bgColour)
{
m_caption = caption;
Font* font = FontManager::Instance()->getFont("INTRO:INTRO.FNT");
@@ -17,11 +17,11 @@
/*If surface width was not %4 == 0 then you'd get a text in italics */
m_surface.reset(new Image(UPoint(textw + 4-(textw%4) , texth)));
- m_surface->fillRect(bgcolour);
+ m_surface->fillRect(bgColour);
font->render(m_caption.c_str(), m_surface,
m_surface->getSurface()->w/2 - textw/2,
- m_surface->getSurface()->h/2 - texth/2, 49);
+ m_surface->getSurface()->h/2 - texth/2, textColour);
// Is it needed in case of label. It's not clickable or anything.
// Widget::setSize(SPoint(textw, texth));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-28 19:52:44
|
Revision: 183
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=183&view=rev
Author: dvalin
Date: 2008-04-28 12:52:22 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
add methods for fetching briefing text
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-28 19:50:37 UTC (rev 182)
+++ branches/dunks/include/DataCache.h 2008-04-28 19:52:22 UTC (rev 183)
@@ -13,7 +13,7 @@
#include "pakfile/Palette.h"
#include "pakfile/Shpfile.h"
#include "pakfile/Wsafile.h"
-//#include "pakfile/BriefingText.h"
+#include "pakfile/Stringfile.h"
#include "houses.h"
#include <map>
@@ -191,7 +191,6 @@
UI_MentatProcced_Pressed,
UI_MentatRepeat,
UI_MentatRepeat_Pressed,
- UI_Mentat_BeneGesserit,
UI_PlanetBackground,
UI_MenuButtonBorder,
UI_DuneLegacy,
@@ -391,6 +390,8 @@
ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
Mix_Chunk* getSoundChunk(Sound_enum ID);
Mix_Chunk* concat2Chunks(Sound_enum ID1, Sound_enum ID2);
+ std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house);
+
// std::string getBriefingText(ObjPic_enum mission, ObjPic_enum texttype, ObjPic_enum house);
// std::string getBriefingText(ObjPic_enum i);
@@ -405,7 +406,7 @@
Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3);
Mix_Chunk* createEmptyChunk();
-// BriefingText* BriefingStrings[1];
+ Stringfile* BriefingStrings[3];
Mix_Chunk* soundChunk[NUM_SOUNDCHUNK];
};
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-28 19:50:37 UTC (rev 182)
+++ branches/dunks/src/DataCache.cpp 2008-04-28 19:52:22 UTC (rev 183)
@@ -15,9 +15,6 @@
Shpfile* units;
Shpfile* units1;
Shpfile* units2;
- Cpsfile* herald;
- Shpfile* mentat;
-// CpsfilePtr mentatm;
@@ -31,18 +28,24 @@
data = ResMan::Instance()->readFile("DUNE:UNITS2.SHP", &len);
units2 = new Shpfile(data, len);
+ data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len);
+ ShpfilePtr mentat (new Shpfile(data, len));
+
data = ResMan::Instance()->readFile("ENGLISH:HERALD.ENG", &len);
- herald = new Cpsfile(data, len);
-
- data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len);
- mentat = new Shpfile(data, len);
-
- data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
-
+ CpsfilePtr herald(new Cpsfile(data, len));
+ data = ResMan::Instance()->readFile("DUNE:MENTATA.CPS", &len);
+ CpsfilePtr mentata (new Cpsfile(data, len));
+ data = ResMan::Instance()->readFile("DUNE:MENTATO.CPS", &len);
+ CpsfilePtr mentato (new Cpsfile(data, len));
+ data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len);
+ CpsfilePtr mentath (new Cpsfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len);
-
CpsfilePtr mentatm (new Cpsfile(data, len));
+// Anim[Anim_OrdosPlanet]->setFrameRate(12);
+/* data = ResMan::Instance()->readFile("MENTAT:FORDOS.WSA", &len);
+ WsafilePtr ordosplanet (new Wsafile(data, len));
+*/
int maplen;
unsigned char * mapdata;
@@ -111,17 +114,25 @@
addObjPic(ObjPic_SandDamage, units1->getPictureArray(3,1,5|TILE_NORMAL,6|TILE_NORMAL,7|TILE_NORMAL));
addObjPic(ObjPic_Terrain_Hidden, icon->getPictureRow(108,123));
- //addGuiPic(UI_HouseChoiceBackground, herald->getPicture());
+ addGuiPic(UI_HouseChoiceBackground, herald->getPicture());
addGuiPic(UI_MentatYes, mentat->getPicture(0));
addGuiPic(UI_MentatYes_Pressed, mentat->getPicture(1));
addGuiPic(UI_MentatNo, mentat->getPicture(2));
addGuiPic(UI_MentatNo_Pressed, mentat->getPicture(3));
+ addGuiPic(UI_MentatBackground, mentata->getPicture(), HOUSE_ATREIDES);
+ addGuiPic(UI_MentatBackground, mentata->getPicture(), HOUSE_ORDOS);
+ addGuiPic(UI_MentatBackground, mentato->getPicture(), HOUSE_FREMEN);
+ addGuiPic(UI_MentatBackground, mentato->getPicture(), HOUSE_MERCENARY);
+ addGuiPic(UI_MentatBackground, mentath->getPicture(), HOUSE_HARKONNEN);
+
+ //addAnim(Anim_OrdosPlanet, ordosplanet);
+
data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
Palettefile tmp (data, len);
SDL_Palette * pal = tmp.getPalette();
- addGuiPic(UI_Mentat_BeneGesserit, mentatm->getPicture(pal));
+ addGuiPic(UI_MentatBackground, mentatm->getPicture(pal), HOUSE_SARDAUKAR);
addSoundChunk(YesSir, getChunkFromFile("VOC:ZREPORT1.VOC"));
addSoundChunk(Reporting, getChunkFromFile("VOC:ZREPORT2.VOC"));
@@ -215,6 +226,27 @@
addSoundChunk(Intro_WhoEver, getChunkFromFile("INTROVOC:WHOEVER.VOC"));
addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC"));
addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC"));
+
+ BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG");
+ BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
+ BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
+/* SDL_RWops* text[3];
+ data = ResMan::Instance()->readFile("TEXTA.ENG", &len);
+ text[0] = SDL_RWFromMem(data, len);
+ data = ResMan::Instance()->readFile("TEXTO.ENG", &len);
+ text[1] = SDL_RWFromMem(data, len);
+ data = ResMan::Instance()->readFile("TEXTH.ENG", &len);
+ text[2] = SDL_RWFromMem(data, len);
+
+
+ for(int i=0;i<3;i++) {
+ if(text[i] == NULL) {
+ fprintf(stderr,"DataManager::DataManager: Can not open language file\n");
+ exit(EXIT_FAILURE);
+ }
+ BriefingStrings[i] = new Stringfile();
+ SDL_RWclose(text[i]);
+ } */
}
void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) {
@@ -312,15 +344,15 @@
return returnChunk;
}
-/*
-std::string DataCache::getBriefingText(ObjPic_enum mission, ObjPic_enum texttype, int house) {
- return BriefingStrings[0]->getString(0,0);
+
+std::string DataCache::getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house) {
+ return BriefingStrings[house]->getString(mission,textType);
}
-std::string DataCache::getBriefingText(int i){
+/*std::string DataCache::getBriefingText(int i){
return BriefingStrings[0]->getString(i);
-}
-*/
+}*/
+
Mix_Chunk* DataCache::concat2Chunks(Sound_enum ID1, Sound_enum ID2)
{
return concat2Chunks(soundChunk[ID1], soundChunk[ID2]);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-28 21:52:19
|
Revision: 186
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=186&view=rev
Author: dvalin
Date: 2008-04-28 14:52:15 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
add getAnimation()
Modified Paths:
--------------
branches/dunks/include/pakfile/Shpfile.h
branches/dunks/src/pakfile/Shpfile.cpp
Modified: branches/dunks/include/pakfile/Shpfile.h
===================================================================
--- branches/dunks/include/pakfile/Shpfile.h 2008-04-28 21:29:23 UTC (rev 185)
+++ branches/dunks/include/pakfile/Shpfile.h 2008-04-28 21:52:15 UTC (rev 186)
@@ -19,7 +19,7 @@
Uint32 EndOffset;
};
-
+class Animation;
class Shpfile;
typedef boost::shared_ptr<Shpfile> ShpfilePtr;
@@ -60,6 +60,17 @@
@return picture in this shp-File containing all specified pictures
*/
Image * getPictureArray(unsigned int tilesX, unsigned int tilesY, ...);
+ /// Returns an animation
+/*!
+ This method returns a new animation object with all pictures from startindex to endindex
+ in it. The returned pointer should be freed with delete if no longer needed. If an error
+ occured, NULL is returned.
+ @param startindex index of the first picture
+ @param endindex index of the last picture
+ @param SetColorKey if true, black is set as transparency
+ @return a new animation object or NULL on error
+*/
+ Animation* getAnimation(unsigned int startindex, unsigned int endindex, bool SetColorKey=true);
inline int getNumFiles() {return (int) NumFiles;};
Modified: branches/dunks/src/pakfile/Shpfile.cpp
===================================================================
--- branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 21:29:23 UTC (rev 185)
+++ branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 21:52:15 UTC (rev 186)
@@ -1,6 +1,7 @@
#include "Application.h"
#include "pakfile/Shpfile.h"
+#include "pakfile/Animation."
#include <SDL_endian.h>
#include <stdlib.h>
#include <string.h>
@@ -318,6 +319,35 @@
}
+/// Returns an animation
+/**
+ This method returns a new animation object with all pictures from startindex to endindex
+ in it. The returned pointer should be freed with delete if no longer needed. If an error
+ occured, NULL is returned.
+ \param startindex index of the first picture
+ \param endindex index of the last picture
+ \param SetColorKey if true, black is set as transparency
+ \return a new animation object or NULL on error
+*/
+Animation* Shpfile::getAnimation(unsigned int startindex, unsigned int endindex, bool SetColorKey)
+{
+ Animation* tmpAnimation;
+ Image* tmp;
+
+ if((tmpAnimation = new Animation()) == NULL) {
+ return NULL;
+ }
+
+ for(unsigned int i = startindex; i <= endindex; i++) {
+ if((tmp = getPicture(i)) == NULL) {
+ delete tmpAnimation;
+ return NULL;
+ }
+ tmpAnimation->addFrame(tmp,SetColorKey);
+ }
+ return tmpAnimation;
+}
+
void Shpfile::readIndex()
{
// First get number of files in shp-file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-28 21:57:10
|
Revision: 188
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=188&view=rev
Author: dvalin
Date: 2008-04-28 14:57:04 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
add the remaining animations
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-28 21:55:02 UTC (rev 187)
+++ branches/dunks/include/DataCache.h 2008-04-28 21:57:04 UTC (rev 188)
@@ -21,6 +21,7 @@
#define NUM_MAPCHOICEPIECES 28
#define NUM_MAPCHOICEARROWS 9
+class Animation;
// ObjPics
typedef enum {
@@ -385,9 +386,12 @@
public:
void addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN);
void addGuiPic(GuiPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN);
+ void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0);
+ void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0);
void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp);
ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
+ Animation* getAnimation(Animation_enum id);
Mix_Chunk* getSoundChunk(Sound_enum ID);
Mix_Chunk* concat2Chunks(Sound_enum ID1, Sound_enum ID2);
std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house);
@@ -406,6 +410,7 @@
Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3);
Mix_Chunk* createEmptyChunk();
+ Animation* Anim[NUM_ANIMATION];
Stringfile* BriefingStrings[3];
Mix_Chunk* soundChunk[NUM_SOUNDCHUNK];
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-28 21:55:02 UTC (rev 187)
+++ branches/dunks/src/DataCache.cpp 2008-04-28 21:57:04 UTC (rev 188)
@@ -135,28 +135,17 @@
addObjPic(ObjPic_SandDamage, units1->getPictureArray(3,1,5|TILE_NORMAL,6|TILE_NORMAL,7|TILE_NORMAL));
addObjPic(ObjPic_Terrain_Hidden, icon->getPictureRow(108,123));
- /*Anim[Anim_AtreidesEyes] = menshpa->getAnimation(0,4,true,true);
- Anim[Anim_AtreidesEyes]->setFrameRate(0.5);
- Anim[Anim_AtreidesMouth] = menshpa->getAnimation(5,9,true,true);
- Anim[Anim_AtreidesMouth]->setFrameRate(5.0);
- Anim[Anim_AtreidesShoulder] = menshpa->getAnimation(10,10,true,true);
- Anim[Anim_AtreidesShoulder]->setFrameRate(1.0);
- Anim[Anim_AtreidesBook] = menshpa->getAnimation(11,12,true,true);
- Anim[Anim_AtreidesBook]->setFrameRate(0.1);
- Anim[Anim_HarkonnenEyes] = menshph->getAnimation(0,4,true,true);
- Anim[Anim_HarkonnenEyes]->setFrameRate(0.3);
- Anim[Anim_HarkonnenMouth] = menshph->getAnimation(5,9,true,true);
- Anim[Anim_HarkonnenMouth]->setFrameRate(5.0);
- Anim[Anim_HarkonnenShoulder] = menshph->getAnimation(10,10,true,true);
- Anim[Anim_HarkonnenShoulder]->setFrameRate(1.0);
- Anim[Anim_OrdosEyes] = menshpo->getAnimation(0,4,true,true);
- Anim[Anim_OrdosEyes]->setFrameRate(0.5);
- Anim[Anim_OrdosMouth] = menshpo->getAnimation(5,9,true,true);
- Anim[Anim_OrdosMouth]->setFrameRate(5.0);
- Anim[Anim_OrdosShoulder] = menshpo->getAnimation(10,10,true,true);
- Anim[Anim_OrdosShoulder]->setFrameRate(1.0);
- Anim[Anim_OrdosRing] = menshpo->getAnimation(11,14,true,true);
- Anim[Anim_OrdosRing]->setFrameRate(6.0);*/
+ addAnimation(Anim_AtreidesEyes, menshpa->getAnimation(0,4,true), 0.5);
+ addAnimation(Anim_AtreidesMouth, menshpa->getAnimation(5,9,true), 5.0);
+ addAnimation(Anim_AtreidesShoulder, menshpa->getAnimation(10,10,true), 1.0);
+ addAnimation(Anim_AtreidesBook, menshpa->getAnimation(11,12,true), 0.1);
+ addAnimation(Anim_HarkonnenEyes, menshph->getAnimation(0,4,true), 0.3);
+ addAnimation(Anim_HarkonnenMouth, menshph->getAnimation(5,9,true), 0.5);
+ addAnimation(Anim_HarkonnenShoulder, menshph->getAnimation(10,10,true), 1.0);
+ addAnimation(Anim_OrdosEyes, menshpo->getAnimation(0,4,true), 0.5);
+ addAnimation(Anim_OrdosMouth, menshpo->getAnimation(5,9,true), 5.0);
+ addAnimation(Anim_OrdosShoulder, menshpo->getAnimation(10,10,true), 1.0);
+ addAnimation(Anim_OrdosRing, menshpo->getAnimation(11,14,true), 6.0);
addAnimation(Anim_AtreidesPlanet, "MENTAT:FARTR.WSA", 12);
addAnimation(Anim_HarkonnenPlanet, "MENTAT:FHARK.WSA", 12);
addAnimation(Anim_OrdosPlanet, "MENTAT:FORDOS.WSA", 12);
@@ -426,19 +415,25 @@
return BriefingStrings[0]->getString(i);
}*/
-void DataCache::addAnimation(Animation_enum ID, std::string fileName, uint16_t frameRate) {
+void DataCache::addAnimation(Animation_enum ID, std::string fileName, double frameRate) {
int len;
uint8_t * data = ResMan::Instance()->readFile(fileName, &len);
WsafilePtr wsafile(new Wsafile(data, len));
SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette;
- Animation* ret = wsafile->getAnimation(0,wsafile->getNumFrames() - 1, palette, false);
+ Animation* animation = wsafile->getAnimation(0,wsafile->getNumFrames() - 1, palette, false);
if(frameRate)
- ret->setFrameRate(frameRate);
- Anim[ID] = ret;
+ animation->setFrameRate(frameRate);
+ Anim[ID] = animation;
delete data;
}
+void DataCache::addAnimation(Animation_enum ID, Animation* animation, double frameRate) {
+ if(frameRate)
+ animation->setFrameRate(frameRate);
+ Anim[ID] = animation;
+}
+
Animation* DataCache::getAnimation(Animation_enum id) {
if(id >= NUM_ANIMATION) {
fprintf(stderr,"DataManager::getAnimation(): Animation with id %d is not available!\n",id);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-28 22:55:18
|
Revision: 190
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=190&view=rev
Author: dvalin
Date: 2008-04-28 15:55:16 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
store palette in class object
Modified Paths:
--------------
branches/dunks/include/pakfile/Cpsfile.h
branches/dunks/include/pakfile/Shpfile.h
branches/dunks/src/pakfile/Cpsfile.cpp
branches/dunks/src/pakfile/Shpfile.cpp
Modified: branches/dunks/include/pakfile/Cpsfile.h
===================================================================
--- branches/dunks/include/pakfile/Cpsfile.h 2008-04-28 22:36:54 UTC (rev 189)
+++ branches/dunks/include/pakfile/Cpsfile.h 2008-04-28 22:55:16 UTC (rev 190)
@@ -4,7 +4,6 @@
#include "Gfx.h"
#include "pakfile/Decode.h"
#include "SDL.h"
-#include "Application.h"
#include <boost/shared_ptr.hpp>
@@ -14,16 +13,17 @@
class Cpsfile : public Decode
{
public:
- Cpsfile(unsigned char * bufFiledata, int bufsize);
+ Cpsfile(unsigned char * bufFiledata, int bufsize, SDL_Palette* palette = NULL);
~Cpsfile();
- Image * getPicture(SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette);
+ Image * getPicture();
Image * getSubPicture(unsigned int left, unsigned int top, unsigned int width, unsigned int height);
private:
unsigned char* Filedata;
Uint32 CpsFilesize;
+ SDL_Palette * m_palette;
};
#endif // CPSFILE_H_INCLUDED
Modified: branches/dunks/include/pakfile/Shpfile.h
===================================================================
--- branches/dunks/include/pakfile/Shpfile.h 2008-04-28 22:36:54 UTC (rev 189)
+++ branches/dunks/include/pakfile/Shpfile.h 2008-04-28 22:55:16 UTC (rev 190)
@@ -21,12 +21,13 @@
class Animation;
class Shpfile;
+class SDL_Palette;
typedef boost::shared_ptr<Shpfile> ShpfilePtr;
class Shpfile : public Decode
{
public:
- Shpfile(unsigned char * bufFiledata, int bufsize);
+ Shpfile(unsigned char * bufFiledata, int bufsize, SDL_Palette * palette = NULL);
~Shpfile();
/*!
@@ -81,6 +82,7 @@
unsigned char* Filedata;
Uint32 ShpFilesize;
Uint16 NumFiles;
+ SDL_Palette * m_palette;
};
Modified: branches/dunks/src/pakfile/Cpsfile.cpp
===================================================================
--- branches/dunks/src/pakfile/Cpsfile.cpp 2008-04-28 22:36:54 UTC (rev 189)
+++ branches/dunks/src/pakfile/Cpsfile.cpp 2008-04-28 22:55:16 UTC (rev 190)
@@ -1,15 +1,20 @@
#include "pakfile/Cpsfile.h"
#include <SDL_endian.h>
+#include "Application.h"
#include <stdlib.h>
#include <string.h>
#define SIZE_X 320
#define SIZE_Y 240
-Cpsfile::Cpsfile(unsigned char * bufFiledata, int bufsize) : Decode()
+Cpsfile::Cpsfile(unsigned char * bufFiledata, int bufsize, SDL_Palette* palette) : Decode()
{
Filedata = bufFiledata;
CpsFilesize = bufsize;
+ if (palette == NULL)
+ m_palette = Application::Instance()->Screen()->getSurface()->format->palette;
+ else
+ m_palette = palette;
}
Cpsfile::~Cpsfile()
@@ -17,7 +22,7 @@
;
}
-Image * Cpsfile::getPicture(SDL_Palette* palette)
+Image * Cpsfile::getPicture()
{
unsigned char * ImageOut;
SDL_Surface *pic = NULL;
@@ -47,7 +52,7 @@
}
- SDL_SetColors(pic, palette->colors, 0, palette->ncolors);
+ SDL_SetColors(pic, m_palette->colors, 0, m_palette->ncolors);
SDL_LockSurface(pic);
Modified: branches/dunks/src/pakfile/Shpfile.cpp
===================================================================
--- branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 22:36:54 UTC (rev 189)
+++ branches/dunks/src/pakfile/Shpfile.cpp 2008-04-28 22:55:16 UTC (rev 190)
@@ -8,12 +8,16 @@
//extern SDL_Palette* palette;
-Shpfile::Shpfile(unsigned char * bufFiledata, int bufsize) : Decode()
+Shpfile::Shpfile(unsigned char * bufFiledata, int bufsize, SDL_Palette * palette) : Decode()
{
Filedata = bufFiledata;
ShpFilesize = bufsize;
Index = NULL;
readIndex();
+ if (palette == NULL)
+ m_palette = Application::Instance()->Screen()->getSurface()->format->palette;
+ else
+ m_palette = palette;
}
Shpfile::~Shpfile()
@@ -25,7 +29,6 @@
Image * Shpfile::getPicture(Uint32 IndexOfFile)
{
- SDL_Palette *palette = Application::Instance()->Screen()->getSurface()->format->palette;
SDL_Surface *pic = NULL;
unsigned char *DecodeDestination = NULL;
unsigned char *ImageOut = NULL;
@@ -117,7 +120,7 @@
if((pic = SDL_CreateRGBSurface(SDL_SWSURFACE,sizeX,sizeY,8,0,0,0,0))== NULL) {
return NULL;
}
- SDL_SetColors(pic, palette->colors, 0, palette->ncolors);
+ SDL_SetColors(pic, m_palette->colors, 0, m_palette->ncolors);
SDL_LockSurface(pic);
//Now we can copy line by line
@@ -138,7 +141,6 @@
}
Image * Shpfile::getPictureArray(unsigned int tilesX, unsigned int tilesY, ...) {
- SDL_Palette *palette = Application::Instance()->Screen()->getSurface()->format->palette;
SDL_Surface *pic = NULL;
unsigned char *DecodeDestination = NULL;
unsigned char *ImageOut = NULL;
@@ -187,7 +189,7 @@
exit(EXIT_FAILURE);
}
- SDL_SetColors(pic, palette->colors, 0, palette->ncolors);
+ SDL_SetColors(pic, m_palette->colors, 0, m_palette->ncolors);
SDL_LockSurface(pic);
for(j = 0; j < tilesY; j++) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-28 22:56:29
|
Revision: 191
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=191&view=rev
Author: dvalin
Date: 2008-04-28 15:56:25 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
* add bene gesserit mentat eyes and mouth
* pass palette as argument to constructor in stead of get functions
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-28 22:55:16 UTC (rev 190)
+++ branches/dunks/include/DataCache.h 2008-04-28 22:56:25 UTC (rev 191)
@@ -215,6 +215,9 @@
Anim_OrdosMouth,
Anim_OrdosShoulder,
Anim_OrdosRing,
+ Anim_BeneGesseritEyes,
+ Anim_BeneGesseritMouth,
+ Anim_BeneGesseritShoulder,
Anim_AtreidesPlanet,
Anim_HarkonnenPlanet,
Anim_OrdosPlanet,
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-28 22:55:16 UTC (rev 190)
+++ branches/dunks/src/DataCache.cpp 2008-04-28 22:56:25 UTC (rev 191)
@@ -14,6 +14,11 @@
int maplen;
uint8_t * mapdata;
+
+ data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
+ Palettefile tmp (data, len);
+ SDL_Palette * pal = tmp.getPalette();
+
//LOADING FILES
data = ResMan::Instance()->readFile("DUNE:UNITS.SHP", &len);
@@ -37,6 +42,8 @@
ShpfilePtr menshph(new Shpfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len);
ShpfilePtr menshpo(new Shpfile(data, len));
+ data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len);
+ ShpfilePtr menshpm(new Shpfile(data, len, pal));
data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len);
ShpfilePtr choam(new Shpfile(data, len));
data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len);
@@ -54,7 +61,7 @@
data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len);
CpsfilePtr mentath (new Cpsfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len);
- CpsfilePtr mentatm (new Cpsfile(data, len));
+ CpsfilePtr mentatm (new Cpsfile(data, len, pal));
data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len);
ShpfilePtr mentat (new Shpfile(data, len));
@@ -146,6 +153,9 @@
addAnimation(Anim_OrdosMouth, menshpo->getAnimation(5,9,true), 5.0);
addAnimation(Anim_OrdosShoulder, menshpo->getAnimation(10,10,true), 1.0);
addAnimation(Anim_OrdosRing, menshpo->getAnimation(11,14,true), 6.0);
+ addAnimation(Anim_BeneGesseritEyes, menshpm->getAnimation(0,4,true), 0.5);
+ addAnimation(Anim_BeneGesseritMouth, menshpm->getAnimation(5,9,true), 5.0);
+ addAnimation(Anim_BeneGesseritShoulder, menshpm->getAnimation(10,10,true), 1.0);
addAnimation(Anim_AtreidesPlanet, "MENTAT:FARTR.WSA", 12);
addAnimation(Anim_HarkonnenPlanet, "MENTAT:FHARK.WSA", 12);
addAnimation(Anim_OrdosPlanet, "MENTAT:FORDOS.WSA", 12);
@@ -208,10 +218,7 @@
//addAnimation(Anim_OrdosPlanet, ordosplanet);
- data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
- Palettefile tmp (data, len);
- SDL_Palette * pal = tmp.getPalette();
- addGuiPic(UI_MentatBackground, mentatm->getPicture(pal), HOUSE_SARDAUKAR);
+ addGuiPic(UI_MentatBackground, mentatm->getPicture(), HOUSE_SARDAUKAR);
addSoundChunk(YesSir, getChunkFromFile("VOC:ZREPORT1.VOC"));
addSoundChunk(Reporting, getChunkFromFile("VOC:ZREPORT2.VOC"));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-28 23:06:17
|
Revision: 192
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=192&view=rev
Author: dvalin
Date: 2008-04-28 16:06:09 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
add animated mentat graphics
Modified Paths:
--------------
branches/dunks/include/MentatMenu.h
branches/dunks/src/MentatMenu.cpp
Modified: branches/dunks/include/MentatMenu.h
===================================================================
--- branches/dunks/include/MentatMenu.h 2008-04-28 22:56:25 UTC (rev 191)
+++ branches/dunks/include/MentatMenu.h 2008-04-28 23:06:09 UTC (rev 192)
@@ -3,40 +3,26 @@
#include "MenuBase.h"
#include "houses.h"
-#include "gui2/Button.h"
-#include "gui2/VBox.h"
-
-#include "SDL.h"
-
+class Label;
+class AnimationLabel;
class MentatMenuState : public MenuBaseState
{
public:
MentatMenuState(HOUSETYPE newHouse);
~MentatMenuState();
-/* void DrawSpecificStuff();
-
- void setText(std::string text) {
- TextLabel.SetText(text.c_str());
- TextLabel.SetVisible(true);
- TextLabel.Resize(620,120);
- }*/
+ void setText(std::string text);
int Execute(float dt);
virtual const char* GetName() { return "MentatMenuState"; }
protected:
HOUSETYPE house;
ImagePtr m_surf;
- VBox* m_vbox;
-// void initMenuState(HOUSETYPE newHouse);
-
-/* StaticContainer WindowWidget;
- AnimationLabel eyesAnim;
- AnimationLabel mouthAnim;
- AnimationLabel specialAnim;
- AnimationLabel shoulderAnim;
- Label TextLabel;
-*/
+ Label* m_textLabel;
+ AnimationLabel* m_eyesAnim;
+ AnimationLabel* m_mouthAnim;
+ AnimationLabel* m_specialAnim;
+ AnimationLabel* m_shoulderAnim;
};
#endif // MENTATMENU_H_INCLUDED
Modified: branches/dunks/src/MentatMenu.cpp
===================================================================
--- branches/dunks/src/MentatMenu.cpp 2008-04-28 22:56:25 UTC (rev 191)
+++ branches/dunks/src/MentatMenu.cpp 2008-04-28 23:06:09 UTC (rev 192)
@@ -5,6 +5,7 @@
#include "DataCache.h"
#include "pakfile/Cpsfile.h"
#include "boost/bind.hpp"
+#include "gui2/Label.h"
MentatMenuState::MentatMenuState(HOUSETYPE newHouse)
{
@@ -13,101 +14,75 @@
m_surf.reset(mentat);
m_surf = m_surf->getResized(2);
- m_vbox = new VBox();
-/* m_butYes = new GraphicButton(DataCache::Instance()->getGuiPic(UI_MentatYes)->getResized(2), DataCache::Instance()->getGuiPic(UI_MentatYes_Pressed)->getResized(2));
- m_vbox->addChild(m_butYes);
-
- m_vbox->fit(2);
- m_vbox->setPosition(UPoint(336,366));
- m_vbox->reshape();
-
- m_container->addChild(m_vbox);
-
- m_vbox = new VBox();
- m_butNo = new GraphicButton(DataCache::Instance()->getGuiPic(UI_MentatNo)->getResized(2), DataCache::Instance()->getGuiPic(UI_MentatNo_Pressed)->getResized(2));
- m_vbox->addChild(m_butNo);
-
- m_vbox->fit(2);
- m_vbox->setPosition(UPoint(480,366));
- m_vbox->reshape();
-
- m_container->addChild(m_vbox);*/
-
-/*
- // set up window
- SDL_Surface *surf;
- surf = pDataManager->getUIGraphic(UI_MentatBackground,house);
-
- SetBackground(surf,false);
-
- int xpos = std::max(0,(screen->w - surf->w)/2);
- int ypos = std::max(0,(screen->h - surf->h)/2);
-
- SetCurrentPosition(xpos,ypos,surf->w,surf->h);
-
- SetWindowWidget(&WindowWidget);
-
switch(house) {
case HOUSE_ATREIDES:
case HOUSE_FREMEN:
- anim = pDataManager->getAnimation(Anim_AtreidesEyes);
- eyesAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&eyesAnim,Point(80,160),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesEyes));
+ m_eyesAnim->setPosition(UPoint(80, 191));
+ m_container->addChild(m_eyesAnim);
- anim = pDataManager->getAnimation(Anim_AtreidesMouth);
- mouthAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&mouthAnim,Point(80,192),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesMouth));
+ m_mouthAnim->setPosition(UPoint(80, 223));
+ m_container->addChild(m_mouthAnim);
- anim = pDataManager->getAnimation(Anim_AtreidesBook);
- specialAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&specialAnim,Point(145,305),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_specialAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesBook));
+ m_specialAnim->setPosition(UPoint(145, 336));
+ m_container->addChild(m_specialAnim);
- anim = pDataManager->getAnimation(Anim_AtreidesShoulder);
- shoulderAnim.SetAnimation(anim);
- // don't add shoulderAnim, draw it in DrawSpecificStuff
break;
case HOUSE_ORDOS:
case HOUSE_MERCENARY:
- anim = pDataManager->getAnimation(Anim_OrdosEyes);
- eyesAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&eyesAnim,Point(32,160),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosEyes));
+ m_eyesAnim->setPosition(UPoint(32, 191));
+ m_container->addChild(m_eyesAnim);
- anim = pDataManager->getAnimation(Anim_OrdosMouth);
- mouthAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&mouthAnim,Point(32,192),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosMouth));
+ m_mouthAnim->setPosition(UPoint(32, 223));
+ m_container->addChild(m_mouthAnim);
- anim = pDataManager->getAnimation(Anim_OrdosRing);
- specialAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&specialAnim,Point(178,289),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_specialAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosRing));
+ m_specialAnim->setPosition(UPoint(178, 320));
+ m_container->addChild(m_specialAnim);
- anim = pDataManager->getAnimation(Anim_OrdosShoulder);
- shoulderAnim.SetAnimation(anim);
- // don't add shoulderAnim, draw it in DrawSpecificStuff
break;
case HOUSE_HARKONNEN:
+ m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenEyes));
+ m_eyesAnim->setPosition(UPoint(64, 207));
+ m_container->addChild(m_eyesAnim);
+
+ m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenMouth));
+ m_mouthAnim->setPosition(UPoint(64, 239));
+ m_container->addChild(m_mouthAnim);
+
+ break;
case HOUSE_SARDAUKAR:
default:
- anim = pDataManager->getAnimation(Anim_HarkonnenEyes);
- eyesAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&eyesAnim,Point(64,176),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_BeneGesseritEyes));
+ m_eyesAnim->setPosition(UPoint(128, 190));
+ m_container->addChild(m_eyesAnim);
- anim = pDataManager->getAnimation(Anim_HarkonnenMouth);
- mouthAnim.SetAnimation(anim);
- WindowWidget.AddWidget(&mouthAnim,Point(64,208),Point(anim->getFrame()->w,anim->getFrame()->h));
+ m_mouthAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_BeneGesseritMouth));
+ m_mouthAnim->setPosition(UPoint(112, 223));
+ m_container->addChild(m_mouthAnim);
- anim = pDataManager->getAnimation(Anim_HarkonnenShoulder);
- shoulderAnim.SetAnimation(anim);
- // don't add shoulderAnim, draw it in DrawSpecificStuff
- break;
+ break;
+
}
- TextLabel.SetTextColor(255);
+/* TextLabel.SetTextColor(255);
TextLabel.SetVisible(false);*/
}
MentatMenuState::~MentatMenuState() {
}
+/*void MentatMenuState::setText(std::string text)
+{
+ m_textLabel.SetText(text.c_str());
+ TextLabel.SetVisible(true);
+ TextLabel.Resize(620,120);
+}*/
+
int MentatMenuState::Execute(float dt)
{
m_surf.get()->blitToScreen(SPoint(Settings::Instance()->GetWidth() / 2 - m_surf->getSurface()->w/2,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-29 06:08:36
|
Revision: 196
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=196&view=rev
Author: dvalin
Date: 2008-04-28 23:08:34 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
* palettes are always rather small, so use unsigned shorts (uint16_t) rather than int
* s/unsigned char/uint8_t)
Modified Paths:
--------------
branches/dunks/include/pakfile/Palette.h
branches/dunks/src/pakfile/Palette.cpp
Modified: branches/dunks/include/pakfile/Palette.h
===================================================================
--- branches/dunks/include/pakfile/Palette.h 2008-04-29 05:45:14 UTC (rev 195)
+++ branches/dunks/include/pakfile/Palette.h 2008-04-29 06:08:34 UTC (rev 196)
@@ -6,7 +6,7 @@
class Palettefile
{
public:
- Palettefile(unsigned char* buf, int bufsize);
+ Palettefile(uint8_t * buf, uint16_t bufsize);
~Palettefile();
SDL_Palette* getPalette() { return m_palette; }
Modified: branches/dunks/src/pakfile/Palette.cpp
===================================================================
--- branches/dunks/src/pakfile/Palette.cpp 2008-04-29 05:45:14 UTC (rev 195)
+++ branches/dunks/src/pakfile/Palette.cpp 2008-04-29 06:08:34 UTC (rev 196)
@@ -1,6 +1,6 @@
#include "pakfile/Palette.h"
-Palettefile::Palettefile(unsigned char* buf, int bufsize)
+Palettefile::Palettefile(unsigned char* buf, uint16_t bufsize)
{
printf("loading palette...\n");
@@ -9,9 +9,9 @@
m_palette->colors = new SDL_Color[m_palette->ncolors];
SDL_Color* c = m_palette->colors;
- unsigned char* dunepal = buf;
+ uint8_t* dunepal = buf;
- for (int i=0; i!=m_palette->ncolors; i++, c++, dunepal+=3)
+ for (uint16_t i=0; i!=m_palette->ncolors; i++, c++, dunepal+=3)
{
c->r = (dunepal[0] << 2) + 3;
c->g = (dunepal[1] << 2) + 3;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-29 07:22:33
|
Revision: 198
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=198&view=rev
Author: dvalin
Date: 2008-04-29 00:22:02 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
Bene Gesserit mentat doesn't need to have shoulder graphic redrawn, so drop it
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-29 06:56:15 UTC (rev 197)
+++ branches/dunks/include/DataCache.h 2008-04-29 07:22:02 UTC (rev 198)
@@ -217,7 +217,6 @@
Anim_OrdosRing,
Anim_BeneGesseritEyes,
Anim_BeneGesseritMouth,
- Anim_BeneGesseritShoulder,
Anim_AtreidesPlanet,
Anim_HarkonnenPlanet,
Anim_OrdosPlanet,
@@ -295,7 +294,7 @@
HouseHarkonnen,
PlaceStructure,
ButtonClick,
-// InvalidAction,
+ // InvalidAction,
CreditsTick,
RadarNoise,
Sound_ExplosionGas,
@@ -314,7 +313,7 @@
Sound_Scream4,
Sound_Scream5,
Sound_MachineGun,
-// Sound_Sonic,
+ // Sound_Sonic,
Sound_RocketSmall,
Intro_3Houses,
Intro_AndNow,
@@ -344,7 +343,7 @@
Intro_RulesOfEngagement,
Intro_Territories,
Intro_AndThe,
-// Intro_Filler,
+ // Intro_Filler,
Intro_Flesh,
Intro_Glass_6,
Intro_Glass,
@@ -380,13 +379,13 @@
class DataCache : public Singleton<DataCache>
{
- friend class Singleton<DataCache>;
-
- protected:
- DataCache();
- ~DataCache();
+ friend class Singleton<DataCache>;
- public:
+ protected:
+ DataCache();
+ ~DataCache();
+
+ public:
void addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN);
void addGuiPic(GuiPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN);
void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0);
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-29 06:56:15 UTC (rev 197)
+++ branches/dunks/src/DataCache.cpp 2008-04-29 07:22:02 UTC (rev 198)
@@ -151,7 +151,6 @@
addAnimation(Anim_OrdosRing, menshpo->getAnimation(11,14,true), 6.0);
addAnimation(Anim_BeneGesseritEyes, menshpm->getAnimation(0,4,true), 0.5);
addAnimation(Anim_BeneGesseritMouth, menshpm->getAnimation(5,9,true), 5.0);
- addAnimation(Anim_BeneGesseritShoulder, menshpm->getAnimation(10,10,true), 1.0);
addAnimation(Anim_AtreidesPlanet, "MENTAT:FARTR.WSA", 12);
addAnimation(Anim_HarkonnenPlanet, "MENTAT:FHARK.WSA", 12);
addAnimation(Anim_OrdosPlanet, "MENTAT:FORDOS.WSA", 12);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-29 07:23:21
|
Revision: 199
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=199&view=rev
Author: dvalin
Date: 2008-04-29 00:22:57 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
be sure to redraw mentat shoulder on top of graphics
Modified Paths:
--------------
branches/dunks/include/MentatMenu.h
branches/dunks/src/HouseChoiceInfoMenu.cpp
branches/dunks/src/MentatMenu.cpp
Modified: branches/dunks/include/MentatMenu.h
===================================================================
--- branches/dunks/include/MentatMenu.h 2008-04-29 07:22:02 UTC (rev 198)
+++ branches/dunks/include/MentatMenu.h 2008-04-29 07:22:57 UTC (rev 199)
@@ -23,6 +23,7 @@
AnimationLabel* m_mouthAnim;
AnimationLabel* m_specialAnim;
AnimationLabel* m_shoulderAnim;
+ void drawSpecificStuff();
};
#endif // MENTATMENU_H_INCLUDED
Modified: branches/dunks/src/HouseChoiceInfoMenu.cpp
===================================================================
--- branches/dunks/src/HouseChoiceInfoMenu.cpp 2008-04-29 07:22:02 UTC (rev 198)
+++ branches/dunks/src/HouseChoiceInfoMenu.cpp 2008-04-29 07:22:57 UTC (rev 199)
@@ -38,6 +38,7 @@
m_textLabel = new Label(desc.substr(linebreak,desc.length()-linebreak), 158, 0); //DataCache::Instance()->getBriefingText(0, MISSION_DESCRIPTION, newHouse), 0);
m_textLabel->setPosition(UPoint(0,35));
m_container->addChild(m_textLabel);
+ drawSpecificStuff();
}
Modified: branches/dunks/src/MentatMenu.cpp
===================================================================
--- branches/dunks/src/MentatMenu.cpp 2008-04-29 07:22:02 UTC (rev 198)
+++ branches/dunks/src/MentatMenu.cpp 2008-04-29 07:22:57 UTC (rev 199)
@@ -29,6 +29,10 @@
m_specialAnim->setPosition(UPoint(145, 336));
m_container->addChild(m_specialAnim);
+ m_shoulderAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_AtreidesShoulder));
+ m_shoulderAnim->setPosition(UPoint(256,286));
+
+
break;
case HOUSE_ORDOS:
case HOUSE_MERCENARY:
@@ -44,6 +48,10 @@
m_specialAnim->setPosition(UPoint(178, 320));
m_container->addChild(m_specialAnim);
+ m_shoulderAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_OrdosShoulder));
+ m_shoulderAnim->setPosition(UPoint(256,286));
+
+
break;
case HOUSE_HARKONNEN:
m_eyesAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenEyes));
@@ -54,6 +62,9 @@
m_mouthAnim->setPosition(UPoint(64, 239));
m_container->addChild(m_mouthAnim);
+ m_shoulderAnim = new AnimationLabel(DataCache::Instance()->getAnimation(Anim_HarkonnenShoulder));
+ m_shoulderAnim->setPosition(UPoint(256,238));
+
break;
case HOUSE_SARDAUKAR:
default:
@@ -69,20 +80,11 @@
}
-/* TextLabel.SetTextColor(255);
- TextLabel.SetVisible(false);*/
}
MentatMenuState::~MentatMenuState() {
}
-/*void MentatMenuState::setText(std::string text)
-{
- m_textLabel.SetText(text.c_str());
- TextLabel.SetVisible(true);
- TextLabel.Resize(620,120);
-}*/
-
int MentatMenuState::Execute(float dt)
{
m_surf.get()->blitToScreen(SPoint(Settings::Instance()->GetWidth() / 2 - m_surf->getSurface()->w/2,
@@ -91,24 +93,8 @@
return 0;
}
-/*void MentatMenu::DrawSpecificStuff() {
- Point shoulderPos;
- switch(house) {
- case HOUSE_ATREIDES:
- case HOUSE_FREMEN: {
- shoulderPos = Point(256,257) + GetPosition();
- } break;
- case HOUSE_ORDOS:
- case HOUSE_MERCENARY: {
- shoulderPos = Point(256,257) + GetPosition();
- } break;
- case HOUSE_HARKONNEN:
- case HOUSE_SARDAUKAR:
- default: {
- shoulderPos = Point(256,209) + GetPosition();
- } break;
- }
-
- shoulderAnim.Draw(screen,shoulderPos);
- TextLabel.Draw(screen,Point(10,5) + GetPosition());
-}*/
+// Should needs to be drawn later, otherwise graphics will be drawn on top of it
+void MentatMenuState::drawSpecificStuff() {
+ if(house != HOUSE_SARDAUKAR)
+ m_container->addChild(m_shoulderAnim);
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-29 16:34:34
|
Revision: 200
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=200&view=rev
Author: dvalin
Date: 2008-04-29 09:34:21 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
move all source for sound into it's own subdir since it will be a lot of files
Modified Paths:
--------------
branches/dunks/src/DataCache.cpp
branches/dunks/src/SoundPlayerClass.cpp
branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/samplerate.c
branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_linear.c
branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_sinc.c
branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_zoh.c
Added Paths:
-----------
branches/dunks/include/pakfile/sound/
branches/dunks/include/pakfile/sound/Vocfile.h
branches/dunks/src/pakfile/sound/
branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/
Copied: branches/dunks/include/pakfile/sound/Vocfile.h (from rev 166, branches/dunks/include/pakfile/Vocfile.h)
===================================================================
--- branches/dunks/include/pakfile/sound/Vocfile.h (rev 0)
+++ branches/dunks/include/pakfile/sound/Vocfile.h 2008-04-29 16:34:21 UTC (rev 200)
@@ -0,0 +1,19 @@
+#ifndef VOCFILE_H_INCLUDED
+#define VOCFILE_H_INCLUDED
+
+#include <SDL.h>
+#include <SDL_rwops.h>
+#include <SDL_mixer.h>
+
+/**
+ Try to load a VOC from the RWop. Returns a pointer to Mix_Chunk.
+ It is the callers responsibility to deallocate that data again later on
+ with Mix_FreeChunk()!
+ \param rwop The source SDL_RWops as a pointer. The sample is loaded from this VOC-File.
+ \param freesrc A non-zero value mean it will automatically close/free the src for you.
+ \return a pointer to the sample as a Mix_Chunk. NULL is returned on errors.
+ */
+extern Mix_Chunk* LoadVOC_RW(SDL_RWops* rwop, int freesrc);
+
+#endif // VOCFILE_H_INCLUDED
+
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-29 07:22:57 UTC (rev 199)
+++ branches/dunks/src/DataCache.cpp 2008-04-29 16:34:21 UTC (rev 200)
@@ -1,5 +1,5 @@
#include "DataCache.h"
-#include "pakfile/Vocfile.h"
+#include "pakfile/sound/Vocfile.h"
#include <string>
#include <iostream>
DataCache::DataCache() {
Modified: branches/dunks/src/SoundPlayerClass.cpp
===================================================================
--- branches/dunks/src/SoundPlayerClass.cpp 2008-04-29 07:22:57 UTC (rev 199)
+++ branches/dunks/src/SoundPlayerClass.cpp 2008-04-29 16:34:21 UTC (rev 200)
@@ -1,7 +1,7 @@
#include <stdlib.h>
#include <math.h>
-#include "pakfile/Vocfile.h"
+#include "pakfile/sound/Vocfile.h"
#include "SoundPlayerClass.h"
#include "SDL_mixer.h"
#include "DuneConstants.h"
Copied: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate (from rev 156, branches/dunks/src/pakfile/IntegratedLibSampleRate)
Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/samplerate.c
===================================================================
--- branches/dunks/src/pakfile/IntegratedLibSampleRate/samplerate.c 2008-04-24 22:22:22 UTC (rev 156)
+++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/samplerate.c 2008-04-29 16:34:21 UTC (rev 200)
@@ -20,11 +20,11 @@
#include <stdlib.h>
#include <string.h>
-#include "pakfile/IntegratedLibSampleRate/config.h"
+#include "pakfile/sound/IntegratedLibSampleRate/config.h"
-#include "pakfile/IntegratedLibSampleRate/samplerate.h"
-#include "pakfile/IntegratedLibSampleRate/common.h"
-#include "pakfile/IntegratedLibSampleRate/float_cast.h"
+#include "pakfile/sound/IntegratedLibSampleRate/samplerate.h"
+#include "pakfile/sound/IntegratedLibSampleRate/common.h"
+#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h"
static int psrc_set_converter (SRC_PRIVATE *psrc, int converter_type) ;
Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_linear.c
===================================================================
--- branches/dunks/src/pakfile/IntegratedLibSampleRate/src_linear.c 2008-04-24 22:22:22 UTC (rev 156)
+++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_linear.c 2008-04-29 16:34:21 UTC (rev 200)
@@ -20,9 +20,9 @@
#include <stdlib.h>
#include <string.h>
-#include "pakfile/IntegratedLibSampleRate/config.h"
-#include "pakfile/IntegratedLibSampleRate/float_cast.h"
-#include "pakfile/IntegratedLibSampleRate/common.h"
+#include "pakfile/sound/IntegratedLibSampleRate/config.h"
+#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h"
+#include "pakfile/sound/IntegratedLibSampleRate/common.h"
static int linear_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
static void linear_reset (SRC_PRIVATE *psrc) ;
Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_sinc.c
===================================================================
--- branches/dunks/src/pakfile/IntegratedLibSampleRate/src_sinc.c 2008-04-24 22:22:22 UTC (rev 156)
+++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_sinc.c 2008-04-29 16:34:21 UTC (rev 200)
@@ -20,9 +20,9 @@
#include <stdlib.h>
#include <string.h>
-#include "pakfile/IntegratedLibSampleRate/config.h"
-#include "pakfile/IntegratedLibSampleRate/float_cast.h"
-#include "pakfile/IntegratedLibSampleRate/common.h"
+#include "pakfile/sound/IntegratedLibSampleRate/config.h"
+#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h"
+#include "pakfile/sound/IntegratedLibSampleRate/common.h"
#define SINC_MAGIC_MARKER MAKE_MAGIC (' ', 's', 'i', 'n', 'c', ' ')
@@ -95,17 +95,17 @@
static coeff_t const high_qual_coeffs [] =
{
-#include "pakfile/IntegratedLibSampleRate/high_qual_coeffs.h"
+#include "pakfile/sound/IntegratedLibSampleRate/high_qual_coeffs.h"
} ; /* high_qual_coeffs */
static coeff_t const mid_qual_coeffs [] =
{
-#include "pakfile/IntegratedLibSampleRate/mid_qual_coeffs.h"
+#include "pakfile/sound/IntegratedLibSampleRate/mid_qual_coeffs.h"
} ; /* mid_qual_coeffs */
static coeff_t const fastest_coeffs [] =
{
-#include "pakfile/IntegratedLibSampleRate/fastest_coeffs.h"
+#include "pakfile/sound/IntegratedLibSampleRate/fastest_coeffs.h"
} ; /* fastest_coeffs */
/*----------------------------------------------------------------------------------------
Modified: branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_zoh.c
===================================================================
--- branches/dunks/src/pakfile/IntegratedLibSampleRate/src_zoh.c 2008-04-24 22:22:22 UTC (rev 156)
+++ branches/dunks/src/pakfile/sound/IntegratedLibSampleRate/src_zoh.c 2008-04-29 16:34:21 UTC (rev 200)
@@ -20,9 +20,9 @@
#include <stdlib.h>
#include <string.h>
-#include "pakfile/IntegratedLibSampleRate/config.h"
-#include "pakfile/IntegratedLibSampleRate/float_cast.h"
-#include "pakfile/IntegratedLibSampleRate/common.h"
+#include "pakfile/sound/IntegratedLibSampleRate/config.h"
+#include "pakfile/sound/IntegratedLibSampleRate/float_cast.h"
+#include "pakfile/sound/IntegratedLibSampleRate/common.h"
static int zoh_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
static void zoh_reset (SRC_PRIVATE *psrc) ;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-29 20:12:19
|
Revision: 203
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=203&view=rev
Author: dvalin
Date: 2008-04-29 13:11:59 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
load music (slow for now, must find a way to improve later..)
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-29 16:37:27 UTC (rev 202)
+++ branches/dunks/include/DataCache.h 2008-04-29 20:11:59 UTC (rev 203)
@@ -14,6 +14,7 @@
#include "pakfile/Shpfile.h"
#include "pakfile/Wsafile.h"
#include "pakfile/Stringfile.h"
+
#include "houses.h"
#include <map>
@@ -23,6 +24,17 @@
#define NUM_MAPCHOICEARROWS 9
class Animation;
+//! \enum MUSICTYPE
+/*! Types of music available in the game*/
+typedef enum { MUSIC_ATTACK, /*!<Played when at least one of player's units was hit. */
+ MUSIC_INTRO, /*!<Background music for intro. */
+ MUSIC_LOSE, /*!<Failure screen background music. */
+ MUSIC_PEACE, /*!<Played most of the time when the enemy is not attacking. */
+ MUSIC_WIN, /*!<Victory screen background music.. */
+ MUSIC_RANDOM /*!<Player used key combination to change current music. */
+ } MUSICTYPE;
+
+
// ObjPics
typedef enum {
ObjPic_Tank_Base,
@@ -377,6 +389,11 @@
typedef std::map <unsigned, ImagePtr> images;
typedef std::vector <images*> remapped_images; //One for each house
+typedef std::map <unsigned, Mix_Chunk*> music;
+typedef std::vector <music*> remapped_music;
+
+typedef std::map <unsigned, std::string> musicFile;
+typedef std::vector <musicFile*> remapped_musicFile;
class DataCache : public Singleton<DataCache>
{
friend class Singleton<DataCache>;
@@ -391,10 +408,13 @@
void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0);
void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0);
void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp);
+ void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID);
+ void addMusic(MUSICTYPE musicType, Mix_Chunk* tmp, uint16_t ID);
ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
Animation* getAnimation(Animation_enum id);
Mix_Chunk* getSoundChunk(Sound_enum ID);
+ Mix_Chunk* getMusic(MUSICTYPE musicType, uint16_t ID);
Mix_Chunk* concat2Chunks(Sound_enum ID1, Sound_enum ID2);
std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house);
@@ -406,7 +426,9 @@
private:
remapped_images m_objImg;
remapped_images m_guiImg;
-
+ remapped_music m_music;
+ remapped_musicFile m_musicFile;
+
Mix_Chunk* getChunkFromFile(std::string fileName);
Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2);
Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3);
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-29 16:37:27 UTC (rev 202)
+++ branches/dunks/src/DataCache.cpp 2008-04-29 20:11:59 UTC (rev 203)
@@ -1,5 +1,6 @@
#include "DataCache.h"
#include "pakfile/sound/Vocfile.h"
+#include "pakfile/sound/adl/adl.h"
#include <string>
#include <iostream>
DataCache::DataCache() {
@@ -7,6 +8,7 @@
{
m_objImg.push_back(new images());
m_guiImg.push_back(new images());
+ m_music.push_back(new music());
}
int len, maplen;
@@ -308,6 +310,24 @@
addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC"));
addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC"));
+ addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2, 0);
+ addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3, 0);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6, 0);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6, 1);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6, 2);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6, 3);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6, 4);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4, 5);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2, 6);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7, 0);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7, 1);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7, 2);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7, 3);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7, 4);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6, 0);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4, 1);
+ addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2 ,0);
+
BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG");
BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
@@ -364,9 +384,37 @@
soundChunk[ID] = tmp;
}
+void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID)
+{
+ int len;
+ uint8_t * data = ResMan::Instance()->readFile(filename, &len);
+ SDL_RWops* test = SDL_RWFromMem(data, len);
+ CadlPlayer *p = new CadlPlayer(test);
+ Mix_Chunk* tmp = p->getUpsampledSubsong(trackNum, 22050, AUDIO_S16LSB, 1);
+ SDL_RWclose(test);
+ m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp));
+ delete data;
+ delete p;
+}
+
+Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID)
+{
+ music::iterator iter = m_music[musicType]->find(ID);
+ if (iter != m_music[musicType]->end())
+ {
+ return m_music[musicType]->find(ID)->second;
+ }
+ else
+ {
+ Mix_Chunk* source = m_music[musicType]->find(ID)->second;
+ return source;
+ }
+}
+
Mix_Chunk* DataCache::getSoundChunk(Sound_enum ID){
return soundChunk[ID];
}
+
Mix_Chunk* DataCache::getChunkFromFile(std::string fileName) {
Mix_Chunk* returnChunk;
SDL_RWops* rwop;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-29 22:17:36
|
Revision: 204
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=204&view=rev
Author: dvalin
Date: 2008-04-29 15:17:18 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
don't load all songs at once, only load them when needed (avoids long time loading all at once)
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-29 20:11:59 UTC (rev 203)
+++ branches/dunks/include/DataCache.h 2008-04-29 22:17:18 UTC (rev 204)
@@ -392,8 +392,8 @@
typedef std::map <unsigned, Mix_Chunk*> music;
typedef std::vector <music*> remapped_music;
-typedef std::map <unsigned, std::string> musicFile;
-typedef std::vector <musicFile*> remapped_musicFile;
+typedef std::pair <std::string, uint16_t> songFile;
+
class DataCache : public Singleton<DataCache>
{
friend class Singleton<DataCache>;
@@ -408,8 +408,8 @@
void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0);
void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0);
void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp);
- void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID);
- void addMusic(MUSICTYPE musicType, Mix_Chunk* tmp, uint16_t ID);
+ void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum);
+ Mix_Chunk* addMusic(MUSICTYPE musicType, uint16_t ID);
ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
Animation* getAnimation(Animation_enum id);
@@ -427,16 +427,16 @@
remapped_images m_objImg;
remapped_images m_guiImg;
remapped_music m_music;
- remapped_musicFile m_musicFile;
+ std::vector<songFile> songFiles[MUSIC_RANDOM];
Mix_Chunk* getChunkFromFile(std::string fileName);
Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2);
Mix_Chunk* concat3Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2, Mix_Chunk* sound3);
Mix_Chunk* createEmptyChunk();
- Animation* Anim[NUM_ANIMATION];
- Stringfile* BriefingStrings[3];
- Mix_Chunk* soundChunk[NUM_SOUNDCHUNK];
+ Animation* Anim[NUM_ANIMATION];
+ Stringfile* BriefingStrings[3];
+ Mix_Chunk* soundChunk[NUM_SOUNDCHUNK];
};
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-29 20:11:59 UTC (rev 203)
+++ branches/dunks/src/DataCache.cpp 2008-04-29 22:17:18 UTC (rev 204)
@@ -4,12 +4,15 @@
#include <string>
#include <iostream>
DataCache::DataCache() {
- for (int i=0; i< NUM_HOUSES; i++)
+ for (uint8_t i=0; i< NUM_HOUSES; i++)
{
m_objImg.push_back(new images());
m_guiImg.push_back(new images());
+ }
+ for (uint8_t i = 0; i < MUSIC_RANDOM; i++)
+ {
m_music.push_back(new music());
- }
+ }
int len, maplen;
uint8_t *data, *mapdata;
@@ -310,23 +313,23 @@
addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC"));
addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC"));
- addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2, 0);
- addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3, 0);
- addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6, 0);
- addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6, 1);
- addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6, 2);
- addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6, 3);
- addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6, 4);
- addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4, 5);
- addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2, 6);
- addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7, 0);
- addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7, 1);
- addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7, 2);
- addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7, 3);
- addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7, 4);
- addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6, 0);
- addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4, 1);
- addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2 ,0);
+ addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2);
+ addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE3.ADL", 6);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE4.ADL", 6);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE5.ADL", 6);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE6.ADL", 6);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE9.ADL", 4);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE10.ADL", 2);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE11.ADL", 7);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE12.ADL", 7);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE13.ADL", 7);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE14.ADL", 7);
+ addMusic(MUSIC_ATTACK, "SOUND:DUNE15.ADL", 7);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE18.ADL", 6);
+ addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4);
+ addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2);
BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG");
BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
@@ -384,30 +387,38 @@
soundChunk[ID] = tmp;
}
-void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum, uint16_t ID)
+void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum)
{
+ songFiles[musicType].push_back(songFile(filename, trackNum));
+}
+
+Mix_Chunk* DataCache::addMusic(MUSICTYPE musicType, uint16_t ID)
+{
+ songFile song = songFiles[musicType][ID];
int len;
- uint8_t * data = ResMan::Instance()->readFile(filename, &len);
+ uint8_t * data = ResMan::Instance()->readFile(song.first, &len);
SDL_RWops* test = SDL_RWFromMem(data, len);
CadlPlayer *p = new CadlPlayer(test);
- Mix_Chunk* tmp = p->getUpsampledSubsong(trackNum, 22050, AUDIO_S16LSB, 1);
+ Mix_Chunk* tmp = p->getUpsampledSubsong(song.second, 22050, AUDIO_S16LSB, 1);
SDL_RWclose(test);
m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp));
delete data;
delete p;
+ return tmp;
}
+// Searches through list of loaded songs to see if the specific song is loaded.
+// If loaded, it will return the song, if not it will load and return the song.
Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID)
{
music::iterator iter = m_music[musicType]->find(ID);
if (iter != m_music[musicType]->end())
- {
+ {
return m_music[musicType]->find(ID)->second;
}
else
{
- Mix_Chunk* source = m_music[musicType]->find(ID)->second;
- return source;
+ return addMusic(musicType, ID);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 00:41:33
|
Revision: 206
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=206&view=rev
Author: dvalin
Date: 2008-04-29 17:41:30 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
make constructor minimal to ensure that class is fast to initialize and won't be referenced before initialized when using threads
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-30 00:11:04 UTC (rev 205)
+++ branches/dunks/include/DataCache.h 2008-04-30 00:41:30 UTC (rev 206)
@@ -403,6 +403,7 @@
~DataCache();
public:
+ void Init();
void addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN);
void addGuiPic(GuiPic_enum ID, Image * tmp, HOUSETYPE house = HOUSE_HARKONNEN);
void addAnimation(Animation_enum ID, std::string filename, double frameRate = 0);
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 00:11:04 UTC (rev 205)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 00:41:30 UTC (rev 206)
@@ -3,7 +3,10 @@
#include "pakfile/sound/adl/adl.h"
#include <string>
#include <iostream>
-DataCache::DataCache() {
+
+DataCache::DataCache() {}
+
+void DataCache::Init(){
for (uint8_t i=0; i< NUM_HOUSES; i++)
{
m_objImg.push_back(new images());
@@ -335,6 +338,7 @@
BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
delete data;
+
}
void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) {
@@ -390,6 +394,9 @@
void DataCache::addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum)
{
songFiles[musicType].push_back(songFile(filename, trackNum));
+#ifdef __linux__
+ addMusic(musicType, songFiles[musicType].size()-1);
+#endif
}
Mix_Chunk* DataCache::addMusic(MUSICTYPE musicType, uint16_t ID)
@@ -401,6 +408,7 @@
CadlPlayer *p = new CadlPlayer(test);
Mix_Chunk* tmp = p->getUpsampledSubsong(song.second, 22050, AUDIO_S16LSB, 1);
SDL_RWclose(test);
+ std::cout << "ferdig" << std::endl;
m_music[musicType]->insert(std::pair<uint16_t, Mix_Chunk*>(ID, tmp));
delete data;
delete p;
@@ -418,7 +426,12 @@
}
else
{
- return addMusic(musicType, ID);
+#ifdef __linux__
+ std::cout << "NULL" << std::endl;
+ exit(1);
+ return NULL;
+#endif
+// return addMusic(musicType, ID);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 01:05:24
|
Revision: 209
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=209&view=rev
Author: dvalin
Date: 2008-04-29 18:05:18 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
give threading a touch of cosmetics
Modified Paths:
--------------
branches/dunks/include/Application.h
branches/dunks/src/Application.cpp
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/Application.h
===================================================================
--- branches/dunks/include/Application.h 2008-04-30 00:57:00 UTC (rev 208)
+++ branches/dunks/include/Application.h 2008-04-30 01:05:18 UTC (rev 209)
@@ -2,12 +2,18 @@
#define DUNE_APPLICATION_H
#include "singleton.h"
-#include "State.h"
#include "SDL.h"
#include "gui2/Container.h"
#include "State.h"
#include "TopLevelState.h"
+
+#ifdef __linux__
+#define THREADS 1
+#include <pthread.h>
+extern "C" void *dataCacheThread(void * arg);
+#endif
+
typedef enum
{
CURSOR_NORMAL,
@@ -55,6 +61,7 @@
void UpdateVideoMode(Uint16 w, Uint16 h, bool fullscreen);
private:
+// void *testis(void * arg);
void InitSettings();
void InitAudio();
void InitNet();
@@ -85,8 +92,3 @@
#endif // DUNE_APPLICATION_H
-
-
-
-
-
Modified: branches/dunks/src/Application.cpp
===================================================================
--- branches/dunks/src/Application.cpp 2008-04-30 00:57:00 UTC (rev 208)
+++ branches/dunks/src/Application.cpp 2008-04-30 01:05:18 UTC (rev 209)
@@ -35,15 +35,11 @@
#define VERSION "0.94.1"
-#ifdef __linux__
-# define _P __P
-#include <pthread.h>
+#ifdef THREADS
#include "DataCache.h"
-extern "C" void *dataCacheThread(void * arg);
-
void *dataCacheThread(void * arg)
{
- DataCache::Instance();
+ DataCache::Instance()->Init();
return NULL;
}
@@ -325,24 +321,10 @@
fprintf(stdout, "starting sound...\n");
SoundPlayerClass* soundPlayer = new SoundPlayerClass();
- //Mix_Chunk* myChunk = DataCache::Instance()->getMusic(MUSIC_INTRO, 0);
-// myChunk = DataCache::Instance()->getMusic(MUSIC_PEACE, 0);
-
- //soundPlayer->playSound(myChunk);
-}
-#if 0
-extern "C" void *testis(void * arg);
-
-void *testis(void * arg){
- fprintf(stdout, "starting sound...\n");
- SoundPlayerClass* soundPlayer = new SoundPlayerClass();
Mix_Chunk* myChunk = DataCache::Instance()->getMusic(MUSIC_INTRO, 0);
-// myChunk = DataCache::Instance()->getMusic(MUSIC_PEACE, 0);
-
soundPlayer->playSound(myChunk);
- return NULL;
}
-#endif
+
void Application::Die()
{
FontManager::Destroy();
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 00:57:00 UTC (rev 208)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 01:05:18 UTC (rev 209)
@@ -419,7 +419,7 @@
Mix_Chunk* DataCache::getMusic(MUSICTYPE musicType, uint16_t ID)
{
music::iterator iter;
-#ifdef __linux__
+#ifdef THREADS
spinlock:
#endif
iter = m_music[musicType]->find(ID);
@@ -429,7 +429,7 @@
}
else
{
-#ifdef __linux__
+#ifdef THREADS
goto spinlock;
#endif
return addMusic(musicType, ID);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 02:02:55
|
Revision: 213
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=213&view=rev
Author: dvalin
Date: 2008-04-29 19:02:51 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
improve spinlock for getGuiPic & getObjPic
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-30 01:45:01 UTC (rev 212)
+++ branches/dunks/include/DataCache.h 2008-04-30 02:02:51 UTC (rev 213)
@@ -154,6 +154,7 @@
typedef enum {
UI_RadarAnimation,
UI_CursorShape,
+ UI_MouseCursor,
UI_CreditsDigits,
UI_GameBar,
UI_Indicator,
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 01:45:01 UTC (rev 212)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 02:02:51 UTC (rev 213)
@@ -208,6 +208,7 @@
// addGuiPic(UI_RadarAnimation, radar->getAnimationAsPictureRow());
addGuiPic(UI_CursorShape, mouse->getPictureArray(7,1,0|TILE_NORMAL,1|TILE_NORMAL,2|TILE_NORMAL,3|TILE_NORMAL,4|TILE_NORMAL,5|TILE_NORMAL,6|TILE_NORMAL));
+ addGuiPic(UI_MouseCursor, mouse->getPicture(0));
// SDL_SetColorKey(addGuiPic(UI_CursorShape][HOUSE_HARKONNEN], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0);
addGuiPic(UI_CreditsDigits, shapes->getPictureArray(10,1,2|TILE_NORMAL,3|TILE_NORMAL,4|TILE_NORMAL,5|TILE_NORMAL,6|TILE_NORMAL,
7|TILE_NORMAL,8|TILE_NORMAL,9|TILE_NORMAL,10|TILE_NORMAL,11|TILE_NORMAL));
@@ -444,11 +445,13 @@
}
else
{
- ImagePtr source = m_objImg[house]->find(ID)->second;
#ifdef THREADS
- if (source == NULL)
+ // If house is harkonnen we know that there shouldn't be any other
+ // to look for and therefore must be that graphic hasn't been loaded yet.
+ if (house == HOUSE_HARKONNEN)
goto spinlock;
#endif
+ ImagePtr source = m_objImg[house]->find(ID)->second;
ImagePtr copy = source->getRecoloredByHouse(house);
m_objImg[house]->insert(std::pair<ObjPic_enum, ImagePtr>(ID, copy));
return copy;
@@ -469,12 +472,11 @@
}
else
{
-
- ImagePtr source = m_guiImg[house]->find(ID)->second;
#ifdef THREADS
- if (source == NULL)
+ if (house == HOUSE_HARKONNEN)
goto spinlock;
#endif
+ ImagePtr source = m_guiImg[house]->find(ID)->second;
ImagePtr copy = source->getRecoloredByHouse(house);
m_guiImg[house]->insert(std::pair<GuiPic_enum, ImagePtr>(ID, copy));
return copy;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 03:32:08
|
Revision: 216
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=216&view=rev
Author: dvalin
Date: 2008-04-29 20:32:05 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
add spinlocks for palettes (something's busted though :/)
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/Application.cpp
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-30 03:22:55 UTC (rev 215)
+++ branches/dunks/include/DataCache.h 2008-04-30 03:32:05 UTC (rev 216)
@@ -23,7 +23,7 @@
#define NUM_MAPCHOICEPIECES 28
#define NUM_MAPCHOICEARROWS 9
class Animation;
-
+//class SDL_Palette;
//! \enum MUSICTYPE
/*! Types of music available in the game*/
typedef enum { MUSIC_ATTACK, /*!<Played when at least one of player's units was hit. */
@@ -34,6 +34,13 @@
MUSIC_RANDOM /*!<Player used key combination to change current music. */
} MUSICTYPE;
+typedef enum {
+ INTRO_PAL,
+ BENE_PAL,
+ IBM_PAL,
+ WESTWOOD_PAL,
+ NUM_PALETTES
+} Palette_enum;
// ObjPics
typedef enum {
@@ -411,6 +418,8 @@
void addAnimation(Animation_enum ID, Animation* animation, double frameRate = 0);
void addSoundChunk(Sound_enum ID, Mix_Chunk* tmp);
void addMusic(MUSICTYPE musicType, std::string filename, uint16_t trackNum);
+ void addPalette(Palette_enum palette, std::string paletteFile);
+ SDL_Palette* getPalette(Palette_enum palette);
Mix_Chunk* addMusic(MUSICTYPE musicType, uint16_t ID);
ImagePtr getObjPic(ObjPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
ImagePtr getGuiPic(GuiPic_enum ID, HOUSETYPE house = HOUSE_HARKONNEN);
@@ -430,6 +439,7 @@
remapped_images m_guiImg;
remapped_music m_music;
std::vector<songFile> songFiles[MUSIC_RANDOM];
+ SDL_Palette* m_palette[NUM_PALETTES];
Mix_Chunk* getChunkFromFile(std::string fileName);
Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2);
Modified: branches/dunks/src/Application.cpp
===================================================================
--- branches/dunks/src/Application.cpp 2008-04-30 03:22:55 UTC (rev 215)
+++ branches/dunks/src/Application.cpp 2008-04-30 03:32:05 UTC (rev 216)
@@ -204,13 +204,8 @@
void Application::SetPalette()
{
- int len;
- unsigned char* data = ResMan::Instance()->readFile("INTRO:INTRO.PAL", &len);
+ SDL_Palette * pal = DataCache::Instance()->getPalette(INTRO_PAL);
- Palettefile tmp (data, len);
-
- SDL_Palette * pal = tmp.getPalette();
-
//This fixes white wheels. Is palette broken or sth??
pal->colors[205].r = 109;
@@ -308,16 +303,8 @@
SetPalette();
- int len;
-
- unsigned char * data;
+ m_cursor.reset(DataCache::Instance()->getGuiPic(UI_MouseCursor).get()); //mouse.getPicture(0));
- data = ResMan::Instance()->readFile("DUNE:MOUSE.SHP", &len);
-
- Shpfile mouse (data, len);
-
- m_cursor.reset(mouse.getPicture(0));
-
fprintf(stdout, "starting sound...\n");
SoundPlayerClass* soundPlayer = new SoundPlayerClass();
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 03:22:55 UTC (rev 215)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 03:32:05 UTC (rev 216)
@@ -4,8 +4,12 @@
#include <string>
#include <iostream>
-DataCache::DataCache() {}
+DataCache::DataCache() {
+ for(uint8_t i = 0; i < NUM_PALETTES; i++)
+ m_palette[i] = NULL;
+}
+
void DataCache::Init(){
for (uint8_t i=0; i< NUM_HOUSES; i++)
{
@@ -21,13 +25,19 @@
uint8_t *data, *mapdata;
+ addPalette(INTRO_PAL, "INTRO:INTRO.PAL");
+ // FIXME: Something seems to be fscked up with this palette, the Bene Gesserit
+ // mentat ends up looking a bit unhealthy greenish, needs to be corrected!
+ addPalette(BENE_PAL, "DUNE:BENE.PAL");
+ // For some reason things crashes if we fetch the palette and use it here.. :/
+ data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
+ Palettefile tmp (data, len);
+ SDL_Palette * pal = tmp.getPalette();
- // FIXM: Something seems to be fscked up with this palette, the Bene Gesserit
- // mentat ends up looking a bit unhealthy greenish, needs to be corrected!
- data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
- Palettefile tmp (data, len);
- SDL_Palette * pal = tmp.getPalette();
-
+ addPalette(IBM_PAL, "DUNE:IBM.PAL");
+ addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL");
+
+
//LOADING FILES
data = ResMan::Instance()->readFile("DUNE:UNITS.SHP", &len);
ShpfilePtr units(new Shpfile(data, len));
@@ -53,7 +63,7 @@
data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len);
ShpfilePtr menshpo(new Shpfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len);
- ShpfilePtr menshpm(new Shpfile(data, len, pal));
+ ShpfilePtr menshpm(new Shpfile(data, len, getPalette(BENE_PAL)));
data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len);
ShpfilePtr choam(new Shpfile(data, len));
data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len);
@@ -71,7 +81,7 @@
data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len);
CpsfilePtr mentath (new Cpsfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len);
- CpsfilePtr mentatm (new Cpsfile(data, len, pal));
+ CpsfilePtr mentatm (new Cpsfile(data, len, getPalette(BENE_PAL)));
data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len);
ShpfilePtr mentat (new Shpfile(data, len));
@@ -395,6 +405,10 @@
addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC"));
addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC"));
+ BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG");
+ BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
+ BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
+
addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2);
addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3);
addMusic(MUSIC_PEACE, "SOUND:DUNE2.ADL", 6);
@@ -413,13 +427,34 @@
addMusic(MUSIC_PEACE, "SOUND:DUNE19.ADL", 4);
addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2);
- BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG");
- BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
- BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
delete data;
}
+void DataCache::addPalette(Palette_enum palette, std::string paletteFile)
+{
+ int len;
+ uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len);
+ Palettefile tmp (data, len);
+
+ SDL_Palette * pal = tmp.getPalette();
+ m_palette[palette] = pal;
+}
+
+SDL_Palette* DataCache::getPalette(Palette_enum palette)
+{
+ SDL_Palette* pal;
+#ifdef THREADS
+ spinlock:
+#endif
+ pal = m_palette[palette];
+#ifdef THREADS
+ if(pal == NULL)
+ goto spinlock;
+#endif
+ return pal;
+}
+
void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) {
m_objImg[house]->insert(std::pair<ObjPic_enum, ImagePtr>(ID,
@@ -437,7 +472,7 @@
images::iterator iter;
#ifdef THREADS
spinlock:
-#endif
+#endif
iter = m_objImg[house]->find(ID);
if (iter != m_objImg[house]->end())
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 03:44:48
|
Revision: 217
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=217&view=rev
Author: dvalin
Date: 2008-04-29 20:44:22 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
use smart pointers..
Modified Paths:
--------------
branches/dunks/include/pakfile/Palette.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/pakfile/Palette.h
===================================================================
--- branches/dunks/include/pakfile/Palette.h 2008-04-30 03:32:05 UTC (rev 216)
+++ branches/dunks/include/pakfile/Palette.h 2008-04-30 03:44:22 UTC (rev 217)
@@ -3,6 +3,11 @@
#include "SDL.h"
+#include <boost/shared_ptr.hpp>
+
+class Palettefile;
+typedef boost::shared_ptr<Palettefile> PalettefilePtr;
+
class Palettefile
{
public:
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 03:32:05 UTC (rev 216)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 03:44:22 UTC (rev 217)
@@ -31,8 +31,8 @@
addPalette(BENE_PAL, "DUNE:BENE.PAL");
// For some reason things crashes if we fetch the palette and use it here.. :/
data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
- Palettefile tmp (data, len);
- SDL_Palette * pal = tmp.getPalette();
+ PalettefilePtr tmp(new Palettefile(data, len));
+ SDL_Palette * pal = tmp->getPalette();
addPalette(IBM_PAL, "DUNE:IBM.PAL");
addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL");
@@ -63,7 +63,7 @@
data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len);
ShpfilePtr menshpo(new Shpfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len);
- ShpfilePtr menshpm(new Shpfile(data, len, getPalette(BENE_PAL)));
+ ShpfilePtr menshpm(new Shpfile(data, len, pal)); //getPalette(BENE_PAL)));
data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len);
ShpfilePtr choam(new Shpfile(data, len));
data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len);
@@ -81,7 +81,7 @@
data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len);
CpsfilePtr mentath (new Cpsfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len);
- CpsfilePtr mentatm (new Cpsfile(data, len, getPalette(BENE_PAL)));
+ CpsfilePtr mentatm (new Cpsfile(data, len, pal)); //getPalette(BENE_PAL)));
data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len);
ShpfilePtr mentat (new Shpfile(data, len));
@@ -435,9 +435,9 @@
{
int len;
uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len);
- Palettefile tmp (data, len);
+ PalettefilePtr tmp (new Palettefile(data, len));
- SDL_Palette * pal = tmp.getPalette();
+ SDL_Palette * pal = tmp->getPalette();
m_palette[palette] = pal;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 04:06:46
|
Revision: 218
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=218&view=rev
Author: dvalin
Date: 2008-04-29 21:06:44 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
store the PalettefilePtr in steadof SDL_Palette*, still something fishy going on, should probably make PalettePtr..
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-30 03:44:22 UTC (rev 217)
+++ branches/dunks/include/DataCache.h 2008-04-30 04:06:44 UTC (rev 218)
@@ -439,7 +439,7 @@
remapped_images m_guiImg;
remapped_music m_music;
std::vector<songFile> songFiles[MUSIC_RANDOM];
- SDL_Palette* m_palette[NUM_PALETTES];
+ PalettefilePtr m_palette[NUM_PALETTES];
Mix_Chunk* getChunkFromFile(std::string fileName);
Mix_Chunk* concat2Chunks(Mix_Chunk* sound1, Mix_Chunk* sound2);
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 03:44:22 UTC (rev 217)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 04:06:44 UTC (rev 218)
@@ -5,9 +5,6 @@
#include <iostream>
DataCache::DataCache() {
- for(uint8_t i = 0; i < NUM_PALETTES; i++)
- m_palette[i] = NULL;
-
}
void DataCache::Init(){
@@ -29,11 +26,6 @@
// FIXME: Something seems to be fscked up with this palette, the Bene Gesserit
// mentat ends up looking a bit unhealthy greenish, needs to be corrected!
addPalette(BENE_PAL, "DUNE:BENE.PAL");
- // For some reason things crashes if we fetch the palette and use it here.. :/
- data = ResMan::Instance()->readFile("DUNE:BENE.PAL", &len);
- PalettefilePtr tmp(new Palettefile(data, len));
- SDL_Palette * pal = tmp->getPalette();
-
addPalette(IBM_PAL, "DUNE:IBM.PAL");
addPalette(WESTWOOD_PAL, "INTRO:WESTWOOD.PAL");
@@ -63,7 +55,7 @@
data = ResMan::Instance()->readFile("DUNE:MENSHPO.SHP", &len);
ShpfilePtr menshpo(new Shpfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENSHPM.SHP", &len);
- ShpfilePtr menshpm(new Shpfile(data, len, pal)); //getPalette(BENE_PAL)));
+ ShpfilePtr menshpm(new Shpfile(data, len, getPalette(BENE_PAL)));
data = ResMan::Instance()->readFile("ENGLISH:CHOAM.ENG", &len);
ShpfilePtr choam(new Shpfile(data, len));
data = ResMan::Instance()->readFile("ENGLISH:BTTN.ENG", &len);
@@ -81,7 +73,7 @@
data = ResMan::Instance()->readFile("DUNE:MENTATH.CPS", &len);
CpsfilePtr mentath (new Cpsfile(data, len));
data = ResMan::Instance()->readFile("DUNE:MENTATM.CPS", &len);
- CpsfilePtr mentatm (new Cpsfile(data, len, pal)); //getPalette(BENE_PAL)));
+ CpsfilePtr mentatm (new Cpsfile(data, len, getPalette(BENE_PAL)));
data = ResMan::Instance()->readFile("ENGLISH:MENTAT.ENG", &len);
ShpfilePtr mentat (new Shpfile(data, len));
@@ -437,13 +429,12 @@
uint8_t * data = ResMan::Instance()->readFile(paletteFile, &len);
PalettefilePtr tmp (new Palettefile(data, len));
- SDL_Palette * pal = tmp->getPalette();
- m_palette[palette] = pal;
+ m_palette[palette] = tmp; //pal;
}
SDL_Palette* DataCache::getPalette(Palette_enum palette)
{
- SDL_Palette* pal;
+ PalettefilePtr pal;
#ifdef THREADS
spinlock:
#endif
@@ -452,7 +443,7 @@
if(pal == NULL)
goto spinlock;
#endif
- return pal;
+ return pal->getPalette();
}
void DataCache::addObjPic(ObjPic_enum ID, Image * tmp, HOUSETYPE house) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-04-30 17:58:48
|
Revision: 221
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=221&view=rev
Author: dvalin
Date: 2008-04-30 10:57:54 -0700 (Wed, 30 Apr 2008)
Log Message:
-----------
* fix order of intro scenes
* start on adding intro text etc..
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/include/IntroState.h
branches/dunks/src/Application.cpp
branches/dunks/src/DataCache.cpp
branches/dunks/src/IntroState.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-04-30 06:11:55 UTC (rev 220)
+++ branches/dunks/include/DataCache.h 2008-04-30 17:57:54 UTC (rev 221)
@@ -430,7 +430,7 @@
std::string getBriefingText(uint16_t mission, uint16_t textType, HOUSETYPE house);
// std::string getBriefingText(ObjPic_enum mission, ObjPic_enum texttype, ObjPic_enum house);
-// std::string getBriefingText(ObjPic_enum i);
+ std::string getIntroString(uint16_t i);
@@ -448,6 +448,7 @@
Animation* Anim[NUM_ANIMATION];
Stringfile* BriefingStrings[3];
+ Stringfile* IntroStrings;
Mix_Chunk* soundChunk[NUM_SOUNDCHUNK];
};
Modified: branches/dunks/include/IntroState.h
===================================================================
--- branches/dunks/include/IntroState.h 2008-04-30 06:11:55 UTC (rev 220)
+++ branches/dunks/include/IntroState.h 2008-04-30 17:57:54 UTC (rev 221)
@@ -3,13 +3,22 @@
#include "Gfx.h"
#include "State.h"
+
#include "gui2/Button.h"
#include "pakfile/Wsafile.h"
+#include "DataCache.h"
#include "SDL.h"
+
#include <list>
#include <string>
+typedef std::pair <uint16_t, std::string> introText;
+
+class StringFile;
+class Button;
+class Label;
+class Container;
class IntroState : public State
{
@@ -30,7 +39,8 @@
HOLDING
};
- Frame(std::string file, Transition in, Transition out, bool cont);
+ Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, Palette_enum pal = INTRO_PAL);
+ ~Frame();
bool Execute(float ft);
void Load(Frame* lastframe);
@@ -52,7 +62,12 @@
ImagePtr m_animSurface, m_scaledSurface;
SDL_Color* m_transitionPalette;
+ Label* m_subText;
+ Container* m_container;
+ std::vector<introText> m_introStrings;
+ SDL_Palette* m_palette;
+
void setupTransitionIn();
void setupTransitionOut();
void cleanupTransitionIn();
@@ -66,6 +81,7 @@
typedef std::list<Frame*> IntroList;
+
public:
@@ -81,14 +97,17 @@
bool next();
void load(Frame frame);
virtual const char* GetName() { return "IntroState"; }
+ StringFile* m_introStringFile;
private:
-
IntroList m_wsaNames;
TranspButton *m_butIntro;
Frame* m_currentFrame;
+ std::vector<introText> m_introStrings;
+
+// Font* font;
};
Modified: branches/dunks/src/Application.cpp
===================================================================
--- branches/dunks/src/Application.cpp 2008-04-30 06:11:55 UTC (rev 220)
+++ branches/dunks/src/Application.cpp 2008-04-30 17:57:54 UTC (rev 221)
@@ -204,7 +204,7 @@
void Application::SetPalette()
{
- SDL_Palette * pal = DataCache::Instance()->getPalette(INTRO_PAL);
+ SDL_Palette * pal = DataCache::Instance()->getPalette(IBM_PAL);
//This fixes white wheels. Is palette broken or sth??
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-04-30 06:11:55 UTC (rev 220)
+++ branches/dunks/src/DataCache.cpp 2008-04-30 17:57:54 UTC (rev 221)
@@ -397,6 +397,7 @@
addSoundChunk(Intro_Wind_2bp, getChunkFromFile("INTROVOC:WIND2BP.VOC"));
addSoundChunk(Intro_Your, getChunkFromFile("INTROVOC:YOUR.VOC"));
+ IntroStrings = new Stringfile("ENGLISH:INTRO.ENG");
BriefingStrings[0] = new Stringfile("ENGLISH:TEXTA.ENG");
BriefingStrings[1] = new Stringfile("ENGLISH:TEXTO.ENG");
BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
@@ -434,13 +435,9 @@
SDL_Palette* DataCache::getPalette(Palette_enum palette)
{
- PalettefilePtr pal;
#ifdef THREADS
spinlock:
-#endif
-// pal = m_palette[palette];
-#ifdef THREADS
- if(!m_palette[palette]->getPalette())
+ if(!m_palette[palette])
goto spinlock;
#endif
return m_palette[palette]->getPalette();
@@ -611,9 +608,9 @@
return BriefingStrings[house]->getString(mission,textType);
}
-/*std::string DataCache::getBriefingText(int i){
- return BriefingStrings[0]->getString(i);
-}*/
+std::string DataCache::getIntroString(uint16_t i){
+ return IntroStrings->getString(i);
+}
void DataCache::addAnimation(Animation_enum ID, std::string fileName, double frameRate) {
int len;
Modified: branches/dunks/src/IntroState.cpp
===================================================================
--- branches/dunks/src/IntroState.cpp 2008-04-30 06:11:55 UTC (rev 220)
+++ branches/dunks/src/IntroState.cpp 2008-04-30 17:57:54 UTC (rev 221)
@@ -1,17 +1,21 @@
#include "IntroState.h"
#include "ResMan.h"
#include "Application.h"
+#include "DataCache.h"
#include "Gfx.h"
#include "Settings.h"
#include "pakfile/Palette.h"
#include "boost/bind.hpp"
+#include "gui2/Label.h"
+#include "gui2/Container.h"
// ------------------------------------------------------------------
// IntroState::Frame
IntroState::Frame::Frame(std::string filename,
Transition in, Transition out,
- bool continuation)
+ std::vector<introText> introStrings,
+ bool continuation, Palette_enum pal)
{
m_filename = filename;
m_transition_in = in;
@@ -21,16 +25,25 @@
m_state = TRANSITION_IN;
m_hold = 0.0f;
m_transitionPalette = NULL;
+ m_introStrings = introStrings;
+ m_container = new Container();
+// m_container->setPosition(UPoint(250, 400));
+ m_container->setSize(UPoint(Settings::Instance()->GetWidth(),
+ Settings::Instance()->GetHeight()));
+ m_palette = DataCache::Instance()->getPalette(pal);
+
+ Application::Instance()->RootWidget()->addChild(m_container);
+
}
void IntroState::Frame::Load(Frame* lastframe)
{
- SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette;
+// SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette;
printf("intro loading %s\n", m_filename.c_str());
int len;
- unsigned char* data = ResMan::Instance()->readFile(m_filename, &len);
+ uint8_t * data = ResMan::Instance()->readFile(m_filename, &len);
assert(data != NULL);
@@ -47,9 +60,13 @@
m_currentFrame = 0;
mb_finished = false;
- m_animSurface.reset(m_wsa->getPicture(m_currentFrame, palette));
+ m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette));
m_scaledSurface = m_animSurface->getResized(2.0);
-
+ if(m_introStrings.size() > 0){
+ m_subText = new Label(m_introStrings[0].second, 49, 0);
+ m_container->setPosition(UPoint(50, 420));
+ m_container->addChild(m_subText);
+ }
}
bool IntroState::Frame::Execute(float dt)
@@ -82,8 +99,6 @@
void IntroState::Frame::doPlaying(float dt)
{
- SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette;
-
m_frametime += dt;
if (m_frametime > m_wsa->getFPS())
@@ -96,7 +111,7 @@
}
else
{
- m_animSurface.reset(m_wsa->getPicture(m_currentFrame, palette));
+ m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette));
m_scaledSurface = m_animSurface->getResized(2.0);
};
};
@@ -118,8 +133,8 @@
void IntroState::Frame::setupTransitionOut()
{
m_transitionPalette = new SDL_Color[256];
- memcpy((unsigned char*)m_transitionPalette,
- Application::Instance()->Screen()->getSurface()->format->palette->colors,
+ memcpy((unsigned char*)m_transitionPalette,
+ m_palette->colors,
sizeof(SDL_Color) * 256);
}
@@ -139,7 +154,7 @@
if (m_transitionPalette == NULL) setupTransitionOut();
bool done = true;
- SDL_Surface* screen = m_scaledSurface->getSurface(); //Application::Instance()->Screen();
+ SDL_Surface* screen = m_scaledSurface->getSurface();
SDL_Color* col = m_transitionPalette;
const int fadeAmt = 3;
@@ -156,7 +171,6 @@
}
};
- //SDL_SetPalette(screen, SDL_LOGPAL|SDL_PHYSPAL, m_tempPal, 0, 256);
SDL_SetPalette(screen, SDL_LOGPAL, m_transitionPalette, 0, 256);
if (done)
@@ -171,73 +185,138 @@
m_state = TRANSITION_OUT;
}
+IntroState::Frame::~Frame()
+{
+ m_container->deleteChild(m_subText);
+}
// ------------------------------------------------------------------
// IntroState
IntroState::IntroState()
{
- m_currentFrame = NULL;
+ m_introStrings.push_back(introText(0, "Original copyright by:"));
+ enque( new Frame("INTRO:WESTWOOD.WSA",
+ Frame::NO_TRANSITION,
+ Frame::NO_TRANSITION,
+ m_introStrings,
+ false, WESTWOOD_PAL) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2)));
enque( new Frame("INTRO:INTRO1.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3)));
+
enque( new Frame("INTRO:INTRO2.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4)));
+
enque( new Frame("INTRO:INTRO3.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
- enque( new Frame("INTRO:INTRO4.WSA",
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(5)));
+
+ enque( new Frame("INTRO:INTRO9.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
- enque( new Frame("INTRO:INTRO5.WSA",
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6)));
+
+ enque( new Frame("INTRO:INTRO10.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
- enque( new Frame("INTRO:INTRO6.WSA",
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(7)));
+
+ enque( new Frame("INTRO:INTRO11.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8)));
+
+ enque( new Frame("INTRO:INTRO4.WSA",
+ Frame::NO_TRANSITION,
+ Frame::FADE_OUT,
+ m_introStrings,
+ false) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9)));
+
+ enque( new Frame("INTRO:INTRO6.WSA",
+ Frame::NO_TRANSITION,
+ Frame::FADE_OUT,
+ m_introStrings,
+ false) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(10)));
+
enque( new Frame("INTRO:INTRO7A.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
+ m_introStrings,
false) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(11)));
+
enque( new Frame("INTRO:INTRO7B.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
true) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12)));
+
enque( new Frame("INTRO:INTRO8A.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
+ m_introStrings,
false) );
- enque( new Frame("INTRO:INTRO8B.WSA",
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(13)));
+
+ enque( new Frame("INTRO:INTRO8B.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
+ m_introStrings,
true) );
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14)));
+
enque( new Frame("INTRO:INTRO8C.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
true) );
- enque( new Frame("INTRO:INTRO9.WSA",
+ m_introStrings.clear();
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15)));
+
+ enque( new Frame("INTRO:INTRO5.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
- enque( new Frame("INTRO:INTRO10.WSA",
- Frame::NO_TRANSITION,
- Frame::FADE_OUT,
- false) );
- enque( new Frame("INTRO:INTRO11.WSA",
- Frame::NO_TRANSITION,
- Frame::FADE_OUT,
- false) );
// seems nice to play this again ;)
enque( new Frame("INTRO:INTRO1.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
+ m_introStrings,
false) );
next();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-05-01 08:42:27
|
Revision: 227
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=227&view=rev
Author: dvalin
Date: 2008-05-01 01:42:12 -0700 (Thu, 01 May 2008)
Log Message:
-----------
* be sure to initialize m_currentFrame to NULL so that it can be checked if not NULL and deleted afterwards..
* add wait delay for intro scenes
Modified Paths:
--------------
branches/dunks/include/IntroState.h
branches/dunks/src/IntroState.cpp
Modified: branches/dunks/include/IntroState.h
===================================================================
--- branches/dunks/include/IntroState.h 2008-05-01 06:15:29 UTC (rev 226)
+++ branches/dunks/include/IntroState.h 2008-05-01 08:42:12 UTC (rev 227)
@@ -39,7 +39,7 @@
HOLDING
};
- Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, int8_t song = -1, Palette_enum pal = INTRO_PAL);
+ Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL);
~Frame();
bool Execute(float ft);
@@ -59,8 +59,10 @@
WsafilePtr m_wsa;
int m_currentFrame;
float m_frametime;
- int m_song;
+ int8_t m_song;
+ uint16_t m_endWait;
+
ImagePtr m_animSurface, m_scaledSurface;
SDL_Color* m_transitionPalette;
Label* m_subText;
@@ -101,6 +103,7 @@
StringFile* m_introStringFile;
private:
+ void handleInput();
IntroList m_wsaNames;
TranspButton *m_butIntro;
Modified: branches/dunks/src/IntroState.cpp
===================================================================
--- branches/dunks/src/IntroState.cpp 2008-05-01 06:15:29 UTC (rev 226)
+++ branches/dunks/src/IntroState.cpp 2008-05-01 08:42:12 UTC (rev 227)
@@ -8,6 +8,7 @@
#include "boost/bind.hpp"
#include "gui2/Label.h"
#include "gui2/Container.h"
+#include <iostream>
// ------------------------------------------------------------------
// IntroState::Frame
@@ -15,7 +16,7 @@
IntroState::Frame::Frame(std::string filename,
Transition in, Transition out,
std::vector<introText> introStrings,
- bool continuation, int8_t song, Palette_enum pal)
+ bool continuation, uint16_t endWait, int8_t song, Palette_enum pal)
{
m_filename = filename;
m_transition_in = in;
@@ -33,6 +34,7 @@
m_palette = DataCache::Instance()->getPalette(pal);
m_song = song;
+ m_endWait = endWait;
Application::Instance()->RootWidget()->addChild(m_container);
@@ -94,7 +96,7 @@
};
m_scaledSurface->blitToScreenCentered();
-
+
return mb_finished;
}
@@ -152,6 +154,7 @@
void IntroState::Frame::doTransitionOut(float dt)
{
+
if (m_transition_out == NO_TRANSITION)
{
mb_finished = true;
@@ -189,6 +192,25 @@
void IntroState::Frame::doHolding(float dt)
{
+ uint16_t startTicks = SDL_GetTicks();
+ uint16_t curTicks;
+
+ SDL_Event event;
+ bool wait = true;
+ while(wait && ((curTicks = SDL_GetTicks()) - startTicks) < m_endWait)
+ while(SDL_PollEvent(&event))
+ switch (event.type)
+ case (SDL_KEYDOWN):
+ switch( event.key.keysym.sym ){
+ case SDLK_ESCAPE:
+ case SDLK_RETURN:
+ case SDLK_SPACE:
+ Application::Instance()->RootState()->PopState();
+ wait = false;
+ default:
+ break;
+ }
+
m_state = TRANSITION_OUT;
}
@@ -201,13 +223,14 @@
IntroState::IntroState()
{
+ m_currentFrame = NULL;
m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet..
// DataCache::Instance()->getCreditsString(20)));
enque( new Frame("INTRO:WESTWOOD.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
m_introStrings,
- false, 0, WESTWOOD_PAL) );
+ false, 5000, 0, WESTWOOD_PAL) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2)));
@@ -215,7 +238,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false, 1) );
+ false, 2000, 1) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3)));
@@ -223,7 +246,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false) );
+ false, 2000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4)));
@@ -231,7 +254,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false) );
+ false, 2000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(5)));
@@ -239,7 +262,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false) );
+ false, 3000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6)));
@@ -247,7 +270,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false) );
+ false, 2000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(7)));
@@ -255,7 +278,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false) );
+ false, 2000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8)));
@@ -263,7 +286,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- false) );
+ false, 3000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9)));
@@ -287,7 +310,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- true) );
+ true, 2000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12)));
@@ -311,7 +334,7 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
- true) );
+ true, 2000) );
m_introStrings.clear();
m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15)));
@@ -358,9 +381,9 @@
State::JustMadeInactive();
}
-
bool IntroState::next()
{
+
fprintf(stderr, "loading next..\n");
IntroList::iterator it = m_wsaNames.begin();
if (it == m_wsaNames.end() )
@@ -370,9 +393,32 @@
Frame* nextFrame = *it;
nextFrame->Load(m_currentFrame);
+/* uint16_t startTicks = SDL_GetTicks();
+ uint16_t curTicks;
+
+ SDL_Event event;
+ if(m_currentFrame != NULL)
+ while(((curTicks = SDL_GetTicks()) - startTicks) < m_currentFrame->m_endWait){
+ while(SDL_PollEvent(&event))
+ {
+ switch (event.type)
+ {
+ case (SDL_KEYDOWN):
+ switch( event.key.keysym.sym )
+ {
+ case SDLK_ESCAPE:
+ SkipIntro();
+ return true;
+ default:
+ break;
+ }
+ }
+ }
+ }*/
m_wsaNames.pop_front();
-// if (m_currentFrame != NULL) delete m_currentFrame;
+
+ if (m_currentFrame != NULL) delete m_currentFrame;
m_currentFrame = nextFrame;
return true;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-05-01 11:17:38
|
Revision: 228
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=228&view=rev
Author: dvalin
Date: 2008-05-01 04:17:01 -0700 (Thu, 01 May 2008)
Log Message:
-----------
add text strings at correct places
Modified Paths:
--------------
branches/dunks/include/IntroState.h
branches/dunks/src/IntroState.cpp
Modified: branches/dunks/include/IntroState.h
===================================================================
--- branches/dunks/include/IntroState.h 2008-05-01 08:42:12 UTC (rev 227)
+++ branches/dunks/include/IntroState.h 2008-05-01 11:17:01 UTC (rev 228)
@@ -14,6 +14,7 @@
#include <string>
typedef std::pair <uint16_t, std::string> introText;
+typedef std::pair <uint16_t, Mix_Chunk*> introSound;
class StringFile;
class Button;
@@ -39,11 +40,13 @@
HOLDING
};
- Frame(std::string file, Transition in, Transition out, std::vector<introText> introStrings, bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL);
+ Frame(std::string filename, Transition in, Transition out,
+ bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL);
~Frame();
bool Execute(float ft);
void Load(Frame* lastframe);
+ addTextString(introText);
private:
std::string m_filename;
@@ -110,6 +113,7 @@
Frame* m_currentFrame;
std::vector<introText> m_introStrings;
+ std::vector<introSound> m_introSounds;
// Font* font;
};
Modified: branches/dunks/src/IntroState.cpp
===================================================================
--- branches/dunks/src/IntroState.cpp 2008-05-01 08:42:12 UTC (rev 227)
+++ branches/dunks/src/IntroState.cpp 2008-05-01 11:17:01 UTC (rev 228)
@@ -13,9 +13,8 @@
// ------------------------------------------------------------------
// IntroState::Frame
-IntroState::Frame::Frame(std::string filename,
- Transition in, Transition out,
- std::vector<introText> introStrings,
+IntroState::Frame::Frame(std::string filename, Transition in, Transition out,
+ std::vector<introText> introStrings, //std::vector<introSound> sounds,
bool continuation, uint16_t endWait, int8_t song, Palette_enum pal)
{
m_filename = filename;
@@ -28,9 +27,9 @@
m_transitionPalette = NULL;
m_introStrings = introStrings;
m_container = new Container();
-// m_container->setPosition(UPoint(250, 400));
m_container->setSize(UPoint(Settings::Instance()->GetWidth(),
Settings::Instance()->GetHeight()));
+ m_subText = NULL;
m_palette = DataCache::Instance()->getPalette(pal);
m_song = song;
@@ -44,6 +43,8 @@
{
// SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette;
+ m_startTick = SDL_GetTicks();
+
printf("intro loading %s\n", m_filename.c_str());
int len;
@@ -66,11 +67,6 @@
m_animSurface.reset(m_wsa->getPicture(m_currentFrame, m_palette));
m_scaledSurface = m_animSurface->getResized(2.0);
- if(m_introStrings.size() > 0){
- m_subText = new Label(m_introStrings[0].second, 49, 0);
- m_container->setPosition(UPoint(50, 420));
- m_container->addChild(m_subText);
- }
}
bool IntroState::Frame::Execute(float dt)
@@ -103,6 +99,15 @@
void IntroState::Frame::doPlaying(float dt)
{
+ if(m_introStrings.size() > 0){
+ if(m_currentFrame == m_introStrings[0].first){
+ if(m_subText != NULL) m_container->deleteChild(m_subText);
+ m_subText = new Label(m_introStrings[0].second, 49, 0);
+ m_introStrings.erase(m_introStrings.begin());
+ m_container->setPosition(UPoint(50, 420));
+ m_container->addChild(m_subText);
+ }
+ }
m_frametime += dt;
@@ -193,30 +198,35 @@
void IntroState::Frame::doHolding(float dt)
{
uint16_t startTicks = SDL_GetTicks();
- uint16_t curTicks;
SDL_Event event;
bool wait = true;
- while(wait && ((curTicks = SDL_GetTicks()) - startTicks) < m_endWait)
- while(SDL_PollEvent(&event))
- switch (event.type)
+ while(wait && (SDL_GetTicks() - startTicks) < m_endWait){
+ std::cout << "curticks:\t" << SDL_GetTicks() - startTicks << std::endl;
+ std::cout << "endwait:\t" << m_endWait << std::endl;
+ while(SDL_PollEvent(&event)){
+ switch (event.type){
case (SDL_KEYDOWN):
switch( event.key.keysym.sym ){
- case SDLK_ESCAPE:
case SDLK_RETURN:
case SDLK_SPACE:
- Application::Instance()->RootState()->PopState();
wait = false;
+ break;
+ case SDLK_ESCAPE:
+ if(m_subText != NULL) m_container->deleteChild(m_subText);
+ Application::Instance()->RootState()->PopState();
+ return;
default:
break;
- }
+ }}}
+ }
m_state = TRANSITION_OUT;
}
IntroState::Frame::~Frame()
{
- m_container->deleteChild(m_subText);
+ if(m_subText != NULL) m_container->deleteChild(m_subText);
}
// ------------------------------------------------------------------
// IntroState
@@ -224,119 +234,125 @@
IntroState::IntroState()
{
m_currentFrame = NULL;
- m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet..
+
+// m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet..
// DataCache::Instance()->getCreditsString(20)));
enque( new Frame("INTRO:WESTWOOD.WSA",
Frame::NO_TRANSITION,
- Frame::NO_TRANSITION,
+ Frame::FADE_OUT,
m_introStrings,
false, 5000, 0, WESTWOOD_PAL) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(2)));
+ m_introStrings.push_back(introText(48, "The Building of a Dynasty"));
enque( new Frame("INTRO:INTRO1.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 2000, 1) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3)));
enque( new Frame("INTRO:INTRO2.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 2000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4)));
+ m_introStrings.push_back(introText(33, DataCache::Instance()->getIntroString(5)));
enque( new Frame("INTRO:INTRO3.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 2000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(5)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6)));
+ m_introStrings.push_back(introText(50, DataCache::Instance()->getIntroString(7)));
enque( new Frame("INTRO:INTRO9.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 3000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8)));
enque( new Frame("INTRO:INTRO10.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 2000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(7)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9)));
+ m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(10)));
+ m_introStrings.push_back(introText(41, DataCache::Instance()->getIntroString(11)));
enque( new Frame("INTRO:INTRO11.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 2000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12)));
+ m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(13)));
enque( new Frame("INTRO:INTRO4.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false, 3000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14)));
enque( new Frame("INTRO:INTRO6.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
false) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(10)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15)));
enque( new Frame("INTRO:INTRO7A.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
m_introStrings,
false) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(11)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(16)));
enque( new Frame("INTRO:INTRO7B.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
true, 2000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(17)));
enque( new Frame("INTRO:INTRO8A.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
m_introStrings,
false) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(13)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(18)));
enque( new Frame("INTRO:INTRO8B.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
m_introStrings,
true) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(19)));
enque( new Frame("INTRO:INTRO8C.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
m_introStrings,
true, 2000) );
m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15)));
+ m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(20)));
enque( new Frame("INTRO:INTRO5.WSA",
Frame::NO_TRANSITION,
@@ -364,6 +380,7 @@
void IntroState::SkipIntro()
{
+ delete m_currentFrame;
mp_parent->PopState();
}
@@ -393,28 +410,6 @@
Frame* nextFrame = *it;
nextFrame->Load(m_currentFrame);
-/* uint16_t startTicks = SDL_GetTicks();
- uint16_t curTicks;
-
- SDL_Event event;
- if(m_currentFrame != NULL)
- while(((curTicks = SDL_GetTicks()) - startTicks) < m_currentFrame->m_endWait){
- while(SDL_PollEvent(&event))
- {
- switch (event.type)
- {
- case (SDL_KEYDOWN):
- switch( event.key.keysym.sym )
- {
- case SDLK_ESCAPE:
- SkipIntro();
- return true;
- default:
- break;
- }
- }
- }
- }*/
m_wsaNames.pop_front();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-05-01 12:12:09
|
Revision: 229
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=229&view=rev
Author: dvalin
Date: 2008-05-01 05:12:01 -0700 (Thu, 01 May 2008)
Log Message:
-----------
pass strings etc. to Frame object with functions in stead of passing them as arguments to constructor
Modified Paths:
--------------
branches/dunks/include/IntroState.h
branches/dunks/src/IntroState.cpp
Modified: branches/dunks/include/IntroState.h
===================================================================
--- branches/dunks/include/IntroState.h 2008-05-01 11:17:01 UTC (rev 228)
+++ branches/dunks/include/IntroState.h 2008-05-01 12:12:01 UTC (rev 229)
@@ -41,12 +41,14 @@
};
Frame(std::string filename, Transition in, Transition out,
- bool cont, uint16_t endWait = 0, int8_t song = -1, Palette_enum pal = INTRO_PAL);
+ bool cont, uint16_t endWait = 0);
~Frame();
bool Execute(float ft);
void Load(Frame* lastframe);
- addTextString(introText);
+ void addText(uint16_t playAt, std::string introText);
+ void setPalette(Palette_enum palette);
+ void setSong(uint8_t song);
private:
std::string m_filename;
@@ -112,6 +114,7 @@
TranspButton *m_butIntro;
Frame* m_currentFrame;
+ Frame* frame;
std::vector<introText> m_introStrings;
std::vector<introSound> m_introSounds;
Modified: branches/dunks/src/IntroState.cpp
===================================================================
--- branches/dunks/src/IntroState.cpp 2008-05-01 11:17:01 UTC (rev 228)
+++ branches/dunks/src/IntroState.cpp 2008-05-01 12:12:01 UTC (rev 229)
@@ -14,8 +14,7 @@
// IntroState::Frame
IntroState::Frame::Frame(std::string filename, Transition in, Transition out,
- std::vector<introText> introStrings, //std::vector<introSound> sounds,
- bool continuation, uint16_t endWait, int8_t song, Palette_enum pal)
+ bool continuation, uint16_t endWait)
{
m_filename = filename;
m_transition_in = in;
@@ -25,26 +24,38 @@
m_state = TRANSITION_IN;
m_hold = 0.0f;
m_transitionPalette = NULL;
- m_introStrings = introStrings;
m_container = new Container();
m_container->setSize(UPoint(Settings::Instance()->GetWidth(),
Settings::Instance()->GetHeight()));
m_subText = NULL;
- m_palette = DataCache::Instance()->getPalette(pal);
+ m_palette = DataCache::Instance()->getPalette(INTRO_PAL);
- m_song = song;
+ m_song = -1;
m_endWait = endWait;
Application::Instance()->RootWidget()->addChild(m_container);
}
+void IntroState::Frame::addText(uint16_t playAt, std::string text)
+{
+ m_introStrings.push_back(introText(playAt, text));
+}
+
+void IntroState::Frame::setPalette(Palette_enum palette)
+{
+ m_palette = DataCache::Instance()->getPalette(palette);
+}
+
+void IntroState::Frame::setSong(uint8_t song)
+{
+ m_song = song;
+}
+
void IntroState::Frame::Load(Frame* lastframe)
{
// SDL_Palette* palette = Application::Instance()->Screen()->getSurface()->format->palette;
- m_startTick = SDL_GetTicks();
-
printf("intro loading %s\n", m_filename.c_str());
int len;
@@ -202,8 +213,6 @@
SDL_Event event;
bool wait = true;
while(wait && (SDL_GetTicks() - startTicks) < m_endWait){
- std::cout << "curticks:\t" << SDL_GetTicks() - startTicks << std::endl;
- std::cout << "endwait:\t" << m_endWait << std::endl;
while(SDL_PollEvent(&event)){
switch (event.type){
case (SDL_KEYDOWN):
@@ -237,134 +246,124 @@
// m_introStrings.push_back(introText(0, "")); // credits.eng isn't properly decoded yet..
// DataCache::Instance()->getCreditsString(20)));
- enque( new Frame("INTRO:WESTWOOD.WSA",
+ frame = new Frame("INTRO:WESTWOOD.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 5000, 0, WESTWOOD_PAL) );
- m_introStrings.clear();
+ false, 5000);
+ frame->setSong(0);
+ frame->setPalette(WESTWOOD_PAL);
+ enque(frame);
- m_introStrings.push_back(introText(48, "The Building of a Dynasty"));
- enque( new Frame("INTRO:INTRO1.WSA",
- Frame::NO_TRANSITION,
+ frame = new Frame("INTRO:INTRO1.WSA",
+ Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 2000, 1) );
- m_introStrings.clear();
-
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(3)));
- enque( new Frame("INTRO:INTRO2.WSA",
+ false, 2000);
+ frame->setSong(1);
+ frame->addText(48, "The Building of a Dynasty");
+ enque(frame);
+
+ frame = new Frame("INTRO:INTRO2.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 2000) );
- m_introStrings.clear();
+ false, 2000);
+ frame->addText(0, DataCache::Instance()->getIntroString(3));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(4)));
- m_introStrings.push_back(introText(33, DataCache::Instance()->getIntroString(5)));
- enque( new Frame("INTRO:INTRO3.WSA",
+ frame = new Frame("INTRO:INTRO3.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 2000) );
- m_introStrings.clear();
+ false, 2000);
+ frame->addText(0, DataCache::Instance()->getIntroString(4));
+ frame->addText(33, DataCache::Instance()->getIntroString(5));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(6)));
- m_introStrings.push_back(introText(50, DataCache::Instance()->getIntroString(7)));
- enque( new Frame("INTRO:INTRO9.WSA",
+ frame = new Frame("INTRO:INTRO9.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 3000) );
- m_introStrings.clear();
+ false, 3000);
+ frame->addText(0, DataCache::Instance()->getIntroString(6));
+ frame->addText(50, DataCache::Instance()->getIntroString(7));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(8)));
- enque( new Frame("INTRO:INTRO10.WSA",
+ frame = new Frame("INTRO:INTRO10.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 2000) );
- m_introStrings.clear();
+ false, 2000);
+ frame->addText(0, DataCache::Instance()->getIntroString(8));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(9)));
- m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(10)));
- m_introStrings.push_back(introText(41, DataCache::Instance()->getIntroString(11)));
- enque( new Frame("INTRO:INTRO11.WSA",
+ frame = new Frame("INTRO:INTRO11.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 2000) );
- m_introStrings.clear();
+ false, 2000);
+ frame->addText(0, DataCache::Instance()->getIntroString(9));
+ frame->addText(25, DataCache::Instance()->getIntroString(10));
+ frame->addText(41, DataCache::Instance()->getIntroString(11));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(12)));
- m_introStrings.push_back(introText(25, DataCache::Instance()->getIntroString(13)));
- enque( new Frame("INTRO:INTRO4.WSA",
+ frame = new Frame("INTRO:INTRO4.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false, 3000) );
- m_introStrings.clear();
+ false, 3000);
+ frame->addText(0, DataCache::Instance()->getIntroString(12));
+ frame->addText(25, DataCache::Instance()->getIntroString(13));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(14)));
- enque( new Frame("INTRO:INTRO6.WSA",
+ frame = new Frame("INTRO:INTRO6.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false) );
- m_introStrings.clear();
+ false);
+ frame->addText(0, DataCache::Instance()->getIntroString(14));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(15)));
- enque( new Frame("INTRO:INTRO7A.WSA",
+ frame = new Frame("INTRO:INTRO7A.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
- m_introStrings,
- false) );
- m_introStrings.clear();
+ false);
+ frame->addText(0, DataCache::Instance()->getIntroString(15));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(16)));
- enque( new Frame("INTRO:INTRO7B.WSA",
+ frame = new Frame("INTRO:INTRO7B.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- true, 2000) );
- m_introStrings.clear();
+ true, 2000);
+ frame->addText(0, DataCache::Instance()->getIntroString(16));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(17)));
- enque( new Frame("INTRO:INTRO8A.WSA",
+ frame = new Frame("INTRO:INTRO8A.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
- m_introStrings,
- false) );
- m_introStrings.clear();
+ false);
+ frame->addText(0, DataCache::Instance()->getIntroString(17));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(18)));
- enque( new Frame("INTRO:INTRO8B.WSA",
+ frame = new Frame("INTRO:INTRO8B.WSA",
Frame::NO_TRANSITION,
Frame::NO_TRANSITION,
- m_introStrings,
- true) );
- m_introStrings.clear();
+ true);
+ frame->addText(0, DataCache::Instance()->getIntroString(18));
+ enque(frame);
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(19)));
- enque( new Frame("INTRO:INTRO8C.WSA",
+ frame = new Frame("INTRO:INTRO8C.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- true, 2000) );
- m_introStrings.clear();
- m_introStrings.push_back(introText(0, DataCache::Instance()->getIntroString(20)));
+ true, 2000);
+ frame->addText(0, DataCache::Instance()->getIntroString(19));
+ enque(frame);
- enque( new Frame("INTRO:INTRO5.WSA",
+ frame = new Frame("INTRO:INTRO5.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false) );
+ false);
+ frame->addText(0, DataCache::Instance()->getIntroString(20));
+ enque(frame);
+
// seems nice to play this again ;)
- enque( new Frame("INTRO:INTRO1.WSA",
+ frame = new Frame("INTRO:INTRO1.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- m_introStrings,
- false) );
+ false);
+ enque(frame);
next();
m_butIntro = new TranspButton(Settings::Instance()->GetWidth(),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-05-01 13:01:43
|
Revision: 231
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=231&view=rev
Author: dvalin
Date: 2008-05-01 06:01:31 -0700 (Thu, 01 May 2008)
Log Message:
-----------
add spinlocks for soundChunks
Modified Paths:
--------------
branches/dunks/include/DataCache.h
branches/dunks/src/DataCache.cpp
Modified: branches/dunks/include/DataCache.h
===================================================================
--- branches/dunks/include/DataCache.h 2008-05-01 12:19:38 UTC (rev 230)
+++ branches/dunks/include/DataCache.h 2008-05-01 13:01:31 UTC (rev 231)
@@ -450,7 +450,7 @@
Stringfile* BriefingStrings[3];
Stringfile* IntroStrings;
Stringfile* CreditsStrings;
- Mix_Chunk* soundChunk[NUM_SOUNDCHUNK];
+ std::vector<Mix_Chunk*> soundChunk;
};
Modified: branches/dunks/src/DataCache.cpp
===================================================================
--- branches/dunks/src/DataCache.cpp 2008-05-01 12:19:38 UTC (rev 230)
+++ branches/dunks/src/DataCache.cpp 2008-05-01 13:01:31 UTC (rev 231)
@@ -18,6 +18,7 @@
m_music.push_back(new music());
}
+ soundChunk.resize(NUM_SOUNDCHUNK);
int len, maplen;
uint8_t *data, *mapdata;
@@ -428,6 +429,7 @@
BriefingStrings[2] = new Stringfile("ENGLISH:TEXTH.ENG");
addMusic(MUSIC_INTRO, "SOUND:DUNE0.ADL", 2);
+#if 0
// These are actually all the same song, but three different versions..
addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 3);
addMusic(MUSIC_LOSE, "SOUND:DUNE1.ADL", 4);
@@ -468,7 +470,7 @@
* addMusic(MUSIC_WIN, "SOUND:DUNE8.ADL", 3);
*/
addMusic(MUSIC_WIN, "SOUND:DUNE20.ADL", 2);
-
+#endif
delete data;
}
@@ -606,6 +608,11 @@
}
Mix_Chunk* DataCache::getSoundChunk(Sound_enum ID){
+#ifdef THREADS
+spinlock:
+ if(!soundChunk[ID])
+ goto spinlock;
+#endif
return soundChunk[ID];
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dv...@us...> - 2008-05-01 20:35:28
|
Revision: 234
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=234&view=rev
Author: dvalin
Date: 2008-05-01 13:35:05 -0700 (Thu, 01 May 2008)
Log Message:
-----------
* add most of the rest sounds to intro
* concatenate the appropriate sounds in stead of adding them one by one add each specific location
Modified Paths:
--------------
branches/dunks/include/IntroState.h
branches/dunks/src/IntroState.cpp
Modified: branches/dunks/include/IntroState.h
===================================================================
--- branches/dunks/include/IntroState.h 2008-05-01 18:58:21 UTC (rev 233)
+++ branches/dunks/include/IntroState.h 2008-05-01 20:35:05 UTC (rev 234)
@@ -15,6 +15,7 @@
typedef std::pair <uint16_t, std::string> introText;
typedef std::pair <uint16_t, Sound_enum> introSound;
+typedef std::pair <uint16_t, Mix_Chunk*> soundChunk;
class StringFile;
class Button;
@@ -48,6 +49,7 @@
void Load(Frame* lastframe);
void addText(uint16_t playAt, std::string introText);
void addSound(uint16_t playAt, Sound_enum sound);
+ void concatSound(uint16_t playAt, Sound_enum sound);
void setPalette(Palette_enum palette);
void setSong(uint8_t song);
@@ -75,6 +77,7 @@
Container* m_container;
std::vector<introText> m_introStrings;
std::vector<introSound> m_introSounds;
+ std::vector<soundChunk> m_soundChunks;
SDL_Palette* m_palette;
Modified: branches/dunks/src/IntroState.cpp
===================================================================
--- branches/dunks/src/IntroState.cpp 2008-05-01 18:58:21 UTC (rev 233)
+++ branches/dunks/src/IntroState.cpp 2008-05-01 20:35:05 UTC (rev 234)
@@ -47,6 +47,45 @@
m_introSounds.push_back(introSound(playAt, sound));
}
+void IntroState::Frame::concatSound(uint16_t playAt, Sound_enum sound)
+{
+ Mix_Chunk* sound1;
+ Mix_Chunk* sound2 = DataCache::Instance()->getSoundChunk(sound);
+ bool exists = false;
+ uint8_t i;
+ for(i = 0; i < m_soundChunks.size(); i++)
+ {
+ if(m_soundChunks[i].first == playAt)
+ {
+ exists = true;
+ sound1 = m_soundChunks[i].second;
+ break;
+ }
+ }
+ if(!exists){
+ m_soundChunks.push_back(soundChunk(playAt, sound2));
+ return;
+ }
+
+ Mix_Chunk* newChunk;
+ if((newChunk = (Mix_Chunk*) malloc(sizeof(Mix_Chunk))) == NULL) {
+ return;
+ }
+
+ newChunk->allocated = 1;
+ newChunk->volume = sound1->volume;
+ newChunk->alen = sound1->alen + sound2->alen;
+
+ if((newChunk->abuf = (Uint8 *)malloc(newChunk->alen)) == NULL) {
+ free(newChunk);
+ return;
+ }
+
+ memcpy(newChunk->abuf, sound1->abuf, sound1->alen);
+ memcpy(newChunk->abuf + sound1->alen, sound2->abuf, sound2->alen);
+ m_soundChunks[i] = soundChunk(playAt, newChunk);
+}
+
void IntroState::Frame::setPalette(Palette_enum palette)
{
m_palette = DataCache::Instance()->getPalette(palette);
@@ -132,6 +171,14 @@
m_introSounds.erase(m_introSounds.begin());
}
}
+ if(m_soundChunks.size() > 0){
+ if(m_currentFrame == m_soundChunks[0].first){
+ Mix_Chunk* sound = m_soundChunks[0].second;
+ Application::Instance()->playSound(sound);
+// delete(m_soundChunks[0].second);
+ m_soundChunks.erase(m_soundChunks.begin());
+ }
+ }
m_frametime += dt;
@@ -273,8 +320,8 @@
false, 2000);
frame->setSong(1);
frame->addSound(5, Intro_Dune);
- frame->addSound(25, Intro_TheBuilding);
- frame->addSound(49, Intro_OfADynasty);
+ frame->concatSound(48, Intro_TheBuilding);
+ frame->concatSound(48, Intro_OfADynasty);
frame->addText(48, "The Building of a Dynasty");
enque(frame);
@@ -282,8 +329,8 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
false, 2000);
- frame->addSound(0, Intro_ThePlanetArrakis);
- frame->addSound(11, Intro_KnownAsDune);
+ frame->concatSound(0, Intro_ThePlanetArrakis);
+ frame->concatSound(0, Intro_KnownAsDune);
frame->addText(0, DataCache::Instance()->getIntroString(3));
enque(frame);
@@ -293,9 +340,9 @@
false, 2000);
frame->addSound(0, Intro_LandOfSand);
frame->addText(0, DataCache::Instance()->getIntroString(4));
- frame->addSound(20, Intro_Home);
- frame->addSound(33, Intro_OfTheSpice);
- frame->addSound(39, Intro_Melange);
+ frame->concatSound(23, Intro_Home);
+ frame->concatSound(23, Intro_OfTheSpice);
+ frame->concatSound(33, Intro_Melange);
frame->addText(33, DataCache::Instance()->getIntroString(5));
enque(frame);
@@ -303,25 +350,27 @@
Frame::NO_TRANSITION,
Frame::FADE_OUT,
false, 3000);
- frame->addSound(0, Intro_TheSpice);
- frame->addSound(5, Intro_Controls);
- frame->addSound(9, Intro_TheEmpire);
- frame->addSound(10, Intro_Clank);
- frame->addSound(25, Intro_WhoEver);
- frame->addSound(29, Intro_ControlsDune);
- frame->addSound(35, Intro_ControlsTheSpice);
- frame->addSound(50, Intro_Brakes_2p);
- frame->addSound(58, Intro_Clank);
frame->addText(0, DataCache::Instance()->getIntroString(6));
- frame->addText(50, DataCache::Instance()->getIntroString(7));
+ frame->concatSound(0, Intro_TheSpice);
+ frame->concatSound(0, Intro_Controls);
+ frame->concatSound(0, Intro_TheEmpire);
+ frame->addSound(18, Intro_Clank);
+ frame->addText(32, DataCache::Instance()->getIntroString(7));
+ frame->concatSound(32, Intro_WhoEver);
+ frame->concatSound(32, Intro_ControlsDune);
+ frame->concatSound(32, Intro_ControlsTheSpice);
+ frame->addSound(53, Intro_Brakes_2p);
+ frame->addSound(61, Intro_Clank);
enque(frame);
frame = new Frame("INTRO:INTRO10.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
- false, 2000);
+ false, 7500);
frame->addText(0, DataCache::Instance()->getIntroString(8));
- frame->addSong(0, Intro_TheEmperor);
+ frame->concatSound(0, Intro_TheEmperor);
+ frame->concatSound(0, Intro_HasProposedAChallenge);
+ frame->concatSound(0, Intro_ToEachOfTheHouses);
enque(frame);
frame = new Frame("INTRO:INTRO11.WSA",
@@ -329,16 +378,33 @@
Frame::FADE_OUT,
false, 2000);
frame->addText(0, DataCache::Instance()->getIntroString(9));
- frame->addText(25, DataCache::Instance()->getIntroString(10));
- frame->addText(41, DataCache::Instance()->getIntroString(11));
+ frame->concatSound(0, Intro_TheHouse);
+ frame->concatSound(0, Intro_ThatProduces);
+ frame->concatSound(0, Intro_TheMostSpice);
+ frame->concatSound(0, Intro_WillControlDune);
+ // The video should actually loop a bit here, needs to be implemented..
+ frame->concatSound(41, Intro_ThereAreNoSet);
+ frame->concatSound(41, Intro_Territories);
+ frame->concatSound(41, Intro_AndNo);
+ frame->concatSound(41, Intro_RulesOfEngagement);
+
+ frame->addText(41, DataCache::Instance()->getIntroString(10));
+ frame->addText(44, DataCache::Instance()->getIntroString(11));
enque(frame);
+
frame = new Frame("INTRO:INTRO4.WSA",
Frame::NO_TRANSITION,
Frame::FADE_OUT,
false, 3000);
frame->addText(0, DataCache::Instance()->getIntroString(12));
+ frame->concatSound(0, Intro_VastArmies);
+ frame->concatSound(0, Intro_HasArrived);
frame->addText(25, DataCache::Instance()->getIntroString(13));
+ frame->concatSound(25, Intro_AndNow);
+ frame->concatSound(25, Intro_3Houses);
+ frame->concatSound(25, Intro_ForControl);
+ frame->concatSound(25, Intro_OfDune);
enque(frame);
frame = new Frame("INTRO:INTRO6.WSA",
@@ -346,6 +412,13 @@
Frame::FADE_OUT,
false);
frame->addText(0, DataCache::Instance()->getIntroString(14));
+ frame->addSound(0, Intro_TheNobleAtreides);
+ frame->addSound(31, Intro_Glass);
+ frame->addSound(32, Intro_Glass);
+ frame->addSound(33, Intro_Glass);
+ frame->addSound(63, Intro_Glass);
+ frame->addSound(64, Intro_Glass);
+ frame->addSound(65, Intro_Glass);
enque(frame);
frame = new Frame("INTRO:INTRO7A.WSA",
@@ -353,6 +426,12 @@
Frame::NO_TRANSITION,
false);
frame->addText(0, DataCache::Instance()->getIntroString(15));
+ frame->concatSound(0, Intro_TheInsideous);
+ frame->concatSound(0, Intro_Ordos);
+ frame->addSound(2, Intro_Missile_8);
+ frame->addSound(7, Intro_Missile_8);
+ frame->addSound(26, Intro_Missile_8);
+ frame->addSound(37, Intro_Missile_8);
enque(frame);
frame = new Frame("INTRO:INTRO7B.WSA",
@@ -367,6 +446,11 @@
Frame::NO_TRANSITION,
false);
frame->addText(0, DataCache::Instance()->getIntroString(17));
+ frame->concatSound(0, Intro_AndThe);
+ frame->concatSound(0, Intro_EvilHarkonnen);
+ frame->addSound(0, Sound_Gun);
+ frame->addSound(3, Sound_Gun);
+ frame->addSound(8, Sound_Gun);
enque(frame);
frame = new Frame("INTRO:INTRO8B.WSA",
@@ -381,6 +465,8 @@
Frame::FADE_OUT,
true, 2000);
frame->addText(0, DataCache::Instance()->getIntroString(19));
+ frame->addSound(16, Sound_ExplosionSmall);
+ frame->addSound(25, Sound_ExplosionMedium);
enque(frame);
frame = new Frame("INTRO:INTRO5.WSA",
@@ -388,8 +474,28 @@
Frame::FADE_OUT,
false);
frame->addText(0, DataCache::Instance()->getIntroString(20));
+ frame->concatSound(0, Intro_OnlyOneHouse);
+ frame->concatSound(0, Intro_WillPrevail);
enque(frame);
+/* frame = new Frame("Your battle for Dune begins",
+ Frame::NO_TRANSITION,
+ Frame::FADE_OUT,
+ false);
+ frame->concatSound(0, Intro_Your);
+ frame->concatSound(0, Intro_Battle);
+ frame->concatSound(0, Intro_ForDune);
+ frame->concatSound(0, Intro_Begins);
+ enque(frame);
+
+
+ frame = new Frame("Now",
+ Frame::NO_TRANSITION,
+ Frame::FADE_OUT,
+ false);
+ frame->addSound(0, Intro_Now);
+ enque(frame);*/
+
// seems nice to play this again ;)
frame = new Frame("INTRO:INTRO1.WSA",
Frame::NO_TRANSITION,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|