use screeps::{game, RoomXY, StructureType};
use wasm_bindgen::prelude::*;
use room_visual_ext::RoomVisualExt;
#[wasm_bindgen(js_name = loop)]
pub fn game_loop() {
fn show_sample(room_visual_ext: &mut RoomVisualExt, x_offset: f32, opacity: f32) {
let label = format!("RoomVisualExt with opacity={}", opacity);
room_visual_ext.text(13f32 + x_offset, 6.5f32, label, None);
room_visual_ext.structure(13f32 + x_offset, 10f32, StructureType::Road, opacity);
room_visual_ext.structure(12f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(11f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(10f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(9f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(8f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(14f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(15f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(16f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(17f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(18f32 + x_offset, 9f32, StructureType::Road, opacity);
room_visual_ext.structure(12f32 + x_offset, 11f32, StructureType::Road, opacity);
room_visual_ext.structure(14f32 + x_offset, 11f32, StructureType::Road, opacity);
room_visual_ext.structure(12f32 + x_offset, 12f32, StructureType::Road, opacity);
room_visual_ext.structure(14f32 + x_offset, 12f32, StructureType::Road, opacity);
room_visual_ext.structure(12f32 + x_offset, 13f32, StructureType::Road, opacity);
room_visual_ext.structure(14f32 + x_offset, 13f32, StructureType::Road, opacity);
room_visual_ext.structure(12f32 + x_offset, 14f32, StructureType::Road, opacity);
room_visual_ext.structure(14f32 + x_offset, 14f32, StructureType::Road, opacity);
room_visual_ext.structure(13f32 + x_offset, 15f32, StructureType::Road, opacity);
room_visual_ext.structure(13f32 + x_offset, 16f32, StructureType::Road, opacity);
room_visual_ext.structure(12f32 + x_offset, 16f32, StructureType::Road, opacity);
room_visual_ext.structure(14f32 + x_offset, 16f32, StructureType::Road, opacity);
room_visual_ext.structure_roomxy(
unsafe { RoomXY::unchecked_new(13 + x_offset as u8, 14) },
StructureType::Spawn,
opacity,
);
room_visual_ext.structure(13f32 + x_offset, 13f32, StructureType::Nuker, opacity);
room_visual_ext.structure(13f32 + x_offset, 12f32, StructureType::Link, opacity);
room_visual_ext.structure(13f32 + x_offset, 11f32, StructureType::PowerSpawn, opacity);
room_visual_ext.structure(13f32 + x_offset, 14f32, StructureType::Rampart, opacity);
room_visual_ext.structure(13f32 + x_offset, 13f32, StructureType::Rampart, opacity);
room_visual_ext.structure(13f32 + x_offset, 12f32, StructureType::Rampart, opacity);
room_visual_ext.structure(13f32 + x_offset, 11f32, StructureType::Rampart, opacity);
room_visual_ext.structure(13f32 + x_offset, 16f32, StructureType::Container, opacity);
room_visual_ext.structure(13f32 + x_offset, 17f32, StructureType::Extractor, opacity);
room_visual_ext.structure(13f32 + x_offset, 9f32, StructureType::Terminal, opacity);
room_visual_ext.structure(13f32 + x_offset, 8f32, StructureType::Extension, opacity);
room_visual_ext.structure(12f32 + x_offset, 8f32, StructureType::Extension, opacity);
room_visual_ext.structure(11f32 + x_offset, 8f32, StructureType::Extension, opacity);
room_visual_ext.structure(14f32 + x_offset, 8f32, StructureType::Extension, opacity);
room_visual_ext.structure(15f32 + x_offset, 8f32, StructureType::Extension, opacity);
room_visual_ext.structure(12f32 + x_offset, 10f32, StructureType::Observer, opacity);
room_visual_ext.structure(11f32 + x_offset, 10f32, StructureType::Extension, opacity);
room_visual_ext.structure(11f32 + x_offset, 11f32, StructureType::Factory, opacity);
room_visual_ext.structure(11f32 + x_offset, 12f32, StructureType::Extension, opacity);
room_visual_ext.structure(11f32 + x_offset, 13f32, StructureType::Extension, opacity);
room_visual_ext.structure(11f32 + x_offset, 14f32, StructureType::Storage, opacity);
room_visual_ext.structure(11f32 + x_offset, 15f32, StructureType::Extension, opacity);
room_visual_ext.structure(12f32 + x_offset, 15f32, StructureType::Extension, opacity);
room_visual_ext.structure(14f32 + x_offset, 10f32, StructureType::Extension, opacity);
room_visual_ext.structure(15f32 + x_offset, 10f32, StructureType::Extension, opacity);
room_visual_ext.structure(15f32 + x_offset, 11f32, StructureType::Tower, opacity);
room_visual_ext.structure(15f32 + x_offset, 12f32, StructureType::Lab, opacity);
room_visual_ext.structure(15f32 + x_offset, 13f32, StructureType::Lab, opacity);
room_visual_ext.structure(15f32 + x_offset, 14f32, StructureType::Lab, opacity);
room_visual_ext.structure(15f32 + x_offset, 15f32, StructureType::Extension, opacity);
room_visual_ext.structure(14f32 + x_offset, 15f32, StructureType::Extension, opacity);
room_visual_ext.structure(13f32 + x_offset, 9f32, StructureType::Rampart, opacity);
room_visual_ext.structure(13f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(12f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(11f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(10f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 9f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 10f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 11f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 12f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 13f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 14f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 15f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 16f32, StructureType::Rampart, opacity);
room_visual_ext.structure(9f32 + x_offset, 17f32, StructureType::Rampart, opacity);
room_visual_ext.structure(10f32 + x_offset, 14f32, StructureType::Rampart, opacity);
room_visual_ext.structure(10f32 + x_offset, 15f32, StructureType::Rampart, opacity);
room_visual_ext.structure(10f32 + x_offset, 16f32, StructureType::Rampart, opacity);
room_visual_ext.structure(10f32 + x_offset, 17f32, StructureType::Rampart, opacity);
room_visual_ext.structure(11f32 + x_offset, 17f32, StructureType::Rampart, opacity);
room_visual_ext.structure(11f32 + x_offset, 16f32, StructureType::Rampart, opacity);
room_visual_ext.structure(14f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(15f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(16f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(17f32 + x_offset, 8f32, StructureType::Rampart, opacity);
room_visual_ext.structure(17f32 + x_offset, 9f32, StructureType::Rampart, opacity);
room_visual_ext.structure(17f32 + x_offset, 10f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 11f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 12f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 13f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 14f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 15f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 16f32, StructureType::Wall, opacity);
room_visual_ext.structure(17f32 + x_offset, 17f32, StructureType::Wall, opacity);
room_visual_ext.structure(16f32 + x_offset, 14f32, StructureType::Wall, opacity);
room_visual_ext.structure(16f32 + x_offset, 15f32, StructureType::Wall, opacity);
room_visual_ext.structure(16f32 + x_offset, 16f32, StructureType::Wall, opacity);
room_visual_ext.structure(16f32 + x_offset, 17f32, StructureType::Wall, opacity);
room_visual_ext.structure(15f32 + x_offset, 16f32, StructureType::Wall, opacity);
room_visual_ext.structure(15f32 + x_offset, 17f32, StructureType::Wall, opacity);
}
let spawn = game::spawns().values().next().unwrap();
spawn.pos();
let room_name = spawn.room().map(|r| r.name());
let mut room_visual_ext = RoomVisualExt::new(room_name.unwrap());
show_sample(&mut room_visual_ext, 1.0, 1.0);
room_visual_ext.line((20f32, 7f32), (20f32, 19f32), None);
room_visual_ext.room_visual.text(26f32, 6.5f32, "Real, in-game objects".into(), None);
room_visual_ext.line((32f32, 7f32), (32f32, 19f32), None);
show_sample(&mut room_visual_ext, 25.0, 0.5);
room_visual_ext.text(
26f32, 20f32,
"This image was generated using the examples/showcase.rs snippet".into(),
None);
}