mirror of
https://git.ngram.ca/OpenJam/rc-servers
synced 2026-08-23 23:08:52 +00:00
Populate garage data from factory purchase better #6
This commit is contained in:
@@ -20,16 +20,18 @@ async fn do_handling(params: ParameterTable<()>, user: &crate::UserTy, factory:
|
||||
};
|
||||
if let Some(Typed::Int(factory_id)) = params.remove(&FACTORY_ID_PARAM_KEY) {
|
||||
// TODO charge for robot?
|
||||
let vehicle_to_copy = factory.vehicle(factory_id as _).await.map_err(|e| {
|
||||
let vehicle = factory.vehicle(factory_id as _).await.map_err(|e| {
|
||||
log::error!("Failed to retrieve vehicle {} (for copy-construct) from factory: {}", factory_id, e);
|
||||
rc_core::data::error_codes::WebServicesError::DatabaseError as i16
|
||||
})?;
|
||||
if let Some(vehicle_to_copy) = vehicle_to_copy {
|
||||
if let Some((vehicle_to_copy, vehicle_meta)) = vehicle {
|
||||
let to_save = rc_core::persist::user::VehicleData {
|
||||
name: Some(vehicle_meta.name),
|
||||
slot,
|
||||
robot_data: vehicle_to_copy.cube_data,
|
||||
colour_data: vehicle_to_copy.colour_data,
|
||||
weapon_order: Vec::default(), // FIXME calculate this somehow? Or maybe get the factory adapter to calculate this
|
||||
crf_id: Some(factory_id),
|
||||
};
|
||||
user_info.save_slot(to_save).await?;
|
||||
} else {
|
||||
|
||||
@@ -15,7 +15,7 @@ async fn do_handling(params: ParameterTable<()>, _user: &crate::UserTy, factory:
|
||||
rc_core::data::error_codes::WebServicesError::DatabaseError as i16
|
||||
})?;
|
||||
if let Some(vehicle) = vehicle {
|
||||
let vehicle_data = crate::data::crf::ItemData::from(vehicle);
|
||||
let vehicle_data = crate::data::crf::ItemData::from(vehicle.0);
|
||||
params.insert(DATA_PARAM_KEY, vehicle_data.as_transmissible());
|
||||
} else {
|
||||
log::warn!("Failed to retrieve non-existent factory vehicle {}", id);
|
||||
|
||||
@@ -73,10 +73,12 @@ async fn do_save(params: ParameterTable<()>, user: &crate::UserTy) -> Result<Par
|
||||
let weapon_order_filtered: Vec<_> = weapon_order.items.into_iter().filter_map(|ty| if let Typed::Int(i) = ty { Some(i) } else { None }).collect();
|
||||
let user_info = user.user()?;
|
||||
let vehicle_data = rc_core::persist::user::VehicleData {
|
||||
name: None,
|
||||
slot: slot_index,
|
||||
robot_data: robot_data.vec,
|
||||
colour_data: colour_data.vec,
|
||||
weapon_order: weapon_order_filtered,
|
||||
crf_id: None,
|
||||
};
|
||||
user_info.save_slot(vehicle_data).await?;
|
||||
let mut params_out = std::collections::HashMap::with_capacity(1);
|
||||
|
||||
Reference in New Issue
Block a user