MCPcopy Create free account
hub / github.com/LarsDu/StarRust / fire_controller

Function fire_controller

src/game/player.rs:122–155  ·  view source on GitHub ↗

Fire controller system

(
    time: Res<Time>,
    keyboard_input: Res<ButtonInput<KeyCode>>,
    mut bullet_fired_event: MessageWriter<WeaponFiredEvent>,
    mut audio_event: MessageWriter<AudioEvent>,
    mut query: Query<

Source from the content-addressed store, hash-verified

120
121// Fire controller system
122pub fn fire_controller(
123 time: Res<Time>,
124 keyboard_input: Res<ButtonInput<KeyCode>>,
125 mut bullet_fired_event: MessageWriter<WeaponFiredEvent>,
126 mut audio_event: MessageWriter<AudioEvent>,
127 mut query: Query<(&Transform, &mut Weapon, &Collider), With<Player>>,
128) {
129 for (transform, mut weapon, collider) in &mut query {
130 if keyboard_input.just_pressed(KeyCode::Space) {
131 send_projectile_spawn_event(
132 transform,
133 collider,
134 &weapon,
135 &mut bullet_fired_event,
136 &mut audio_event,
137 );
138 weapon.cooldown_timer.reset();
139 weapon.cooldown_timer.set_mode(TimerMode::Repeating);
140 weapon.cooldown_timer.unpause();
141 } else if keyboard_input.just_released(KeyCode::Space) {
142 weapon.cooldown_timer.pause()
143 }
144 weapon.cooldown_timer.tick(time.delta());
145 if weapon.cooldown_timer.just_finished() {
146 send_projectile_spawn_event(
147 transform,
148 collider,
149 &weapon,
150 &mut bullet_fired_event,
151 &mut audio_event,
152 );
153 }
154 }
155}
156
157fn send_projectile_spawn_event(
158 transform: &Transform,

Callers

nothing calls this directly

Calls 1

Tested by

no test coverage detected