mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-10-31 22:56:44 +00:00 
			
		
		
		
	The current player cell was only being updated when the reference was not empty, causing it to incorrectly detect a cell change the first time something was activated in a newly visited cell, immediately closing the opened dialogue again.
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			935 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			935 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "referenceinterface.hpp"
 | |
| 
 | |
| #include "../mwbase/world.hpp"
 | |
| #include "../mwbase/environment.hpp"
 | |
| 
 | |
| #include "../mwworld/player.hpp"
 | |
| 
 | |
| namespace MWGui
 | |
| {
 | |
|     ReferenceInterface::ReferenceInterface()
 | |
|         : mCurrentPlayerCell(NULL)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     ReferenceInterface::~ReferenceInterface()
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     void ReferenceInterface::checkReferenceAvailable()
 | |
|     {
 | |
|         MWWorld::Ptr::CellStore* playerCell = MWBase::Environment::get().getWorld()->getPlayer().getPlayer().getCell();
 | |
| 
 | |
|         // check if player has changed cell, or count of the reference has become 0
 | |
|         if ((playerCell != mCurrentPlayerCell && mCurrentPlayerCell != NULL)
 | |
|              || (!mPtr.isEmpty() && mPtr.getRefData().getCount() == 0))
 | |
|         {
 | |
|             if (!mPtr.isEmpty())
 | |
|             {
 | |
|                 mPtr = MWWorld::Ptr();
 | |
|                 onReferenceUnavailable();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         mCurrentPlayerCell = playerCell;
 | |
|     }
 | |
| }
 |