add sun-blocking moonlet thru defs.txt
This commit is contained in:
parent
b8af14c1dd
commit
6cf99e6b0a
|
@ -82,9 +82,13 @@ pub struct Chat {
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Talker {
|
pub struct Talker {
|
||||||
|
pub pronoun: String,
|
||||||
pub conv_id: String,
|
pub conv_id: String,
|
||||||
}
|
}
|
||||||
impl Default for Talker { fn default() -> Self { Self { conv_id: "".to_string() } } }
|
impl Default for Talker { fn default() -> Self { Self {
|
||||||
|
pronoun: "they/them".to_string(),
|
||||||
|
conv_id: "error".to_string(),
|
||||||
|
}}}
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
pub struct LifeForm {
|
pub struct LifeForm {
|
||||||
|
|
10
src/defs.txt
10
src/defs.txt
|
@ -5,11 +5,21 @@ actor -50 0 0 "icarus"
|
||||||
chatid "hi_icarus"
|
chatid "hi_icarus"
|
||||||
scale 1
|
scale 1
|
||||||
|
|
||||||
|
actor 0 0 0 "alien"
|
||||||
|
chatid "error"
|
||||||
|
|
||||||
actor 300000 0 500000 "jupiter"
|
actor 300000 0 500000 "jupiter"
|
||||||
scale 80000
|
scale 80000
|
||||||
rotationy -1.40
|
rotationy -1.40
|
||||||
angularmomentum 0 0.0001 0
|
angularmomentum 0 0.0001 0
|
||||||
|
|
||||||
|
actor 2000 0 0 "asteroid1"
|
||||||
|
scale 200
|
||||||
|
|
||||||
|
chat "error"
|
||||||
|
name "ERROR"
|
||||||
|
msg 0 "INIT" "EXIT" "Unspecified conversation ID"
|
||||||
|
|
||||||
chat "hialien"
|
chat "hialien"
|
||||||
name "Alien"
|
name "Alien"
|
||||||
msg 0 "INIT" "EXIT" "Leave me alone"
|
msg 0 "INIT" "EXIT" "Leave me alone"
|
||||||
|
|
73
src/world.rs
73
src/world.rs
|
@ -10,7 +10,6 @@ use bevy::core_pipeline::bloom::{BloomCompositeMode, BloomSettings};
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
|
|
||||||
const ASTEROID_SIZE: f32 = 100.0;
|
const ASTEROID_SIZE: f32 = 100.0;
|
||||||
const MOON_SIZE: f32 = 200.0;
|
|
||||||
const MARS_SIZE: f32 = 10.0;
|
const MARS_SIZE: f32 = 10.0;
|
||||||
const ASTRONAUT_SIZE: f32 = 5.0;
|
const ASTRONAUT_SIZE: f32 = 5.0;
|
||||||
const PIZZERIA_SIZE: f32 = 30.0;
|
const PIZZERIA_SIZE: f32 = 30.0;
|
||||||
|
@ -29,6 +28,9 @@ fn asset_name_to_path(name: &str) -> &'static str {
|
||||||
match name {
|
match name {
|
||||||
"astronaut" => ASSET_ASTRONAUT,
|
"astronaut" => ASSET_ASTRONAUT,
|
||||||
"jupiter" => ASSET_JUPITER,
|
"jupiter" => ASSET_JUPITER,
|
||||||
|
"asteroid1" => ASSET_ASTEROID1,
|
||||||
|
"asteroid2" => ASSET_ASTEROID2,
|
||||||
|
"pizzeria" => ASSET_PIZZERIA,
|
||||||
_ => ASSET_ASTRONAUT,
|
_ => ASSET_ASTRONAUT,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,45 +111,6 @@ pub fn setup(
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
// Add some hand-placed asteroids
|
|
||||||
let sphere_handle = meshes.add(Sphere::new(1.0));
|
|
||||||
let gray_handle = materials.add(StandardMaterial {
|
|
||||||
base_color: Color::GRAY,
|
|
||||||
perceptual_roughness: 1.0,
|
|
||||||
..default()
|
|
||||||
});
|
|
||||||
let brown_handle = materials.add(StandardMaterial {
|
|
||||||
base_color: Color::Rgba { alpha: 1.0, red: 0.8, green: 0.5, blue: 0.1 },
|
|
||||||
perceptual_roughness: 1.0,
|
|
||||||
..default()
|
|
||||||
});
|
|
||||||
commands.spawn((
|
|
||||||
actor::Actor::default(),
|
|
||||||
PbrBundle {
|
|
||||||
mesh: sphere_handle.clone(),
|
|
||||||
material: gray_handle.clone(),
|
|
||||||
transform: Transform::from_xyz(
|
|
||||||
2000.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
).with_scale(Vec3::splat(MOON_SIZE)),
|
|
||||||
..default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
commands.spawn((
|
|
||||||
actor::Actor::default(),
|
|
||||||
PbrBundle {
|
|
||||||
mesh: sphere_handle.clone(),
|
|
||||||
material: brown_handle.clone(),
|
|
||||||
transform: Transform::from_xyz(
|
|
||||||
300.0,
|
|
||||||
40.0,
|
|
||||||
250.0,
|
|
||||||
).with_scale(Vec3::splat(MARS_SIZE)),
|
|
||||||
..default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
|
|
||||||
// Generate a bunch of asteriods
|
// Generate a bunch of asteriods
|
||||||
let maxdist = 10;
|
let maxdist = 10;
|
||||||
for i in -maxdist..maxdist {
|
for i in -maxdist..maxdist {
|
||||||
|
@ -186,6 +149,7 @@ pub fn setup(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate starmap
|
// Generate starmap
|
||||||
|
let sphere_handle = meshes.add(Sphere::new(1.0));
|
||||||
for star in nature::STARS {
|
for star in nature::STARS {
|
||||||
let brightness = star[3] * 2000.0;
|
let brightness = star[3] * 2000.0;
|
||||||
let (r, g, b) = nature::star_color_index_to_rgb(star[4]);
|
let (r, g, b) = nature::star_color_index_to_rgb(star[4]);
|
||||||
|
@ -211,28 +175,6 @@ pub fn setup(
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add alien
|
|
||||||
commands.spawn((
|
|
||||||
actor::Actor {
|
|
||||||
v: Vec3::new(-0.05, 0.2, 0.35),
|
|
||||||
..default()
|
|
||||||
},
|
|
||||||
actor::Talker { conv_id: "hialien".to_string() },
|
|
||||||
SceneBundle {
|
|
||||||
transform: Transform {
|
|
||||||
translation: Vec3::new(
|
|
||||||
20.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
),
|
|
||||||
rotation: Quat::from_rotation_y(-PI / 3.),
|
|
||||||
scale: Vec3::splat(ASTRONAUT_SIZE),
|
|
||||||
},
|
|
||||||
scene: asset_server.load(ASSET_ASTRONAUT),
|
|
||||||
..default()
|
|
||||||
},
|
|
||||||
));
|
|
||||||
|
|
||||||
// Add pizza alien
|
// Add pizza alien
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
actor::Actor {
|
actor::Actor {
|
||||||
|
@ -240,7 +182,7 @@ pub fn setup(
|
||||||
angular_momentum: Quat::from_euler(EulerRot::XYZ, 0.0, 0.0001, 0.0),
|
angular_momentum: Quat::from_euler(EulerRot::XYZ, 0.0, 0.0001, 0.0),
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
actor::Talker { conv_id: "pizzeria".to_string() },
|
actor::Talker { conv_id: "pizzeria".to_string(), pronoun: "it".to_string() },
|
||||||
SceneBundle {
|
SceneBundle {
|
||||||
transform: Transform {
|
transform: Transform {
|
||||||
translation: Vec3::new(
|
translation: Vec3::new(
|
||||||
|
@ -333,6 +275,7 @@ struct ParserState {
|
||||||
}
|
}
|
||||||
impl Default for ParserState {
|
impl Default for ParserState {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
|
let default_actor = actor::Actor::default();
|
||||||
Self {
|
Self {
|
||||||
class: DefClass::None,
|
class: DefClass::None,
|
||||||
name: "NONAME".to_string(),
|
name: "NONAME".to_string(),
|
||||||
|
@ -342,7 +285,7 @@ impl Default for ParserState {
|
||||||
model: "".to_string(),
|
model: "".to_string(),
|
||||||
model_scale: 1.0,
|
model_scale: 1.0,
|
||||||
rotation: Quat::IDENTITY,
|
rotation: Quat::IDENTITY,
|
||||||
angular_momentum: Quat::IDENTITY,
|
angular_momentum: default_actor.angular_momentum,
|
||||||
pronoun: "they/them".to_string(),
|
pronoun: "they/them".to_string(),
|
||||||
is_lifeform: false,
|
is_lifeform: false,
|
||||||
is_alive: false,
|
is_alive: false,
|
||||||
|
@ -501,6 +444,8 @@ pub fn load_defs(
|
||||||
match parts.as_slice() {
|
match parts.as_slice() {
|
||||||
// Parsing actors
|
// Parsing actors
|
||||||
["actor", x, y, z, model] => {
|
["actor", x, y, z, model] => {
|
||||||
|
state.spawn_entities(&mut commands, &asset_server);
|
||||||
|
state.reset();
|
||||||
state.class = DefClass::Actor;
|
state.class = DefClass::Actor;
|
||||||
state.model = model.to_string();
|
state.model = model.to_string();
|
||||||
if let (Ok(x_float), Ok(y_float), Ok(z_float)) =
|
if let (Ok(x_float), Ok(y_float), Ok(z_float)) =
|
||||||
|
|
Loading…
Reference in a new issue