From dab4ea065617d7a432ba7e0c52af83124915bee2 Mon Sep 17 00:00:00 2001 From: extrawurst Date: Sat, 12 Apr 2025 16:19:14 +0200 Subject: [PATCH] refactor heads-db and added plane controls --- assets/all.headsdb.ron | 2 +- src/abilities/mod.rs | 2 +- src/ai/mod.rs | 2 +- src/aim/mod.rs | 2 +- src/heads/mod.rs | 2 +- src/{head_asset.rs => heads_database.rs} | 9 +++++++++ src/loading_assets.rs | 2 +- src/main.rs | 4 ++-- src/npc.rs | 2 +- src/player.rs | 2 +- 10 files changed, 19 insertions(+), 10 deletions(-) rename src/{head_asset.rs => heads_database.rs} (88%) diff --git a/assets/all.headsdb.ron b/assets/all.headsdb.ron index 39fc457..b7d946f 100644 --- a/assets/all.headsdb.ron +++ b/assets/all.headsdb.ron @@ -9,7 +9,7 @@ (key:"green grocer", range:60), (key:"highland hammer thrower", ability:Thrown, range:80), (key:"legionnaire", ability:Gun, range:60), - (key:"mig pilot", ability:Gun, range:60), + (key:"mig pilot", ability:Gun, range:60, controls:Plane), (key:"nanny", ability:Thrown, range:60), (key:"panic attack"), (key:"salty sea dog"), diff --git a/src/abilities/mod.rs b/src/abilities/mod.rs index e2f44dc..07fc651 100644 --- a/src/abilities/mod.rs +++ b/src/abilities/mod.rs @@ -5,8 +5,8 @@ use crate::{ GameState, aim::AimTarget, global_observer, - head_asset::HeadsDatabase, heads::ActiveHeads, + heads_database::HeadsDatabase, hitpoints::Hit, physics_layers::GameLayer, player::{Player, PlayerBodyMesh}, diff --git a/src/ai/mod.rs b/src/ai/mod.rs index 4d4dda6..8225f79 100644 --- a/src/ai/mod.rs +++ b/src/ai/mod.rs @@ -4,7 +4,7 @@ use crate::{ GameState, abilities::{HeadAbility, TriggerData, TriggerThrow}, aim::AimTarget, - head_asset::HeadsDatabase, + heads_database::HeadsDatabase, npc::Npc, }; diff --git a/src/aim/mod.rs b/src/aim/mod.rs index cc29579..5d20d9c 100644 --- a/src/aim/mod.rs +++ b/src/aim/mod.rs @@ -4,7 +4,7 @@ mod target_ui; use crate::{ GameState, head::ActiveHead, - head_asset::HeadsDatabase, + heads_database::HeadsDatabase, physics_layers::GameLayer, player::{Player, PlayerBodyMesh}, tb_entities::EnemySpawn, diff --git a/src/heads/mod.rs b/src/heads/mod.rs index 9a764f0..487cf30 100644 --- a/src/heads/mod.rs +++ b/src/heads/mod.rs @@ -4,7 +4,7 @@ use crate::{ GameState, backpack::{BackbackSwapEvent, Backpack}, global_observer, - head_asset::HeadsDatabase, + heads_database::HeadsDatabase, hitpoints::Hitpoints, player::Player, sounds::PlaySound, diff --git a/src/head_asset.rs b/src/heads_database.rs similarity index 88% rename from src/head_asset.rs rename to src/heads_database.rs index 546af5e..9f50fc0 100644 --- a/src/head_asset.rs +++ b/src/heads_database.rs @@ -2,6 +2,13 @@ use crate::abilities::HeadAbility; use bevy::prelude::*; use serde::{Deserialize, Serialize}; +#[derive(Debug, Default, Reflect, Serialize, Deserialize)] +pub enum HeadControls { + #[default] + Walk, + Plane, +} + #[derive(Debug, Default, Reflect, Serialize, Deserialize)] pub struct HeadStats { pub key: String, @@ -9,6 +16,8 @@ pub struct HeadStats { pub ability: HeadAbility, #[serde(default)] pub range: f32, + #[serde(default)] + pub controls: HeadControls, } #[derive(Debug, Asset, Reflect, Serialize, Deserialize)] diff --git a/src/loading_assets.rs b/src/loading_assets.rs index 0cdb2ce..f61d3a3 100644 --- a/src/loading_assets.rs +++ b/src/loading_assets.rs @@ -1,6 +1,6 @@ use crate::{ GameState, - head_asset::{HeadDatabaseAsset, HeadsDatabase}, + heads_database::{HeadDatabaseAsset, HeadsDatabase}, }; use bevy::{prelude::*, utils::HashMap}; use bevy_asset_loader::prelude::*; diff --git a/src/main.rs b/src/main.rs index 32e1768..b2f4fb7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,8 +11,8 @@ mod cutscene; mod debug; mod gates; mod head; -mod head_asset; mod heads; +mod heads_database; mod hitpoints; mod keys; mod loading_assets; @@ -42,7 +42,7 @@ use bevy_trenchbroom::prelude::*; use bevy_ui_gradients::UiGradientsPlugin; use camera::MainCamera; use control::controller::CharacterControllerPlugin; -use head_asset::HeadDatabaseAsset; +use heads_database::HeadDatabaseAsset; use loading_assets::AudioAssets; use std::io::{Read, Write}; use utils::{billboards, sprite_3d_animation, squish_animation}; diff --git a/src/npc.rs b/src/npc.rs index c230dcb..bc1847a 100644 --- a/src/npc.rs +++ b/src/npc.rs @@ -2,8 +2,8 @@ use crate::{ GameState, ai::Ai, head::ActiveHead, - head_asset::HeadsDatabase, heads::{HEAD_COUNT, HeadState}, + heads_database::HeadsDatabase, hitpoints::{Hitpoints, Kill}, keys::KeySpawn, tb_entities::EnemySpawn, diff --git a/src/player.rs b/src/player.rs index 1310bbc..f1e28c1 100644 --- a/src/player.rs +++ b/src/player.rs @@ -9,8 +9,8 @@ use crate::{ }, global_observer, head::ActiveHead, - head_asset::HeadsDatabase, heads::HeadChanged, + heads_database::HeadsDatabase, hitpoints::Hitpoints, loading_assets::GameAssets, physics_layers::GameLayer,