rosu_memory_lib/reader/beatmap/stable/
mod.rs

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