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"
|
image = "0.23.14"
|
||||||
log = "0.4.14"
|
log = "0.4.14"
|
||||||
pixels = "0.3.0"
|
pixels = "0.3.0"
|
||||||
rodio = "^0.11.0"
|
rodio-xm = "^0.1.1"
|
||||||
rodio-xm = { git = "https://tinybird.dev/max/rodio-xm/", branch = "master" }
|
|
||||||
serde = "^1.0.114"
|
serde = "^1.0.114"
|
||||||
serde_derive = "^1.0.114"
|
serde_derive = "^1.0.114"
|
||||||
toml = "^0.5.6"
|
toml = "^0.5.6"
|
||||||
|
|
|
@ -6,7 +6,7 @@ use std::path::PathBuf;
|
||||||
use log::error;
|
use log::error;
|
||||||
use pixels::{Error, SurfaceTexture, PixelsBuilder};
|
use pixels::{Error, SurfaceTexture, PixelsBuilder};
|
||||||
use pixels::wgpu::BackendBit;
|
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::{Event, VirtualKeyCode};
|
||||||
use winit::event_loop::{ControlFlow, EventLoop};
|
use winit::event_loop::{ControlFlow, EventLoop};
|
||||||
use winit_input_helper::WinitInputHelper;
|
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;
|
let (x, y) = state.player_position;
|
||||||
if x > 0 {
|
if x > 0 {
|
||||||
state.player_position = (x - 1, y);
|
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;
|
let (x, y) = state.player_position;
|
||||||
if x < state.game.config.width as u8 - 1 {
|
if x < state.game.config.width as u8 - 1 {
|
||||||
state.player_position = (x + 1, y);
|
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;
|
let (x, y) = state.player_position;
|
||||||
if y > 0 {
|
if y > 0 {
|
||||||
state.player_position = (x, y - 1);
|
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;
|
let (x, y) = state.player_position;
|
||||||
if y < state.game.config.height as u8 - 1 {
|
if y < state.game.config.height as u8 - 1 {
|
||||||
state.player_position = (x, y + 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 {
|
fn window_builder(title: &str, event_loop: &EventLoop<()>) -> winit::window::Window {
|
||||||
winit::window::WindowBuilder::new()
|
winit::window::WindowBuilder::new()
|
||||||
.with_visible(false)
|
.with_visible(false)
|
||||||
.with_resizable(false)
|
// .with_resizable(false)
|
||||||
.with_title(title).build(&event_loop).unwrap()
|
.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()
|
winit::window::WindowBuilder::new()
|
||||||
.with_drag_and_drop(false)
|
.with_drag_and_drop(false)
|
||||||
.with_visible(false)
|
.with_visible(false)
|
||||||
.with_resizable(false)
|
// .with_resizable(false)
|
||||||
.with_title(title).build(&event_loop).unwrap()
|
.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);
|
let scale = (monitor_height / height * 2.0 / 3.0).round().max(1.0);
|
||||||
|
|
||||||
// Resize, center, and display the window
|
// Resize, centre, and display the window
|
||||||
let min_size: winit::dpi::LogicalSize<f64> =
|
// let min_size: winit::dpi::LogicalSize<f64> =
|
||||||
PhysicalSize::new(width, height).to_logical(hidpi_factor);
|
// PhysicalSize::new(width, height).to_logical(hidpi_factor);
|
||||||
|
|
||||||
let default_size =
|
let default_size =
|
||||||
LogicalSize::new(width * scale, height * scale);
|
LogicalSize::new(width * scale, height * scale);
|
||||||
|
|
||||||
let center = LogicalPosition::new(
|
let centre = LogicalPosition::new(
|
||||||
(monitor_width - width * scale) / 2.0,
|
(monitor_width - width * scale) / 2.0,
|
||||||
(monitor_height - height * scale) / 2.0,
|
(monitor_height - height * scale) / 2.0,
|
||||||
);
|
);
|
||||||
|
|
||||||
window.set_inner_size(default_size);
|
window.set_inner_size(default_size);
|
||||||
// window.set_min_inner_size(Some(min_size));
|
// window.set_min_inner_size(Some(min_size));
|
||||||
window.set_outer_position(center);
|
window.set_outer_position(centre);
|
||||||
window.set_visible(true);
|
window.set_visible(true);
|
||||||
|
|
||||||
let size = default_size.to_physical::<f64>(hidpi_factor);
|
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