|
|
|
@ -17,7 +17,7 @@ mod transport;
|
|
|
|
|
#[allow(dead_code)] |
|
|
|
|
mod util; |
|
|
|
|
|
|
|
|
|
use crate::util::Dir; |
|
|
|
|
use crate::util::{tile2px, tile2px_f, Dir}; |
|
|
|
|
use chemtorio::{Chem, Chemtorio, EntityTypeTag}; |
|
|
|
|
use hecs::Entity; |
|
|
|
|
use inventory::WeightFilter; |
|
|
|
@ -29,6 +29,7 @@ enum PlacementMode {
|
|
|
|
|
None, |
|
|
|
|
Picker(Dir), |
|
|
|
|
Belt(Dir), |
|
|
|
|
Remove, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
impl PlacementMode { |
|
|
|
@ -37,6 +38,7 @@ impl PlacementMode {
|
|
|
|
|
PlacementMode::Belt(dir) => PlacementMode::Belt(dir.rot_l()), |
|
|
|
|
PlacementMode::Picker(dir) => PlacementMode::Picker(dir.rot_l()), |
|
|
|
|
PlacementMode::None => *self, |
|
|
|
|
PlacementMode::Remove => *self, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -45,6 +47,7 @@ impl PlacementMode {
|
|
|
|
|
PlacementMode::Belt(dir) => PlacementMode::Belt(dir.rot_r()), |
|
|
|
|
PlacementMode::Picker(dir) => PlacementMode::Picker(dir.rot_r()), |
|
|
|
|
PlacementMode::None => *self, |
|
|
|
|
PlacementMode::Remove => *self, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -403,6 +406,10 @@ async fn main() {
|
|
|
|
|
if ui.add(imgbtn).clicked() { |
|
|
|
|
placement_mode = PlacementMode::Belt(Dir::R); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ui.button("Delete").clicked() { |
|
|
|
|
placement_mode = PlacementMode::Remove; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
ui.vertical(|ui| { |
|
|
|
@ -426,7 +433,7 @@ async fn main() {
|
|
|
|
|
|
|
|
|
|
if let Some((ent, enttyptag)) = entity_settings { |
|
|
|
|
match enttyptag { |
|
|
|
|
EntityTypeTag::Picker => { |
|
|
|
|
EntityTypeTag::Picker(_pos) => { |
|
|
|
|
egui::Window::new("Picker Settings") |
|
|
|
|
.anchor(egui::Align2::CENTER_CENTER, [200.0, 0.0]) |
|
|
|
|
.show(egui_ctx, |ui| { |
|
|
|
@ -503,13 +510,13 @@ async fn main() {
|
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
EntityTypeTag::Processor => { |
|
|
|
|
EntityTypeTag::Processor(_pos) => { |
|
|
|
|
egui::Window::new("Processor Settings").show(egui_ctx, |ui| {}); |
|
|
|
|
} |
|
|
|
|
EntityTypeTag::Source => { |
|
|
|
|
EntityTypeTag::Source(_pos) => { |
|
|
|
|
egui::Window::new("Source Information").show(egui_ctx, |ui| {}); |
|
|
|
|
} |
|
|
|
|
EntityTypeTag::Belt => { |
|
|
|
|
EntityTypeTag::Belt(_pos) => { |
|
|
|
|
entity_settings = None; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -600,6 +607,12 @@ async fn main() {
|
|
|
|
|
if is_mouse_button_released(MouseButton::Left) { |
|
|
|
|
match placement_mode { |
|
|
|
|
PlacementMode::None => (), |
|
|
|
|
PlacementMode::Remove => { |
|
|
|
|
let (removed, entities) = chemtorio.remove_at(m_tile_pos); |
|
|
|
|
if let Some(entities) = entities { |
|
|
|
|
println!("ENTITIES REMOVED: {:?}", entities); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
PlacementMode::Picker(dir) => { |
|
|
|
|
chemtorio.build_picker_at(m_tile_pos, dir); |
|
|
|
|
} |
|
|
|
@ -621,16 +634,16 @@ async fn main() {
|
|
|
|
|
m_tile_pos, ent, typtag |
|
|
|
|
); |
|
|
|
|
match typtag { |
|
|
|
|
EntityTypeTag::Picker => { |
|
|
|
|
EntityTypeTag::Picker(_pos) => { |
|
|
|
|
entity_settings = Some((ent, typtag)); |
|
|
|
|
} |
|
|
|
|
EntityTypeTag::Processor => { |
|
|
|
|
EntityTypeTag::Processor(_pos) => { |
|
|
|
|
entity_settings = Some((ent, typtag)); |
|
|
|
|
} |
|
|
|
|
EntityTypeTag::Source => { |
|
|
|
|
EntityTypeTag::Source(_pos) => { |
|
|
|
|
entity_settings = Some((ent, typtag)); |
|
|
|
|
} |
|
|
|
|
EntityTypeTag::Belt => { |
|
|
|
|
EntityTypeTag::Belt(_pos) => { |
|
|
|
|
chemtorio.insert_belt_chem( |
|
|
|
|
(m_pos.x.round() as i32, m_pos.y.round() as i32), |
|
|
|
|
cur_chem, |
|
|
|
@ -685,6 +698,9 @@ async fn main() {
|
|
|
|
|
|
|
|
|
|
match placement_mode { |
|
|
|
|
PlacementMode::None => (), |
|
|
|
|
PlacementMode::Remove => { |
|
|
|
|
qrend.render_debug_tile(40, tile2px(m_tile_pos)); |
|
|
|
|
} |
|
|
|
|
PlacementMode::Picker(dir) => { |
|
|
|
|
let sprite = EntitySprite::picker_dir(dir); |
|
|
|
|
qrend.render_entity((m_tile_pos.0 * 32 + 16, m_tile_pos.1 * 32 + 16), &sprite); |
|
|
|
|