I just played 3 long games and I was able to undo two fully and got an assert on the third one after more than 1000 actions... so I commit what I have:
- Modified undo to stop at "next phase" action - Added "muligan" and "force library shuffling" to the list of logged action - Fixed random logging - Fixed double logging of actions - Merged all the "next game" functions into a single one - Created a PlayerType type instead of using int - Moved the player loading code into the GameObserver and out of GameStateDuel to avoid having player references in both and simplify the initialization and termination. Tweeked a bit the humanplayer class to be able to do that. - Added a "load" menu available in testsuite mode, I use that to load problematique game. To use it, just copy-paste a game from the traces into Res/test/game/timetwister.txt. Game in traces starts by "rvalues:..." and ends by "[end]" - Added some untested and commented out code in GuiCombat to use the mouse/touch to setup the damage on the blockers - Broke the network game ... hoh well, I'll repair it when everything else works !! - various code cleanup and compilation fixes on Linux
This commit is contained in:
@@ -46,22 +46,22 @@ void TextScroller::Update(float dt)
|
||||
{
|
||||
if (!strings.size()) return;
|
||||
|
||||
start += mScrollSpeed * dt;
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(fontId);
|
||||
if (start > mFont->GetStringWidth(mText.c_str()))
|
||||
{
|
||||
start = -mWidth;
|
||||
if (mRandom)
|
||||
{
|
||||
currentId = (rand() % strings.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
currentId++;
|
||||
if (currentId >= strings.size()) currentId = 0;
|
||||
}
|
||||
mText = strings[currentId];
|
||||
}
|
||||
start += mScrollSpeed * dt;
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(fontId);
|
||||
if (start > mFont->GetStringWidth(mText.c_str()))
|
||||
{
|
||||
start = -mWidth;
|
||||
if (mRandom)
|
||||
{
|
||||
currentId = (rand() % strings.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
currentId++;
|
||||
if (currentId >= strings.size()) currentId = 0;
|
||||
}
|
||||
mText = strings[currentId];
|
||||
}
|
||||
}
|
||||
|
||||
void TextScroller::Render()
|
||||
@@ -119,27 +119,27 @@ void VerticalTextScroller::Add( string text )
|
||||
*/
|
||||
void VerticalTextScroller::Update(float dt)
|
||||
{
|
||||
if (!strings.size()) return;
|
||||
if (!strings.size()) return;
|
||||
|
||||
float currentYOffset = mScrollSpeed * dt;
|
||||
float currentYOffset = mScrollSpeed * dt;
|
||||
|
||||
if ( mY <= mMarginY ) // top line has disappeared
|
||||
{
|
||||
timer = 0;
|
||||
// now readjust mText
|
||||
size_t nbLines = 1;
|
||||
vector<string> displayText = split( mText, '\n');
|
||||
vector<string> newDisplayText;
|
||||
for ( size_t i = nbLines; i < displayText.size(); ++i )
|
||||
newDisplayText.push_back( displayText[i] );
|
||||
for ( size_t i = 0; i < nbLines; ++i )
|
||||
newDisplayText.push_back( displayText[i] );
|
||||
if ( mY <= mMarginY ) // top line has disappeared
|
||||
{
|
||||
timer = 0;
|
||||
// now readjust mText
|
||||
size_t nbLines = 1;
|
||||
vector<string> displayText = split( mText, '\n');
|
||||
vector<string> newDisplayText;
|
||||
for ( size_t i = nbLines; i < displayText.size(); ++i )
|
||||
newDisplayText.push_back( displayText[i] );
|
||||
for ( size_t i = 0; i < nbLines; ++i )
|
||||
newDisplayText.push_back( displayText[i] );
|
||||
|
||||
mText = join( newDisplayText, "\n" );
|
||||
mY = mOriginalY;
|
||||
}
|
||||
++timer;
|
||||
mY -= currentYOffset;
|
||||
mText = join( newDisplayText, "\n" );
|
||||
mY = mOriginalY;
|
||||
}
|
||||
++timer;
|
||||
mY -= currentYOffset;
|
||||
}
|
||||
|
||||
void VerticalTextScroller::Render()
|
||||
|
||||
Reference in New Issue
Block a user