Skip to content

Commit 694a180

Browse files
authored
Merge pull request #68 from CleanCut/bevy-0.11
Upgrade to Bevy 0.12
2 parents ef3652e + 999a509 commit 694a180

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+475
-371
lines changed

CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,35 @@
11
<!-- next-header -->
22
## [Unreleased] - ReleaseDate
33

4+
### Breaking changes
5+
6+
- `WindowDescriptor` has been renamed to `Window`
7+
- You must new add `#[derive(Resource)]` above your `GameState` struct.
8+
- It is no longer possible to use the unit type `()` instead of a `GameState` struct. Always create a `GameState` struct (it can be an empty struct with no fields).
9+
- The `Timer` now takes a `TimerMode` enum variant instead of a `bool`. Use `TimerMode::Once` for a timer that runs once, or `TimerMode::Repeating` for a repeating timer.
10+
- The following `KeyCode` variants have been renamed:
11+
- `LShift` -> `ShiftLeft`
12+
- `RShift` -> `ShiftRight`
13+
- `LAlt` -> `AltLeft`
14+
- `RAlt` -> `AltRight`
15+
- `LBracket` -> `BracketLeft`
16+
- `RBracket` -> `BracketRight`
17+
- `LControl` -> `ControlLeft`
18+
- `RControl` -> `ControlRight`
19+
- `LShift` -> `ShiftLeft`
20+
- `LWin` -> `SuperLeft`
21+
- `RWin` -> `SuperRight`
22+
23+
24+
### Improved
25+
26+
- Update bevy from 0.8 to 0.12
27+
- Update bevy_prototype_lyon from 0.6 to 0.10
28+
- Update ron from 0.7 to 0.8
29+
- Fixed some inconsistent parameter names in examples
30+
- Some examples' audio was turned down lower
31+
32+
433
## [5.2.1] - 2022-11-15
534

635
### Improved

Cargo.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,21 @@ exclude = [
2121
]
2222

