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; }
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); }
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); }
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; }
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(); }
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; }