Add background and variable damage
This commit is contained in:
parent
b21065a3ed
commit
5f4f1c7a6e
BIN
assets/grass.jpg
Normal file
BIN
assets/grass.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 314 KiB |
BIN
assets/grass.png
Normal file
BIN
assets/grass.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
30
src/main.rs
30
src/main.rs
@ -39,6 +39,20 @@ fn setup(mut commands: Commands, assets: Res<AssetServer>) {
|
|||||||
// cameras
|
// cameras
|
||||||
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
|
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
|
||||||
commands.spawn_bundle(UiCameraBundle::default());
|
commands.spawn_bundle(UiCameraBundle::default());
|
||||||
|
// background
|
||||||
|
|
||||||
|
for x in -20..20 {
|
||||||
|
for y in -20..20 {
|
||||||
|
commands.spawn_bundle(SpriteBundle {
|
||||||
|
texture: assets.load("grass.png"),
|
||||||
|
transform: Transform {
|
||||||
|
translation: Vec3::new(x as f32 * 128.0, y as f32 * 128.0, 0.0),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
// arnold himself
|
// arnold himself
|
||||||
commands
|
commands
|
||||||
.spawn_bundle(SpriteBundle {
|
.spawn_bundle(SpriteBundle {
|
||||||
@ -47,13 +61,13 @@ fn setup(mut commands: Commands, assets: Res<AssetServer>) {
|
|||||||
})
|
})
|
||||||
.insert(Arnold::new())
|
.insert(Arnold::new())
|
||||||
.insert(Transform {
|
.insert(Transform {
|
||||||
translation: Vec3::new(0.0, 0.0, 0.0),
|
translation: Vec3::new(0.0, 0.0, 10.0),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
// enemy spawner
|
// enemy spawner
|
||||||
commands
|
commands
|
||||||
.spawn()
|
.spawn()
|
||||||
.insert(EnemySpawner::new(Timer::from_seconds(3.0, true)));
|
.insert(EnemySpawner::new(Timer::from_seconds(1.5, true)));
|
||||||
// scoreboard
|
// scoreboard
|
||||||
commands
|
commands
|
||||||
.spawn_bundle(TextBundle {
|
.spawn_bundle(TextBundle {
|
||||||
@ -146,6 +160,8 @@ fn projectile_collide_system(
|
|||||||
projectile_query: Query<(&Projectile, &Transform)>,
|
projectile_query: Query<(&Projectile, &Transform)>,
|
||||||
mut target_query: Query<(Entity, &mut Hitpoints, &Transform)>,
|
mut target_query: Query<(Entity, &mut Hitpoints, &Transform)>,
|
||||||
) {
|
) {
|
||||||
|
let mut rng = rand::thread_rng();
|
||||||
|
|
||||||
for (entity, mut hp, target_transform) in target_query.iter_mut() {
|
for (entity, mut hp, target_transform) in target_query.iter_mut() {
|
||||||
for (projectile, projectile_transform) in projectile_query.iter() {
|
for (projectile, projectile_transform) in projectile_query.iter() {
|
||||||
if target_transform
|
if target_transform
|
||||||
@ -153,8 +169,10 @@ fn projectile_collide_system(
|
|||||||
.distance(projectile_transform.translation)
|
.distance(projectile_transform.translation)
|
||||||
< 32.0
|
< 32.0
|
||||||
{
|
{
|
||||||
hp.hp -= projectile.damage;
|
let damage_variable = projectile.damage / 5;
|
||||||
stats.damage_dealt += projectile.damage;
|
let actual_damage = projectile.damage - damage_variable / 2 + rng.gen_range(0..damage_variable + 1);
|
||||||
|
hp.hp -= actual_damage;
|
||||||
|
stats.damage_dealt += actual_damage;
|
||||||
|
|
||||||
let font = assets.load("fonts/PressStart2P-Regular.ttf");
|
let font = assets.load("fonts/PressStart2P-Regular.ttf");
|
||||||
let text_style = TextStyle {
|
let text_style = TextStyle {
|
||||||
@ -169,7 +187,7 @@ fn projectile_collide_system(
|
|||||||
commands
|
commands
|
||||||
.spawn_bundle(Text2dBundle {
|
.spawn_bundle(Text2dBundle {
|
||||||
text: Text::with_section(
|
text: Text::with_section(
|
||||||
&format!("{}", projectile.damage),
|
&format!("{}", actual_damage),
|
||||||
text_style,
|
text_style,
|
||||||
text_alignment,
|
text_alignment,
|
||||||
),
|
),
|
||||||
@ -361,7 +379,7 @@ fn enemy_spawner_system(
|
|||||||
},
|
},
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.insert(FollowArnold::new(1.0))
|
.insert(FollowArnold::new(0.8))
|
||||||
.insert(Hitpoints::new(8));
|
.insert(Hitpoints::new(8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user