Changeset - r21089:ddd56f6ea08d
[Not reviewed]
master
0 2 0
frosch - 11 years ago 2013-12-23 18:08:36
frosch@openttd.org
(svn r26173) -Change: [NewGRF] Reset the temporary storage registers for every sprite resolving.
2 files changed with 5 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/newgrf_spritegroup.cpp
Show inline comments
 
@@ -33,6 +33,9 @@ TemporaryStorageArray<int32, 0x110> _tem
 
/* static */ const SpriteGroup *SpriteGroup::Resolve(const SpriteGroup *group, ResolverObject &object, bool top_level)
 
{
 
	if (group == NULL) return NULL;
 
	if (top_level) {
 
		_temp_store.ClearChanges();
 
	}
 
	return group->Resolve(object);
 
}
 

	
src/newgrf_storage.h
Show inline comments
 
@@ -29,13 +29,6 @@ struct BaseStorageArray {
 
	 * @param keep_changes do we save or revert the changes since the last #ClearChanges?
 
	 */
 
	virtual void ClearChanges(bool keep_changes) = 0;
 

	
 
	/**
 
	 * Stores some value at a given position.
 
	 * @param pos   the position to write at
 
	 * @param value the value to write
 
	 */
 
	virtual void StoreValue(uint pos, int32 value) = 0;
 
};
 

	
 
/**
 
@@ -133,7 +126,7 @@ struct PersistentStorageArray : BaseStor
 
 * @tparam SIZE the size of the array.
 
 */
 
template <typename TYPE, uint SIZE>
 
struct TemporaryStorageArray : BaseStorageArray {
 
struct TemporaryStorageArray {
 
	TYPE storage[SIZE]; ///< Memory to for the storage array
 
	uint16 init[SIZE];  ///< Storage has been assigned, if this equals 'init_key'.
 
	uint16 init_key;    ///< Magic key to 'init'.
 
@@ -158,7 +151,6 @@ struct TemporaryStorageArray : BaseStora
 

	
 
		this->storage[pos] = value;
 
		this->init[pos] = this->init_key;
 
		AddChangedStorage(this);
 
	}
 

	
 
	/**
 
@@ -179,7 +171,7 @@ struct TemporaryStorageArray : BaseStora
 
		return this->storage[pos];
 
	}
 

	
 
	void ClearChanges(bool keep_changes)
 
	void ClearChanges()
 
	{
 
		/* Increment init_key to invalidate all storage */
 
		this->init_key++;
0 comments (0 inline, 0 general)