public async Task <bool> CreateProspectDataAsync(ProspectSummaryData prospectSummaryData) { try { ProspectData prospectData = Mapper.Map <ProspectSummaryData, ProspectData>(prospectSummaryData); prospectDBContext.ProspectDatas.Add(prospectData); int result = await prospectDBContext.SaveChangesAsync(); return(result < 1 ? false : true); } catch (Exception ex) { return(false); } }
public ProspectData GetProspectData(InteractionContext context) { // On errors, or plant entities we have zero normal, that will broke dig results, // we need to replace dir with offset of 1 to start prospect from next block downside var rawDirection = context.Normal ?? Vector3i.Zero; var direction = rawDirection == Vector3i.Zero ? Vector3i.Up : rawDirection; // Apply offset for starting pos by 1 in case we have unusual normal values var startingPos = context.BlockPosition.Value; if (rawDirection == Vector3i.Zero) { startingPos -= direction; } var result = new ProspectData(this, direction, this.DrillDepth); for (var i = 0; i < this.DrillDepth; i++) { if (this.CanProspect(context.Player, i + 1)) { var data = this.ProspectBlock(startingPos - (direction * i)); result.Items.Add(data); // if we hit core, no need to drill further, exit if (data.ItemTypeId == -2) { result.MaxBlocksCanProspect = i + 1; break; } } else { // Clamp max blocks on failed cycle iteration for client-side checks (errors sync) result.MaxBlocksCanProspect = i; break; } } if (result.MaxBlocksCanProspect < 0) { result.MaxBlocksCanProspect = this.DrillDepth; } return(result); }