Changeset - r11065:0af2fa697c41
[Not reviewed]
master
0 3 0
rubidium - 15 years ago 2009-02-08 01:51:48
rubidium@openttd.org
(svn r15406) -Fix: make Valuate actually cost a few opcodes to not make it a single opcode method of doing lots of the same thing. This should resolve most of the hiccups caused by AIs.
3 files changed with 13 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/ai/api/ai_abstractlist.cpp
Show inline comments
 
@@ -6,6 +6,7 @@
 
#include "ai_abstractlist.hpp"
 
#include "../../debug.h"
 
#include "../../core/alloc_func.hpp"
 
#include "../../script/squirrel.hpp"
 

	
 
/**
 
 * Base class for any AIAbstractList sorter.
 
@@ -818,6 +819,8 @@ SQInteger AIAbstractList::Valuate(HSQUIR
 

	
 
		(*iter).second = (int32)value;
 
		this->buckets[(int32)value].insert((*iter).first);
 

	
 
		Squirrel::DecreaseOps(vm, 5);
 
	}
 

	
 
	sq_release(vm, &obj_func);
src/script/squirrel.cpp
Show inline comments
 
@@ -454,3 +454,8 @@ void Squirrel::InsertResult(int result)
 
	vm->GetAt(vm->_stackbase + vm->_suspended_target) = vm->GetUp(-1);
 
	vm->Pop();
 
}
 

	
 
/* static */ void Squirrel::DecreaseOps(HSQUIRRELVM vm, int ops)
 
{
 
	vm->DecreaseOps(ops);
 
}
src/script/squirrel.hpp
Show inline comments
 
@@ -186,6 +186,11 @@ public:
 
	 * Release a SQ object.
 
	 */
 
	void ReleaseObject(HSQOBJECT *ptr) { sq_release(this->vm, ptr); }
 

	
 
	/**
 
	 * Tell the VM to remove \c amount ops from the number of ops till suspend.
 
	 */
 
	static void DecreaseOps(HSQUIRRELVM vm, int amount);
 
};
 

	
 
#endif /* SQUIRREL_HPP */
0 comments (0 inline, 0 general)