about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-07-05 23:15:24 +0200
committeroy <Tom_Adams@web.de>2011-07-05 23:15:24 +0200
commitac9c3b8f7f26b3b1676345ddca82272fd31fc0ff (patch)
tree51851499a7d3f993a4a997660504e38b3395853e
parentab1f7d6f95346c7bf86dfbdfa015c7e850097918 (diff)
downloadzcatch-ac9c3b8f7f26b3b1676345ddca82272fd31fc0ff.tar.gz
zcatch-ac9c3b8f7f26b3b1676345ddca82272fd31fc0ff.zip
made the dropped flag sign blink faster the last 5 seconds to indicate that it's about to return. Closes #631
-rw-r--r--src/game/client/components/hud.cpp4
-rw-r--r--src/game/client/gameclient.cpp16
-rw-r--r--src/game/client/gameclient.h1
3 files changed, 20 insertions, 1 deletions
diff --git a/src/game/client/components/hud.cpp b/src/game/client/components/hud.cpp
index 58fc75b9..11343912 100644
--- a/src/game/client/components/hud.cpp
+++ b/src/game/client/components/hud.cpp
@@ -108,7 +108,9 @@ void CHud::RenderScoreHud()
 
 				if(GameFlags&GAMEFLAG_FLAGS)
 				{
-					if(FlagCarrier[t] == FLAG_ATSTAND || (FlagCarrier[t] == FLAG_TAKEN && ((Client()->GameTick()/10)&1)))
+					int BlinkTimer = (m_pClient->m_FlagDropTick[t] != 0 && 
+										(Client()->GameTick()-m_pClient->m_FlagDropTick[t])/Client()->GameTickSpeed() >= 25) ? 10 : 20;
+					if(FlagCarrier[t] == FLAG_ATSTAND || (FlagCarrier[t] == FLAG_TAKEN && ((Client()->GameTick()/BlinkTimer)&1)))
 					{
 						// draw flag
 						Graphics()->BlendNormal();
diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp
index a3c2dfc2..4618d7dc 100644
--- a/src/game/client/gameclient.cpp
+++ b/src/game/client/gameclient.cpp
@@ -341,6 +341,8 @@ void CGameClient::OnReset()
 		m_All.m_paComponents[i]->OnReset();
 
 	m_DemoSpecID = SPEC_FREEVIEW;
+	m_FlagDropTick[TEAM_RED] = 0;
+	m_FlagDropTick[TEAM_BLUE] = 0;
 }
 
 
@@ -783,6 +785,20 @@ void CGameClient::OnNewSnapshot()
 			{
 				m_Snap.m_pGameDataObj = (const CNetObj_GameData *)pData;
 				m_Snap.m_GameDataSnapID = Item.m_ID;
+				if(m_Snap.m_pGameDataObj->m_FlagCarrierRed == FLAG_TAKEN)
+				{
+					if(m_FlagDropTick[TEAM_RED] == 0)
+						m_FlagDropTick[TEAM_RED] = Client()->GameTick();
+				}
+				else if(m_FlagDropTick[TEAM_RED] != 0)
+						m_FlagDropTick[TEAM_RED] = 0;
+				if(m_Snap.m_pGameDataObj->m_FlagCarrierBlue == FLAG_TAKEN)
+				{
+					if(m_FlagDropTick[TEAM_BLUE] == 0)
+						m_FlagDropTick[TEAM_BLUE] = Client()->GameTick();
+				}
+				else if(m_FlagDropTick[TEAM_BLUE] != 0)
+						m_FlagDropTick[TEAM_BLUE] = 0;
 			}
 			else if(Item.m_Type == NETOBJTYPE_FLAG)
 				m_Snap.m_paFlags[Item.m_ID%2] = (const CNetObj_Flag *)pData;
diff --git a/src/game/client/gameclient.h b/src/game/client/gameclient.h
index 859e1e7b..4783f8b4 100644
--- a/src/game/client/gameclient.h
+++ b/src/game/client/gameclient.h
@@ -89,6 +89,7 @@ public:
 	bool m_SuppressEvents;
 	bool m_NewTick;
 	bool m_NewPredictedTick;
+	int m_FlagDropTick[2];
 
 	// TODO: move this
 	CTuningParams m_Tuning;