Skip to content

Commit

Permalink
Fix serde feature, add middle mouse
Browse files Browse the repository at this point in the history
  • Loading branch information
emmabritton committed Dec 27, 2023
1 parent 831d5fa commit fb490ee
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 14 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

### Version 0.15.0
- Add `MouseButton::Middle`
- Fix bug where `Scene::on_mouse_down` and `System::on_mouse_down` were called continuously
- Fix serde feature
- Add `mint` feature

### Version 0.14.3
- Update buffer lib

Expand Down
23 changes: 14 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "pixels-graphics-lib"
version = "0.14.3"
version = "0.15.0"
edition = "2021"
authors = ["Emma Britton <emmabritton@pm.me>"]
description = "Simple wrapper library around Pixels/Buffer Graphics"
Expand All @@ -11,34 +11,39 @@ keywords = ["graphics", "gamedev", "pixels", "simple"]
categories = ["graphics", "game-development"]

[features]
default = ["window_prefs", "sound"]
default = ["window_prefs", "sound", "serde"]
window_prefs = ["serde", "simple-game-utils/prefs"]
controller = ["serde", "simple-game-utils/controller"]
sound = ["simple-game-utils/sound"]
file_dialogs = ["directories"]
controller_xinput = ["serde", "simple-game-utils/controller_xinput"]
images = ["buffer-graphics-lib/image_loading"]
serde = ["dep:serde", "buffer-graphics-lib/serde", "simple-game-utils/serde"]
mint = ["buffer-graphics-lib/mint"]

[dependencies]
pixels = "0.13.0"
winit = { version = "0.29.5", features = ["rwh_05"] }
winit = { version = "0.29.7", features = ["rwh_05"] }
winit_input_helper = "0.15.1"
thiserror = "1.0.51"
thiserror = "1.0.52"
serde = { version = "1.0.193", features = ["derive"], optional = true }
directories = { version = "5.0.1", optional = true }
buffer-graphics-lib = { version="0.12.7", default-features = false, features = ["image_loading", "ici", "serde_derive"] }
buffer-graphics-lib = { version = "0.13.0", default-features = false, features = ["ici"] }
rustc-hash = "1.1.0"
simple-game-utils = { version = "0.4.0", default-features = false }
fnv = "1.0.7"
simple-game-utils = { version = "0.4.1", default-features = false }

[dev-dependencies]
fastrand = "2.0.0"
anyhow = "1.0"
anyhow = "1.0.77"

[[example]]
name = "test_dialogs"
required-features = ["file_dialogs"]

[[example]]
name = "test_dialogs_w_controllers"
required-features = ["file_dialogs", "controller"]
required-features = ["file_dialogs", "controller"]

[[example]]
name = "images"
required-features = ["images"]
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ This is a simple wrapper around [Pixels](https://github.com/parasyte/pixels), de

In your `Cargo.toml` file add
```toml
pixels-graphics-lib = "0.14.3"
pixels-graphics-lib = "0.15.0"
winit_input_helper = "0.15.1" #only needed if you're not using `run()`
```

Expand Down Expand Up @@ -99,6 +99,8 @@ impl System for Example {

## Features

> Default features: `window_prefs`, `sound`, `serde`
### `window_prefs`

Save and restore window position and size
Expand All @@ -118,6 +120,10 @@ As above but using xinput, windows only

Play music or sound effects

### `serde`

Adds `Serialize` and `Deserialize` to most structs and enums

### `images`

Loading and displaying of PNGs, JPEGs, BMPs
Expand All @@ -126,6 +132,10 @@ Loading and displaying of PNGs, JPEGs, BMPs

Built in file selection dialogs, not recommended, use `rfd`

### `mint`

Enables `graphic-shapes/mint`

## Projects

### [Retro Games](https://github.com/emmabritton/retro-games)
Expand Down
21 changes: 17 additions & 4 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ use crate::GraphicsError::LoadingWindowPref;
pub use buffer_graphics_lib;
use buffer_graphics_lib::Graphics;
use pixels::{Pixels, PixelsBuilder, SurfaceTexture};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use simple_game_utils::prelude::*;
use thiserror::Error;
use winit::dpi::LogicalSize;
Expand Down Expand Up @@ -134,7 +136,8 @@ pub fn setup(
Ok((win, pixels))
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
pub enum WindowScaling {
/// Make the canvas and window be the same of numbers, this ignores DPI
None,
Expand Down Expand Up @@ -188,10 +191,12 @@ fn create_window(
Ok(window)
}

#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
pub enum MouseButton {
Left,
Right,
Middle,
}

#[allow(unused_variables)]
Expand Down Expand Up @@ -221,7 +226,8 @@ pub trait System {
}

/// Options for programs
#[derive(Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Eq, PartialEq)]
pub struct Options {
/// Target and max number of times [Scene::update] can be called per second
/// Default is 240
Expand Down Expand Up @@ -405,19 +411,26 @@ pub fn run(
system.on_key_up(released_buttons);
}

if input.mouse_held(0) {
if input.mouse_pressed(0) {
system.on_mouse_down(mouse_x, mouse_y, MouseButton::Left);
}
if input.mouse_held(1) {
if input.mouse_pressed(1) {
system.on_mouse_down(mouse_x, mouse_y, MouseButton::Right);
}
if input.mouse_pressed(2) {
system.on_mouse_down(mouse_x, mouse_y, MouseButton::Middle);
}

if input.mouse_released(0) {
system.on_mouse_up(mouse_x, mouse_y, MouseButton::Left);
}
if input.mouse_released(1) {
system.on_mouse_up(mouse_x, mouse_y, MouseButton::Right);
}
if input.mouse_released(2) {
system.on_mouse_up(mouse_x, mouse_y, MouseButton::Middle);
}

let scroll = input.scroll_diff();
if scroll.0 != 0.0 || scroll.1 != 0.0 {
system.on_scroll(
Expand Down

0 comments on commit fb490ee

Please sign in to comment.