From db15b07ef4edc461dc80368d3822847dab0930c2 Mon Sep 17 00:00:00 2001 From: puzl Date: Sun, 14 May 2006 13:14:57 +0000 Subject: [PATCH] Mantis: 0000538 o Fixed onos digestion progress bar git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@481 67975925-1194-0748-b3d5-c16f83f1a3a1 --- releases/3.2.0/source/mod/AvHHud.cpp | 51 +++++++++++-------- releases/3.2.0/source/mod/AvHHud.h | 1 + .../3.2.0/source/mod/AvHNetworkMessages.cpp | 11 ++-- .../3.2.0/source/mod/AvHNetworkMessages.h | 4 +- releases/3.2.0/source/mod/AvHPlayer.cpp | 18 +++++-- releases/3.2.0/source/mod/AvHPlayer.h | 3 +- 6 files changed, 58 insertions(+), 30 deletions(-) diff --git a/releases/3.2.0/source/mod/AvHHud.cpp b/releases/3.2.0/source/mod/AvHHud.cpp index 9c820d51..95333726 100644 --- a/releases/3.2.0/source/mod/AvHHud.cpp +++ b/releases/3.2.0/source/mod/AvHHud.cpp @@ -2403,7 +2403,9 @@ int AvHHud::ServerVar(const char* pszName, int iSize, void* pbuf) BIND_MESSAGE(Progress); int AvHHud::Progress(const char* pszName, int iSize, void* pbuf) { - NetMsg_ProgressBar( pbuf, iSize, this->mProgressBarEntityIndex, this->mProgressBarParam ); + NetMsg_ProgressBar( pbuf, iSize, this->mProgressBarEntityIndex, this->mProgressBarParam, this->mProgressBarCompleted ); + char msg[1024]; + CenterPrint(msg); return 1; } @@ -2485,6 +2487,7 @@ void AvHHud::ResetGame(bool inMapChanged) this->mCurrentCursorFrame = 0; this->mProgressBarEntityIndex = -1; this->mProgressBarParam = -1; + this->mProgressBarCompleted = -1; this->mEnemyBlips.Clear(); this->mFriendlyBlips.Clear(); @@ -3675,6 +3678,7 @@ void AvHHud::Init(void) this->mProgressBarEntityIndex = -1; this->mProgressBarParam = -1; + this->mProgressBarCompleted = -1; this->mSelectedNodeResourceCost = -1; this->mCurrentUseableEnergyLevel = 0; this->mVisualEnergyLevel = 0.0f; @@ -5747,31 +5751,36 @@ void AvHHud::UpdateProgressBar() if(theProgressEntity) { ASSERT(this->mProgressBarParam >= 1); - ASSERT(this->mProgressBarParam <= 4); + ASSERT(this->mProgressBarParam <= 5); float theProgress = 0.0f; - switch(this->mProgressBarParam) - { - case 1: - theProgress = theProgressEntity->curstate.fuser1; - break; - case 2: - theProgress = theProgressEntity->curstate.fuser2; - break; - case 3: - theProgress = theProgressEntity->curstate.fuser3; - break; - case 4: // NOTE: check delta.lst for fuser4, it isn't propagated currently - theProgress = theProgressEntity->curstate.fuser4; - break; + if ( this->mProgressBarParam == 5 ) { + thePercentage=(float)(this->mProgressBarCompleted)/100.0f; } + else { + switch(this->mProgressBarParam) + { + case 1: + theProgress = theProgressEntity->curstate.fuser1; + break; + case 2: + theProgress = theProgressEntity->curstate.fuser2; + break; + case 3: + theProgress = theProgressEntity->curstate.fuser3; + break; + case 4: // NOTE: check delta.lst for fuser4, it isn't propagated currently + theProgress = theProgressEntity->curstate.fuser4; + break; + } - if((this->GetHUDUser3() == AVH_USER3_ALIEN_EMBRYO) || this->GetIsDigesting()) - { - theProgress = pmove->fuser3; + if((this->GetHUDUser3() == AVH_USER3_ALIEN_EMBRYO) || this->GetIsDigesting() ) + { + theProgress = pmove->fuser3; + } + + thePercentage = theProgress/kNormalizationNetworkFactor; } - - thePercentage = theProgress/kNormalizationNetworkFactor; int theType = (this->GetIsAlien())? PROGRESS_BAR_ALIEN: PROGRESS_BAR_MARINE; if(thePercentage < 1.0f) { diff --git a/releases/3.2.0/source/mod/AvHHud.h b/releases/3.2.0/source/mod/AvHHud.h index 2bc0bebc..ad9d4cfa 100644 --- a/releases/3.2.0/source/mod/AvHHud.h +++ b/releases/3.2.0/source/mod/AvHHud.h @@ -762,6 +762,7 @@ private: int mProgressBarEntityIndex; int mProgressBarParam; + int mProgressBarCompleted; float mProgressBarStatus; float mProgressBarLastDrawn; int mProgressBarDrawframe; diff --git a/releases/3.2.0/source/mod/AvHNetworkMessages.cpp b/releases/3.2.0/source/mod/AvHNetworkMessages.cpp index d4100bd0..38533893 100644 --- a/releases/3.2.0/source/mod/AvHNetworkMessages.cpp +++ b/releases/3.2.0/source/mod/AvHNetworkMessages.cpp @@ -75,7 +75,7 @@ void Net_InitializeMessages(void) g_msgListPS = REG_USER_MSG( "ListPS", -1 ); g_msgPlayHUDNotification = REG_USER_MSG( "PlayHUDNot", 6 ); g_msgHUDSetUpgrades = REG_USER_MSG( "SetUpgrades", 1); - g_msgProgressBar = REG_USER_MSG( "Progress", 3 ); + g_msgProgressBar = REG_USER_MSG( "Progress", -1 ); g_msgServerVar = REG_USER_MSG( "ServerVar", -1 ); g_msgSetGammaRamp = REG_USER_MSG( "SetGmma", 1 ); g_msgSetOrder = REG_USER_MSG( "SetOrder", -1 ); @@ -1496,19 +1496,24 @@ union float_converter //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #ifndef AVH_SERVER - void NetMsg_ProgressBar( void* const buffer, const int size, int& entity_number, int& progress ) + void NetMsg_ProgressBar( void* const buffer, const int size, int& entity_number, int& progress, int& seconds) { BEGIN_READ( buffer, size ); entity_number = READ_SHORT(); progress = READ_BYTE(); + if ( progress == 5 ) + seconds=READ_BYTE(); + END_READ(); } #else - void NetMsg_ProgressBar( entvars_t* const pev, const int entity_number, const int progress ) + void NetMsg_ProgressBar( entvars_t* const pev, const int entity_number, const int progress, int seconds ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, g_msgProgressBar, NULL, pev ); WRITE_SHORT( entity_number ); WRITE_BYTE( progress ); + if ( progress == 5 ) + WRITE_BYTE( seconds ); MESSAGE_END(); } #endif diff --git a/releases/3.2.0/source/mod/AvHNetworkMessages.h b/releases/3.2.0/source/mod/AvHNetworkMessages.h index 35acfe36..e257d5a3 100644 --- a/releases/3.2.0/source/mod/AvHNetworkMessages.h +++ b/releases/3.2.0/source/mod/AvHNetworkMessages.h @@ -93,7 +93,7 @@ void NetMsg_HUDSetUpgrades( int upgradeMask ); void NetMsg_HUDSetUpgrades( entvars_t* const pev, int upgradeMask ); void NetMsg_PlayHUDNotification( entvars_t* const pev, const int flags, const int sound, const float location_x, const float location_y ); - void NetMsg_ProgressBar( entvars_t* const pev, const int entity_number, const int progress ); + void NetMsg_ProgressBar( entvars_t* const pev, const int entity_number, const int progress, int percent=0 ); void NetMsg_ServerVar( entvars_t* const pev, const string& name, const string& value ); void NetMsg_SetGammaRamp( entvars_t* const pev, const float gamma ); void NetMsg_SetOrder( entvars_t* const pev, const AvHOrder& order ); @@ -182,7 +182,7 @@ void NetMsg_ListPS( void* const buffer, const int size, string& system_name ); void NetMsg_HUDSetUpgrades( void* const buffer, const int size, int& upgradeMask ); void NetMsg_PlayHUDNotification( void* const buffer, const int size, int& flags, int& sound, float& location_x, float& location_y ); - void NetMsg_ProgressBar( void* const buffer, const int size, int& entity_number, int& progress ); + void NetMsg_ProgressBar( void* const buffer, const int size, int& entity_number, int& progress, int &percent); //45 void NetMsg_ServerVar( void* const buffer, const int size, string& name, string& value ); void NetMsg_SetGammaRamp( void* const buffer, const int size, float& gamma ); diff --git a/releases/3.2.0/source/mod/AvHPlayer.cpp b/releases/3.2.0/source/mod/AvHPlayer.cpp index aa4c25c5..af88ffbc 100644 --- a/releases/3.2.0/source/mod/AvHPlayer.cpp +++ b/releases/3.2.0/source/mod/AvHPlayer.cpp @@ -3513,6 +3513,7 @@ void AvHPlayer::Init() // Don't set this, must propagate //this->mClientProgressBarEntityIndex = -1; this->mProgressBarParam = -1; + this->mProgressBarCompleted = -1; this->mTimeProgressBarTriggered = -1; this->mTimeOfLastFogTrigger = -1; this->mFogExpireTime = -1; @@ -5444,13 +5445,16 @@ void AvHPlayer::InternalDigestionThink() // Set status bar estimating how long before player will be digested (for both digestee and digester) theDigestee->TriggerProgressBar(theDigesteeIndex, 3); - this->TriggerProgressBar(theDigesteeIndex, 3); // Set fuser3 appropriately int theMaxHealth = AvHPlayerUpgrade::GetMaxHealth(theDigestee->pev->iuser4, theDigestee->GetUser3(), this->GetExperienceLevel()); float theDigestingScalar = (((float)theMaxHealth - theDigestee->pev->health)/(float)theMaxHealth); /*this->pev->fuser3 =*/ theDigestee->pev->fuser3 = theDigestingScalar*kNormalizationNetworkFactor; + int thePercent=theDigestingScalar*100.0f ; + thePercent=min(100, max(0, thePercent)); + this->TriggerProgressBar(theDigesteeIndex, 5, thePercent); + // Set sound effects as player gets more and more digested int theDesiredRoomType = 26; // strange sounds right before you die if(theDigestingScalar < .33f) @@ -5479,6 +5483,7 @@ void AvHPlayer::InternalDigestionThink() // If digestee is dead and no longer relevant if(!theDigestee->IsAlive() || !theDigestee->GetIsRelevant() || (theDigestee->GetTeam() == this->GetTeam())) { + this->mProgressBarParam = -1; this->StopDigestion(thePlayerWasDigested); } } @@ -6958,6 +6963,7 @@ void AvHPlayer::InternalProgressBarThink() this->mTimeProgressBarTriggered = -1; this->mProgressBarEntityIndex = -1; this->mProgressBarParam = -1; + this->mProgressBarCompleted = -1; } } } @@ -8702,13 +8708,15 @@ void AvHPlayer::TriggerFog(int inFogEntity, float inFogExpireTime) } } -void AvHPlayer::TriggerProgressBar(int inEntityID, int inParam) +void AvHPlayer::TriggerProgressBar(int inEntityID, int inParam, int inPercent) { ASSERT(inEntityID >= 0); this->mProgressBarEntityIndex = inEntityID; this->mProgressBarParam = inParam; + this->mProgressBarCompleted = inPercent; this->mTimeProgressBarTriggered = gpGlobals->time; + } float AvHPlayer::GetTimeOfLastTeleport() const @@ -9638,9 +9646,13 @@ void AvHPlayer::UpdateProgressBar() // Assumes that progress is normalized and stored in one of the fuser variables of the entity index sent down if(this->mClientProgressBarEntityIndex != this->mProgressBarEntityIndex) { - NetMsg_ProgressBar( this->pev, this->mProgressBarEntityIndex, this->mProgressBarParam ); + NetMsg_ProgressBar( this->pev, this->mProgressBarEntityIndex, this->mProgressBarParam, this->mProgressBarCompleted ); this->mClientProgressBarEntityIndex = this->mProgressBarEntityIndex; } + // onos digestion uses a parameter to the network message + else if ( this->mProgressBarParam == 5 ) { + NetMsg_ProgressBar( this->pev, this->mProgressBarEntityIndex, this->mProgressBarParam, this->mProgressBarCompleted ); + } } void AvHPlayer::UpdateVUser4() diff --git a/releases/3.2.0/source/mod/AvHPlayer.h b/releases/3.2.0/source/mod/AvHPlayer.h index 3f464deb..91f1d4b9 100644 --- a/releases/3.2.0/source/mod/AvHPlayer.h +++ b/releases/3.2.0/source/mod/AvHPlayer.h @@ -332,7 +332,7 @@ public: void SetCurrentCommand(const struct usercmd_s* inCommand); void SetDebugCSP(weapon_data_t* inWeaponData); void SetPendingCommand(char* inCommand); - void TriggerProgressBar(int inEntityID, int inParam); + void TriggerProgressBar(int inEntityID, int inParam, int inPercent=0); float GetTimeOfLastTeleport() const; void SetTimeOfLastTeleport(float inTime); bool SwitchWeapon(const char* inString); @@ -764,6 +764,7 @@ private: int mClientProgressBarEntityIndex; int mProgressBarEntityIndex; int mProgressBarParam; + int mProgressBarCompleted; float mTimeProgressBarTriggered; float mTimeOfLastFogTrigger;