Allow terminal to be open even if game is not

This commit is contained in:
Simon Gellis 2025-05-31 00:09:33 -04:00
parent a2a5884a2a
commit 68a91c4af1
1 changed files with 13 additions and 2 deletions

View File

@ -43,6 +43,13 @@ impl SimId {
Self::Player2 => 1,
}
}
pub const fn from_index(index: usize) -> Option<Self> {
match index {
0 => Some(Self::Player1),
1 => Some(Self::Player2),
_ => None
}
}
}
impl Display for SimId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@ -230,8 +237,12 @@ impl Emulator {
let index = sim_id.to_index();
while self.sims.len() <= index {
let new_index = self.sims.len();
self.sims.push(Sim::new());
self.sim_state[index].store(SimState::NoGame, Ordering::Release);
if self.stdouts.contains_key(&SimId::from_index(new_index).unwrap()) {
self.sims[new_index].watch_stdout(true);
}
self.sim_state[new_index].store(SimState::NoGame, Ordering::Release);
}
let sim = &mut self.sims[index];
sim.reset();
@ -476,7 +487,7 @@ impl Emulator {
// stdout
self.stdouts.retain(|sim_id, stdout| {
let Some(sim) = self.sims.get_mut(sim_id.to_index()) else {
return false;
return true;
};
if let Some(text) = sim.take_stdout() {
if stdout.send(text).is_err() {