MCPcopy Create free account
hub / github.com/aspizu/goboscript / project

Method project

src/codegen/sb3.rs:363–427  ·  view source on GitHub ↗
(
        &mut self,
        input: &Path,
        project: &Project,
        config: &Config,
        stage_diagnostics: D,
        sprites_diagnostics: &mut FxHashMap<SmolStr, SpriteDiagnostics>,
  

Source from the content-addressed store, hash-verified

361 }
362
363 pub fn project(
364 &mut self,
365 input: &Path,
366 project: &Project,
367 config: &Config,
368 stage_diagnostics: D,
369 sprites_diagnostics: &mut FxHashMap<SmolStr, SpriteDiagnostics>,
370 ) -> io::Result<()> {
371 let broadcasts: FxHashSet<_> = project
372 .stage
373 .events
374 .iter()
375 .chain(project.sprites.values().flat_map(|sprite| &sprite.events))
376 .filter_map(|event| {
377 if let EventKind::On { event } = &event.kind {
378 Some(event.clone())
379 } else {
380 None
381 }
382 })
383 .collect();
384 // TODO: switch to deflate compression
385 // this should be configurable, use store in debug (because it would be
386 // faster?), use deflate in release (because it would be smaller?)
387 self.zip
388 .start_file("project.json", SimpleFileOptions::default())?;
389 write!(self, "{{")?;
390 write!(self, r#""targets":["#)?;
391 self.sprite(
392 input,
393 STAGE_NAME,
394 &project.stage,
395 None,
396 config,
397 stage_diagnostics,
398 &broadcasts,
399 )?;
400 for (sprite_name, sprite) in &project.sprites {
401 write!(self, r#","#)?;
402 self.sprite(
403 input,
404 sprite_name,
405 sprite,
406 Some(&project.stage),
407 config,
408 sprites_diagnostics.get_mut(sprite_name).unwrap(),
409 &broadcasts,
410 )?;
411 }
412 write!(self, "]")?; // targets
413 write!(self, r#","monitors":[]"#)?;
414 write!(self, r#","extensions":[]"#)?;
415 write!(self, r#","meta":{{"#)?;
416 write!(self, r#""semver":"3.0.0""#)?;
417 write!(self, r#","vm":"0.2.0""#)?;
418 write!(
419 self,
420 r#","agent":"goboscript v{}""#,

Callers 1

buildFunction · 0.80

Calls 2

spriteMethod · 0.80
assetsMethod · 0.80

Tested by

no test coverage detected