a couple of attempts at players
This commit is contained in:
parent
2349d7365e
commit
75ca8c84ea
|
@ -18,8 +18,7 @@ hex = "^0.4.3"
|
|||
image = "0.23.14"
|
||||
log = "0.4.14"
|
||||
pixels = "0.3.0"
|
||||
rodio = "^0.11.0"
|
||||
rodio-xm = { git = "https://tinybird.dev/max/rodio-xm/", branch = "master" }
|
||||
rodio-xm = "^0.1.1"
|
||||
serde = "^1.0.114"
|
||||
serde_derive = "^1.0.114"
|
||||
toml = "^0.5.6"
|
||||
|
|
|
@ -6,7 +6,7 @@ use std::path::PathBuf;
|
|||
use log::error;
|
||||
use pixels::{Error, SurfaceTexture, PixelsBuilder};
|
||||
use pixels::wgpu::BackendBit;
|
||||
use winit::dpi::{LogicalPosition, LogicalSize, PhysicalSize};
|
||||
use winit::dpi::{LogicalPosition, LogicalSize, PhysicalSize, Size};
|
||||
use winit::event::{Event, VirtualKeyCode};
|
||||
use winit::event_loop::{ControlFlow, EventLoop};
|
||||
use winit_input_helper::WinitInputHelper;
|
||||
|
@ -183,7 +183,11 @@ fn main() -> Result<(), Error> {
|
|||
}
|
||||
}
|
||||
|
||||
if input.key_pressed(VirtualKeyCode::Left) {
|
||||
if
|
||||
input.key_pressed(VirtualKeyCode::Left)
|
||||
||
|
||||
input.key_pressed(VirtualKeyCode::W)
|
||||
{
|
||||
let (x, y) = state.player_position;
|
||||
if x > 0 {
|
||||
state.player_position = (x - 1, y);
|
||||
|
@ -191,7 +195,11 @@ fn main() -> Result<(), Error> {
|
|||
}
|
||||
}
|
||||
|
||||
if input.key_pressed(VirtualKeyCode::Right) {
|
||||
if
|
||||
input.key_pressed(VirtualKeyCode::Right)
|
||||
||
|
||||
input.key_pressed(VirtualKeyCode::D)
|
||||
{
|
||||
let (x, y) = state.player_position;
|
||||
if x < state.game.config.width as u8 - 1 {
|
||||
state.player_position = (x + 1, y);
|
||||
|
@ -199,7 +207,11 @@ fn main() -> Result<(), Error> {
|
|||
}
|
||||
}
|
||||
|
||||
if input.key_pressed(VirtualKeyCode::Up) {
|
||||
if
|
||||
input.key_pressed(VirtualKeyCode::Up)
|
||||
||
|
||||
input.key_pressed(VirtualKeyCode::W)
|
||||
{
|
||||
let (x, y) = state.player_position;
|
||||
if y > 0 {
|
||||
state.player_position = (x, y - 1);
|
||||
|
@ -207,7 +219,11 @@ fn main() -> Result<(), Error> {
|
|||
}
|
||||
}
|
||||
|
||||
if input.key_pressed(VirtualKeyCode::Down) {
|
||||
if
|
||||
input.key_pressed(VirtualKeyCode::Down)
|
||||
||
|
||||
input.key_pressed(VirtualKeyCode::S)
|
||||
{
|
||||
let (x, y) = state.player_position;
|
||||
if y < state.game.config.height as u8 - 1 {
|
||||
state.player_position = (x, y + 1);
|
||||
|
@ -236,7 +252,7 @@ fn main() -> Result<(), Error> {
|
|||
fn window_builder(title: &str, event_loop: &EventLoop<()>) -> winit::window::Window {
|
||||
winit::window::WindowBuilder::new()
|
||||
.with_visible(false)
|
||||
.with_resizable(false)
|
||||
// .with_resizable(false)
|
||||
.with_title(title).build(&event_loop).unwrap()
|
||||
}
|
||||
|
||||
|
@ -247,7 +263,7 @@ fn window_builder(title: &str, event_loop: &EventLoop<()>) -> winit::window::Win
|
|||
winit::window::WindowBuilder::new()
|
||||
.with_drag_and_drop(false)
|
||||
.with_visible(false)
|
||||
.with_resizable(false)
|
||||
// .with_resizable(false)
|
||||
.with_title(title).build(&event_loop).unwrap()
|
||||
}
|
||||
|
||||
|
@ -282,21 +298,21 @@ fn create_window(
|
|||
|
||||
let scale = (monitor_height / height * 2.0 / 3.0).round().max(1.0);
|
||||
|
||||
// Resize, center, and display the window
|
||||
let min_size: winit::dpi::LogicalSize<f64> =
|
||||
PhysicalSize::new(width, height).to_logical(hidpi_factor);
|
||||
// Resize, centre, and display the window
|
||||
// let min_size: winit::dpi::LogicalSize<f64> =
|
||||
// PhysicalSize::new(width, height).to_logical(hidpi_factor);
|
||||
|
||||
let default_size =
|
||||
LogicalSize::new(width * scale, height * scale);
|
||||
|
||||
let center = LogicalPosition::new(
|
||||
let centre = LogicalPosition::new(
|
||||
(monitor_width - width * scale) / 2.0,
|
||||
(monitor_height - height * scale) / 2.0,
|
||||
);
|
||||
|
||||
window.set_inner_size(default_size);
|
||||
// window.set_min_inner_size(Some(min_size));
|
||||
window.set_outer_position(center);
|
||||
window.set_outer_position(centre);
|
||||
window.set_visible(true);
|
||||
|
||||
let size = default_size.to_physical::<f64>(hidpi_factor);
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
use raylib::prelude::*;
|
||||
use raylib::consts::KeyboardKey;
|
||||
use peachy::Colour;
|
||||
|
||||
// todo state
|
||||
|
||||
fn main() {
|
||||
// todo load game
|
||||
let game = peachy::mock::game::bitsy();
|
||||
|
||||
let (mut rl, thread) = raylib::init()
|
||||
.size((game.config.width * 4) as i32, (game.config.height * 4) as i32)
|
||||
.title("peachy")
|
||||
.build();
|
||||
|
||||
rl.set_target_fps(30); // appropriate?
|
||||
|
||||
let key_up: KeyboardKey = raylib::core::input::key_from_i32(87).unwrap();
|
||||
let key_left: KeyboardKey = raylib::core::input::key_from_i32(65).unwrap();
|
||||
let key_down: KeyboardKey = raylib::core::input::key_from_i32(83).unwrap();
|
||||
let key_right: KeyboardKey = raylib::core::input::key_from_i32(68).unwrap();
|
||||
|
||||
const SIZE: i32 = 32;
|
||||
|
||||
let mut x = SIZE;
|
||||
let mut y = SIZE;
|
||||
|
||||
let palette = game.palettes.get(0).unwrap();
|
||||
|
||||
let avatars = game.get_entities_by_tag(&"avatar".to_string());
|
||||
let avatar = avatars.get(0).unwrap();
|
||||
let image = game.get_image_by_name(&avatar.image).unwrap().clone().into_image(palette);
|
||||
|
||||
// todo how do I create a texture without a file?
|
||||
let mut texture = rl.load_texture(
|
||||
&thread, "src/test-resources/images/avatar.png"
|
||||
).unwrap();
|
||||
|
||||
texture.update_texture(image.as_bytes());
|
||||
|
||||
// let font = rl.load_font(&thread, "src/FuturaStd-Light.otf").unwrap();
|
||||
|
||||
let mut audio = audio::RaylibAudio::init_audio_device();
|
||||
|
||||
let mut music = raylib::audio::Music::load_music_stream(
|
||||
&thread, "src/test-resources/music/another-night.xm"
|
||||
).unwrap();
|
||||
|
||||
audio.play_music_stream(&mut music);
|
||||
|
||||
println!("{}", rl.window_should_close());
|
||||
|
||||
while !rl.window_should_close() {
|
||||
if rl.is_key_pressed(key_up) {
|
||||
y -= SIZE;
|
||||
} else if rl.is_key_pressed(key_left) {
|
||||
x -= SIZE;
|
||||
} else if rl.is_key_pressed(key_down) {
|
||||
y += SIZE;
|
||||
} else if rl.is_key_pressed(key_right) {
|
||||
x += SIZE;
|
||||
}
|
||||
|
||||
audio.update_music_stream(&mut music);
|
||||
|
||||
let mut d = rl.begin_drawing(&thread);
|
||||
|
||||
// d.clear_background(palette.get_colour_raylib(&0));
|
||||
d.clear_background(Color::WHITE);
|
||||
|
||||
d.draw_texture_ex(
|
||||
&texture,
|
||||
raylib::core::math::Vector2 { x: x as f32, y: y as f32 },
|
||||
0.0,
|
||||
4.0,
|
||||
Color::WHITE
|
||||
);
|
||||
|
||||
// d.draw_text_ex(
|
||||
// &font,
|
||||
// "hello",
|
||||
// raylib::core::math::Vector2 { x: 64.0, y: 64.0 },
|
||||
// 32.0,
|
||||
// 4.0,
|
||||
// Color::WHITE
|
||||
// );
|
||||
}
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue