Fixes problems with windows:
- Changed cPlayer:OpenWindow to accept a ref, tolua adds a nil check - Close open lua window in destructor, to avoid dangling pointers
This commit is contained in:
@@ -1222,7 +1222,7 @@ void cMinecartWithChest::OnRightClicked(cPlayer & a_Player)
|
||||
{
|
||||
if (a_Player.GetWindow() != Window)
|
||||
{
|
||||
a_Player.OpenWindow(Window);
|
||||
a_Player.OpenWindow(*Window);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1310,15 +1310,15 @@ cTeam * cPlayer::UpdateTeam(void)
|
||||
|
||||
|
||||
|
||||
void cPlayer::OpenWindow(cWindow * a_Window)
|
||||
void cPlayer::OpenWindow(cWindow & a_Window)
|
||||
{
|
||||
if (a_Window != m_CurrentWindow)
|
||||
if (&a_Window != m_CurrentWindow)
|
||||
{
|
||||
CloseWindow(false);
|
||||
}
|
||||
a_Window->OpenedByPlayer(*this);
|
||||
m_CurrentWindow = a_Window;
|
||||
a_Window->SendWholeWindow(*GetClientHandle());
|
||||
a_Window.OpenedByPlayer(*this);
|
||||
m_CurrentWindow = &a_Window;
|
||||
a_Window.SendWholeWindow(*GetClientHandle());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ public:
|
||||
// tolua_begin
|
||||
|
||||
/** Opens the specified window; closes the current one first using CloseWindow() */
|
||||
void OpenWindow(cWindow * a_Window);
|
||||
void OpenWindow(cWindow & a_Window);
|
||||
|
||||
/** Closes the current window, resets current window to m_InventoryWindow. A plugin may refuse the closing if a_CanRefuse is true */
|
||||
void CloseWindow(bool a_CanRefuse = true);
|
||||
|
||||
Reference in New Issue
Block a user