Changeset - r17776:680ddf1939eb
[Not reviewed]
master
0 3 0
terkhen - 13 years ago 2011-06-12 20:53:16
terkhen@openttd.org
(svn r22571) -Add: [NewGRF] Show town persistent storage in the NewGRF debug GUI.
3 files changed with 33 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/newgrf_debug_gui.cpp
Show inline comments
 
@@ -164,9 +164,18 @@ public:
 
	}
 

	
 
	/**
 
	 * Used to decide if the PSA needs a parameter or not.
 
	 * @return True iff this item has a PSA that requires a parameter.
 
	 */
 
	virtual bool PSAWithParameter() const
 
	{
 
		return false;
 
	}
 

	
 
	/**
 
	 * Allows to know the size of the persistent storage.
 
	 * @param index Index of the item.
 
	 * @param grfid Unused.
 
	 * @param grfid Parameter for the PSA. Only required for items with parameters.
 
	 * @return Size of the persistent storage in indices.
 
	 */
 
	virtual uint GetPSASize(uint index, uint32 grfid) const
 
@@ -177,7 +186,7 @@ public:
 
	/**
 
	 * Gets the first position of the array containing the persistent storage.
 
	 * @param index Index of the item.
 
	 * @param grfid Unused.
 
	 * @param grfid Parameter for the PSA. Only required for items with parameters.
 
	 * @return Pointer to the first position of the storage array or NULL if not present.
 
	 */
 
	virtual int32 *GetPSAFirstPosition(uint index, uint32 grfid) const
 
@@ -388,10 +397,14 @@ struct NewGRFInspectWindow : Window {
 
			}
 
		}
 

	
 
		uint psa_size = nih->GetPSASize(index, 0);
 
		int32 *psa = nih->GetPSAFirstPosition(index, 0);
 
		uint psa_size = nih->GetPSASize(index, this->caller_grfid);
 
		int32 *psa = nih->GetPSAFirstPosition(index, this->caller_grfid);
 
		if (psa_size != 0 && psa != NULL) {
 
			this->DrawString(r, i++, "Persistent storage:");
 
			if (nih->PSAWithParameter()) {
 
				this->DrawString(r, i++, "Persistent storage [%08X]:", BSWAP32(this->caller_grfid));
 
			} else {
 
				this->DrawString(r, i++, "Persistent storage:");
 
			}
 
			assert(psa_size % 4 == 0);
 
			for (uint j = 0; j < psa_size; j += 4, psa += 4) {
 
				this->DrawString(r, i++, "  %i: %i %i %i %i", j, psa[0], psa[1], psa[2], psa[3]);
src/newgrf_town.cpp
Show inline comments
 
@@ -158,6 +158,7 @@ void TownStorePSA(Town *t, const GRFFile
 
	}
 

	
 
	/* Create a new storage. */
 
	assert(PersistentStorage::CanAllocateItem());
 
	PersistentStorage *psa = new PersistentStorage(grfid);
 
	psa->StoreValue(pos, value);
 
	t->psa_list.push_back(psa);
src/table/newgrf_debug_data.h
Show inline comments
 
@@ -443,6 +443,20 @@ class NIHTown : public NIHelper {
 
	void SetStringParameters(uint index) const           { this->SetSimpleStringParameters(STR_TOWN_NAME, index); }
 
	uint32 GetGRFID(uint index) const                    { return 0; }
 
	uint Resolve(uint index, uint var, uint param, bool *avail) const { return TownGetVariable(var, param, avail, Town::Get(index), NULL); }
 
	bool PSAWithParameter() const                        { return true; }
 
	uint GetPSASize(uint index, uint32 grfid) const      { return cpp_lengthof(PersistentStorage, storage); }
 

	
 
	int32 *GetPSAFirstPosition(uint index, uint32 grfid) const
 
	{
 
		Town *t = Town::Get(index);
 

	
 
		std::list<PersistentStorage *>::iterator iter;
 
		for (iter = t->psa_list.begin(); iter != t->psa_list.end(); iter++) {
 
			if ((*iter)->grfid == grfid) return (int32 *)(&(*iter)->storage[0]);
 
		}
 

	
 
		return NULL;
 
	}
 
};
 

	
 
static const NIFeature _nif_town = {
0 comments (0 inline, 0 general)