Browse Source

Merge pull request #330 from Hoikas/progress-fixes

OpProgress Improvements
Adam Johnson 12 years ago
parent
commit
51866d11ac
  1. 1
      Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp
  2. 1
      Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeLeaver.cpp
  3. 15
      Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.cpp
  4. 11
      Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h
  5. 72
      Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp
  6. 6
      Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.h

1
Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp

@ -338,6 +338,7 @@ void plNCAgeJoiner::ExecNextOp () {
((plResManager*)hsgResMgr::ResMgr())->SetProgressBarProc(nil);
delete progressBar;
progressBar = nil;
nc->EndTask();
nextOp = kEnableClickables;
}

1
Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeLeaver.cpp

@ -216,6 +216,7 @@ void plNCAgeLeaver::ExecNextOp () {
//====================================================================
case kUnloadAge: {
nc->BeginTask();
NetCliGameDisconnect();
// Cull nodes that were part of this age vault (but not shared by the player's vault)

15
Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.cpp

@ -131,8 +131,7 @@ plNetClientMgr::plNetClientMgr() :
fLocalPlayerKey(nil),
fMsgHandler(this),
fJoinOrder(0),
// fProgressBar( nil ),
fTaskProgBar( nil ),
fTaskProgBar(nullptr),
fMsgRecorder(nil),
fServerTimeOffset(0),
fTimeSamples(0),
@ -168,8 +167,8 @@ plNetClientMgr::~plNetClientMgr()
if (this==GetInstance())
SetInstance(nil); // we're going down boys
IClearPendingLoads();
delete fTaskProgBar;
}
//
@ -1467,6 +1466,16 @@ void plNetClientMgr::ClearPendingPagingRoomMsgs()
fPendingPagingRoomMsgs.clear();
}
void plNetClientMgr::BeginTask()
{
fTaskProgBar = plProgressMgr::GetInstance()->RegisterOverallOperation(0.f);
}
void plNetClientMgr::EndTask()
{
delete fTaskProgBar;
fTaskProgBar = nullptr;
}
bool plNetClientMgr::DebugMsgV(const char* fmt, va_list args) const
{

11
Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h

@ -134,9 +134,8 @@ public:
};
private:
// plOperationProgress *fProgressBar;
plOperationProgress *fTaskProgBar;
plOperationProgress* fTaskProgBar;
typedef std::list<PendingLoad*> PendingLoadsList;
PendingLoadsList fPendingLoads;
@ -369,8 +368,10 @@ public:
void NotifyRcvdAllSDLStates();
plOperationProgress* GetTaskProgBar() { return fTaskProgBar; }
plOperationProgress* GetTaskProgBar() { return fTaskProgBar; }
void BeginTask();
void EndTask();
bool DebugMsgV(const char* fmt, va_list args) const;
bool ErrorMsgV(const char* fmt, va_list args) const;
bool WarningMsgV(const char* fmt, va_list args) const;

72
Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp

