Terminal #5
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -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() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue