void App::property_change(const Raul::URI& subject, const Raul::URI& key, const Atom& value) { if (subject == Raul::URI("ingen:/engine") && key == uris().param_sampleRate) { if (value.type() == forge().Int) { log().info(fmt("Sample rate: %1%\n") % uris().forge.str(value)); _sample_rate = value.get<int32_t>(); } else { log().error("Engine sample rate property is not an integer\n"); } } }
void inventory::form_from_map(game *g, point origin, int range) { items.clear(); for (int x = origin.x - range; x <= origin.x + range; x++) { for (int y = origin.y - range; y <= origin.y + range; y++) { for (int i = 0; i < g->m.i_at(x, y).size(); i++) if (!g->m.i_at(x, y)[i].made_of(LIQUID)) add_item(g->m.i_at(x, y)[i]); // Kludge for now! if (g->m.field_at(x, y).type == fd_fire) { item fire(g->itypes[itm_fire], 0); fire.charges = 1; add_item(fire); } if (g->m.ter(x, y) == t_forge) { item forge(g->itypes[itm_forge], 0); forge.charges = 1; add_item(forge); } if (g->m.ter(x, y) == t_grindstone) { item grind(g->itypes[itm_grindstone], 0); grind.charges = 1; add_item(grind); } if (g->m.ter(x, y) == t_watertub) { item water(g->itypes[itm_forgewater], 0); water.charges = 1; add_item(water); } if (g->m.ter(x, y) == t_crucible) { item crucible(g->itypes[itm_hot_crucible], 0); crucible.charges = 1; add_item(crucible); } if (g->m.ter(x, y) == t_anvil) { item anvil(g->itypes[itm_anvil], 0); anvil.charges = 1; add_item(anvil); } } } }
int Protocol::treatIO(Packet &p) { const static uint8_t command_len[] = {BUFFER_SIZE, 5, 1, 1, 1}; //send waiting packet if(out_offset>0) { _write(out, out_offset); out_offset = 0; } _read(); uint8_t len = BUFFER_SIZE; //treat incomming packet if(in_offset>0) { if(in[0] == 0 || in[0] >= sizeof(command_len)/sizeof(uint8_t)) { in_offset = 0; return 0; } len = command_len[in[0]]; if (in_offset>=len) { forge(p); in_offset-=len; for(uint8_t i=0;i<in_offset;i++) { in[i] = in[i+len]; } return 1; } } return 0; }
void ModEditWindow::OnInstallForgeClicked(wxCommandEvent &event) { InstallForgeDialog installDlg (this, m_inst->GetMCVersion()); installDlg.CenterOnParent(); if (installDlg.ShowModal() == wxID_OK) { auto ver = installDlg.GetSelectedItem(); wxString forgePath = Path::Combine(m_inst->GetInstModsDir(), ver.Filename); auto dlTask = new FileDownloadTask(ver.Url, wxFileName("forge.zip")); TaskProgressDialog taskDlg(this); taskDlg.CenterOnParent(); if (taskDlg.ShowModal(dlTask)) { MinecraftForge forge(wxFileName("forge.zip")); forge.FixVersionIfNeeded(ver.ForgeVersion); wxRenameFile("forge.zip",forgePath, true); m_inst->GetModList()->InsertMod(0, forgePath); jarModList->UpdateItems(); } } }
void inventory::form_from_map(point origin, int range, bool assign_invlet) { items.clear(); for (int x = origin.x - range; x <= origin.x + range; x++) { for (int y = origin.y - range; y <= origin.y + range; y++) { if (g->m.has_furn(x, y) && g->m.accessable_furniture(origin.x, origin.y, x, y, range)) { const furn_t &f = g->m.furn_at(x, y); itype *type = f.crafting_pseudo_item_type(); if (type != NULL) { item furn_item(type->id, 0); const itype *ammo = f.crafting_ammo_item_type(); if (ammo != NULL) { furn_item.charges = count_charges_in_list(ammo, g->m.i_at(x, y)); } furn_item.item_tags.insert("PSEUDO"); add_item(furn_item); } } if(g->m.accessable_items(origin.x, origin.y, x, y, range)) { continue; } for (auto &i : g->m.i_at(x, y)) { if (!i.made_of(LIQUID)) { add_item(i, false, assign_invlet); } } // Kludges for now! ter_id terrain_id = g->m.ter(x, y); if (g->m.has_nearby_fire(x, y, 0)) { item fire("fire", 0); fire.charges = 1; add_item(fire); } if (terrain_id == t_water_sh || terrain_id == t_water_dp || terrain_id == t_water_pool) { item water("water", 0); water.charges = 50; add_item(water); } if (terrain_id == t_swater_sh || terrain_id == t_swater_dp) { item swater("salt_water", 0); swater.charges = 50; add_item(swater); } // add cvd forge from terrain if (terrain_id == t_cvdmachine) { item cvd_machine("cvd_machine", 0); cvd_machine.charges = 1; cvd_machine.item_tags.insert("PSEUDO"); add_item(cvd_machine); } // kludge that can probably be done better to check specifically for toilet water to use in // crafting if (furnlist[g->m.furn(x, y)].examine == &iexamine::toilet) { // get water charges at location std::vector<item> toiletitems = g->m.i_at(x, y); int waterindex = -1; for (size_t i = 0; i < toiletitems.size(); ++i) { if (toiletitems[i].typeId() == "water") { waterindex = i; break; } } if (waterindex >= 0 && toiletitems[waterindex].charges > 0) { add_item(toiletitems[waterindex]); } } // keg-kludge if (furnlist[g->m.furn(x, y)].examine == &iexamine::keg) { std::vector<item> liq_contained = g->m.i_at(x, y); for (auto &i : liq_contained) if (i.made_of(LIQUID)) { add_item(i); } } int vpart = -1; vehicle *veh = g->m.veh_at(x, y, vpart); if (veh) { //Adds faucet to kitchen stuff; may be horribly wrong to do such.... //ShouldBreak into own variable const int kpart = veh->part_with_feature(vpart, "KITCHEN"); const int faupart = veh->part_with_feature(vpart, "FAUCET"); const int weldpart = veh->part_with_feature(vpart, "WELDRIG"); const int craftpart = veh->part_with_feature(vpart, "CRAFTRIG"); const int forgepart = veh->part_with_feature(vpart, "FORGE"); const int chempart = veh->part_with_feature(vpart, "CHEMLAB"); const int cargo = veh->part_with_feature(vpart, "CARGO"); if (cargo >= 0) { *this += std::list<item>(veh->parts[cargo].items.begin(), veh->parts[cargo].items.end()); } if(faupart >= 0 ) { item water("water_clean", 0); water.charges = veh->fuel_left("water"); add_item(water); } if (kpart >= 0) { item hotplate("hotplate", 0); hotplate.charges = veh->fuel_left("battery"); hotplate.item_tags.insert("PSEUDO"); add_item(hotplate); item water("water_clean", 0); water.charges = veh->fuel_left("water"); add_item(water); item pot("pot", 0); pot.item_tags.insert("PSEUDO"); add_item(pot); item pan("pan", 0); pan.item_tags.insert("PSEUDO"); add_item(pan); } if (weldpart >= 0) { item welder("welder", 0); welder.charges = veh->fuel_left("battery"); welder.item_tags.insert("PSEUDO"); add_item(welder); item soldering_iron("soldering_iron", 0); soldering_iron.charges = veh->fuel_left("battery"); soldering_iron.item_tags.insert("PSEUDO"); add_item(soldering_iron); } if (craftpart >= 0) { item vac_sealer("vac_sealer", 0); vac_sealer.charges = veh->fuel_left("battery"); vac_sealer.item_tags.insert("PSEUDO"); add_item(vac_sealer); item dehydrator("dehydrator", 0); dehydrator.charges = veh->fuel_left("battery"); dehydrator.item_tags.insert("PSEUDO"); add_item(dehydrator); item press("press", 0); press.charges = veh->fuel_left("battery"); press.item_tags.insert("PSEUDO"); add_item(press); } if (forgepart >= 0) { item forge("forge", 0); forge.charges = veh->fuel_left("battery"); forge.item_tags.insert("PSEUDO"); add_item(forge); } if (chempart >= 0) { item hotplate("hotplate", 0); hotplate.charges = veh->fuel_left("battery"); hotplate.item_tags.insert("PSEUDO"); add_item(hotplate); item chemistry_set("chemistry_set", 0); chemistry_set.charges = veh->fuel_left("battery"); chemistry_set.item_tags.insert("PSEUDO"); add_item(chemistry_set); } } } } }
void inventory::form_from_map(game *g, point origin, int range, bool assign_invlet) { items.clear(); for (int x = origin.x - range; x <= origin.x + range; x++) { for (int y = origin.y - range; y <= origin.y + range; y++) { int junk; if (g->m.has_flag("SEALED", x, y) || ((origin.x != x || origin.y != y) && !g->m.clear_path( origin.x, origin.y, x, y, range, 1, 100, junk ) ) ) { continue; } for (int i = 0; i < g->m.i_at(x, y).size(); i++) if (!g->m.i_at(x, y)[i].made_of(LIQUID)) add_item(g->m.i_at(x, y)[i], false, assign_invlet); // Kludges for now! ter_id terrain_id = g->m.ter(x, y); if ((g->m.field_at(x, y).findField(fd_fire)) || (terrain_id == t_lava)) { item fire(itypes["fire"], 0); fire.charges = 1; add_item(fire); } if (terrain_id == t_water_sh || terrain_id == t_water_dp){ item water(itypes["water"], 0); water.charges = 50; add_item(water); } // kludge that can probably be done better to check specifically for toilet water to use in // crafting if (furnlist[g->m.furn(x,y)].examine == &iexamine::toilet){ // get water charges at location std::vector<item> toiletitems = g->m.i_at(x,y); int waterindex = -1; for (int i = 0; i < toiletitems.size(); ++i){ if (toiletitems[i].typeId() == "water"){ waterindex = i; break; } } if (waterindex >= 0 && toiletitems[waterindex].charges > 0){ add_item(toiletitems[waterindex]); } } int vpart = -1; vehicle *veh = g->m.veh_at(x, y, vpart); if (veh) { const int kpart = veh->part_with_feature(vpart, "KITCHEN"); const int weldpart = veh->part_with_feature(vpart, "WELDRIG"); const int craftpart = veh->part_with_feature(vpart, "CRAFTRIG"); const int forgepart = veh->part_with_feature(vpart, "FORGE"); const int chempart = veh->part_with_feature(vpart, "CHEMLAB"); if (kpart >= 0) { item hotplate(itypes["hotplate"], 0); hotplate.charges = veh->fuel_left("battery", true); add_item(hotplate); item water(itypes["water_clean"], 0); water.charges = veh->fuel_left("water"); add_item(water); item pot(itypes["pot"], 0); add_item(pot); item pan(itypes["pan"], 0); add_item(pan); } if (weldpart >= 0) { item welder(itypes["welder"], 0); welder.charges = veh->fuel_left("battery", true); add_item(welder); item soldering_iron(itypes["soldering_iron"], 0); soldering_iron.charges = veh->fuel_left("battery", true); add_item(soldering_iron); } if (craftpart >= 0) { item vac_sealer(itypes["vac_sealer"], 0); vac_sealer.charges = veh->fuel_left("battery", true); add_item(vac_sealer); item dehydrator(itypes["dehydrator"], 0); dehydrator.charges = veh->fuel_left("battery", true); add_item(dehydrator); item press(itypes["press"], 0); press.charges = veh->fuel_left("battery", true); add_item(press); } if (forgepart >= 0) { item forge(itypes["forge"], 0); forge.charges = veh->fuel_left("battery", true); add_item(forge); } if (chempart >= 0) { item hotplate(itypes["hotplate"], 0); hotplate.charges = veh->fuel_left("battery", true); add_item(hotplate); item chemistry_set(itypes["chemistry_set"], 0); chemistry_set.charges = veh->fuel_left("battery", true); add_item(chemistry_set); } } } } }
void inventory::form_from_map( const tripoint &origin, int range, bool assign_invlet ) { items.clear(); for( const tripoint &p : g->m.points_in_radius( origin, range ) ) { if (g->m.has_furn( p ) && g->m.accessible_furniture( origin, p, range )) { const furn_t &f = g->m.furn( p ).obj(); const itype *type = f.crafting_pseudo_item_type(); if (type != NULL) { const itype *ammo = f.crafting_ammo_item_type(); item furn_item( type, calendar::turn, ammo ? count_charges_in_list( ammo, g->m.i_at( p ) ) : 0 ); furn_item.item_tags.insert("PSEUDO"); add_item(furn_item); } } if( !g->m.accessible_items( origin, p, range ) ) { continue; } for (auto &i : g->m.i_at( p )) { if (!i.made_of(LIQUID)) { add_item(i, false, assign_invlet); } } // Kludges for now! ter_id terrain_id = g->m.ter( p ); if (g->m.has_nearby_fire( p, 0 )) { item fire("fire", 0); fire.charges = 1; add_item(fire); } // Handle any water from infinite map sources. item water = g->m.water_from( p ); if( !water.is_null() ) { add_item( water ); } // add cvd forge from terrain if (terrain_id == t_cvdmachine) { item cvd_machine("cvd_machine", 0); cvd_machine.charges = 1; cvd_machine.item_tags.insert("PSEUDO"); add_item(cvd_machine); } // kludge that can probably be done better to check specifically for toilet water to use in // crafting if (g->m.furn( p ).obj().examine == &iexamine::toilet) { // get water charges at location auto toilet = g->m.i_at( p ); auto water = toilet.end(); for( auto candidate = toilet.begin(); candidate != toilet.end(); ++candidate ) { if( candidate->typeId() == "water" ) { water = candidate; break; } } if( water != toilet.end() && water->charges > 0) { add_item( *water ); } } // keg-kludge if (g->m.furn( p ).obj().examine == &iexamine::keg) { auto liq_contained = g->m.i_at( p ); for( auto &i : liq_contained ) { if( i.made_of(LIQUID) ) { add_item(i); } } } // WARNING: The part below has a bug that's currently quite minor // When a vehicle has multiple faucets in range, available water is // multiplied by the number of faucets. // Same thing happens for all other tools and resources, but not cargo int vpart = -1; vehicle *veh = g->m.veh_at( p, vpart ); if( veh == nullptr ) { continue; } //Adds faucet to kitchen stuff; may be horribly wrong to do such.... //ShouldBreak into own variable const int kpart = veh->part_with_feature(vpart, "KITCHEN"); const int faupart = veh->part_with_feature(vpart, "FAUCET"); const int weldpart = veh->part_with_feature(vpart, "WELDRIG"); const int craftpart = veh->part_with_feature(vpart, "CRAFTRIG"); const int forgepart = veh->part_with_feature(vpart, "FORGE"); const int chempart = veh->part_with_feature(vpart, "CHEMLAB"); const int cargo = veh->part_with_feature(vpart, "CARGO"); if (cargo >= 0) { *this += std::list<item>( veh->get_items(cargo).begin(), veh->get_items(cargo).end() ); } if(faupart >= 0 ) { item clean_water("water_clean", 0); clean_water.charges = veh->fuel_left("water_clean"); add_item(clean_water); item water("water", 0); water.charges = veh->fuel_left("water"); // TODO: Poison add_item(water); } if (kpart >= 0) { item hotplate("hotplate", 0); hotplate.charges = veh->fuel_left("battery", true); hotplate.item_tags.insert("PSEUDO"); add_item(hotplate); item clean_water("water_clean", 0); clean_water.charges = veh->fuel_left("water_clean"); add_item(clean_water); item water("water", 0); water.charges = veh->fuel_left("water"); // TODO: Poison add_item(water); item pot("pot", 0); pot.item_tags.insert("PSEUDO"); add_item(pot); item pan("pan", 0); pan.item_tags.insert("PSEUDO"); add_item(pan); } if (weldpart >= 0) { item welder("welder", 0); welder.charges = veh->fuel_left("battery", true); welder.item_tags.insert("PSEUDO"); add_item(welder); item soldering_iron("soldering_iron", 0); soldering_iron.charges = veh->fuel_left("battery", true); soldering_iron.item_tags.insert("PSEUDO"); add_item(soldering_iron); } if (craftpart >= 0) { item vac_sealer("vac_sealer", 0); vac_sealer.charges = veh->fuel_left("battery", true); vac_sealer.item_tags.insert("PSEUDO"); add_item(vac_sealer); item dehydrator("dehydrator", 0); dehydrator.charges = veh->fuel_left("battery", true); dehydrator.item_tags.insert("PSEUDO"); add_item(dehydrator); item press("press", 0); press.charges = veh->fuel_left("battery", true); press.item_tags.insert("PSEUDO"); add_item(press); } if (forgepart >= 0) { item forge("forge", 0); forge.charges = veh->fuel_left("battery", true); forge.item_tags.insert("PSEUDO"); add_item(forge); } if (chempart >= 0) { item hotplate("hotplate", 0); hotplate.charges = veh->fuel_left("battery", true); hotplate.item_tags.insert("PSEUDO"); add_item(hotplate); item chemistry_set("chemistry_set", 0); chemistry_set.charges = veh->fuel_left("battery", true); chemistry_set.item_tags.insert("PSEUDO"); add_item(chemistry_set); } } }
void OneSixModEditDialog::on_forgeBtn_clicked() { VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); vselect.setFilter(1, m_inst->currentVersionId()); if (vselect.exec() && vselect.selectedVersion()) { if (m_inst->versionIsCustom()) { auto reply = QMessageBox::question( this, tr("Revert?"), tr("This will revert any " "changes you did to the version up to this point. Is that " "OK?"), QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::Yes) { m_inst->revertCustomVersion(); m_inst->customizeVersion(); { m_version = m_inst->getFullVersion(); main_model->setSourceModel(m_version.get()); updateVersionControls(); } } else return; } else { m_inst->customizeVersion(); m_version = m_inst->getFullVersion(); main_model->setSourceModel(m_version.get()); updateVersionControls(); } ForgeVersionPtr forgeVersion = std::dynamic_pointer_cast<ForgeVersion>(vselect.selectedVersion()); if (!forgeVersion) return; auto entry = MMC->metacache()->resolveEntry("minecraftforge", forgeVersion->filename); if (entry->stale) { NetJob *fjob = new NetJob("Forge download"); fjob->addNetAction(CacheDownload::make(forgeVersion->installer_url, entry)); ProgressDialog dlg(this); dlg.exec(fjob); if (dlg.result() == QDialog::Accepted) { // install QString forgePath = entry->getFullPath(); ForgeInstaller forge(forgePath, forgeVersion->universal_url); if (!forge.apply(m_version)) { // failure notice } } else { // failed to download forge :/ } } else { // install QString forgePath = entry->getFullPath(); ForgeInstaller forge(forgePath, forgeVersion->universal_url); if (!forge.apply(m_version)) { // failure notice } } } }
void inventory::form_from_map( map &m, const tripoint &origin, int range, bool assign_invlet, bool clear_path ) { items.clear(); for( const tripoint &p : m.points_in_radius( origin, range ) ) { // can not reach this -> can not access its contents if( clear_path ) { if( origin != p && !m.clear_path( origin, p, range, 1, 100 ) ) { continue; } } if( m.has_furn( p ) ) { const furn_t &f = m.furn( p ).obj(); const itype *type = f.crafting_pseudo_item_type(); if( type != nullptr ) { const itype *ammo = f.crafting_ammo_item_type(); item furn_item( type, calendar::turn, 0 ); furn_item.item_tags.insert( "PSEUDO" ); furn_item.charges = ammo ? count_charges_in_list( ammo, m.i_at( p ) ) : 0; add_item( furn_item ); } } if( m.accessible_items( p ) ) { for( auto &i : m.i_at( p ) ) { if( !i.made_of( LIQUID ) ) { add_item( i, false, assign_invlet ); } } } // Kludges for now! if( m.has_nearby_fire( p, 0 ) ) { item fire( "fire", 0 ); fire.charges = 1; add_item( fire ); } // Handle any water from infinite map sources. item water = m.water_from( p ); if( !water.is_null() ) { add_item( water ); } // kludge that can probably be done better to check specifically for toilet water to use in // crafting if( m.furn( p ).obj().examine == &iexamine::toilet ) { // get water charges at location auto toilet = m.i_at( p ); auto water = toilet.end(); for( auto candidate = toilet.begin(); candidate != toilet.end(); ++candidate ) { if( candidate->typeId() == "water" ) { water = candidate; break; } } if( water != toilet.end() && water->charges > 0 ) { add_item( *water ); } } // keg-kludge if( m.furn( p ).obj().examine == &iexamine::keg ) { auto liq_contained = m.i_at( p ); for( auto &i : liq_contained ) { if( i.made_of( LIQUID ) ) { add_item( i ); } } } // WARNING: The part below has a bug that's currently quite minor // When a vehicle has multiple faucets in range, available water is // multiplied by the number of faucets. // Same thing happens for all other tools and resources, but not cargo const optional_vpart_position vp = m.veh_at( p ); if( !vp ) { continue; } vehicle *const veh = &vp->vehicle(); //Adds faucet to kitchen stuff; may be horribly wrong to do such.... //ShouldBreak into own variable const cata::optional<vpart_reference> kpart = vp.part_with_feature( "KITCHEN", true ); const cata::optional<vpart_reference> faupart = vp.part_with_feature( "FAUCET", true ); const cata::optional<vpart_reference> weldpart = vp.part_with_feature( "WELDRIG", true ); const cata::optional<vpart_reference> craftpart = vp.part_with_feature( "CRAFTRIG", true ); const cata::optional<vpart_reference> forgepart = vp.part_with_feature( "FORGE", true ); const cata::optional<vpart_reference> kilnpart = vp.part_with_feature( "KILN", true ); const cata::optional<vpart_reference> chempart = vp.part_with_feature( "CHEMLAB", true ); const cata::optional<vpart_reference> cargo = vp.part_with_feature( "CARGO", true ); if( cargo ) { const auto items = veh->get_items( cargo->part_index() ); *this += std::list<item>( items.begin(), items.end() ); } if( faupart ) { for( const auto &it : veh->fuels_left() ) { item fuel( it.first, 0 ); if( fuel.made_of( LIQUID ) ) { fuel.charges = it.second; add_item( fuel ); } } } if( kpart ) { item hotplate( "hotplate", 0 ); hotplate.charges = veh->fuel_left( "battery", true ); hotplate.item_tags.insert( "PSEUDO" ); add_item( hotplate ); item pot( "pot", 0 ); pot.item_tags.insert( "PSEUDO" ); add_item( pot ); item pan( "pan", 0 ); pan.item_tags.insert( "PSEUDO" ); add_item( pan ); } if( weldpart ) { item welder( "welder", 0 ); welder.charges = veh->fuel_left( "battery", true ); welder.item_tags.insert( "PSEUDO" ); add_item( welder ); item soldering_iron( "soldering_iron", 0 ); soldering_iron.charges = veh->fuel_left( "battery", true ); soldering_iron.item_tags.insert( "PSEUDO" ); add_item( soldering_iron ); } if( craftpart ) { item vac_sealer( "vac_sealer", 0 ); vac_sealer.charges = veh->fuel_left( "battery", true ); vac_sealer.item_tags.insert( "PSEUDO" ); add_item( vac_sealer ); item dehydrator( "dehydrator", 0 ); dehydrator.charges = veh->fuel_left( "battery", true ); dehydrator.item_tags.insert( "PSEUDO" ); add_item( dehydrator ); item food_processor( "food_processor", 0 ); food_processor.charges = veh->fuel_left( "battery", true ); food_processor.item_tags.insert( "PSEUDO" ); add_item( food_processor ); item press( "press", 0 ); press.charges = veh->fuel_left( "battery", true ); press.item_tags.insert( "PSEUDO" ); add_item( press ); } if( forgepart ) { item forge( "forge", 0 ); forge.charges = veh->fuel_left( "battery", true ); forge.item_tags.insert( "PSEUDO" ); add_item( forge ); } if( kilnpart ) { item kiln( "kiln", 0 ); kiln.charges = veh->fuel_left( "battery", true ); kiln.item_tags.insert( "PSEUDO" ); add_item( kiln ); } if( chempart ) { item hotplate( "hotplate", 0 ); hotplate.charges = veh->fuel_left( "battery", true ); hotplate.item_tags.insert( "PSEUDO" ); add_item( hotplate ); item chemistry_set( "chemistry_set", 0 ); chemistry_set.charges = veh->fuel_left( "battery", true ); chemistry_set.item_tags.insert( "PSEUDO" ); add_item( chemistry_set ); } } }