feat: 🎸 Includes pony in final binary

This commit is contained in:
Atsukoro1 2022-12-05 10:04:13 +01:00
parent 0ca35e2ba6
commit c50be03f3d
4 changed files with 48 additions and 17 deletions

View file

@ -2,4 +2,5 @@ pub mod arguments;
pub mod file;
pub mod colors;
pub mod print;
pub mod paths;
pub mod paths;
pub mod ponies;

35
src/helpers/ponies.rs Normal file
View file

@ -0,0 +1,35 @@
use std::collections::HashMap;
pub struct Pony {
pub text: String,
pub lines: u16
}
pub fn get_pony(name: String) -> Option<Pony> {
let ponies: HashMap<&str, Vec<u8>> = HashMap::from([
("applejack_hat_large", include_bytes!("../../ponies/applejack_hat_large.txt").to_vec()),
("applejack_hat_large", include_bytes!("../../ponies/applejack_large.txt").to_vec()),
("celestia_large", include_bytes!("../../ponies/celestia_large.txt").to_vec()),
("fluttershy_large", include_bytes!("../../ponies/fluttershy_large.txt").to_vec()),
("fluttershy", include_bytes!("../../ponies/fluttershy.txt").to_vec()),
("luna_large", include_bytes!("../../ponies/luna_large.txt").to_vec()),
("mcintosh_large", include_bytes!("../../ponies/mcintosh_large.txt").to_vec()),
("pinkiepie_large", include_bytes!("../../ponies/pinkiepie_large.txt").to_vec()),
("rainbowdash_large", include_bytes!("../../ponies/rainbowdash_large.txt").to_vec()),
("rainbowdash", include_bytes!("../../ponies/rainbowdash.txt").to_vec()),
("rarity", include_bytes!("../../ponies/rarity.txt").to_vec()),
("twilight_large", include_bytes!("../../ponies/twilight_large.txt").to_vec()),
("twilight", include_bytes!("../../ponies/twilight.txt").to_vec()),
]);
let pony = String::from_utf8(
ponies.get(
name.as_str()
).unwrap().to_vec()
).unwrap();
Some(Pony {
text: pony.clone(),
lines: pony.split("\n").count() as u16
})
}

View file

@ -33,7 +33,6 @@ pub fn print_detail(title: &str, value: String, atype: ActionType, color: &str)
},
ActionType::Colors => {
// Print the color blocks like neofetch
print("████", true, "black");
print("████", true, "red");
print("████", true, "green");
@ -45,11 +44,8 @@ pub fn print_detail(title: &str, value: String, atype: ActionType, color: &str)
}
pub fn print_ponyline(line: u16, pony: &str, color: &str) {
file_open(&format!("{}{}.txt", helpers::paths::get_pony_path(), pony).to_string())
.lines()
.skip(line as usize)
.take(1)
.for_each(|line| {
print(line, true, color);
});
let mut lines = pony.split("\n");
let line = lines.nth(line as usize).unwrap().to_string();
print(&line, true, color);
}

View file

@ -1,4 +1,6 @@
use helpers::arguments::Arguments;
use std::collections::HashMap;
use helpers::{arguments::Arguments, ponies::get_pony};
mod helpers;
mod system;
@ -109,15 +111,12 @@ const ACTIONS: [Action; 13] = [
fn main() {
let args = Arguments::parse();
let pony = get_pony(args.pony).unwrap();
let line_count = helpers::file::get_file_linecount(
&format!("{}{}.txt", helpers::paths::get_pony_path(), &args.pony)
);
let to_skip = ((pony.lines / 2) as f32).floor() - 6.0;
let to_skip = ((line_count / 2) as f32).floor() - 6.0;
for i in 0..line_count {
helpers::print::print_ponyline(i, &args.pony, &args.color);
for i in 0..pony.lines {
helpers::print::print_ponyline(i, &pony.text, &args.color);
let pad_i = (i as f32 - to_skip).floor();