@ -138,9 +138,7 @@ void plDTProgressMgr::Draw( plPipeline *p )
width = scrnWidth - 64;
height = 16;
x = ( scrnWidth - width ) >> 1;
y = scrnHeight - 32 - height;
if( fOperations->GetNext() == nil )
y -= text.GetFontSize() + 8 + height + 4;
y = scrnHeight - 44 - (2 * height) - text.GetFontSize();
text.SetDrawOnTopMode( true );
@ -166,8 +164,8 @@ void plDTProgressMgr::Draw( plPipeline *p )
for( prog = fOperations; prog != nil; prog = prog->GetNext() )
{
IDrawTheStupidThing( p, prog, x, y, width, height );
y -= text.GetFontSize() + 8 + height + 4;
if (IDrawTheStupidThing(p, prog, x, y, width, height))
y -= text.GetFontSize() + 8 + height + 4;
}
text.SetDrawOnTopMode( false );
@ -175,10 +173,11 @@ void plDTProgressMgr::Draw( plPipeline *p )
//// IDrawTheStupidThing /////////////////////////////////////////////////////
void plDTProgressMgr::IDrawTheStupidThing( plPipeline *p, plOperationProgress *prog,
uint16_t x, uint16_t y, uint16_t width, uint16_t height )
bool plDTProgressMgr::IDrawTheStupidThing(plPipeline *p, plOperationProgress *prog,
uint16_t x, uint16_t y, uint16_t width, uint16_t height)
{
plDebugText &text = plDebugText::Instance();
bool drew_something = false;
// Lets just set the color to blue
uint32_t color = 0xff302b3a;
@ -204,48 +203,63 @@ void plDTProgressMgr::IDrawTheStupidThing( plPipeline *p, plOperationProgress
if( drawWidth > 0 )
text.DrawRect( drawX, y, rightX, y + height, color );
int timeRemain = prog->fRemainingSecs;
char remainStr[1024];
strcpy(remainStr, "APPROXIMATELY ");
if (timeRemain > 3600)
{
const char* term = ((timeRemain / 3600) > 1) ? "HOURS" : "HOUR";
sprintf(remainStr, "%s%d %s ", remainStr, (timeRemain / 3600), term);
timeRemain %= 3600;
}
if (timeRemain > 60)
{
const char* term = ((timeRemain / 60) > 1) ? "MINUTES" : "MINUTE";
sprintf(remainStr, "%s%d %s ", remainStr, (timeRemain / 60), term);
timeRemain %= 60;
uint32_t timeRemain = prog->fRemainingSecs;
if (timeRemain > 0) {
plStringStream ss;
ss << "APPROXIMATELY ";
if (timeRemain > 3600)
{
uint32_t hours = timeRemain / 3600;
const char* plural = (hours > 1) ? "S" : "";
ss << hours << " HOUR" << plural << " ";
timeRemain %= 3600;
}
if (timeRemain > 60)
{
uint32_t minutes = timeRemain / 60;
const char* plural = (minutes > 1) ? "S" : "";
ss << minutes << " MINUTE" << plural << " ";
timeRemain %= 60;
}
if (timeRemain > 0)
{
const char* plural = (timeRemain > 1) ? "S" : "";
ss << timeRemain << " SECOND" << plural << " ";
}
ss << "REMAINING";
text.DrawString(x, y + height + 2, ss.GetString().c_str(), (uint32_t)0xff635e6d);
}
const char* unitTerm = (timeRemain == 1) ? "SECOND" : "SECONDS";
sprintf(remainStr, "%s%d %s REMAINING", remainStr, timeRemain, unitTerm);
text.DrawString(x, y + height + 2, remainStr, (uint32_t)0xff635e6d );
x -= 2;
y -= 2;
drew_something = true;
}
y -= ( text.GetFontSize() << 1 ) + 4;
#ifndef PLASMA_EXTERNAL_RELEASE
bool drawText = true;
static bool drawText = true;
#else
bool drawText = false;
static bool drawText = false;
#endif
if (drawText)
{
if( prog->GetTitle()[ 0 ] != 0 )
if (prog->GetTitle())
{
text.DrawString( x, y, prog->GetTitle(), (uint32_t)0xccb0b0b0 );
x += (uint16_t)text.CalcStringWidth( prog->GetTitle() );
drew_something = true;
}
if( prog->GetStatusText()[ 0 ] != 0 )
if (prog->GetStatusText())
{
text.DrawString( x, y, prog->GetStatusText(), (uint32_t)0xccb0b0b0 );
drew_something = true;
}
}
// return whether or not we drew stuff
return drew_something;
}

6
Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.h

@ -61,7 +61,7 @@ class plPipeline;
class plDTProgressMgr : public plProgressMgr
{
protected:
int32_t fCurrentImage;
int32_t fCurrentImage;
float fLastDraw;
plPlate* fActivePlate;
plPlate* fStaticTextPlate;
@ -70,8 +70,8 @@ class plDTProgressMgr : public plProgressMgr
void Activate();
void Deactivate();
void IDrawTheStupidThing( plPipeline *p, plOperationProgress *prog,
uint16_t x, uint16_t y, uint16_t width, uint16_t height );
bool IDrawTheStupidThing( plPipeline *p, plOperationProgress *prog,
uint16_t x, uint16_t y, uint16_t width, uint16_t height );
public:

Loading…
Cancel
Save