Skip to content

Commit

Permalink
DOWN WITH THE ITER AHAHAHAHAHAAHA
Browse files Browse the repository at this point in the history
  • Loading branch information
Hellzbellz123 committed Dec 23, 2022
1 parent 64adb69 commit 2ac3d2c
Show file tree
Hide file tree
Showing 14 changed files with 221 additions and 98 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ license-file = "LICENSE"
name = "vanillacoffee"
readme = "README.md"
repository = "https://github.com/Hellzbellz123/VanillaCoffee/"
version = "0.0.3"
version = "0.0.4"

[features]
dev = ["bevy-debug-text-overlay/debug", "bevy_rapier2d/debug-render"]
Expand Down
90 changes: 87 additions & 3 deletions data/levels/homeworld.ldtk
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,90 @@
"defUid": 73,
"px": [408,536],
"fieldInstances": []
},
{
"__identifier": "EnemySpawner",
"__grid": [28,49],
"__pivot": [0.5,0.5],
"__tags": [],
"__tile": null,
"__smartColor": "#94D9B3",
"iid": "871b0d10-7820-11ed-8525-21ac3887b3ad",
"width": 16,
"height": 16,
"defUid": 66,
"px": [456,792],
"fieldInstances": []
},
{
"__identifier": "EnemySpawner",
"__grid": [48,44],
"__pivot": [0.5,0.5],
"__tags": [],
"__tile": null,
"__smartColor": "#94D9B3",
"iid": "8946edc0-7820-11ed-8525-a97708c7b1e9",
"width": 16,
"height": 16,
"defUid": 66,
"px": [776,712],
"fieldInstances": []
},
{
"__identifier": "EnemySpawner",
"__grid": [5,45],
"__pivot": [0.5,0.5],
"__tags": [],
"__tile": null,
"__smartColor": "#94D9B3",
"iid": "8b4b9760-7820-11ed-8525-8939f788d2ed",
"width": 16,
"height": 16,
"defUid": 66,
"px": [88,728],
"fieldInstances": []
},
{
"__identifier": "EnemySpawner",
"__grid": [5,7],
"__pivot": [0.5,0.5],
"__tags": [],
"__tile": null,
"__smartColor": "#94D9B3",
"iid": "8d4e9350-7820-11ed-8525-af13f2e7b38f",
"width": 16,
"height": 16,
"defUid": 66,
"px": [88,120],
"fieldInstances": []
},
{
"__identifier": "EnemySpawner",
"__grid": [27,8],
"__pivot": [0.5,0.5],
"__tags": [],
"__tile": null,
"__smartColor": "#94D9B3",
"iid": "8ed05150-7820-11ed-8525-53f0a6cb77e3",
"width": 16,
"height": 16,
"defUid": 66,
"px": [440,136],
"fieldInstances": []
},
{
"__identifier": "EnemySpawner",
"__grid": [52,8],
"__pivot": [0.5,0.5],
"__tags": [],
"__tile": null,
"__smartColor": "#94D9B3",
"iid": "900aa610-7820-11ed-8525-0535db855c78",
"width": 16,
"height": 16,
"defUid": 66,
"px": [840,136],
"fieldInstances": []
}
]
},
Expand Down Expand Up @@ -596,7 +680,7 @@
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 8,
"__tilesetRelPath": "../images/tilemaps/TopDown_by_deepnight.png",
"__tilesetRelPath": "../assets/textures/tilemaps/TopDown_by_deepnight.png",
"iid": "22870060-2a00-11ed-a34c-1b28e0fe9328",
"levelId": 0,
"layerDefUid": 27,
Expand Down Expand Up @@ -1073,7 +1157,7 @@
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 8,
"__tilesetRelPath": "../images/tilemaps/TopDown_by_deepnight.png",
"__tilesetRelPath": "../assets/textures/tilemaps/TopDown_by_deepnight.png",
"iid": "52878c20-2a00-11ed-9822-45cbd21d31dd",
"levelId": 0,
"layerDefUid": 59,
Expand Down Expand Up @@ -1548,7 +1632,7 @@
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 8,
"__tilesetRelPath": "../images/tilemaps/TopDown_by_deepnight.png",
"__tilesetRelPath": "../assets/textures/tilemaps/TopDown_by_deepnight.png",
"iid": "08934890-2a00-11ed-a34c-bb381c3c3013",
"levelId": 0,
"layerDefUid": 16,
Expand Down
16 changes: 8 additions & 8 deletions src/actors/animation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,28 +31,28 @@ impl AnimationPlugin {
Changed<MovementState>,
>,
) {
for (player_compontent, mut animation, anim_sheet) in sprites_query.iter_mut() {
sprites_query.for_each_mut(|(movement_state, mut animation, anim_sheet)| {
if matches!(
player_compontent.facing,
movement_state.facing,
FacingDirection::Right | FacingDirection::Left
) {
animation.current_frames = anim_sheet.right_animation.to_vec();
} else if player_compontent.facing == FacingDirection::Up {
} else if movement_state.facing == FacingDirection::Up {
animation.current_frames = anim_sheet.up_animation.to_vec();
} else if player_compontent.facing == FacingDirection::Down {
} else if movement_state.facing == FacingDirection::Down {
animation.current_frames = anim_sheet.down_animation.to_vec();
} else if player_compontent.facing == FacingDirection::Idle {
} else if movement_state.facing == FacingDirection::Idle {
animation.current_frames = anim_sheet.idle_animation.to_vec();
}
}
});
}

