Example #1
0
void ScriptInterpreter::cmd_send() {

	debug(4, "\nENTER: stackPtr = %d; _localStackPos = %d", _stack.getStackPos(), _localStackPos);

	byte argc = readByte();

	debug(4, "argc = %d", argc);

	_stack.push(argc);
	_stack.push(_codeIp - _codeBase);
	_stack.push(_runningScriptObjectIndex);
	_stack.push(kScriptStackLimit - _localStackPos);
	_localStackPos = _stack.getStackPos();

	int16 propertyId = _stack.peek(_localStackPos + argc + 2);
	int16 objectIndex = _stack.peek(_localStackPos + argc + 4);

	debug(4, "objectIndex = %d (%04X); propertyId = %d(%04X)", objectIndex, objectIndex, propertyId, propertyId);

	if (objectIndex != 0) {
		objectIndex = _vm->_dat->getObject(objectIndex)->getClass();
	} else {
		objectIndex = _stack.peek(_localStackPos + argc + 3);
	}

	debug(4, "--> objectIndex = %d(%04X)", objectIndex, objectIndex);

	if (objectIndex != 0) {
		_runningScriptObjectIndex = _vm->_dat->getObjectProperty(objectIndex, propertyId);
		if (_runningScriptObjectIndex != 0) {
			_codeBase = _vm->_dat->getObject(_runningScriptObjectIndex)->getData();
			_codeIp = _codeBase;
		} else {
			_stack.push(0);
			cmd_return();
		}
	} else {
		_stack.push(0);
		cmd_return();
	}

}
Example #2
0
static void
cmd_c(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_TIME_CHANGED]);
	cmd_return(key_info, keys_info);
}
Example #3
0
static void
cmd_m(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_TIME_MODIFIED]);
	cmd_return(key_info, keys_info);
}
Example #4
0
static void
cmd_T(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_TARGET]);
	cmd_return(key_info, keys_info);
}
Example #5
0
static void
cmd_a(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_TIME_ACCESSED]);
	cmd_return(key_info, keys_info);
}
Example #6
0
static void
cmd_i(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_NITEMS]);
	cmd_return(key_info, keys_info);
}
Example #7
0
static void
cmd_u(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_GROUPS]);
	cmd_return(key_info, keys_info);
}
Example #8
0
static void
cmd_s(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_SIZE]);
	cmd_return(key_info, keys_info);
}
Example #9
0
static void
cmd_O(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_OWNER_NAME]);
	cmd_return(key_info, keys_info);
}
Example #10
0
static void
cmd_p(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_PERMISSIONS]);
	cmd_return(key_info, keys_info);
}
Example #11
0
static void
cmd_f(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_FILEEXT]);
	cmd_return(key_info, keys_info);
}
Example #12
0
static void
cmd_e(key_info_t key_info, keys_info_t *keys_info)
{
	goto_line(top + indexes[SK_BY_EXTENSION]);
	cmd_return(key_info, keys_info);
}