Пример #1
0
BitmapPtr *Sprite::setShapeList(BitmapPtr *shpP) {
	BitmapPtr *r = (_ext) ? _ext->_shpList : NULL;

	_shpCnt = 0;
	_w = 0;
	_h = 0;

	if (shpP) {
		BitmapPtr *p;
		for (p = shpP; *p; p++) {
			BitmapPtr b = (*p); // ->Code();
			if (b->_w > _w)
				_w = b->_w;
			if (b->_h > _h)
				_h = b->_h;
			_shpCnt++;
		}
		expand();
		_ext->_shpList = shpP;
		_flags._bDel = true;
		if (!_ext->_seq)
			setSeq(getConstantSeq(_shpCnt < 2));
	}
	return r;
}
Пример #2
0
Mouse::Mouse(CGEEngine *vm) : Sprite(vm, NULL), _busy(NULL), _hold(NULL), _hx(0), _vm(vm) {
	_hold = NULL;
	_hx = 0;
	_hy = 0;
	_exist = true;
	_buttons = 0;
	_busy = NULL;
	_active = false;
	_flags._kill = false;

	const Seq ms[] = {
		{ 0, 0, 0, 0, 1 },
		{ 1, 1, 0, 0, 1 }
	};
	Seq *seq = (Seq *)malloc(2 * sizeof(Seq));
	Common::copy(ms, ms + 2, seq);
	setSeq(seq);

	BitmapPtr *MC = new BitmapPtr[3];
	MC[0] = new Bitmap(_vm, "MOUSE");
	MC[1] = new Bitmap(_vm, "DUMMY");
	MC[2] = NULL;
	setShapeList(MC);

	gotoxy(kScrWidth / 2, kScrHeight / 2);
	_z = 127;
	step(1);
}
Пример #3
0
TER Transactor::apply ()
{
    preCompute();

    // If the transactor requires a valid account and the transaction doesn't
    // list one, preflight will have already a flagged a failure.
    auto const sle = view().peek (keylet::account(account_));

    // sle must exist except for transactions
    // that allow zero account.
    assert(sle != nullptr || account_ == beast::zero);

    if (sle)
    {
        mPriorBalance   = STAmount ((*sle)[sfBalance]).xrp ();
        mSourceBalance  = mPriorBalance;

        setSeq();

        auto result = payFee ();

        if (result  != tesSUCCESS)
            return result;

        view().update (sle);
    }

    return doApply ();
}
  void PThreadProcessingDevice::setParameters(const Matrix *pi, const Matrix *A, const Matrix *B, 
					      const std::map<unsigned, s_pair> *symbol2pair, double *symbol2scale, Matrix *symbol2matrix, 
					      const std::vector<unsigned> *seq) {
    setHMM(pi, A, B);
    setSymbol2pair(symbol2pair);
    setSymbol2scale(symbol2scale);
    setSymbol2matrix(symbol2matrix);
    setSeq(seq);
  }
