head database for aim and ai

This commit is contained in:
2025-04-11 18:35:59 +02:00
parent 806d10e1bd
commit 9df3c00abb
12 changed files with 163 additions and 55 deletions

View File

@@ -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)),
_ => (),