summaryrefslogtreecommitdiffstats
path: root/src/Entities
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/Entities/Player.cpp22
-rw-r--r--src/Entities/Player.h7
2 files changed, 26 insertions, 3 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index d2fdba909..285aefd25 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -111,6 +111,8 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
m_LastJumpHeight = (float)(GetPosY());
m_LastGroundHeight = (float)(GetPosY());
m_Stance = GetPosY() + 1.62;
+
+ // UpdateTeam();
cRoot::Get()->GetServer()->PlayerCreated(this);
}
@@ -949,8 +951,13 @@ bool cPlayer::IsGameModeAdventure(void) const
-void cPlayer::SetTeam(cTeam* a_Team)
+void cPlayer::SetTeam(cTeam * a_Team)
{
+ if (m_Team == a_Team)
+ {
+ return;
+ }
+
if (m_Team)
{
m_Team->RemovePlayer(GetName());
@@ -968,6 +975,19 @@ void cPlayer::SetTeam(cTeam* a_Team)
+cTeam * cPlayer::UpdateTeam(void)
+{
+ cScoreboard * Scoreboard = m_World->GetScoreBoard();
+
+ m_Team = Scoreboard->QueryPlayerTeam(GetName());
+
+ return m_Team;
+}
+
+
+
+
+
void cPlayer::OpenWindow(cWindow * a_Window)
{
if (a_Window != m_CurrentWindow)
diff --git a/src/Entities/Player.h b/src/Entities/Player.h
index 52e629dc3..52ba2065c 100644
--- a/src/Entities/Player.h
+++ b/src/Entities/Player.h
@@ -155,10 +155,13 @@ public:
AString GetIP(void) const { return m_IP; } // tolua_export
/// Returns the associated team, NULL if none
- cTeam* GetTeam(void) { return m_Team; } // tolua_export
+ cTeam * GetTeam(void) { return m_Team; } // tolua_export
/// Sets the player team, NULL if none
- void SetTeam(cTeam* a_Team);
+ void SetTeam(cTeam * a_Team);
+
+ /// Forces the player to query the scoreboard for his team
+ cTeam * UpdateTeam(void);
// tolua_end