Пример #5
0
Файл: Reader.c Проект: denji/mdr
seq stringToSeq(bstring str)
{
    seq s = initSeq(str->slen);

    int x;
    for (x = 0; x < str->slen; x++)
    {
        setSeq(&s, x, (int)str->data[x]);
    }

    return s;
}
Пример #6
0
Mouse::Mouse(CGE2Engine *vm) : Sprite(vm), _busy(nullptr), _hold(nullptr), _hx(0), _point(vm), _vm(vm) {
	_hold = nullptr;
	_hx = 0;
	_hy = 0;
	_exist = true;
	_buttons = 0;
	_busy = nullptr;
	_active = false;
	_flags._kill = false;

	setSeq(_stdSeq8);

	BitmapPtr MC = new Bitmap[2];
	MC[0] = Bitmap(_vm, "MOUSE");
	MC[1] = Bitmap(_vm, "DUMMY");
	setShapeList(MC, 2);

	step(1);
	on();
	off();
}
Пример #7
0
Sprite *Sprite::expand() {
	if (_ext)
		return this;

	_ext = new SprExt;
	assert(_ext != NULL);
	if (!*_file)
		return this;

	static const char *Comd[] = { "Name", "Phase", "Seq", "Near", "Take", NULL };
	char fname[kPathMax];

	Common::Array<BitmapPtr> shplist;
	for (int i = 0; i < _shpCnt + 1; ++i)
		shplist.push_back(NULL);

	Seq *seq = NULL;
	int shapeCount = 0,
	    seqCount = 0,
	    nearCount = 0,
	    takeCount = 0,
	    maxnow = 0,
	    maxnxt = 0;

	Snail::Com *nearList = NULL;
	Snail::Com *takeList = NULL;
	_vm->mergeExt(fname, _file, kSprExt);
	if (_resman->exist(fname)) { // sprite description file exist
		EncryptedStream sprf(fname);
		if (sprf.err())
			error("Bad SPR [%s]", fname);
		Common::String line;
		char tmpStr[kLineMax + 1];
		int len = 0, lcnt = 0;

		for (line = sprf.readLine(); !sprf.eos(); line = sprf.readLine()) {
			len = line.size();
			strcpy(tmpStr, line.c_str());
			lcnt++;
			if (len == 0 || *tmpStr == '.')
				continue;

			Snail::Com *c;
			switch (_vm->takeEnum(Comd, strtok(tmpStr, " =\t"))) {
			case 0:
				// Name
				setName(strtok(NULL, ""));
				break;
			case 1:
				// Phase
				// In case the shape index gets too high, increase the array size
				while ((shapeCount + 1) >= (int)shplist.size()) {
					shplist.push_back(NULL);
					++_shpCnt;
				}
				shplist[shapeCount++] = new Bitmap(strtok(NULL, " \t,;/"));
				break;
			case 2:
				// Seq
				seq = (Seq *)realloc(seq, (seqCount + 1) * sizeof(*seq));
				assert(seq != NULL);
				Seq *s;
				s = &seq[seqCount++];
				s->_now = atoi(strtok(NULL, " \t,;/"));
				if (s->_now > maxnow)
					maxnow = s->_now;
				s->_next = atoi(strtok(NULL, " \t,;/"));
				switch (s->_next) {
				case 0xFF:
					s->_next = seqCount;
					break;
				case 0xFE:
					s->_next = seqCount - 1;
					break;
				}
				if (s->_next > maxnxt)
					maxnxt = s->_next;
				s->_dx = atoi(strtok(NULL, " \t,;/"));
				s->_dy = atoi(strtok(NULL, " \t,;/"));
				s->_dly = atoi(strtok(NULL, " \t,;/"));
				break;
			case 3:
				// Near
				if (_nearPtr == kNoPtr)
					break;
				nearList = (Snail::Com *)realloc(nearList, (nearCount + 1) * sizeof(*nearList));
				assert(nearList != NULL);
				c = &nearList[nearCount++];
				if ((c->_com = (SnCom)_vm->takeEnum(Snail::_comText, strtok(NULL, " \t,;/"))) < 0)
					error("Bad NEAR in %d [%s]", lcnt, fname);
				c->_ref = atoi(strtok(NULL, " \t,;/"));
				c->_val = atoi(strtok(NULL, " \t,;/"));
				c->_ptr = NULL;
			break;
			case 4:
				// Take
				if (_takePtr == kNoPtr)
					break;
				takeList = (Snail::Com *)realloc(takeList, (takeCount + 1) * sizeof(*takeList));
				assert(takeList != NULL);
				c = &takeList[takeCount++];
				if ((c->_com = (SnCom)_vm->takeEnum(Snail::_comText, strtok(NULL, " \t,;/"))) < 0)
					error("Bad NEAR in %d [%s]", lcnt, fname);
				c->_ref = atoi(strtok(NULL, " \t,;/"));
				c->_val = atoi(strtok(NULL, " \t,;/"));
				c->_ptr = NULL;
				break;
			}
		}
	} else {
		// no sprite description: try to read immediately from .BMP
		shplist[shapeCount++] = new Bitmap(_file);
	}

	shplist[shapeCount] = NULL;
	if (seq) {
		if (maxnow >= shapeCount)
			error("Bad PHASE in SEQ [%s]", fname);
		if (maxnxt >= seqCount)
			error("Bad JUMP in SEQ [%s]", fname);
		setSeq(seq);
	} else
		setSeq(getConstantSeq(_shpCnt == 1));

	// Set the shape list
	BitmapPtr *shapeList = new BitmapPtr[shplist.size()];
	for (uint i = 0; i < shplist.size(); ++i)
		shapeList[i] = shplist[i];

	setShapeList(shapeList);

	if (nearList)
		nearList[nearCount - 1]._ptr = _ext->_near = nearList;
	else
		_nearPtr = kNoPtr;
	if (takeList)
		takeList[takeCount - 1]._ptr = _ext->_take = takeList;
	else
		_takePtr = kNoPtr;

	return this;
}