diff --git a/server/src/googleforms.rs b/server/src/googleforms.rs index 2ae36de..299def3 100644 --- a/server/src/googleforms.rs +++ b/server/src/googleforms.rs @@ -7,7 +7,7 @@ use tokio::task::AbortHandle; use tracing::{info, error}; use typetag::serde; -use crate::{SharedControl, mine::{Remove, ChunkedTask, Quarry}, blocks::{Vec3, Direction, Position}, tasks::{TaskState, Task}, turtle::TurtleCommander}; +use crate::{SharedControl, mine::{Remove, ChunkedTask, Quarry}, blocks::{Vec3, Direction, Position}, tasks::{TaskState, Task}, turtle::TurtleCommander, construct::BuildSimple}; pub fn forms_api() -> Router { Router::new() @@ -110,9 +110,18 @@ async fn omni_inner(state: SharedControl, req: GoogleOmniForm) -> anyhow::Result let schematic = rustmatica::Litematic::from_bytes(&schematic.bytes().await?)?; + let region = schematic.regions.get(0).context("no regions")?; + info!("schematic \"{}\" downloaded", &schematic.name); info!("{} blocks", schematic.total_blocks()); info!("{} regions", schematic.regions.len()); + + let input = Position::new( + Vec3::new(53,73,77), + Direction::West, + ); + + schedule.add_task(Box::new(BuildSimple::new(position, region, input))); }, GoogleOmniFormMode::RemoveVein => { let block = req.block.context("missing block name")?; diff --git a/server/src/main.rs b/server/src/main.rs index 9aee606..eacf765 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -33,6 +33,7 @@ mod blocks; mod names; mod mine; mod fell; +mod construct; mod paths; mod safe_kill; mod turtle; @@ -70,6 +71,7 @@ async fn main() -> Result<(), Error> { .with_target("server::googleforms", Level::TRACE) .with_target("server::fell", Level::WARN) .with_target("server::mine", Level::INFO) + .with_target("server::construct", Level::TRACE) .with_target("server::depot", Level::TRACE); let log = fs::OpenOptions::new().append(true).create(true).open(SAVE.get().unwrap().join("avarus.log")).await?; diff --git a/server/src/mine.rs b/server/src/mine.rs index 6dc9d7e..fc4bcbb 100644 --- a/server/src/mine.rs +++ b/server/src/mine.rs @@ -466,7 +466,7 @@ impl ChunkedTask { } #[derive(Clone)] -struct ChunkedTaskGuard { +pub struct ChunkedTaskGuard { parent: ChunkedTask, chunk: i32, complete: bool, @@ -481,16 +481,16 @@ impl ChunkedTaskGuard { } } - fn id(&self) -> i32 { + pub fn id(&self) -> i32 { self.chunk } - fn finish(mut self) { + pub fn finish(mut self) { self.parent.mark_done(self.chunk); self.complete = true; } - fn cancel(self) { + pub fn cancel(self) { drop(self) // nop } }