fn frame_animation(
timeinfo: ResMut<TimeInfo>,
mut sprites_query: Query<(&mut TextureAtlasSprite, &mut AnimState)>,
time: Res<Time>,
) {
for (mut sprite, mut animation) in sprites_query.iter_mut() {
sprites_query.for_each_mut(|(mut sprite, mut animation)| {
animation.timer.tick(time.delta());
if !timeinfo.game_paused && animation.timer.just_finished() {
if animation.current_frames.is_empty() {
Expand All @@ -63,6 +63,6 @@ impl AnimationPlugin {
sprite.index = animation.current_frames[animation.current_frame];
}
}
}
});
}
}
43 changes: 22 additions & 21 deletions src/actors/combat/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ impl Plugin for WeaponPlugin {
})
.insert_resource(WeaponFiringTimer::default())
.add_system_to_stage(CoreStage::PreUpdate, remove_cdw_componenet)
.add_system_to_stage(CoreStage::PreUpdate, deal_with_damaged)
.add_system_set(
SystemSet::on_update(GameStage::Playing)
.with_system(detect_bullet_hits_on_enemy)
Expand All @@ -73,7 +74,6 @@ impl Plugin for WeaponPlugin {
.with_system(weapon_visiblity_system)
.with_system(update_equipped_weapon)
.with_system(shoot_weapon)
.with_system(deal_with_damaged)
.with_system(player_death_system),
);
}
Expand All @@ -86,13 +86,13 @@ pub struct WeaponFiringTimer(pub Timer);
fn rotate_player_weapon(
gametime: Res<TimeInfo>,
eager_mouse: Res<EagerMousePos>,
mut player_query: Query<(&mut MovementState, With<Player>)>,
mut player_query: Query<(&MovementState, With<Player>)>,

#[allow(clippy::type_complexity)]
// trunk-ignore(clippy/type_complexity)
mut weapon_query: Query<
// this is equivelent to if player has a weapon equipped and out
(&mut WeaponTag, &GlobalTransform, &mut Transform),
(&WeaponTag, &GlobalTransform, &mut Transform),
(With<Parent>, With<CurrentlySelectedWeapon>, Without<Player>),
>,
) {
Expand All @@ -101,7 +101,7 @@ fn rotate_player_weapon(
}
let gmouse = eager_mouse.world;

for (wtag, wgtransform, mut wtransform) in weapon_query.iter_mut() {
weapon_query.for_each_mut(|(wtag, wgtransform, mut wtransform)| {
if wtag.parent.is_some() {
let (_playerstate, _) = player_query.single_mut();
let gmousepos = vec2(gmouse.x, gmouse.y);
Expand All @@ -117,25 +117,25 @@ fn rotate_player_weapon(
}
*wtransform.rotation = *(Quat::from_euler(EulerRot::ZYX, aimangle, 0.0, 0.0));
}
}
});
}

fn keep_player_weapons_centered(
mut player_query: Query<(&mut MovementState, With<Player>)>,
mut player_query: Query<(&MovementState, With<Player>)>,

#[allow(clippy::type_complexity)]
// trunk-ignore(clippy/type_complexity)
mut weapon_query: Query<
// this is equivelent to if player has a weapon equipped and out
(&mut WeaponTag, &mut Transform, &mut Velocity),
(&WeaponTag, &mut Transform, &mut Velocity),
(With<Parent>, Without<Player>),
>,
) {
if weapon_query.is_empty() {
return;
}

for (wtag, mut wtransform, mut wvelocity) in weapon_query.iter_mut() {
weapon_query.for_each_mut(|(wtag, mut wtransform, mut wvelocity)| {
if wtag.parent.is_some() {
let (playerstate, _) = player_query.single_mut();
// modify weapon sprite to be below player when facing up, this
Expand All @@ -155,7 +155,7 @@ fn keep_player_weapons_centered(
}
wvelocity.angvel = lerp(wvelocity.angvel, 0.0, 0.3);
}
}
});
}

