Add background and variable damage

This commit is contained in:
Paul Brinkmeier 2022-02-20 20:25:41 +01:00
parent b21065a3ed
commit 5f4f1c7a6e
3 changed files with 24 additions and 6 deletions

BIN
assets/grass.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
assets/grass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -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));
} }