passing auto and flip sprite tests
This commit is contained in:
+40
-11
@@ -10,20 +10,24 @@ use uxn;
|
||||
|
||||
def WIDTH = 640;
|
||||
def HEIGHT = 480;
|
||||
def DEFAULT_SCALE = 3;
|
||||
|
||||
export fn main() void = {
|
||||
sdl3::Init(sdl3::InitFlags::VIDEO | sdl3::InitFlags::EVENTS)!;
|
||||
defer sdl3::Quit();
|
||||
|
||||
let scale = DEFAULT_SCALE;
|
||||
const win = sdl3::CreateWindow(
|
||||
c::nulstr("Meadow\0"),
|
||||
WIDTH, HEIGHT, sdl3::WindowFlags::RESIZABLE |
|
||||
WIDTH*scale, HEIGHT*scale, sdl3::WindowFlags::RESIZABLE |
|
||||
sdl3::WindowFlags::MOUSE_CAPTURE |
|
||||
sdl3::WindowFlags::INPUT_FOCUS |
|
||||
sdl3::WindowFlags::MOUSE_FOCUS
|
||||
)!;
|
||||
defer sdl3::DestroyWindow(win);
|
||||
|
||||
sdl3::SetWindowMinimumSize(win,0,0)!;
|
||||
|
||||
const render = sdl3::CreateRenderer(win, null)!;
|
||||
defer sdl3::DestroyRenderer(render);
|
||||
sdl3::SetRenderDrawColor(render, 0, 0, 128, 255)!;
|
||||
@@ -39,6 +43,7 @@ export fn main() void = {
|
||||
screen_w,
|
||||
screen_h)!;
|
||||
defer sdl3::DestroyTexture(meadow_texture);
|
||||
sdl3::SetTextureScaleMode(meadow_texture, sdl3::ScaleMode::NEAREST)!;
|
||||
// const pixeldata: [WIDTH * HEIGHT]u32 = [0...];
|
||||
let pixeldata: *[uxn::MAXWIDTH * uxn::MAXHEIGHT]u16 = alloc([0...])!; //TODO figure out actual size
|
||||
defer free (pixeldata);
|
||||
@@ -118,7 +123,7 @@ export fn main() void = {
|
||||
next_refresh = now + frame_interval;
|
||||
|
||||
if(state.screen_vector != 0){
|
||||
fmt::println("Executing screen vector")!;
|
||||
// fmt::println("Executing screen vector")!;
|
||||
uxn::uxn_eval(state.screen_vector, state)!;
|
||||
};
|
||||
};
|
||||
@@ -134,13 +139,14 @@ export fn main() void = {
|
||||
let h: int = dims.height: int;
|
||||
|
||||
fmt::printfln("Setting window to width: {} height: {}", w, h)!;
|
||||
sdl3::SetWindowSize(win,w,h)!;
|
||||
sdl3::SetWindowSize(win,w*scale,h*scale)!;
|
||||
|
||||
meadow_texture = sdl3::CreateTexture(render,
|
||||
sdl3::PixelFormat::XRGB4444,
|
||||
sdl3::TextureAccess::STATIC,
|
||||
w,
|
||||
h)!;
|
||||
sdl3::SetTextureScaleMode(meadow_texture, sdl3::ScaleMode::NEAREST)!;
|
||||
|
||||
state.screen_update = true;
|
||||
};
|
||||
@@ -179,9 +185,17 @@ export fn main() void = {
|
||||
run = false;
|
||||
case sdl3::EventType::WINDOW_RESIZED =>
|
||||
let dims = uxn::get_window_size(state);
|
||||
let w = ev.window.data1;
|
||||
let h = ev.window.data2;
|
||||
if((dims.width != w: u16) || (dims.height != h: u16)){
|
||||
let w = ev.window.data1 / scale: i32;
|
||||
let h = ev.window.data2 / scale: i32;
|
||||
const wmod = w % scale: i32;
|
||||
const hmod = h % scale: i32;
|
||||
if((wmod !=0) || (hmod !=0)){
|
||||
w = w-wmod;
|
||||
h = h-hmod;
|
||||
sdl3::SetWindowSize(win,w,h)!;
|
||||
};
|
||||
|
||||
if((dims.width != w: u16 / scale: u16) || (dims.height != h: u16 / scale: u16)){
|
||||
// fmt::println("Dimensions not allowed!")!;
|
||||
//TODO handle this maybe
|
||||
uxn::set_window_size(w: u16,h: u16,state);
|
||||
@@ -191,22 +205,37 @@ export fn main() void = {
|
||||
let old_w: int = dims.width: int;
|
||||
let old_h: int = dims.height: int;
|
||||
|
||||
fmt::printfln("User setting window to width: {} height: {}", w, h)!;
|
||||
sdl3::SetWindowSize(win,w,h)!;
|
||||
// fmt::printfln("User setting window to width: {} height: {}", w, h)!;
|
||||
sdl3::SetWindowSize(win,w*scale: i32,h*scale: i32)!;
|
||||
|
||||
meadow_texture = sdl3::CreateTexture(render,
|
||||
sdl3::PixelFormat::XRGB4444,
|
||||
sdl3::TextureAccess::STATIC,
|
||||
w,
|
||||
h)!;
|
||||
sdl3::SetTextureScaleMode(meadow_texture, sdl3::ScaleMode::NEAREST)!;
|
||||
|
||||
state.screen_update = true;
|
||||
};
|
||||
|
||||
case sdl3::EventType::MOUSE_MOTION =>
|
||||
// fmt::printfln("Mouse Event x: {} y: {}", ev.motion.x, ev.motion.y)!;
|
||||
uxn::set_mouse_motion(ev.motion.x: u16,ev.motion.y: u16,state);
|
||||
const x = ev.motion.x / scale: f32;
|
||||
const y = ev.motion.y / scale: f32;
|
||||
uxn::set_mouse_motion(x: u16,y: u16,state);
|
||||
uxn::uxn_eval(state.mouse_vector,state)!;
|
||||
case sdl3::EventType::MOUSE_BUTTON_DOWN =>
|
||||
// fmt::printfln("Mouse Down: 0x{:x}", ev.button.button: u8 )!;
|
||||
const b = 1 << (ev.button.button: u8 - 1);
|
||||
uxn::set_mouse_down(b,state);
|
||||
uxn::uxn_eval(state.mouse_vector,state)!;
|
||||
case sdl3::EventType::MOUSE_BUTTON_UP =>
|
||||
// fmt::printfln("Mouse Up: 0x{:x}", ev.button.button: u8 )!;
|
||||
const b = 1 << (ev.button.button: u8 - 1);
|
||||
uxn::set_mouse_up(b,state);
|
||||
uxn::uxn_eval(state.mouse_vector,state)!;
|
||||
case sdl3::EventType::MOUSE_WHEEL =>
|
||||
fmt::printfln("Mouse Wheel!")!;
|
||||
case sdl3::EventType::WINDOW_EXPOSED =>
|
||||
sdl3::RenderClear(render)!;
|
||||
sdl3::RenderTexture(render, meadow_texture, null, null)!;
|
||||
@@ -228,7 +257,8 @@ export fn main() void = {
|
||||
sdl3::RenderTexture(render, meadow_texture, null, null)!;
|
||||
sdl3::ShowCursor()!;
|
||||
case =>
|
||||
fmt::printfln("Unhandled SDL event: 0x{:x} , {}", ev.event_type, ev.event_type )!;
|
||||
// fmt::printfln("Unhandled SDL event: 0x{:x} , {}", ev.event_type, ev.event_type )!;
|
||||
yield;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -243,4 +273,3 @@ export fn main() void = {
|
||||
sdl3::get_error()!;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user