// check if the weapon is supposed to be visible
Expand All @@ -164,13 +164,13 @@ fn weapon_visiblity_system(
mut weapon_query: Query<(&WeaponTag, &mut Visibility), With<Parent>>, // query weapons parented to entitys
) {
let p_weaponsocket = player_query.single();
for (wtag, mut wvisiblity) in weapon_query.iter_mut() {
weapon_query.for_each_mut(|(wtag, mut wvisiblity)| {
if wtag.stored_weapon_slot == Some(p_weaponsocket.drawn_slot) {
wvisiblity.is_visible = true;
} else {
wvisiblity.is_visible = false;
}
}
});
}

/// removes `CurrentlyDrawnWeapon` from entitys parented to player that dont
Expand All @@ -194,7 +194,7 @@ fn remove_cdw_componenet(

let wsocket = player_query.single();

for (went, wtag) in weapon_query.iter() {
weapon_query.for_each(|(went, wtag)| {
if wtag.stored_weapon_slot != Some(wsocket.drawn_slot) && drawn_weapon.get(went).is_ok() {
let wname = names.get(went).expect("entity doesnt have a name");
debug!(
Expand All @@ -203,13 +203,13 @@ fn remove_cdw_componenet(
);
cmds.entity(went).remove::<CurrentlySelectedWeapon>();
}
}
});
}

fn update_equipped_weapon(
mut cmds: Commands,
query_action_state: Query<&ActionState<PlayerActions>>,
mut player_query: Query<(Entity, &mut WeaponSocket, &mut Transform), With<Player>>,
mut player_query: Query<&mut WeaponSocket, With<Player>>,

#[allow(clippy::type_complexity)]
// trunk-ignore(clippy/type_complexity)
Expand All @@ -222,7 +222,7 @@ fn update_equipped_weapon(
return;
}

let (_ent, mut wsocket, _transform) = player_query.single_mut();
let mut wsocket = player_query.single_mut();
let actions = query_action_state.single();

// TODO: this mostly works, but we need to have a system that checks if the
Expand Down Expand Up @@ -408,10 +408,10 @@ pub fn detect_bullet_hits_on_player(
fn deal_with_damaged(
mut cmds: Commands,
mut game_info: ResMut<PlayerGameInformation>,
mut enemy_query: Query<(&mut DefenseStats, Entity, &Damaged), With<AIEnemy>>,
mut enemy_query: Query<(&mut DefenseStats, Entity, &Damaged), (Added<Damaged>, With<AIEnemy>)>,
) {
screen_print!("{:#?}", game_info);
for (mut enemy_stats, enemy, damage) in enemy_query.iter_mut() {
enemy_query.for_each_mut(|(mut enemy_stats, enemy, damage)| {
game_info.damage_dealt += damage.amount;
enemy_stats.health -= damage.amount;
cmds.entity(enemy).remove::<Damaged>();
Expand All @@ -420,7 +420,7 @@ fn deal_with_damaged(
cmds.entity(enemy).despawn_recursive();
game_info.enemys_killed += 1;
}
}
});
}

fn player_death_system(
Expand All @@ -431,16 +431,17 @@ fn player_death_system(
if player_query.is_empty() {
return;
}
let (mut player_stats, player, damage, mut player_loc) = player_query.get_single_mut().unwrap();
let (mut player_stats, player, player_damaged, mut player_loc) =
player_query.get_single_mut().unwrap();

game_info.damage_taken += damage.amount;
game_info.damage_taken += player_damaged.amount;
if player_stats.health <= 0.0 {
warn!("player is dead");
player_stats.health = 150.0;
*player_loc = Transform::from_translation(Vec3::new(-60.0, 1090.0, ACTOR_Z_INDEX));
game_info.player_deaths += 1;
}

player_stats.health -= damage.amount;
player_stats.health -= player_damaged.amount;
cmds.entity(player).remove::<Damaged>();
}
Loading

0 comments on commit 2ac3d2c

Please sign in to comment.