fin for now
This commit is contained in:
parent
bcbabc4902
commit
a715ebf60c
101
src/main.rs
101
src/main.rs
|
@ -1,7 +1,8 @@
|
||||||
//#![allow(unused)]
|
//#![allow(unused)]
|
||||||
//use std::io;
|
//use std::io;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use toml::Table;
|
use toml::{Table, Value};
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
fn print_type_of<T>(_: &T) {
|
fn print_type_of<T>(_: &T) {
|
||||||
println!("{}", std::any::type_name::<T>());
|
println!("{}", std::any::type_name::<T>());
|
||||||
|
@ -9,6 +10,100 @@ fn print_type_of<T>(_: &T) {
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let toml_str: String = fs::read_to_string("data.toml").expect("error");
|
let toml_str: String = fs::read_to_string("data.toml").expect("error");
|
||||||
let toml_data = toml_str.parse::<Table>().unwrap();
|
let mut toml_data = toml_str.parse::<Table>().unwrap();
|
||||||
println!("debug: {}",toml_data["base_bonuses"]["beans"]);
|
let mut throws = HashMap::new();
|
||||||
|
let mut skills = HashMap::new();
|
||||||
|
|
||||||
|
let binding = toml_data.clone();
|
||||||
|
//for whatever reason. if i dont have this as a var, and instead put toml_data.clone in the
|
||||||
|
//loop below, the throws.insert makes a borrow error. i dont get it
|
||||||
|
for (key,val) in &binding{
|
||||||
|
match key.as_str(){
|
||||||
|
"base_bonuses" => {
|
||||||
|
if let Some(base_bonuses) = val.as_table() {
|
||||||
|
for (base_key, base_val) in base_bonuses {
|
||||||
|
//toml_data["str"] = toml::Value::Integer(base_val);
|
||||||
|
if let (Some(existing_num), Some(base_num)) = (toml_data[base_key].as_integer(), base_val.as_integer()) {
|
||||||
|
toml_data[base_key] = Value::Integer(existing_num + base_num);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// for (base_key, base_val) in val.as_table_mut().unwrap_or(&Default::default()) {
|
||||||
|
// toml_data["str"] = Value::Integer(0);
|
||||||
|
// }
|
||||||
|
|
||||||
|
//print_type_of(&val.get("base_bonuses"));
|
||||||
|
},
|
||||||
|
"base_modifiers" =>{
|
||||||
|
if let Some(base_modifiers) = val.as_table(){
|
||||||
|
for(base_key, base_val) in base_modifiers{
|
||||||
|
if let (Some(profiency), Some(base_num)) = (toml_data["profiency"].as_integer(), base_val.as_integer()) {
|
||||||
|
if toml_data["prof_throws"]
|
||||||
|
.as_array()
|
||||||
|
.map_or(false, |arr| arr.iter().any(|val2| val2.as_str().map_or(false, |s| s.contains(base_key))))
|
||||||
|
{
|
||||||
|
throws.insert(base_key,profiency + base_num);
|
||||||
|
} else {
|
||||||
|
throws.insert(base_key,base_num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list" =>{
|
||||||
|
if let Some(list) = val.as_table(){
|
||||||
|
if let Some(base_skills) = list["skills"].as_array(){
|
||||||
|
for skill in base_skills{
|
||||||
|
//make this cleaner
|
||||||
|
if let (Some(skill_name),Some(skill_mod),Some(base_modifiers),Some(profiency),Some(skill_bonus)) = (skill[0].as_str(),skill[1].as_str(),toml_data["base_modifiers"].as_table(),toml_data["profiency"].as_integer(),toml_data["skill_prof_bonuses"].as_array()){
|
||||||
|
|
||||||
|
let mut add_number=0;
|
||||||
|
if toml_data["prof_skills"]
|
||||||
|
.as_array()
|
||||||
|
.map_or(false, |arr| arr.iter().any(|val2| val2.as_str().map_or(false, |s| s.contains(&String::from(skill_name)))))
|
||||||
|
{
|
||||||
|
add_number = add_number + base_modifiers[skill_mod].as_integer().expect("none") + profiency;
|
||||||
|
} else {
|
||||||
|
add_number = add_number + base_modifiers[skill_mod].as_integer().expect("none");
|
||||||
|
}
|
||||||
|
for bone in skill_bonus{
|
||||||
|
if skill_mod == bone[1].as_str().expect("none"){
|
||||||
|
add_number = add_number + base_modifiers[bone[0].as_str().expect("none")].as_integer().expect("none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skills.insert(skill_name,add_number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//fin
|
||||||
|
for (key,val) in toml_data{
|
||||||
|
match key.as_str(){
|
||||||
|
"str" => println!("{}:{}",key,val),
|
||||||
|
"dex" => println!("{}:{}",key,val),
|
||||||
|
"consti" => println!("{}:{}",key,val),
|
||||||
|
"intell" => println!("{}:{}",key,val),
|
||||||
|
"wis" => println!("{}:{}",key,val),
|
||||||
|
"charis" => println!("{}:{}",key,val),
|
||||||
|
"profiency" => println!("{}:{}",key,val),
|
||||||
|
_ => {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("-------");
|
||||||
|
|
||||||
|
for (key,val) in throws.iter(){
|
||||||
|
println!("throws: {}::{}",key,val);
|
||||||
|
}
|
||||||
|
println!("-------");
|
||||||
|
|
||||||
|
for (key,val) in skills.iter(){
|
||||||
|
println!("skills: {}::{}",key,val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue