.
.
This commit is contained in:
@@ -184,7 +184,7 @@ impl Renderer {
|
|||||||
self.internal_render();
|
self.internal_render();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_colour(&mut self, cols: ColorCode) {
|
pub fn set_colour(&mut self, cols: ColorCode) {
|
||||||
self.temp_colour = Some(cols);
|
self.temp_colour = Some(cols);
|
||||||
}
|
}
|
||||||
pub fn reset_colour(&mut self) {
|
pub fn reset_colour(&mut self) {
|
||||||
@@ -334,7 +334,7 @@ pub fn write(args: fmt::Arguments, cols: (Color, Color)) {
|
|||||||
interrupts::without_interrupts(|| {
|
interrupts::without_interrupts(|| {
|
||||||
let mut writer = RENDERER.lock();
|
let mut writer = RENDERER.lock();
|
||||||
|
|
||||||
writer.with_colour(colour_code);
|
writer.set_colour(colour_code);
|
||||||
writer.write_fmt(args).unwrap();
|
writer.write_fmt(args).unwrap();
|
||||||
writer.reset_colour();
|
writer.reset_colour();
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -143,9 +143,9 @@ impl ScanCodeStream {
|
|||||||
pub fn try_next(&mut self) -> Option<u8> {
|
pub fn try_next(&mut self) -> Option<u8> {
|
||||||
let queue = SCANCODE_QUEUE.try_get().expect("not initialised");
|
let queue = SCANCODE_QUEUE.try_get().expect("not initialised");
|
||||||
if let Ok(c) = queue.pop() {
|
if let Ok(c) = queue.pop() {
|
||||||
return Some(c);
|
Some(c)
|
||||||
} else {
|
} else {
|
||||||
return None;
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ use crate::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use alloc::string::String;
|
use alloc::string::String;
|
||||||
|
use alloc::vec::Vec;
|
||||||
|
|
||||||
pub use crate::{print, println, serial_print, serial_println};
|
pub use crate::{print, println, serial_print, serial_println};
|
||||||
pub use crate::kernel::render::Color;
|
pub use crate::kernel::render::Color;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use cmos_rtc::{ReadRTC, Time};
|
|||||||
use crate::println;
|
use crate::println;
|
||||||
use super::super::kernel::interrupts::GLOBALTIMER;
|
use super::super::kernel::interrupts::GLOBALTIMER;
|
||||||
use x86_64::instructions::interrupts;
|
use x86_64::instructions::interrupts;
|
||||||
pub fn wait(seconds: i64) {
|
pub fn wait(seconds: f64) {
|
||||||
let mut start = 0;
|
let mut start = 0;
|
||||||
interrupts::without_interrupts(||{
|
interrupts::without_interrupts(||{
|
||||||
start = GLOBALTIMER.lock().val;
|
start = GLOBALTIMER.lock().val;
|
||||||
@@ -15,7 +15,7 @@ pub fn wait(seconds: i64) {
|
|||||||
interrupts::without_interrupts(||{
|
interrupts::without_interrupts(||{
|
||||||
new = GLOBALTIMER.lock().val;
|
new = GLOBALTIMER.lock().val;
|
||||||
});
|
});
|
||||||
if new + seconds > start {
|
if new as f64 > start as f64 + seconds * 16.0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+15
-6
@@ -6,12 +6,8 @@ use x86_64::instructions::interrupts;
|
|||||||
use alloc::{boxed::Box, string::{String, ToString}, vec, vec::Vec};
|
use alloc::{boxed::Box, string::{String, ToString}, vec, vec::Vec};
|
||||||
use vga::writers::{GraphicsWriter, PrimitiveDrawing};
|
use vga::writers::{GraphicsWriter, PrimitiveDrawing};
|
||||||
|
|
||||||
use crate::{
|
use crate::{print, println, std, std::application::{Application, Error}, user::bin::*};
|
||||||
print, println,
|
use crate::std::io::{Color, write, Screen, Stdin};
|
||||||
std::application::{Application, Error},
|
|
||||||
user::bin::*,
|
|
||||||
};
|
|
||||||
use crate::std::io::{Color, write, Screen};
|
|
||||||
use crate::std::random::Random;
|
use crate::std::random::Random;
|
||||||
use crate::user::bin::gigachad_detector::GigachadDetector;
|
use crate::user::bin::gigachad_detector::GigachadDetector;
|
||||||
use crate::user::bin::grapher::Grapher;
|
use crate::user::bin::grapher::Grapher;
|
||||||
@@ -123,6 +119,19 @@ async fn exec() -> Result<(), Error> {
|
|||||||
gigachad_detector.run(args).await?;
|
gigachad_detector.run(args).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"wait" => {
|
||||||
|
use std::time::wait;
|
||||||
|
|
||||||
|
for _ in 0..20 {
|
||||||
|
wait(0.5);
|
||||||
|
let key = Stdin::try_keystroke();
|
||||||
|
println!("waited {}", match key {
|
||||||
|
Some(c) => c,
|
||||||
|
None => '_',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// direct OS functions (not applications)
|
// direct OS functions (not applications)
|
||||||
"echo" => {
|
"echo" => {
|
||||||
println!(
|
println!(
|
||||||
|
|||||||
@@ -50,13 +50,13 @@ impl Application for Game {
|
|||||||
|
|
||||||
'gameloop: loop {
|
'gameloop: loop {
|
||||||
|
|
||||||
time::wait(20);
|
time::wait(0.2);
|
||||||
|
|
||||||
// if let Some(c) = Stdin::try_keystroke() {
|
if let Some(c) = Stdin::try_keystroke() {
|
||||||
// self.mv = c;
|
self.mv = c;
|
||||||
// }
|
}
|
||||||
|
|
||||||
self.mv = Stdin::keystroke().await;
|
//self.mv = Stdin::keystroke().await;
|
||||||
|
|
||||||
match self.mv {
|
match self.mv {
|
||||||
'w' => self.head.y -= 1,
|
'w' => self.head.y -= 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user