one_fpga/core/
null.rs

1use std::any::Any;
2use std::time::SystemTime;
3
4use image::{ColorType, DynamicImage};
5
6use crate::core::{Bios, CoreSettings, Error, MountedFile, Rom, SaveState, SettingId};
7use crate::inputs::gamepad::ButtonSet;
8use crate::inputs::keyboard::ScancodeSet;
9use crate::inputs::{Button, Scancode};
10use crate::Core;
11
12/// A Core that does nothing.
13pub struct NullCore;
14
15impl Core for NullCore {
16    fn init(&mut self) -> Result<(), Error> {
17        Ok(())
18    }
19
20    fn name(&self) -> &str {
21        "null"
22    }
23
24    fn reset(&mut self) -> Result<(), Error> {
25        Ok(())
26    }
27
28    fn set_volume(&mut self, _volume: u8) -> Result<(), Error> {
29        Ok(())
30    }
31
32    fn set_rtc(&mut self, _time: SystemTime) -> Result<(), Error> {
33        Ok(())
34    }
35
36    fn screenshot(&self) -> Result<DynamicImage, Error> {
37        Ok(DynamicImage::new(1, 1, ColorType::Rgb8))
38    }
39
40    fn save_state_mut(&mut self, _slot: usize) -> Result<Option<&mut dyn SaveState>, Error> {
41        Ok(None)
42    }
43
44    fn save_state(&self, _slot: usize) -> Result<Option<&dyn SaveState>, Error> {
45        Ok(None)
46    }
47
48    fn mounted_file_mut(&mut self, _slot: usize) -> Result<Option<&mut dyn MountedFile>, Error> {
49        Ok(None)
50    }
51
52    fn send_rom(&mut self, _rom: Rom) -> Result<(), Error> {
53        Ok(())
54    }
55
56    fn send_bios(&mut self, _bios: Bios) -> Result<(), Error> {
57        Ok(())
58    }
59
60    fn key_up(&mut self, _key: Scancode) -> Result<(), Error> {
61        Ok(())
62    }
63
64    fn key_down(&mut self, _key: Scancode) -> Result<(), Error> {
65        Ok(())
66    }
67
68    fn keys_set(&mut self, _keys: ScancodeSet) -> Result<(), Error> {
69        Ok(())
70    }
71
72    fn keys(&self) -> Result<ScancodeSet, Error> {
73        Ok(ScancodeSet::new())
74    }
75
76    fn gamepad_button_up(&mut self, _index: usize, _button: Button) -> Result<(), Error> {
77        Ok(())
78    }
79
80    fn gamepad_button_down(&mut self, _index: usize, _button: Button) -> Result<(), Error> {
81        Ok(())
82    }
83
84    fn gamepad_buttons_set(&mut self, _index: usize, _buttons: ButtonSet) -> Result<(), Error> {
85        Ok(())
86    }
87
88    fn gamepad_buttons(&self, _index: usize) -> Result<Option<ButtonSet>, Error> {
89        Ok(None)
90    }
91
92    fn settings(&self) -> Result<CoreSettings, Error> {
93        // TODO: add some basic items.
94        Ok(CoreSettings::new("null".to_string(), vec![]))
95    }
96
97    fn trigger(&mut self, _id: SettingId) -> Result<(), Error> {
98        Ok(())
99    }
100
101    fn file_select(&mut self, _id: SettingId, _path: String) -> Result<(), Error> {
102        Ok(())
103    }
104
105    fn int_option(&mut self, _id: SettingId, _value: u32) -> Result<u32, Error> {
106        Ok(0)
107    }
108
109    fn bool_option(&mut self, _id: SettingId, _value: bool) -> Result<bool, Error> {
110        Ok(false)
111    }
112
113    fn as_any(&self) -> &dyn Any {
114        self
115    }
116
117    fn as_any_mut(&mut self) -> &mut dyn Any {
118        self
119    }
120
121    fn quit(&mut self) {}
122
123    fn should_quit(&self) -> bool {
124        false
125    }
126}