* (windows) Version # is now shown in title bar

* (bugfix) Fixed some issues with how default offsets are calculated, it fixed some problems where sprites would be in the wrong place in certain DMODs
- Added info to programmer_readme.txt about how to set the Windows version to build

git-svn-id: svn://rtsoft.com/rtsvn/projects/RTDink@1476 353e56fe-9613-0410-8469-b96ad8e6f29c
This commit is contained in:
seth 2017-09-13 09:48:34 +00:00
parent e3ad75909f
commit 0fe6c06c7d
5 changed files with 217 additions and 41 deletions

View file

@ -6,9 +6,14 @@ Dink Smallwood HD
* Move the RTDink directory checkout to a sub directory of your proton dir. (it works exactly like a proton example - you can still svn update/commit like normal, svn allows you to move around dirs like that) * Move the RTDink directory checkout to a sub directory of your proton dir. (it works exactly like a proton example - you can still svn update/commit like normal, svn allows you to move around dirs like that)
* Sign up at fmod.com and download FMod Studio for Windows. Unzip to <proton dir>\shared\win\fmodstudio, so you should have a proton\shared\win\fmodstudio\api dir, etc. * Sign up at fmod.com and download FMod Studio for Windows. Unzip to <proton dir>\shared\win\fmodstudio, so you should have a proton\shared\win\fmodstudio\api dir, etc.
* Install Visual Studio 2017 (Community version works fine and is free) and open RTDink\windows_vs2017\iPhoneRTDink.sln * Install Visual Studio 2017 (Community version works fine and is free) and open RTDink\windows_vs2017\iPhoneRTDink.sln
* By default, Proton SDK's main.cpp is setup to compile for iPhone most likely. Assuming you'd rather not have an iPhone build, search the project for "//WORK: Change device emulation here" and right under that,
change it from string desiredVideoMode = "iPhone Landscape"; or whatever it was to "string desiredVideoMode = "Windows"; instead. (this is where you can emulate many devices and sizes)
* Set the profile to "Release GL" and "Win32". (or "Debug GL" is ok too) Compile. If it worked, you should have a dink.exe created in DinkHD/bin. * Set the profile to "Release GL" and "Win32". (or "Debug GL" is ok too) Compile. If it worked, you should have a dink.exe created in DinkHD/bin.
* Install DinkHD from rtsoft.com. (media is not svn, so this is a way to get it..) Overwrite its dink.exe with your new one. It should run! * Install DinkHD from rtsoft.com. (media is not svn, so this is a way to get it..) Overwrite its dink.exe with your new one. It should run!
Use the "Debug GL" or "Release GL" solution configuations. Use the "Debug GL" or "Release GL" solution configuations.
--- Have a bugfix or patch?! Please send it over to Seth! Please note that any submission (code, media, translations, ect) must be 100% compatible with the license as listed in dinkhd_license.txt --- Have a bugfix or patch?! Please send it over to Seth! Please note that any submission (code, media, translations, ect) must be 100% compatible with the license as listed in dinkhd_license.txt

View file

@ -5,6 +5,8 @@ Requires OpenGL, if you have any problems running this, try installing the lates
To change screen size, drag the window borders around. (Hold shift while dragging to toggle aspect-ratio lock) To change screen size, drag the window borders around. (Hold shift while dragging to toggle aspect-ratio lock)
To toggle a psuedo full screen mode, click Full Screen Toggle in the options. (Or hit Alt-Enter) To toggle a psuedo full screen mode, click Full Screen Toggle in the options. (Or hit Alt-Enter)
NOTE: Quick saves might give a "Can't load old version" error if the data format has changed. However, normal Dink saves (using save machines, etc) will always work.
------------- BETA VERSION ----------------- ------------- BETA VERSION -----------------
This is a beta version which means it probably has bugs and isn't ready for general consumption. However, it means you've been recruited to help us make it better! This is a beta version which means it probably has bugs and isn't ready for general consumption. However, it means you've been recruited to help us make it better!
@ -53,4 +55,6 @@ www.rtsoft.com
* (Windows) Input URL input area gets focus by default when installing a DMOD by URL * (Windows) Input URL input area gets focus by default when installing a DMOD by URL
* (bugfix) Can no longer tap F8 during a game load to load a save state too early which can freeze the game * (bugfix) Can no longer tap F8 during a game load to load a save state too early which can freeze the game
* (bugfix) Fixed issue where 32 bit tilebitmaps would go wonky when reloading the surface * (bugfix) Fixed issue where 32 bit tilebitmaps would go wonky when reloading the surface
* Default color under status bar is now black, fixes issue when transparent colors are used in the stats area, random garbage would show through * Default color under status bar is now black, fixes issue when transparent colors are used in the stats area, random garbage would show through
* (windows) Version # is now shown in title bar
* (bugfix) Fixed some issues with how default offsets are calculated, it fixed some problems where sprites would be in the wrong place in certain DMODs

