use lexsdl::*;
use sdl2_sys::SDL_RenderSetLogicalSize;
use sdl2_sys::SDL_RenderFillRect;
use sdl2_sys::SDL_SetTextureColorMod;
use std::ffi::CString;
use libc::c_int;
use sdl2_sys::SDL_Rect;
use lexlib::Vec2;
const PURPLE_GUY_TEXTURE_WALK_DATA: &[u8] = include_bytes!("assets/purpleGuy_walk.png");
fn main(){unsafe{
LEXSDL_Init(0);
LEXSDL_InitIMG(0);
let window_title = CString::new("LEXSDL Rust Example - Sprites").unwrap();
LEXSDL_CreateWindow(window_title.as_ptr(),0);
LEXSDL_CreateRenderer(0);
SDL_RenderSetLogicalSize(LEXSDL_GetRenderer(), 64,64);
LEXSDL_SetDrawColor(0x00,0x88,0xFF,0xFF);
let ring_file = CString::new("examples/assets/ring001.png").unwrap();
let ring_texture_id = LEXSDL_TextureLoad(ring_file.as_ptr());
let purple_guy_texture_id = LEXSDL_TextureLoadBytes(PURPLE_GUY_TEXTURE_WALK_DATA.as_ptr() as *const u8, PURPLE_GUY_TEXTURE_WALK_DATA.len() as c_int);
let purple_guy_texture_walk_sprite_id = LEXSDL_CreateSprite(purple_guy_texture_id, 4, 6, SDL_Rect {x: 0, y: 0, w: 4, h: 4});
let ring_sprite_id = LEXSDL_CreateSprite(ring_texture_id, 4, 12, SDL_Rect {x: 0, y: 0, w: 5, h: 5});
let mut guy_pos = Vec2::new(4,60);
let guy_speed = 16;
let mut guy_direction = false;
let mut frame_cnt = 0;
let mut ring_color_change_dir = false;
let mut ring_red = 0;
let mut ring_green = 0;
let mut ring_blue = 0;
while LEXSDL_EventQuit() == 0 {
LEXSDL_HandleEvents();
LEXSDL_NewFrame();
frame_cnt += 1;
SDL_RenderFillRect(LEXSDL_GetRenderer(),std::ptr::null());
if ring_red == 0 { ring_color_change_dir = false }
if !ring_color_change_dir {
if ring_red < 255 { ring_red += 1; }
if ring_red > 100 && ring_green < 255 { ring_green += 1; }
if ring_green > 100 && ring_blue < 255 { ring_blue += 1; }
if ring_red > 250 && ring_green > 250 && ring_blue > 250 { ring_color_change_dir = true; }
} else {
if ring_blue > 0 { ring_blue -=1; }
if ring_blue < 150 && ring_green > 0 { ring_green -= 1; }
if ring_green < 150 && ring_red > 0 { ring_red -= 1; }
}
SDL_SetTextureColorMod(LEXSDL_SpriteGetTexture(ring_sprite_id),ring_red,ring_green,ring_blue);
LEXSDL_SpritePlay(ring_sprite_id,10,10,4,4);
if guy_direction {
LEXSDL_SpritePlayFlip(purple_guy_texture_walk_sprite_id,guy_pos.x,guy_pos.y,4,4);
} else {
LEXSDL_SpritePlay(purple_guy_texture_walk_sprite_id,guy_pos.x,guy_pos.y,4,4);
}
if frame_cnt == guy_speed {
frame_cnt = 0;
if guy_direction {
if guy_pos.x <= 0 { guy_direction = false; }
guy_pos.x -= 1;
} else {
if guy_pos.x >= 60 { guy_direction = true; }
guy_pos.x += 1;
}
}
LEXSDL_ShowFrame();
}
LEXSDL_Terminate();
LEXSDL_Quit();
}}