Add first blueprint abstraction
This commit is contained in:
parent
505ca6ff5c
commit
2f12802507
4 changed files with 251 additions and 70 deletions
|
|
@ -1,8 +1,100 @@
|
|||
use factorio_blueprint::{
|
||||
Blueprint, BlueprintEntity, BlueprintPosition, belt::convert_to_blueprint,
|
||||
Blueprint, BlueprintEntity, BlueprintPosition,
|
||||
abstraction::{self, Entity},
|
||||
belt::convert_to_blueprint,
|
||||
};
|
||||
use factorio_core::{beltoptions::Beltspeed, pathfield::PathField, prelude::*};
|
||||
|
||||
fn balancer_path() -> Vec<PathField> {
|
||||
vec![
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 1),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 1),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 2),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 2),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 3),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(1, 3),
|
||||
dir: Direction::Left,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(2, 3),
|
||||
dir: Direction::Right,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 3),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 5),
|
||||
dir: Direction::Right,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(1, 5),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(2, 5),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 5),
|
||||
dir: Direction::Left,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 6),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 6),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Underground {
|
||||
pos: Position::new(1, 6),
|
||||
dir: Direction::Up,
|
||||
len: 4,
|
||||
},
|
||||
PathField::Underground {
|
||||
pos: Position::new(2, 6),
|
||||
dir: Direction::Up,
|
||||
len: 4,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
pub fn generate_4_lane_balancer2() -> Blueprint {
|
||||
let mut b = abstraction::Blueprint::new();
|
||||
|
||||
let splitter_pos = [(0, 0), (2, 0), (1, 1), (1, 4), (0, 7), (2, 7)];
|
||||
|
||||
for (x, y) in splitter_pos {
|
||||
b.add_entity(Entity::new(
|
||||
"splitter",
|
||||
Position::new(x, y),
|
||||
Direction::Up,
|
||||
Position::new(2, 1),
|
||||
));
|
||||
}
|
||||
|
||||
b.add_path(&balancer_path(), Beltspeed::Normal);
|
||||
|
||||
b.to_blueprint()
|
||||
}
|
||||
|
||||
pub fn generate_4_lane_balancer() -> Blueprint {
|
||||
let mut e = vec![
|
||||
BlueprintEntity::builder("splitter".to_owned(), 1, BlueprintPosition::new(1.0, 0.5))
|
||||
|
|
@ -21,74 +113,7 @@ pub fn generate_4_lane_balancer() -> Blueprint {
|
|||
|
||||
let mut nextfree = e.len() as u32;
|
||||
e.extend(convert_to_blueprint(
|
||||
&[
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 1),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 1),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 2),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 2),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 3),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(1, 3),
|
||||
dir: Direction::Left,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(2, 3),
|
||||
dir: Direction::Right,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 3),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 5),
|
||||
dir: Direction::Right,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(1, 5),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(2, 5),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 5),
|
||||
dir: Direction::Left,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(0, 6),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Belt {
|
||||
pos: Position::new(3, 6),
|
||||
dir: Direction::Up,
|
||||
},
|
||||
PathField::Underground {
|
||||
pos: Position::new(1, 6),
|
||||
dir: Direction::Up,
|
||||
len: 4,
|
||||
},
|
||||
PathField::Underground {
|
||||
pos: Position::new(2, 6),
|
||||
dir: Direction::Up,
|
||||
len: 4,
|
||||
},
|
||||
],
|
||||
&balancer_path(),
|
||||
&Beltspeed::Normal,
|
||||
&mut nextfree,
|
||||
));
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
use factorio_blueprint::{BlueprintString, encode};
|
||||
use factorio_blueprint_generator::balancer::generate_4_lane_balancer;
|
||||
use factorio_blueprint_generator::balancer::{generate_4_lane_balancer, generate_4_lane_balancer2};
|
||||
|
||||
fn main() {
|
||||
let b = BlueprintString::Blueprint(generate_4_lane_balancer());
|
||||
let b2 = BlueprintString::Blueprint(generate_4_lane_balancer2());
|
||||
|
||||
println!("{}", serde_json::to_string_pretty(&b).unwrap());
|
||||
println!("{}", serde_json::to_string_pretty(&b).unwrap());
|
||||
|
||||
println!("{}", encode(&serde_json::to_string(&b).unwrap()));
|
||||
println!("{}", encode(&serde_json::to_string(&b2).unwrap()));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue