rosu_memory_lib/reader/beatmap/stable/
mod.rs

1pub mod memory;
2pub mod offset;
3pub mod location;
4pub mod file;
5
6use rosu_mem::process::{Process, ProcessTraits};
7use crate::reader::structs::State;
8use crate::reader::beatmap::stable::offset::*;
9use crate::reader::common::GameState;
10use crate::reader::common::Error;
11use crate::reader::common::stable::memory::check_game_state;
12
13pub(crate) fn get_beatmap_addr(p: &Process, state: &mut State) -> eyre::Result<i32>
14{
15    match check_game_state(p, state, GameState::SongSelect)? || check_game_state(p, state, GameState::Editor)? 
16    || check_game_state(p, state, GameState::Playing)? || check_game_state(p, state, GameState::ResultScreen)? {
17        true => Ok(p.read_i32(p.read_i32(state.addresses.base - BEATMAP_OFFSET.ptr)?)?),
18        false => Err(eyre::eyre!(Error::NotAvailable("Not in song select".to_string()))),
19    }
20}
21
22pub(crate) fn read_from_beatmap_ptr_string(p: &Process, state: &mut State, offset: i32) -> eyre::Result<String>
23{
24    let beatmap_addr = get_beatmap_addr(p, state)?;
25    Ok(p.read_string(beatmap_addr + offset)?)
26}
27
28