allow single-word strings in defs.txt without double quotes
This commit is contained in:
parent
82b7a32286
commit
4c30563ac0
24
src/defs.txt
24
src/defs.txt
|
@ -1,29 +1,29 @@
|
||||||
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"
|
actor 2000 0 0 asteroid1
|
||||||
scale 200
|
scale 200
|
||||||
|
|
||||||
actor -2300 10 0 "pizzeria"
|
actor -2300 10 0 pizzeria
|
||||||
scale 30
|
scale 30
|
||||||
rotationy -1
|
rotationy -1
|
||||||
angularmomentum 0 0.0001 0
|
angularmomentum 0 0.0001 0
|
||||||
|
|
||||||
actor -50 0 0 "suit"
|
actor -50 0 0 suit
|
||||||
name "Icarus"
|
name Icarus
|
||||||
chatid "hi_icarus"
|
chatid "hi_icarus"
|
||||||
alive "yes"
|
alive yes
|
||||||
pronoun "it"
|
pronoun it
|
||||||
|
|
||||||
actor -2265 10 0 "suit"
|
actor -2265 10 0 suit
|
||||||
name "Space Pizza™"
|
name "Space Pizza™"
|
||||||
chatid "pizzeria"
|
chatid pizzeria
|
||||||
alive "yes"
|
alive yes
|
||||||
pronoun "it"
|
pronoun it
|
||||||
|
|
||||||
actor 0 0 0 "error"
|
actor 0 0 0 error
|
||||||
|
|
||||||
chat "error"
|
chat "error"
|
||||||
name "ERROR"
|
name "ERROR"
|
||||||
|
|
18
src/world.rs
18
src/world.rs
|
@ -362,10 +362,12 @@ pub fn load_defs(
|
||||||
asset_server: Res<AssetServer>,
|
asset_server: Res<AssetServer>,
|
||||||
) {
|
) {
|
||||||
let re1 = Regex::new(r"^\s*([a-z]+)\s+(.*)$").unwrap();
|
let re1 = Regex::new(r"^\s*([a-z]+)\s+(.*)$").unwrap();
|
||||||
let re2 = Regex::new("\"([^\"]*)\"|(-?[0-9]+(?:\\.[0-9]+)?)").unwrap();
|
let re2 = Regex::new("\"([^\"]*)\"|(-?[0-9]+(?:\\.[0-9]+)?)|([a-zA-Z][a-zA-Z0-9]*)").unwrap();
|
||||||
let defs_string = include_str!("defs.txt");
|
let defs_string = include_str!("defs.txt");
|
||||||
let mut lines = defs_string.lines();
|
let mut lines = defs_string.lines();
|
||||||
let mut state = ParserState::default();
|
let mut state = ParserState::default();
|
||||||
|
let mut command;
|
||||||
|
let mut parameters;
|
||||||
|
|
||||||
let mut line_nr = -1;
|
let mut line_nr = -1;
|
||||||
while let Some(line) = lines.next() {
|
while let Some(line) = lines.next() {
|
||||||
|
@ -377,17 +379,27 @@ pub fn load_defs(
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let command = caps.unwrap().get(1).unwrap().as_str();
|
if let Some(caps) = caps {
|
||||||
|
command = caps.get(1).unwrap().as_str();
|
||||||
|
parameters = caps.get(2).unwrap().as_str();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
error!("Failed to read regex captures in line {}: `{}`", line_nr, line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let mut parts: Vec<&str> = Vec::new();
|
let mut parts: Vec<&str> = Vec::new();
|
||||||
parts.push(command);
|
parts.push(command);
|
||||||
for caps in re2.captures_iter(line) {
|
for caps in re2.captures_iter(parameters) {
|
||||||
if let Some(part) = caps.get(1) {
|
if let Some(part) = caps.get(1) {
|
||||||
parts.push(&part.as_str());
|
parts.push(&part.as_str());
|
||||||
}
|
}
|
||||||
if let Some(part) = caps.get(2) {
|
if let Some(part) = caps.get(2) {
|
||||||
parts.push(&part.as_str());
|
parts.push(&part.as_str());
|
||||||
}
|
}
|
||||||
|
if let Some(part) = caps.get(3) {
|
||||||
|
parts.push(&part.as_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
match parts.as_slice() {
|
match parts.as_slice() {
|
||||||
|
|
Loading…
Reference in a new issue