90 lines
2.2 KiB
Rust
90 lines
2.2 KiB
Rust
#[cfg(feature = "buddy-alloc")]
|
|
mod alloc;
|
|
mod sh0rk;
|
|
mod sprites;
|
|
|
|
use fastrand::Rng;
|
|
use sh0rk::{palette, sys::*, Point, Direction::{self, *}};
|
|
|
|
static mut GAME: Game = Game::new();
|
|
|
|
struct Game {
|
|
frame_count: u32,
|
|
prev_gamepad: u8,
|
|
rng: Option<Rng>,
|
|
mai_position: Point,
|
|
mara_position: Point,
|
|
mara_frame: u32,
|
|
mara_dir: Direction,
|
|
}
|
|
|
|
impl Game {
|
|
const fn new() -> Self {
|
|
Self {
|
|
frame_count: 0,
|
|
prev_gamepad: 0,
|
|
rng: None,
|
|
mai_position: Point { x: 76, y: 48 },
|
|
mara_position: Point { x: 0, y: 64 },
|
|
mara_frame: 0,
|
|
mara_dir: Right,
|
|
}
|
|
}
|
|
|
|
fn update(&mut self) {
|
|
self.frame_count += 1;
|
|
|
|
palette::set_draw_color(2);
|
|
text("Mara: Sh0rk of\nJustice 2\npowered by:\nsh0rk engine v0", 10, 10);
|
|
palette::set_draw_color(3);
|
|
text("From Within, 2022", 10, 144);
|
|
|
|
sprites::MAI.draw(self.mai_position, 0);
|
|
|
|
if self.frame_count % 15 == 0 {
|
|
self.mara_frame = if self.mara_frame == 1 { 0 } else { 1 };
|
|
}
|
|
|
|
if self.frame_count % 4 == 0 {
|
|
if self.mara_dir == Right && self.mara_position.x >= 144 {
|
|
self.mara_dir = Down;
|
|
}
|
|
if self.mara_dir == Down && self.mara_position.y >= 120 {
|
|
self.mara_dir = Left;
|
|
}
|
|
if self.mara_dir == Left && self.mara_position.x <= 0 {
|
|
self.mara_dir = Up;
|
|
}
|
|
if self.mara_dir == Up && self.mara_position.y <= 64 {
|
|
self.mara_dir = Right;
|
|
}
|
|
|
|
const SPEED: i32 = 2;
|
|
match self.mara_dir {
|
|
Left => self.mara_position.x -= SPEED,
|
|
Right => self.mara_position.x += SPEED,
|
|
Up => self.mara_position.y -= SPEED,
|
|
Down => self.mara_position.y += SPEED,
|
|
};
|
|
}
|
|
|
|
sprites::MARA.draw(
|
|
self.mara_dir,
|
|
self.mara_frame,
|
|
self.mara_position,
|
|
0,
|
|
);
|
|
}
|
|
}
|
|
|
|
#[no_mangle]
|
|
unsafe fn start() {
|
|
palette::en4();
|
|
GAME.rng = Some(Rng::with_seed(420));
|
|
}
|
|
|
|
#[no_mangle]
|
|
unsafe fn update() {
|
|
GAME.update();
|
|
}
|