2323
[dependencies]
24-
bevy = { version = "0.8.1", default-features = false, features = [
24+
bevy = { version = "0.12.1", default-features = false, features = [
2525
"bevy_audio",
2626
"bevy_gilrs",
2727
"bevy_gltf",
28+
"bevy_render",
29+
"bevy_text",
2830
"bevy_winit",
29-
"render",
3031
"png",
3132
"hdr",
3233
"mp3",
3334
"x11",
3435
"vorbis",
3536
] }
36-
bevy_prototype_lyon = "0.6"
37-
ron = "0.7"
37+
bevy_prototype_lyon = "0.10.0"
38+
ron = "0.8"
3839
serde = { version = "1.0", features = [ "derive" ] }
3940

4041
[dev-dependencies]

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ Write your game!
6868
use rusty_engine::prelude::*;
6969

7070
// Define a struct to hold custom data for your game (it can be a lot more complicated than this one!)
71+
#[derive(Resource)]
7172
struct GameState {
7273
health: i32,
7374
}
@@ -78,7 +79,7 @@ Write your game!
7879
// Set up your game. `Game` exposes all of the methods and fields of `Engine`.
7980
let sprite = game.add_sprite("player", SpritePreset::RacingCarBlue);
8081
sprite.scale = 2.0;
81-
game.audio_manager.play_music(MusicPreset::Classy8Bit, 1.0);
82+
game.audio_manager.play_music(MusicPreset::Classy8Bit, 0.1);
8283
// Add one or more functions with logic for your game. When the game is run, the logic
8384
// functions will run in the order they were added.
8485
game.add_logic(game_logic);

RELEASE.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@ Configuration goes in `release.toml`
1616
# First, choose `major`, `minor`, or `patch` for the level to release
1717

1818
# Next, run the command in dry-run mode
19-
$ cargo release -vv LEVEL
19+
$ cargo release -v LEVEL
2020

2121
# Then do it for real with the same level
2222
$ cargo release --execute LEVEL
23+
24+
# Then publish an updated tutorial
25+
$ script/publish_tutorial
2326
```

examples/collider.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::path::PathBuf;
1616

1717
use rusty_engine::prelude::*;
1818

19+
#[derive(Resource)]
1920
struct GameState {
2021
circle_radius: f32,
2122
scale: f32,
@@ -70,7 +71,7 @@ fn main() {
7071
// Start with the "game" part
7172
let mut game = Game::new();
7273
game.show_colliders = true;
73-
game.window_settings(WindowDescriptor {
74+
game.window_settings(Window {
7475
title: "Collider Creator".into(),
7576
..Default::default()
7677
});
@@ -153,7 +154,7 @@ fn game_logic(engine: &mut Engine, game_state: &mut GameState) {
153154
let location = (((location / game_state.scale) * 2.0).round() * 0.5) * game_state.scale;
154155
if engine
155156
.keyboard_state
156-
.pressed_any(&[KeyCode::RShift, KeyCode::LShift])
157+
.pressed_any(&[KeyCode::ShiftLeft, KeyCode::ShiftRight])
157158
{
158159
sprite.change_last_collider_point(location);
159160
} else {

examples/collision.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ use rusty_engine::prelude::*;
66

77
const ROTATION_SPEED: f32 = 3.0;
88

9+
#[derive(Resource)]
10+
struct GameState {}
11+
912
fn main() {
1013
let mut game = Game::new();
1114
let msg2 = game.add_text(
@@ -15,7 +18,7 @@ fn main() {
1518
msg2.font_size = 20.0;
1619
msg2.translation.y = 340.0;
1720

18-
let mut race_car = game.add_sprite("Player", SpritePreset::RacingCarGreen);
21+
let race_car = game.add_sprite("Player", SpritePreset::RacingCarGreen);
1922
race_car.translation = Vec2::new(0.0, 0.0);
2023
race_car.rotation = UP;
2124
race_car.layer = 100.0;
@@ -28,20 +31,20 @@ fn main() {
2831
break 'outer;
2932
}
3033
let sprite_preset = sprite_presets_iter.next().unwrap();
31-
let mut sprite = game.add_sprite(format!("{:?}", sprite_preset), sprite_preset);
34+
let sprite = game.add_sprite(format!("{:?}", sprite_preset), sprite_preset);
3235
sprite.translation = Vec2::new(x as f32, (-y) as f32);
3336
sprite.collision = true;
3437
}
3538
}
3639

37-
let mut text = game.add_text("collision text", "");
40+
let text = game.add_text("collision text", "");
3841
text.translation = Vec2::new(0.0, -200.0);
3942

4043
game.add_logic(logic);
41-
game.run(());
44+
game.run(GameState {});
4245
}
4346

44-
fn logic(engine: &mut Engine, _: &mut ()) {
47+
fn logic(engine: &mut Engine, _: &mut GameState) {
4548
// If a collision event happened last frame, print it out and play a sound
4649
for collision_event in engine.collision_events.drain(..) {
4750
let text = engine.texts.get_mut("collision text").unwrap();

examples/game_state.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use rusty_engine::prelude::*;
88

99
// You can name your game state struct whatever you want, and it can contain many different types as
1010
// its fields
11+
#[derive(Resource)]
1112
struct MyCustomGameStateStuff {
1213
// Use a timer to tell when to start/stop turning
1314
change_timer: Timer,
@@ -20,7 +21,7 @@ fn main() {
2021
let _ = game.add_sprite("Race Car", SpritePreset::RacingCarGreen);
2122

2223
let initial_game_state = MyCustomGameStateStuff {
23-
change_timer: Timer::from_seconds(1.0, true),
24+
change_timer: Timer::from_seconds(1.0, TimerMode::Repeating),
2425
turning: false,
2526
};
2627

examples/keyboard_events.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
55
use rusty_engine::prelude::*;
66

7+
#[derive(Resource)]
8+
struct GameState {}
9+
710
fn main() {
811
let mut game = Game::new();
912

10-
let mut race_car = game.add_sprite("Race Car", SpritePreset::RacingCarGreen);
13+
let race_car = game.add_sprite("Race Car", SpritePreset::RacingCarGreen);
1114
race_car.translation = Vec2::new(0.0, 0.0);
1215
race_car.rotation = UP;
1316
race_car.scale = 1.0;
@@ -17,19 +20,20 @@ fn main() {
1720
text.translation.y = 250.0;
1821

1922
game.add_logic(logic);
20-
game.run(());
23+
game.run(GameState {});
2124
}
2225

23-
fn logic(game_state: &mut Engine, _: &mut ()) {
26+
fn logic(engine: &mut Engine, _: &mut GameState) {
2427
// Get the race car sprite
25-
let race_car = game_state.sprites.get_mut("Race Car").unwrap();
28+
let race_car = engine.sprites.get_mut("Race Car").unwrap();
2629

2730
// Loop through any keyboard input that hasn't been processed this frame
28-
for keyboard_event in &game_state.keyboard_events {
31+
for keyboard_event in &engine.keyboard_events {
2932
if let KeyboardInput {
3033
scan_code: _,
3134
key_code: Some(key_code),
3235
state: ButtonState::Pressed,
36+
window: _,
3337
} = keyboard_event
3438
{
3539
// Handle various keypresses. The extra keys are for the Dvorak keyboard layout. ;-)
@@ -50,8 +54,8 @@ fn logic(game_state: &mut Engine, _: &mut ()) {
5054

5155
// Clamp the translation so that the car stays on the screen
5256
race_car.translation = race_car.translation.clamp(
53-
-game_state.window_dimensions * 0.5,
54-
game_state.window_dimensions * 0.5,
57+
-engine.window_dimensions * 0.5,
58+
engine.window_dimensions * 0.5,
5559
);
5660
}
5761
}

examples/keyboard_state.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ use std::f32::consts::PI;
66

77
use rusty_engine::prelude::*;
88

9+
#[derive(Resource)]
10+
struct GameState {}
11+
912
fn main() {
1013
let mut game = Game::new();
1114

12-
let mut race_car = game.add_sprite("Race Car", SpritePreset::RacingCarGreen);
15+
let race_car = game.add_sprite("Race Car", SpritePreset::RacingCarGreen);
1316
race_car.translation = Vec2::new(0.0, 0.0);
1417
race_car.rotation = UP;
1518
race_car.scale = 1.0;
@@ -19,20 +22,20 @@ fn main() {
1922
text.translation.y = 250.0;
2023

2124
game.add_logic(logic);
22-
game.run(());
25+
game.run(GameState {});
2326
}
2427

25-
fn logic(game_state: &mut Engine, _: &mut ()) {
28+
fn logic(engine: &mut Engine, _: &mut GameState) {
2629
// Compute how fast we should move, rotate, and scale
27-
let move_amount = 200.0 * game_state.delta_f32;
28-
let rotation_amount = PI * game_state.delta_f32;
29-
let scale_amount = 1.0 * game_state.delta_f32;
30+
let move_amount = 200.0 * engine.delta_f32;
31+
let rotation_amount = PI * engine.delta_f32;
32+
let scale_amount = 1.0 * engine.delta_f32;
3033

3134
// Get the race car sprite
32-
let race_car = game_state.sprites.get_mut("Race Car").unwrap();
35+
let race_car = engine.sprites.get_mut("Race Car").unwrap();
3336

3437
// Handle keyboard input
35-
let ks = &mut game_state.keyboard_state;
38+
let ks = &mut engine.keyboard_state;
3639
if ks.pressed_any(&[KeyCode::W, KeyCode::Up, KeyCode::Comma]) {
3740
race_car.translation.y += move_amount;
3841
}
@@ -67,7 +70,7 @@ fn logic(game_state: &mut Engine, _: &mut ()) {
6770

6871
// Clamp the translation so that the car stays on the screen
6972
race_car.translation = race_car.translation.clamp(
70-
-game_state.window_dimensions * 0.5,
71-
game_state.window_dimensions * 0.5,
73+
-engine.window_dimensions * 0.5,
74+
engine.window_dimensions * 0.5,
7275
);
7376
}

examples/layer.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@
44
55
use rusty_engine::prelude::*;
66

7+
#[derive(Resource)]
8+
struct GameState {}
9+
710
fn main() {
811
let mut game = Game::new();
912

1013
let mut layer = 0.0;
1114
let preset_iterator = SpritePreset::variant_iter().peekable();
1215
for (x, sprite_preset) in (-300..=600).step_by(30).zip(preset_iterator) {
13-
let mut sprite = game.add_sprite(format!("{:?}", sprite_preset), sprite_preset);
16+
let sprite = game.add_sprite(format!("{:?}", sprite_preset), sprite_preset);
1417
sprite.translation = Vec2::new(x as f32, (-x) as f32);
1518
sprite.layer = layer; // 0.0 is the bottom (back) layer. 999.0 is the top (front) layer.
1619
layer += 1.0;
1720
}
1821

1922
// We don't do anything after game setup, so our game logic can be an empty closure
20-
game.run(());
23+
game.run(GameState {});
2124
}

0 commit comments

Comments
 (0)