void add(void* i, size_t sz) { ((StackFrame*)i)->save(sz); add(i); }
/** * Initializes all the elements in the Monthly Costs screen. * @param game Pointer to the core game. * @param base Pointer to the base to get info from. */ MonthlyCostsState::MonthlyCostsState(Game *game, Base *base) : State(game), _base(base) { // Create objects _window = new Window(this, 320, 200, 0, 0); _btnOk = new TextButton(300, 20, 10, 170); _txtTitle = new Text(310, 16, 5, 12); _txtCost = new Text(80, 9, 115, 32); _txtQuantity = new Text(55, 9, 195, 32); _txtTotal = new Text(60, 9, 250, 32); _txtRental = new Text(150, 9, 10, 48); _txtSalaries = new Text(150, 9, 10, 80); _txtIncome = new Text(150, 9, 10, 136); _lstCrafts = new TextList(300, 20, 10, 56); _lstSalaries = new TextList(300, 30, 10, 88); _lstMaintenance = new TextList(300, 9, 10, 120); _lstTotal = new TextList(100, 9, 205, 136); // Set palette _game->setPalette(_game->getResourcePack()->getPalette("BACKPALS.DAT")->getColors(Palette::blockOffset(6)), Palette::backPos, 16); add(_window); add(_btnOk); add(_txtTitle); add(_txtCost); add(_txtQuantity); add(_txtTotal); add(_txtRental); add(_txtSalaries); add(_txtIncome); add(_lstCrafts); add(_lstSalaries); add(_lstMaintenance); add(_lstTotal); // Set up objects _window->setColor(Palette::blockOffset(15)+1); _window->setBackground(_game->getResourcePack()->getSurface("BACK13.SCR")); _btnOk->setColor(Palette::blockOffset(15)+1); _btnOk->setText(_game->getLanguage()->getString("STR_OK")); _btnOk->onMouseClick((ActionHandler)&MonthlyCostsState::btnOkClick); _txtTitle->setColor(Palette::blockOffset(15)+1); _txtTitle->setBig(); _txtTitle->setAlign(ALIGN_CENTER); _txtTitle->setText(_game->getLanguage()->getString("STR_MONTHLY_COSTS")); _txtCost->setColor(Palette::blockOffset(15)+1); _txtCost->setText(_game->getLanguage()->getString("STR_COST_PER_UNIT")); _txtQuantity->setColor(Palette::blockOffset(15)+1); _txtQuantity->setText(_game->getLanguage()->getString("STR_QUANTITY")); _txtTotal->setColor(Palette::blockOffset(15)+1); _txtTotal->setText(_game->getLanguage()->getString("STR_TOTAL")); _txtRental->setColor(Palette::blockOffset(15)+1); _txtRental->setText(_game->getLanguage()->getString("STR_CRAFT_RENTAL")); _txtSalaries->setColor(Palette::blockOffset(15)+1); _txtSalaries->setText(_game->getLanguage()->getString("STR_SALARIES")); _txtIncome->setColor(Palette::blockOffset(13)+10); std::wstringstream ss; ss << _game->getLanguage()->getString("STR_INCOME") << L"=" << Text::formatFunding(_game->getSavedGame()->getCountryFunding()); _txtIncome->setText(ss.str()); _lstCrafts->setColor(Palette::blockOffset(13)+10); _lstCrafts->setColumns(4, 125, 70, 45, 60); _lstCrafts->setDot(true); const std::vector<std::string> &crafts = _game->getRuleset()->getCraftsList(); for (std::vector<std::string>::const_iterator i = crafts.begin(); i != crafts.end(); ++i) { RuleCraft *craft = _game->getRuleset()->getCraft(*i); if (craft->getBuyCost() > 0) { std::wstringstream ss2; ss2 << _base->getCraftCount((*i)); _lstCrafts->addRow(4, _game->getLanguage()->getString(*i).c_str(), Text::formatFunding(craft->getBuyCost()).c_str(), ss2.str().c_str(), Text::formatFunding(_base->getCraftCount(*i) * craft->getBuyCost()).c_str()); } } _lstSalaries->setColor(Palette::blockOffset(13)+10); _lstSalaries->setColumns(4, 125, 70, 45, 60); _lstSalaries->setDot(true); std::wstringstream ss4; ss4 << _base->getSoldiers()->size(); _lstSalaries->addRow(4, _game->getLanguage()->getString("STR_SOLDIERS").c_str(), Text::formatFunding(_game->getRuleset()->getSoldierCost()).c_str(), ss4.str().c_str(), Text::formatFunding(_base->getSoldiers()->size() * _game->getRuleset()->getSoldierCost()).c_str()); std::wstringstream ss5; ss5 << _base->getTotalEngineers(); _lstSalaries->addRow(4, _game->getLanguage()->getString("STR_ENGINEERS").c_str(), Text::formatFunding(_game->getRuleset()->getEngineerCost()).c_str(), ss5.str().c_str(), Text::formatFunding(_base->getTotalEngineers() * _game->getRuleset()->getEngineerCost()).c_str()); std::wstringstream ss6; ss6 << _base->getTotalScientists(); _lstSalaries->addRow(4, _game->getLanguage()->getString("STR_SCIENTISTS").c_str(), Text::formatFunding(_game->getRuleset()->getScientistCost()).c_str(), ss6.str().c_str(), Text::formatFunding(_base->getTotalScientists() * _game->getRuleset()->getScientistCost()).c_str()); _lstMaintenance->setColor(Palette::blockOffset(13)+10); _lstMaintenance->setColumns(2, 240, 60); _lstMaintenance->setDot(true); _lstMaintenance->addRow(2, _game->getLanguage()->getString("STR_BASE_MAINTENANCE").c_str(), Text::formatFunding(_base->getFacilityMaintenance()).c_str()); _lstMaintenance->setCellColor(0, 0, Palette::blockOffset(15)+1); _lstTotal->setColor(Palette::blockOffset(13)); _lstTotal->setColumns(2, 45, 55); _lstTotal->setDot(true); _lstTotal->addRow(2, _game->getLanguage()->getString("STR_TOTAL").c_str(), Text::formatFunding(_base->getMonthlyMaintenace()).c_str()); }
pulsesequence() { int i, relay; /* GET NEW PARAMETERS */ relay = (int) (getval("relay") + 0.5); /* CHECK CONDITIONS */ if (p1 == 0.0) p1 = pw; /* CALCULATE PHASES */ sub(ct, ssctr, v11); /* v11 = ct-ss */ initval(256.0, v12); add(v11, v12, v11); /* v11 = ct-ss+256 */ hlv(v11, v1); /* v1 = cyclops = 00112233 */ for (i = 0; i < relay + 1; i++) hlv(v1, v1); /* cyclops = 2**(relay+2) 0's, 1's, 2's, 3's */ mod4(v11, v2); /* v2 = 0123 0123... */ dbl(v2, oph); /* oph = 0202 0202 */ add(v2, v1, v2); /* v2 = 0123 0123 + cyclops */ add(oph, v1, oph); /* oph = 0202 0202 + cyclops */ hlv(v11, v3); /* v3 = 0011 2233 4455 ... */ /* PULSE SEQUENCE */ status(A); if (rof1 == 0.0) { rof1 = 1.0e-6; /* phase switching time */ rcvroff(); } hsdelay(d1); /* preparation period */ status(B); rgpulse(pw, v1, rof1, rof1); delay(d2); /* evolution period */ status(A); if (relay == 0) delay(tau); /* for delayed cosy */ rgpulse(p1, v2, rof1, rof1); /* start of mixing period */ if (relay == 0) delay(tau); /* for delayed cosy */ for (i = 0; i < relay; i++) /* relay coherence */ { hlv(v3, v3); /* v3=2**(relay+1) 0's, 1's, 2's, 3's */ dbl(v3, v4); /* v4=2**(relay+1) 0's, 2's, 0's, 2's */ add(v2, v4, v5); /* v5=v4+v2 (including cyclops) */ delay(tau/2); rgpulse(2.0*pw, v2, rof1, rof1); delay(tau/2); rgpulse(pw, v5, rof1, rof1); } status(C); delay(rof2); rcvron(); }
ProjectionExec::ProjectionExec(const BSONObj& spec, const MatchExpression* queryExpression) : _include(true), _special(false), _source(spec), _includeID(true), _skip(0), _limit(-1), _arrayOpType(ARRAY_OP_NORMAL), _hasNonSimple(false), _hasDottedField(false), _queryExpression(queryExpression), _hasReturnKey(false) { // Are we including or excluding fields? // -1 when we haven't initialized it. // 1 when we're including // 0 when we're excluding. int include_exclude = -1; BSONObjIterator it(_source); while (it.more()) { BSONElement e = it.next(); if (!e.isNumber() && !e.isBoolean()) { _hasNonSimple = true; } if (Object == e.type()) { BSONObj obj = e.embeddedObject(); verify(1 == obj.nFields()); BSONElement e2 = obj.firstElement(); if (mongoutils::str::equals(e2.fieldName(), "$slice")) { if (e2.isNumber()) { int i = e2.numberInt(); if (i < 0) { add(e.fieldName(), i, -i); // limit is now positive } else { add(e.fieldName(), 0, i); } } else { verify(e2.type() == Array); BSONObj arr = e2.embeddedObject(); verify(2 == arr.nFields()); BSONObjIterator it(arr); int skip = it.next().numberInt(); int limit = it.next().numberInt(); verify(limit > 0); add(e.fieldName(), skip, limit); } } else if (mongoutils::str::equals(e2.fieldName(), "$elemMatch")) { _arrayOpType = ARRAY_OP_ELEM_MATCH; // Create a MatchExpression for the elemMatch. BSONObj elemMatchObj = e.wrap(); verify(elemMatchObj.isOwned()); _elemMatchObjs.push_back(elemMatchObj); StatusWithMatchExpression swme = MatchExpressionParser::parse(elemMatchObj); verify(swme.isOK()); // And store it in _matchers. _matchers[mongoutils::str::before(e.fieldName(), '.').c_str()] = swme.getValue(); add(e.fieldName(), true); } else if (mongoutils::str::equals(e2.fieldName(), "$meta")) { verify(String == e2.type()); if (e2.valuestr() == LiteParsedQuery::metaTextScore) { _meta[e.fieldName()] = META_TEXT_SCORE; } else if (e2.valuestr() == LiteParsedQuery::metaDiskLoc) { _meta[e.fieldName()] = META_DISKLOC; } else if (e2.valuestr() == LiteParsedQuery::metaGeoNearPoint) { _meta[e.fieldName()] = META_GEONEAR_POINT; } else if (e2.valuestr() == LiteParsedQuery::metaGeoNearDistance) { _meta[e.fieldName()] = META_GEONEAR_DIST; } else if (e2.valuestr() == LiteParsedQuery::metaIndexKey) { _hasReturnKey = true; // The index key clobbers everything so just stop parsing here. return; } else { // This shouldn't happen, should be caught by parsing. verify(0); } } else { verify(0); } } else if (mongoutils::str::equals(e.fieldName(), "_id") && !e.trueValue()) { _includeID = false; } else { add(e.fieldName(), e.trueValue()); // Projections of dotted fields aren't covered. if (mongoutils::str::contains(e.fieldName(), '.')) { _hasDottedField = true; } // Validate input. if (include_exclude == -1) { // If we haven't specified an include/exclude, initialize include_exclude. // We expect further include/excludes to match it. include_exclude = e.trueValue(); _include = !e.trueValue(); } } if (mongoutils::str::contains(e.fieldName(), ".$")) { _arrayOpType = ARRAY_OP_POSITIONAL; } } }
void a_settings__defaults(void) { settings = a_strhash_new(); add(STR, SET_ONCE, "app.title", "Untitled"); add(STR, SET_ONCE, "app.version", "0"); add(STR, SET_ONCE, "app.author", "Unknown"); add(STR, SET_ONCE, "app.compiled", "?"); add(STR, SET_ONCE, "app.conf", "a2x.cfg"); add(BOOL, SET_ANY, "app.quiet", "0"); add(BOOL, SET_ONCE, "app.tool", "0"); add(BOOL, SET_ONCE, "app.gp2xMenu", "0"); add(INT, SET_ANY, "app.mhz", "0"); add(BOOL, SET_ONCE, "video.window", "1"); add(INT, SET_ONCE, "video.width", "320"); add(INT, SET_ONCE, "video.height", "240"); add(BOOL, SET_ONCE, "video.fake", "0"); add(INT, SET_ONCE, "video.scale", "1"); add(BOOL, SET_ANY, "video.fullscreen", "0"); add(BOOL, SET_ONCE, "video.wizTear", "0"); add(BOOL, SET_ANY, "sound.on", "0"); add(INT, SET_ANY, "sound.music.scale", "100"); add(INT, SET_ANY, "sound.sfx.scale", "100"); add(BOOL, SET_ANY, "input.trackMouse", "0"); add(INT, SET_ONCE, "fps.rate", "60"); add(BOOL, SET_ANY, "fps.track", "0"); add(STR, SET_ONCE, "screenshot.dir", "./screenshots"); add(STR, SET_ONCE, "screenshot.button", "pc.F12, pandora.s"); }
ArticleStateVehicle::ArticleStateVehicle(Game *game, ArticleDefinitionVehicle *defs) : ArticleState(game, defs->id) { Unit *unit = _game->getRuleset()->getUnit(defs->id); Armor *armor = _game->getRuleset()->getArmor(unit->getArmor()); RuleItem *item = _game->getRuleset()->getItem(defs->id); // add screen elements _txtTitle = new Text(310, 17, 5, 23); _txtInfo = new Text(300, 150, 10, 122); _lstStats = new TextList(300, 89, 10, 48); // Set palette _game->setPalette(_game->getResourcePack()->getPalette("PALETTES.DAT_3")->getColors()); // _game->setPalette(_game->getResourcePack()->getPalette("BACKPALS.DAT")->getColors(Palette::blockOffset(7)), Palette::backPos, 16); ArticleState::initLayout(); // add other elements add(_txtTitle); add(_txtInfo); add(_lstStats); // Set up objects _game->getResourcePack()->getSurface("BACK10.SCR")->blit(_bg); _btnOk->setColor(Palette::blockOffset(5)); _btnPrev->setColor(Palette::blockOffset(5)); _btnNext->setColor(Palette::blockOffset(5)); _txtTitle->setColor(Palette::blockOffset(15)+4); _txtTitle->setBig(); _txtTitle->setText(Ufopaedia::buildText(_game, defs->title)); _txtInfo->setColor(Palette::blockOffset(15)-1); _txtInfo->setWordWrap(true); _txtInfo->setText(Ufopaedia::buildText(_game, defs->text)); _lstStats->setColor(Palette::blockOffset(15)+4); _lstStats->setColumns(2, 175, 145); _lstStats->setDot(true); std::wostringstream ss; ss << unit->getStats()->tu; _lstStats->addRow(2, tr("STR_TIME_UNITS").c_str(), ss.str().c_str()); std::wostringstream ss2; ss2 << unit->getStats()->health; _lstStats->addRow(2, tr("STR_HEALTH").c_str(), ss2.str().c_str()); std::wostringstream ss3; ss3 << armor->getFrontArmor(); _lstStats->addRow(2, tr("STR_FRONT_ARMOR").c_str(), ss3.str().c_str()); std::wostringstream ss4; ss4 << armor->getSideArmor(); _lstStats->addRow(2, tr("STR_LEFT_ARMOR").c_str(), ss4.str().c_str()); std::wostringstream ss5; ss5 << armor->getSideArmor(); _lstStats->addRow(2, tr("STR_RIGHT_ARMOR").c_str(), ss5.str().c_str()); std::wostringstream ss6; ss6 << armor->getRearArmor(); _lstStats->addRow(2, tr("STR_REAR_ARMOR").c_str(), ss6.str().c_str()); std::wostringstream ss7; ss7 << armor->getUnderArmor(); _lstStats->addRow(2, tr("STR_UNDER_ARMOR").c_str(), ss7.str().c_str()); _lstStats->addRow(2, tr("STR_WEAPON").c_str(), tr(defs->weapon).c_str()); if (!item->getCompatibleAmmo()->empty()) { RuleItem *ammo = _game->getRuleset()->getItem(item->getCompatibleAmmo()->front()); std::wostringstream ss8; ss8 << ammo->getPower(); _lstStats->addRow(2, tr("STR_WEAPON_POWER").c_str(), ss8.str().c_str()); _lstStats->addRow(2, tr("STR_AMMUNITION").c_str(), tr(ammo->getName()).c_str()); std::wostringstream ss9; ss9 << ammo->getClipSize(); _lstStats->addRow(2, tr("STR_ROUNDS").c_str(), ss9.str().c_str()); _txtInfo->setY(138); } else { std::wostringstream ss8; ss8 << item->getPower(); _lstStats->addRow(2, tr("STR_WEAPON_POWER").c_str(), ss8.str().c_str()); } centerAllSurfaces(); }
VMergeVal::VMergeVal() { add("restart"); add("continue"); }
/** * Initializes all the elements in the Soldier Diary Mission window. * @param soldier Pointer to the selected soldier. * @param rowEntry number to get mission info from. */ SoldierDiaryMissionState::SoldierDiaryMissionState(Soldier *soldier, int rowEntry) : _soldier(soldier), _rowEntry(rowEntry) { _screen = false; // Create objects _window = new Window(this, 300, 128, 10, 36, POPUP_HORIZONTAL); _btnOk = new TextButton(240, 16, 40, 140); _txtTitle = new Text(262, 9, 29, 44); _txtUFO = new Text(262, 9, 29, 52); _txtScore = new Text(180, 9, 29, 68); _txtKills = new Text(120, 9, 169, 68); _txtLocation = new Text(180, 9, 29, 76); _txtRace = new Text(120, 9, 169, 76); _txtDaylight = new Text(120, 9, 169, 84); _txtDaysWounded = new Text(180, 9, 29, 84); _txtNoRecord = new Text(240, 9, 29, 100); _lstKills = new TextList(270, 32, 20, 100); // Set palette setInterface("soldierMission"); add(_window, "window", "soldierMission"); add(_btnOk, "button", "soldierMission"); add(_txtTitle, "text", "soldierMission"); add(_txtUFO, "text", "soldierMission"); add(_txtScore, "text", "soldierMission"); add(_txtKills, "text", "soldierMission"); add(_txtLocation, "text", "soldierMission"); add(_txtRace, "text", "soldierMission"); add(_txtDaylight, "text", "soldierMission"); add(_txtDaysWounded, "text", "soldierMission"); add(_txtNoRecord, "text", "soldierMission"); add(_lstKills, "list", "soldierMission"); centerAllSurfaces(); // Set up objects std::vector<MissionStatistics*> *missionStatistics = _game->getSavedGame()->getMissionStatistics(); unsigned int missionId = _soldier->getDiary()->getMissionIdList().at(_rowEntry); if (missionId > missionStatistics->size()) { missionId = 0; } int daysWounded = missionStatistics->at(missionId)->injuryList[_soldier->getId()]; _window->setBackground(_game->getMod()->getSurface("BACK16.SCR")); _btnOk->setText(tr("STR_OK")); _btnOk->onMouseClick((ActionHandler)&SoldierDiaryMissionState::btnOkClick); _btnOk->onKeyboardPress((ActionHandler)&SoldierDiaryMissionState::btnOkClick, Options::keyCancel); _txtTitle->setAlign(ALIGN_CENTER); _txtTitle->setText(tr(missionStatistics->at(missionId)->type)); _txtUFO->setAlign(ALIGN_CENTER); _txtUFO->setText(tr(missionStatistics->at(missionId)->ufo)); _txtUFO->setVisible(missionStatistics->at(missionId)->ufo != "NO_UFO"); _txtScore->setText(tr("STR_SCORE_VALUE").arg(missionStatistics->at(missionId)->score)); _txtLocation->setText(tr("STR_LOCATION").arg(tr(missionStatistics->at(missionId)->getLocationString()))); _txtRace->setText(tr("STR_RACE_TYPE").arg(tr(missionStatistics->at(missionId)->alienRace))); _txtRace->setVisible(missionStatistics->at(missionId)->alienRace != "STR_UNKNOWN"); _txtDaylight->setText(tr("STR_DAYLIGHT_TYPE").arg(tr(missionStatistics->at(missionId)->getDaylightString()))); _txtDaysWounded->setText(tr("STR_DAYS_WOUNDED").arg(daysWounded)); _txtDaysWounded->setVisible(daysWounded != 0); _lstKills->setColumns(3, 60, 110, 100); int kills = 0; bool stunOrKill = false; for (std::vector<BattleUnitKills*>::iterator i = _soldier->getDiary()->getKills().begin() ; i != _soldier->getDiary()->getKills().end() ; ++i) { if ((unsigned int)(*i)->mission != missionId) continue; switch ((*i)->status) { case STATUS_DEAD: kills++; case STATUS_UNCONSCIOUS: case STATUS_PANICKING: case STATUS_TURNING: stunOrKill = true; default: break; } _lstKills->addRow(3, tr((*i)->getKillStatusString()).c_str(), (*i)->getUnitName(_game->getLanguage()).c_str(), tr((*i)->weapon).c_str()); } _txtNoRecord->setAlign(ALIGN_CENTER); _txtNoRecord->setText(tr("STR_NO_RECORD")); _txtNoRecord->setVisible(!stunOrKill); _txtKills->setText(tr("STR_KILLS").arg(kills)); }
delegate& operator +=(callback_t const& f) { add(f); }