View file

@ -144,7 +144,24 @@ App * GetApp()
return g_pApp; return g_pApp;
} }
const char * GetAppName() {return "Dink Smallwood HD";}; const char * GetAppName()
{
#ifdef WINAPI
if (GetApp())
{
static char name[64];
sprintf(name, "Dink Smallwood HD %s", GetApp()->GetVersionString().c_str());
return name;
}
#endif
return "Dink Smallwood HD";
};
App::App() App::App()
@ -706,10 +723,10 @@ void App::OnScreenSizeChange()
} }
#ifdef WINAPI #ifdef WINAPI
GetApp()->GetVar("fullscreen")->Set(uint32(g_bIsFullScreen)); GetApp()->GetVar("fullscreen")->Set(uint32(g_bIsFullScreen));
GetApp()->GetVar("videox")->Set(uint32(GetPrimaryGLX())); GetApp()->GetVar("videox")->Set(uint32(GetPrimaryGLX()));
GetApp()->GetVar("videoy")->Set(uint32(GetPrimaryGLY())); GetApp()->GetVar("videoy")->Set(uint32(GetPrimaryGLY()));
#endif #endif
} }

View file

@ -51,7 +51,7 @@ Entity * CreateQuickTipFirstTimeOnly(Entity *pParentEnt, string tipFileName, boo
#ifdef _DEBUG #ifdef _DEBUG
//cheat to always show quicktips //cheat to always show quicktips
GetApp()->GetShared()->DeleteVarsStartingWith("tip_"); //for testing //GetApp()->GetShared()->DeleteVarsStartingWith("tip_"); //for testing
#endif #endif
if (GetApp()->GetShared()->GetVarIfExists(key)) if (GetApp()->GetShared()->GetVarIfExists(key))

View file

@ -16,7 +16,7 @@ bool pre_figure_out(const char *line, int load_seq, bool bLoadSpriteOnly);
#define C_DINK_SCREEN_TRANSITION_TIME_MS 400 #define C_DINK_SCREEN_TRANSITION_TIME_MS 400
const float SAVE_FORMAT_VERSION = 1.8f; const float SAVE_FORMAT_VERSION = 1.9f;
const int C_DINK_FADE_TIME_MS = 300; const int C_DINK_FADE_TIME_MS = 300;
const float G_TRANSITION_SCALE_TRICK = 1.01f; const float G_TRANSITION_SCALE_TRICK = 1.01f;
@ -1576,45 +1576,93 @@ if (fName == "ds-cr-01.bmp")
{ {
#ifdef _DEBUG #ifdef _DEBUG
if (seq == 180 && oo == 3) if (seq == 9)
{ {
//LogMsg("Woah nelly"); //LogMsg("Woah nelly");
} }
if (seq == 453)
{
// LogMsg("Found seq %d", 453);
}
#endif #endif
//set the default offset stuff //set the default offset stuff
//if ((oo > 1) & g_dglos.g_seq[seq].m_bIsAnim) //yes, it should be a &&, but it breaks old dmods
if ( (oo > 1) && g_dglos.g_seq[seq].m_bIsAnim) //yes, it should be a &, but it breaks old dmods
if ( (oo > 1) & (g_dglos.g_seq[seq].m_bIsAnim)) //COMPATIBILITY WARNING: I fixed this, but do old mods depend on it being wrong?
{ {
// g_dglos.g_picInfo[picIndex].yoffset = g_dglos.g_picInfo[g_dglos.g_seq[seq].s+1].yoffset;
// g_dglos.g_picInfo[picIndex].xoffset = g_dglos.g_picInfo[g_dglos.g_seq[seq].s+1].xoffset;
g_dglos.g_picInfo[picIndex].yoffset = yoffset; //g_dglos.g_picInfo[picIndex].yoffset = g_dglos.g_seq[seq].m_yoffset;
g_dglos.g_picInfo[picIndex].xoffset = xoffset; //g_dglos.g_picInfo[picIndex].xoffset = g_dglos.g_seq[seq].m_xoffset;
} else
{
if (yoffset > 0) if (yoffset > 0)
g_dglos.g_picInfo[picIndex].yoffset = yoffset; else g_dglos.g_picInfo[picIndex].yoffset = yoffset; else
{ {
g_dglos.g_picInfo[picIndex].yoffset = (g_dglos.g_picInfo[picIndex].box.bottom - g_dglos.g_picInfo[picIndex].yoffset = (g_dglos.g_picInfo[picIndex].box.bottom -
(g_dglos.g_picInfo[picIndex].box.bottom / 4)) - (g_dglos.g_picInfo[picIndex].box.bottom / 30); (g_dglos.g_picInfo[picIndex].box.bottom / 4)) - (g_dglos.g_picInfo[picIndex].box.bottom / 30);
} }
if (xoffset > 0) if (xoffset > 0)
g_dglos.g_picInfo[picIndex].xoffset = xoffset; else g_dglos.g_picInfo[picIndex].xoffset = xoffset; else
{ {
g_dglos.g_picInfo[picIndex].xoffset = (g_dglos.g_picInfo[picIndex].box.right - g_dglos.g_picInfo[picIndex].xoffset = (g_dglos.g_picInfo[picIndex].box.right -
(g_dglos.g_picInfo[picIndex].box.right / 2)) + (g_dglos.g_picInfo[picIndex].box.right / 6); (g_dglos.g_picInfo[picIndex].box.right / 2)) + (g_dglos.g_picInfo[picIndex].box.right / 6);
} }
if (oo == 1 && g_dglos.g_seq[seq].m_bIsAnim) g_dglos.g_seq[seq].m_xoffset = g_dglos.g_picInfo[picIndex].xoffset;
g_dglos.g_seq[seq].m_yoffset = g_dglos.g_picInfo[picIndex].yoffset;
//make to the first frame of the anim?
//g_dglos.g_picInfo[picIndex].yoffset = g_dglos.g_picInfo[g_dglos.g_seq[seq].s+1].yoffset;
//g_dglos.g_picInfo[picIndex].xoffset = g_dglos.g_picInfo[g_dglos.g_seq[seq].s+1].xoffset;
//i'm not too sure about this...
//save it to this seq's settings
//g_dglos.g_seq[seq].m_xoffset = g_dglos.g_picInfo[picIndex].xoffset;
//g_dglos.g_seq[seq].m_yoffset = g_dglos.g_picInfo[picIndex].yoffset;
// g_dglos.g_picInfo[picIndex].yoffset = yoffset;
// g_dglos.g_picInfo[picIndex].xoffset = xoffset;
} else
{
/*
if (!g_dglos.g_seq[seq].m_bIsAnim)
{ {
//save it to this seq's settings g_dglos.g_picInfo[picIndex].yoffset = yoffset;
g_dglos.g_picInfo[picIndex].xoffset = xoffset;
g_dglos.g_seq[seq].m_xoffset = g_dglos.g_picInfo[picIndex].xoffset; g_dglos.g_seq[seq].m_xoffset = g_dglos.g_picInfo[picIndex].xoffset;
g_dglos.g_seq[seq].m_yoffset = g_dglos.g_picInfo[picIndex].yoffset; g_dglos.g_seq[seq].m_yoffset = g_dglos.g_picInfo[picIndex].yoffset;
} }
else
*/
{
if (yoffset > 0)
g_dglos.g_picInfo[picIndex].yoffset = yoffset; else
{
g_dglos.g_picInfo[picIndex].yoffset = (g_dglos.g_picInfo[picIndex].box.bottom -
(g_dglos.g_picInfo[picIndex].box.bottom / 4)) - (g_dglos.g_picInfo[picIndex].box.bottom / 30);
}
if (xoffset > 0)
g_dglos.g_picInfo[picIndex].xoffset = xoffset; else
{
g_dglos.g_picInfo[picIndex].xoffset = (g_dglos.g_picInfo[picIndex].box.right -
(g_dglos.g_picInfo[picIndex].box.right / 2)) + (g_dglos.g_picInfo[picIndex].box.right / 6);
}
}
} }
} }
if (!g_dglos.g_picInfo[picIndex].m_bCustomSettingsApplied) if (!g_dglos.g_picInfo[picIndex].m_bCustomSettingsApplied)
@ -1678,11 +1726,15 @@ bool load_sprites(char org[512], int seq, int speed, int xoffset, int yoffset, r
#ifdef _DEBUG #ifdef _DEBUG
if (seq == 424) if (seq == 35)
{ {
LogMsg("Loading status bar"); //LogMsg("Loading seq %d", seq);
} }
#endif #endif
char hold[5]; char hold[5];
ToLowerCase(org); ToLowerCase(org);
@ -1750,6 +1802,12 @@ bool load_sprites(char org[512], int seq, int speed, int xoffset, int yoffset, r
{ {
if (oo < 10) strcpy(hold, "0"); else strcpy(hold,""); if (oo < 10) strcpy(hold, "0"); else strcpy(hold,"");
#ifdef _DEBUG
if (seq == 35 && oo == 22)
{
// LogMsg("Loading seq %d frame %d", seq, oo);
}
#endif
if (reader.DoesFileExist(fNameBase+string(hold)+toString(oo)+".bmp")) if (reader.DoesFileExist(fNameBase+string(hold)+toString(oo)+".bmp"))
{ {
g_dglos.g_curPicIndex++; g_dglos.g_curPicIndex++;
@ -1785,6 +1843,16 @@ bool load_sprites(char org[512], int seq, int speed, int xoffset, int yoffset, r
for (int oo = 1; oo <= C_MAX_SPRITE_FRAMES; oo++) for (int oo = 1; oo <= C_MAX_SPRITE_FRAMES; oo++)
{ {
//LogMsg("Loading seq %d, oo is %d", seq, oo);
#ifdef _DEBUG
if (seq == 35 && oo == 22)
{
LogMsg("Gotcha");
}
#endif
if (LoadSpriteSingleFrame(fNameBase, seq, oo, g_dglos.g_curPicIndex, transType, &reader, hardbox, xoffset, yoffset, false)) if (LoadSpriteSingleFrame(fNameBase, seq, oo, g_dglos.g_curPicIndex, transType, &reader, hardbox, xoffset, yoffset, false))
{ {
g_dglos.g_curPicIndex++; g_dglos.g_curPicIndex++;
@ -1843,7 +1911,7 @@ void ReadFromLoadSequenceString(char ev[15][100] )
#ifdef _DEBUG #ifdef _DEBUG
if (seqID == 452) if (seqID == 35)
{ {
LogMsg("Found seq %d", seqID); LogMsg("Found seq %d", seqID);
} }
@ -1928,6 +1996,58 @@ void ReadFromLoadSequenceString(char ev[15][100] )
g_dglos.g_seq[seqID].m_hardbox.right = atol(ev[9]); g_dglos.g_seq[seqID].m_hardbox.right = atol(ev[9]);
g_dglos.g_seq[seqID].m_hardbox.bottom = atol(ev[10]); g_dglos.g_seq[seqID].m_hardbox.bottom = atol(ev[10]);
/*
if (g_dglos.g_seq[seqID].m_bIsAnim)
{
//let's set some default offsets and hardboxes for this
if (ev[5][0] == 0)
{
//guess on the offset. This should match the guess elsewhere but I'm too lazy to put it in a function
g_dglos.g_seq[seqID].m_xoffset = (g_dglos.g_picInfo[picIndex].box.bottom -
(g_dglos.g_picInfo[picIndex].box.bottom / 4)) - (g_dglos.g_picInfo[picIndex].box.bottom / 30);
}
if (ev[6][0] == 0)
{
//guess on the offset. This should match the guess elsewhere but I'm too lazy to put it in a function
g_dglos.g_seq[seqID].m_yoffset = g_dglos.g_picInfo[picIndex].xoffset = (g_dglos.g_picInfo[picIndex].box.right -
(g_dglos.g_picInfo[picIndex].box.right / 2)) + (g_dglos.g_picInfo[picIndex].box.right / 6);
}
//ok, setup main offsets, lets build the hard block
/*
if (hardbox.right > 0)
{
//forced setting
g_dglos.g_picInfo[picIndex].hardbox.left = hardbox.left;
g_dglos.g_picInfo[picIndex].hardbox.right = hardbox.right;
}
else
{
//guess setting
work = g_dglos.g_picInfo[picIndex].box.right / 4;
g_dglos.g_picInfo[picIndex].hardbox.left -= work;
g_dglos.g_picInfo[picIndex].hardbox.right += work;
}
if (hardbox.bottom > 0)
{
g_dglos.g_picInfo[picIndex].hardbox.top = hardbox.top;
g_dglos.g_picInfo[picIndex].hardbox.bottom = hardbox.bottom;
}
else
{
work = g_dglos.g_picInfo[picIndex].box.bottom / 10;
g_dglos.g_picInfo[picIndex].hardbox.top -= work;
g_dglos.g_picInfo[picIndex].hardbox.bottom += work;
}
*/
#ifdef _DEBUG #ifdef _DEBUG
//LogMsg("Hardbox: %s", PrintRect(hardbox).c_str()); //LogMsg("Hardbox: %s", PrintRect(hardbox).c_str());
#endif #endif
@ -1977,12 +2097,20 @@ bool figure_out(const char *line, int load_seq)
int seqID = atol(ev[3]); int seqID = atol(ev[3]);
#ifdef _DEBUG
if (seqID == 453)
{
// LogMsg("Loading sand stuff");
}
#endif
if (!g_dglos.g_seq[seqID].active) if (!g_dglos.g_seq[seqID].active)
{ {
ReadFromLoadSequenceString(ev); ReadFromLoadSequenceString(ev);
//first time, actually init it //first time, actually init it
bReturn = load_sprites(g_dglos.g_seq[seqID].m_fileName,seqID,g_dglos.g_seq[seqID].m_speed,g_dglos.g_seq[seqID].m_xoffset,g_dglos.g_seq[seqID].m_yoffset, g_dglos.g_seq[seqID].m_hardbox bReturn = load_sprites(g_dglos.g_seq[seqID].m_fileName,seqID,g_dglos.g_seq[seqID].m_speed,g_dglos.g_seq[seqID].m_xoffset,g_dglos.g_seq[seqID].m_yoffset, g_dglos.g_seq[seqID].m_hardbox
, g_dglos.g_seq[seqID].m_transType, g_dglos.g_seq[seqID].m_bLeftAlign, true); , g_dglos.g_seq[seqID].m_transType, g_dglos.g_seq[seqID].m_bLeftAlign, true);
@ -2036,6 +2164,14 @@ bool pre_figure_out(const char *line, int load_seq, bool bLoadSpriteOnly)
{ {
int seqID = atol(ev[3]); int seqID = atol(ev[3]);
#ifdef _DEBUG
if (seqID == 453)
{
// LogMsg("Loading sand stuff prefigure out");
}
#endif
ReadFromLoadSequenceString(ev); ReadFromLoadSequenceString(ev);
bReturn = load_sprites(g_dglos.g_seq[seqID].m_fileName,seqID,g_dglos.g_seq[seqID].m_speed,g_dglos.g_seq[seqID].m_xoffset,g_dglos.g_seq[seqID].m_yoffset, g_dglos.g_seq[seqID].m_hardbox bReturn = load_sprites(g_dglos.g_seq[seqID].m_fileName,seqID,g_dglos.g_seq[seqID].m_speed,g_dglos.g_seq[seqID].m_xoffset,g_dglos.g_seq[seqID].m_yoffset, g_dglos.g_seq[seqID].m_hardbox
@ -2069,6 +2205,7 @@ bool pre_figure_out(const char *line, int load_seq, bool bLoadSpriteOnly)
g_dglos.g_picInfo[g_dglos.g_seq[myseq].frame[myframe]].m_bCustomSettingsApplied = true; g_dglos.g_picInfo[g_dglos.g_seq[myseq].frame[myframe]].m_bCustomSettingsApplied = true;
/*
if (myframe == 1 && g_dglos.g_seq[myseq].m_bIsAnim) if (myframe == 1 && g_dglos.g_seq[myseq].m_bIsAnim)
{ {
//set these to be the default for the whole anim.. (replacing that idata crap from the old source) //set these to be the default for the whole anim.. (replacing that idata crap from the old source)
@ -2079,6 +2216,7 @@ bool pre_figure_out(const char *line, int load_seq, bool bLoadSpriteOnly)
g_dglos.g_seq[myseq].m_yoffset = g_dglos.g_picInfo[g_dglos.g_seq[myseq].frame[myframe]].yoffset; g_dglos.g_seq[myseq].m_yoffset = g_dglos.g_picInfo[g_dglos.g_seq[myseq].frame[myframe]].yoffset;
//g_dglos.g_seq[myseq].m_hardbox = g_dglos.g_picInfo[g_dglos.g_seq[myseq].frame[myframe]].hardbox; //g_dglos.g_seq[myseq].m_hardbox = g_dglos.g_picInfo[g_dglos.g_seq[myseq].frame[myframe]].hardbox;
} }
*/
} }
@ -2642,7 +2780,7 @@ int add_sprite_dumb(int x1, int y, int brain,int pseq, int pframe,int size )
{ {
#ifdef _DEBUG #ifdef _DEBUG
if (pseq == 180) if (pseq == 180)
{ {
LogMsg("wtf!"); LogMsg("wtf!");
@ -2694,6 +2832,7 @@ int add_sprite_dumb(int x1, int y, int brain,int pseq, int pframe,int size )
g_sprite[x].strength = 0; g_sprite[x].strength = 0;
g_sprite[x].damage = 0; g_sprite[x].damage = 0;
g_sprite[x].defense = 0; g_sprite[x].defense = 0;
if ( g_customSpriteMap[x] == NULL ) if ( g_customSpriteMap[x] == NULL )
{ {
@ -4850,14 +4989,19 @@ void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h)
} }
#endif #endif
#ifdef _DEBUG
if (g_sprite[h].pseq == 66 && g_sprite[h].pframe == 1)
{
//LogMsg("Drawing it");
#ifdef _DEBUG
if (g_sprite[h].pseq == 35 && g_sprite[h].pframe == 22)
{
//LogMsg("Drawing the rock");
}
if (g_sprite[h].pseq == 453)
{
// LogMsg("Drawing a title");
} }
#endif #endif
if (get_box(h, &dstRect, &srcRect)) if (get_box(h, &dstRect, &srcRect))
{ {
@ -4933,6 +5077,9 @@ void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h)
} }
} }
ddrval = lpdest->Blt(&dstRect, g_pSpriteSurface[getpic(h)], ddrval = lpdest->Blt(&dstRect, g_pSpriteSurface[getpic(h)],
&srcRect , DDBLT_KEYSRC ,&ddbltfx ); &srcRect , DDBLT_KEYSRC ,&ddbltfx );
@ -5353,13 +5500,7 @@ void place_sprites_game(bool bBackgroundOnly )
//Msg("Ok, rank[%d] is %d.",oo,rank[oo]); //Msg("Ok, rank[%d] is %d.",oo,rank[oo]);
j = rank[oo]; j = rank[oo];
#ifdef _DEBUG
if (g_dglos.g_smallMap.sprite[j].seq == 66 && g_dglos.g_smallMap.sprite[j].frame == 1)
{
//LogMsg("Drawing it");
}
#endif
if (g_dglos.g_smallMap.sprite[j].active == true) if ( ( g_dglos.g_smallMap.sprite[j].vision == 0) || (g_dglos.g_smallMap.sprite[j].vision == *pvision)) if (g_dglos.g_smallMap.sprite[j].active == true) if ( ( g_dglos.g_smallMap.sprite[j].vision == 0) || (g_dglos.g_smallMap.sprite[j].vision == *pvision))
@ -5429,7 +5570,6 @@ void place_sprites_game(bool bBackgroundOnly )
g_sprite[sprite].hard = g_dglos.g_smallMap.sprite[j].hard; g_sprite[sprite].hard = g_dglos.g_smallMap.sprite[j].hard;
g_sprite[sprite].timer = g_dglos.g_smallMap.sprite[j].timer; g_sprite[sprite].timer = g_dglos.g_smallMap.sprite[j].timer;
g_sprite[sprite].que = g_dglos.g_smallMap.sprite[j].que; g_sprite[sprite].que = g_dglos.g_smallMap.sprite[j].que;
g_sprite[sprite].sp_index = j;
g_sprite[sprite].alt = g_dglos.g_smallMap.sprite[j].alt; g_sprite[sprite].alt = g_dglos.g_smallMap.sprite[j].alt;
g_sprite[sprite].base_die = g_dglos.g_smallMap.sprite[j].base_die; g_sprite[sprite].base_die = g_dglos.g_smallMap.sprite[j].base_die;
g_sprite[sprite].strength = g_dglos.g_smallMap.sprite[j].strength; g_sprite[sprite].strength = g_dglos.g_smallMap.sprite[j].strength;
@ -5441,6 +5581,15 @@ void place_sprites_game(bool bBackgroundOnly )
g_sprite[sprite].hitpoints = g_dglos.g_smallMap.sprite[j].hitpoints; g_sprite[sprite].hitpoints = g_dglos.g_smallMap.sprite[j].hitpoints;
g_sprite[sprite].sound = g_dglos.g_smallMap.sprite[j].sound; g_sprite[sprite].sound = g_dglos.g_smallMap.sprite[j].sound;
check_sprite_status_full(sprite); check_sprite_status_full(sprite);
#ifdef _DEBUG
if (g_dglos.g_smallMap.sprite[j].seq == 35 && g_dglos.g_smallMap.sprite[j].frame == 22)
{
LogMsg("Drawing it");
}
#endif
if (g_dglos.g_smallMap.sprite[j].prop == 0) if (g_sprite[sprite].sound != 0) if (g_dglos.g_smallMap.sprite[j].prop == 0) if (g_sprite[sprite].sound != 0)
{ {
//make looping sound //make looping sound
@ -15664,10 +15813,11 @@ LastWindowsTimer = GetTickCount();
//Blit from Two, which holds the base scene. //Blit from Two, which holds the base scene.
// lpDDSBack->BltFast( 0, 0, lpDDSBackGround, &rcRect, DDBLTFAST_NOCOLORKEY); // lpDDSBack->BltFast( 0, 0, lpDDSBackGround, &rcRect, DDBLTFAST_NOCOLORKEY);
{
rtRect32 rcRectGameArea(g_dglo.m_gameArea.left, g_dglo.m_gameArea.top, g_dglo.m_gameArea.right, g_dglo.m_gameArea.bottom); rtRect32 rcRectGameArea(g_dglo.m_gameArea.left, g_dglo.m_gameArea.top, g_dglo.m_gameArea.right, g_dglo.m_gameArea.bottom);
lpDDSBack->BltFast(g_dglo.m_gameArea.left, g_dglo.m_gameArea.top, lpDDSBackGround, lpDDSBack->BltFast(g_dglo.m_gameArea.left, g_dglo.m_gameArea.top, lpDDSBackGround,
&rcRectGameArea, DDBLTFAST_NOCOLORKEY); &rcRectGameArea, DDBLTFAST_NOCOLORKEY);
}
g_dglo.m_bgSpriteMan.Render(lpDDSBack); //blit sprites that have been shoved into the bg, too slow to actually add them, so we fake it until the screen is rebuilt g_dglo.m_bgSpriteMan.Render(lpDDSBack); //blit sprites that have been shoved into the bg, too slow to actually add them, so we fake it until the screen is rebuilt