Compare commits
5 Commits
v0.6.0
...
172b528138
| Author | SHA1 | Date | |
|---|---|---|---|
| 172b528138 | |||
| 70de4bb67d | |||
| ebee953955 | |||
| d2cb75c3a1 | |||
| 099926d368 |
6
Cargo.lock
generated
6
Cargo.lock
generated
@@ -242,7 +242,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asteroids"
|
||||
version = "0.6.0"
|
||||
version = "0.6.2"
|
||||
dependencies = [
|
||||
"bevy",
|
||||
"bevy-inspector-egui",
|
||||
@@ -4295,9 +4295,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "portable-atomic"
|
||||
version = "1.11.1"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
|
||||
checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd"
|
||||
|
||||
[[package]]
|
||||
name = "portable-atomic-util"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "asteroids"
|
||||
version = "0.6.0"
|
||||
version = "0.6.2"
|
||||
edition = "2024"
|
||||
license = "AGPL-3.0-only"
|
||||
|
||||
|
||||
2
Makefile
2
Makefile
@@ -76,6 +76,8 @@ full-clean: clean
|
||||
# output into the web root. Only supports the "bundle-able" mode.
|
||||
install: web
|
||||
install -dm0755 $(DESTDIR)
|
||||
install -dm0755 $(DESTDIR)/assets
|
||||
install -m0644 out/asteroids.js $(DESTDIR)/
|
||||
install -m0644 out/asteroids_bg.wasm.gz $(DESTDIR)/
|
||||
install -m0644 out/asteroids.html $(DESTDIR)/
|
||||
install -m0644 $(ASSETS) $(DESTDIR)/assets/
|
||||
|
||||
@@ -217,7 +217,7 @@ fn input_ship_shoot(
|
||||
physics::Velocity(bullet_vel),
|
||||
Mesh2d(game_assets.bullet().0),
|
||||
MeshMaterial2d(game_assets.bullet().1),
|
||||
ship_pos.clone(), // clone ship transform
|
||||
*ship_pos, // clone ship transform
|
||||
Lifetime(Timer::from_seconds(BULLET_LIFETIME, TimerMode::Once)),
|
||||
AudioPlayer::new(game_assets.laser_sound()),
|
||||
PlaybackSettings::ONCE, // `Lifetime` already despawns the entity, so this doesn't need to
|
||||
|
||||
30
src/main.rs
30
src/main.rs
@@ -1,20 +1,28 @@
|
||||
use bevy::{prelude::*, window::WindowResolution};
|
||||
|
||||
use asteroids::{AsteroidPlugin, config::WINDOW_SIZE};
|
||||
|
||||
#[cfg(feature = "debug_ui")]
|
||||
use bevy_inspector_egui::{bevy_egui::EguiPlugin, quick::WorldInspectorPlugin};
|
||||
#[cfg(feature = "debug_ui")]
|
||||
use bevy_rapier2d::render::RapierDebugRenderPlugin;
|
||||
|
||||
fn main() {
|
||||
App::new()
|
||||
.add_plugins(DefaultPlugins.set(WindowPlugin {
|
||||
primary_window: Some(Window {
|
||||
canvas: Some("#game-canvas".to_owned()),
|
||||
resolution: WindowResolution::new(WINDOW_SIZE.0, WINDOW_SIZE.1),
|
||||
..default()
|
||||
}),
|
||||
let mut app = App::new();
|
||||
app.add_plugins(DefaultPlugins.set(WindowPlugin {
|
||||
primary_window: Some(Window {
|
||||
canvas: Some("#game-canvas".to_owned()),
|
||||
resolution: WindowResolution::new(WINDOW_SIZE.0, WINDOW_SIZE.1),
|
||||
..default()
|
||||
}))
|
||||
.add_plugins(AsteroidPlugin)
|
||||
.add_plugins(EguiPlugin::default())
|
||||
}),
|
||||
..default()
|
||||
}))
|
||||
.add_plugins(AsteroidPlugin);
|
||||
|
||||
#[cfg(feature = "debug_ui")]
|
||||
app.add_plugins(EguiPlugin::default())
|
||||
.add_plugins(WorldInspectorPlugin::new())
|
||||
.run();
|
||||
.add_plugins(RapierDebugRenderPlugin::default());
|
||||
|
||||
app.run();
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ pub fn ship_impact_listener(
|
||||
Sparkler::at_interval(0.15),
|
||||
Mesh2d(game_assets.thruster_mesh()), // borrow the thruster mesh for now
|
||||
MeshMaterial2d(game_assets.thruster_mat_active()), // ... and the active thruster material
|
||||
player.0.clone(), // clone the player transform
|
||||
*player.0, // clone the player transform
|
||||
Velocity(vel),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -111,29 +111,21 @@ pub fn collision_listener(
|
||||
if *one == *player {
|
||||
if rocks.contains(*two) {
|
||||
// player-asteroid collision
|
||||
dbg!("Writing ShipDestroy event");
|
||||
ship_writer.write(messages::ShipDestroy);
|
||||
} // else, we don't care
|
||||
} else if *two == *player {
|
||||
if rocks.contains(*one) {
|
||||
dbg!("Writing ShipDestroy event");
|
||||
ship_writer.write(messages::ShipDestroy);
|
||||
}
|
||||
} else if *two == *player && rocks.contains(*one) {
|
||||
ship_writer.write(messages::ShipDestroy);
|
||||
}
|
||||
|
||||
// Option 2: Bullet & Asteroid
|
||||
if bullets.contains(*one) {
|
||||
if rocks.contains(*two) {
|
||||
dbg!("Writing AsteroidDestroy & BulletDestroy events");
|
||||
asteroid_writer.write(messages::AsteroidDestroy(*two));
|
||||
bullet_writer.write(messages::BulletDestroy(*one));
|
||||
}
|
||||
} else if rocks.contains(*one) {
|
||||
if bullets.contains(*two) {
|
||||
dbg!("Writing AsteroidDestroy & BulletDestroy events");
|
||||
asteroid_writer.write(messages::AsteroidDestroy(*one));
|
||||
bullet_writer.write(messages::BulletDestroy(*two));
|
||||
}
|
||||
} else if rocks.contains(*one) && bullets.contains(*two) {
|
||||
asteroid_writer.write(messages::AsteroidDestroy(*one));
|
||||
bullet_writer.write(messages::BulletDestroy(*two));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ use crate::{
|
||||
};
|
||||
|
||||
use bevy::{
|
||||
color::palettes::css::{BLACK, DARK_GRAY, GREEN, LIGHT_BLUE, RED, WHITE},
|
||||
color::palettes::css::{BLACK, DARK_GRAY, GREEN, RED, WHITE},
|
||||
prelude::*,
|
||||
};
|
||||
|
||||
@@ -263,6 +263,7 @@ fn animate_get_ready_widget(
|
||||
/// on the HUD, this system would quit the game. The same will happen for
|
||||
/// returning to the title screen. This should be useful for making a pause
|
||||
/// menu, too.
|
||||
#[allow(clippy::type_complexity)]
|
||||
fn operate_buttons(
|
||||
mut interactions: Query<
|
||||
(
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
<tr>
|
||||
<td>Program Version</td>
|
||||
<!-- This version text is completely unchecked. I'll need to do something about that. -->
|
||||
<td><code>v0.6.0</code></td>
|
||||
<td><code>v0.6.1</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user