1
0
Fork 0
mirror of https://github.com/jugeeya/UltimateTrainingModpack.git synced 2025-03-16 03:16:12 +00:00
UltimateTrainingModpack/src/lib.rs
astraycat 0388a08a16
Tech and Ledge options as bitflags (#127)
* Change TechOptions to TechFlags

* update gitmodules

* shouldn't have pushed that

* change ledge options as well

incorp change from review
2020-08-09 22:32:49 -07:00

81 lines
2.1 KiB
Rust

#![feature(proc_macro_hygiene)]
#![feature(with_options)]
#![feature(const_mut_refs)]
mod common;
mod hitbox_visualizer;
mod training;
#[macro_use]
extern crate bitflags;
use crate::common::*;
use training::combo::FRAME_ADVANTAGE;
use skyline::libc::{c_void, fclose, fopen, fwrite, mkdir, remove};
use skyline::nro::{self, NroInfo};
fn nro_main(nro: &NroInfo<'_>) {
match nro.name {
"common" => {
skyline::install_hooks!(
training::shield::handle_sub_guard_cont,
training::directional_influence::handle_correct_damage_vector_common,
training::tech::handle_change_status
);
}
_ => (),
}
}
macro_rules! c_str {
($l:tt) => { [$l.as_bytes(), "\u{0}".as_bytes()]
.concat()
.as_ptr(); }
}
#[skyline::main(name = "training_modpack")]
pub fn main() {
println!("[Training Modpack] Initialized.");
hitbox_visualizer::hitbox_visualization();
training::training_mods();
nro::add_hook(nro_main).unwrap();
unsafe {
let mut buffer = format!("{:x}", MENU as *const _ as u64);
println!(
"[Training Modpack] Writing training_modpack.log with {}...",
buffer
);
mkdir(c_str!("sd:/TrainingModpack/"), 0777);
println!("[Training Modpack] Removing training_modpack_menu.conf...");
remove(c_str!("sd:/TrainingModpack/training_modpack_menu.conf"));
let mut f = fopen(
c_str!("sd:/TrainingModpack/training_modpack.log"),
c_str!("w"),
);
if !f.is_null() {
fwrite(c_str!(buffer) as *const c_void, 1, buffer.len(), f);
fclose(f);
}
buffer = format!("{:x}", &FRAME_ADVANTAGE as *const _ as u64);
println!(
"[Training Modpack] Writing training_modpack_frame_adv.log with {}...",
buffer
);
f = fopen(
c_str!("sd:/TrainingModpack/training_modpack_frame_adv.log"),
c_str!("w"),
);
if !f.is_null() {
fwrite(c_str!(buffer) as *const c_void, 1, buffer.len(), f);
fclose(f);
}
}
}