make repair ships standby with rest of fleet if there is no one to repair (instead of advancing towards the enemy stations)
This commit is contained in:
@@ -6,6 +6,7 @@ enum class BehaviorKind
|
||||
{
|
||||
None,
|
||||
Advance,
|
||||
Standby,
|
||||
Rally,
|
||||
Retreat,
|
||||
Attack,
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
// Score bands for ship-behavior evaluation. The AiSystem selection pass picks
|
||||
// the behavior with the highest score per ship; these constants define a single
|
||||
// comparable scale so the desired priority falls out:
|
||||
// Retreat > Attack > Repair / Salvage / Deliver > Rally > Advance.
|
||||
// Retreat > Attack > Repair / Salvage / Deliver > Rally > Standby > Advance.
|
||||
// Evaluators may return kInactive when their behavior does not apply this tick.
|
||||
namespace BehaviorScores
|
||||
{
|
||||
constexpr float kInactive = 0.0f;
|
||||
constexpr float kAdvance = 0.05f; // baseline fallback; always present
|
||||
constexpr float kStandby = 0.10f; // repair-capable ships; hold with the fleet
|
||||
constexpr float kRally = 0.20f;
|
||||
constexpr float kDeliver = 0.50f; // cargo full
|
||||
constexpr float kRepair = 0.55f;
|
||||
|
||||
@@ -23,6 +23,7 @@ SET(HDRS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/SelectedBehaviorComponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/SensorRangeComponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ShipIdentityComponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/StandbyBehavior.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/StationBodyComponent.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/WeaponComponent.h
|
||||
PARENT_SCOPE
|
||||
|
||||
11
src/lib/ecs/component/StandbyBehavior.h
Normal file
11
src/lib/ecs/component/StandbyBehavior.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
// Fallback for ships with a repair capability: instead of charging the enemy
|
||||
// like AdvanceBehavior, the ship holds with its fleet so damaged allies stay in
|
||||
// sensor range and it can heal them. Scored just above Advance and below Rally,
|
||||
// so it only wins when no more urgent behavior applies. The executor decides the
|
||||
// destination (StandbyExecutor).
|
||||
struct StandbyBehavior
|
||||
{
|
||||
float score = 0.0f;
|
||||
};
|
||||
Reference in New Issue
Block a user