head database for aim and ai
This commit is contained in:
@@ -5,6 +5,7 @@ use crate::{
|
||||
GameState,
|
||||
aim::AimTarget,
|
||||
global_observer,
|
||||
head_asset::HeadsDatabase,
|
||||
heads::ActiveHeads,
|
||||
hitpoints::Hit,
|
||||
physics_layers::GameLayer,
|
||||
@@ -14,6 +15,7 @@ use crate::{
|
||||
};
|
||||
use avian3d::prelude::*;
|
||||
use bevy::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct Projectile {
|
||||
@@ -29,8 +31,9 @@ pub enum TriggerState {
|
||||
#[derive(Event, Reflect)]
|
||||
pub struct TriggerCashHeal;
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Reflect)]
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Reflect, Default, Serialize, Deserialize)]
|
||||
pub enum HeadAbility {
|
||||
#[default]
|
||||
None,
|
||||
Arrow,
|
||||
Thrown,
|
||||
@@ -112,6 +115,7 @@ fn on_trigger_state(
|
||||
player_rot: Query<&Transform, With<PlayerBodyMesh>>,
|
||||
player_query: Query<(&Transform, &AimTarget), With<Player>>,
|
||||
mut active_heads: ResMut<ActiveHeads>,
|
||||
heads_db: Res<HeadsDatabase>,
|
||||
time: Res<Time>,
|
||||
) {
|
||||
if matches!(trigger.event(), TriggerState::Active) {
|
||||
@@ -143,7 +147,8 @@ fn on_trigger_state(
|
||||
|
||||
active_heads.use_ammo(time.elapsed_secs());
|
||||
|
||||
match state.ability {
|
||||
let ability = heads_db.head_stats(state.head).ability;
|
||||
match ability {
|
||||
HeadAbility::Thrown => commands.trigger(TriggerThrow(trigger_state)),
|
||||
HeadAbility::Gun => commands.trigger(TriggerGun(trigger_state)),
|
||||
_ => (),
|
||||
|
||||
Reference in New Issue
Block a user