Skip to content

Commit

Permalink
Misc. Refactoring of Components (vegastrike#1005)
Browse files Browse the repository at this point in the history
- Move graphicOptions.InWarp to ftl_drive.Enabled(). Also support enable, disable and toggle.
- Remove base_computer::showUnitStats. It's been replaced by python code.
- Remove two unused parameters in DamageRandSys.
- Remove unused parameter in Component::Load and subclasses
- Align Cloak with other components.
- unit_csv::UnitToMap no longer uses the original unit stats as a starting point.
- Rename Component::Percent to Component::PercentOperational. We will have namespace collisions when we implement hull, armor and shield, as there is a Percent function there as well.
- Standardise on Component::Load(unit_key) and Component::Upgrade(upgrade_key)
- Fix bug in AfterburnerUpgrade::Upgrade - added __upgrades suffix twice.
- Disabled Component::Load code related to MasterPartList. This needs a PR on its own to do right.
- Deleted Component::unit_key. This collides with parameters and doesn't actually add worth. Components shouldn't know about the ship.
- Fix issue in JumpDrive and other some other components, where the constructor switched two parameters around.
- Make Resource::Percent return 0 and not -1. The game uses this in cockpit and VDU and checking every cycle is costly.
- Resource now checks if it is destroyed (0) before repairing.
  • Loading branch information
royfalk authored Jan 26, 2025
1 parent c910c65 commit c9a477f
Show file tree
Hide file tree
Showing 50 changed files with 382 additions and 1,061 deletions.
27 changes: 27 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,30 @@ engine/.idea/

engine/src/version.h
engine/setup/src/include/version.h


_deps/

engine/doc/man/Makefile

engine/Makefile

engine/doc/Makefile

engine/objconv/Makefile

engine/config.h

engine/setup/Makefile

Makefile

setup/src/include/version.h

src/version.h

test_assets/python_tests.py

test_assets/units.json

test_assets/vegastrike.config
34 changes: 17 additions & 17 deletions engine/src/cmd/ai/aggressive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -260,16 +260,16 @@ void AggressiveAI::SetParent(Unit *parent1) {
last_directive = "b"; //prevent escort race condition

//INIT stored stuff
Fshield_prev = parent->graphicOptions.InWarp ? 1 : parent->FShieldData();
Fshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->FShieldData();
Fshield_rate_old = 0.0;
Fshield_prev_time = UniverseUtil::GetGameTime();
Bshield_prev = parent->graphicOptions.InWarp ? 1 : parent->BShieldData();
Bshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->BShieldData();
Bshield_rate_old = 0.0;
Bshield_prev_time = UniverseUtil::GetGameTime();
Lshield_prev = parent->graphicOptions.InWarp ? 1 : parent->LShieldData();
Lshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->LShieldData();
Lshield_rate_old = 0.0;
Lshield_prev_time = UniverseUtil::GetGameTime();
Rshield_prev = parent->graphicOptions.InWarp ? 1 : parent->RShieldData();
Rshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->RShieldData();
Rshield_rate_old = 0.0;
Rshield_prev_time = UniverseUtil::GetGameTime();
Farmour_prev = 1.0;
Expand Down Expand Up @@ -333,30 +333,30 @@ bool AggressiveAI::ProcessLogicItem(const AIEvents::AIEvresult &item) {
value = parent->GetComputerData().threatlevel;
break;
case FSHIELD:
value = parent->graphicOptions.InWarp ? 1 : parent->FShieldData();
value = parent->ftl_drive.Enabled() ? 1 : parent->FShieldData();
break;
case BSHIELD:
value = parent->graphicOptions.InWarp ? 1 : parent->BShieldData();
value = parent->ftl_drive.Enabled() ? 1 : parent->BShieldData();
break;
case HULL: {
value = parent->GetHullPercent();
break;
}
case LSHIELD:
value = parent->graphicOptions.InWarp ? 1 : parent->LShieldData();
value = parent->ftl_drive.Enabled() ? 1 : parent->LShieldData();
break;
case RSHIELD:
value = parent->graphicOptions.InWarp ? 1 : parent->RShieldData();
value = parent->ftl_drive.Enabled() ? 1 : parent->RShieldData();
break;
case FSHIELD_HEAL_RATE: {
double delta_t = UniverseUtil::GetGameTime() - Fshield_prev_time;
if (delta_t > 0.5) {
//0.5 = reaction time limit for hit rate
double delta_v = parent->graphicOptions.InWarp ? 1 : parent->FShieldData() - Fshield_prev;
double delta_v = parent->ftl_drive.Enabled() ? 1 : parent->FShieldData() - Fshield_prev;
value = delta_v / delta_t;
Fshield_rate_old = value;
Fshield_prev_time = UniverseUtil::GetGameTime();
Fshield_prev = parent->graphicOptions.InWarp ? 1 : parent->FShieldData();
Fshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->FShieldData();
} else {
value = Fshield_rate_old;
}
Expand All @@ -366,11 +366,11 @@ bool AggressiveAI::ProcessLogicItem(const AIEvents::AIEvresult &item) {
double delta_t = UniverseUtil::GetGameTime() - Bshield_prev_time;
if (delta_t > 0.5) {
//0.5 = reaction time limit for hit rate
double delta_v = parent->graphicOptions.InWarp ? 1 : parent->BShieldData() - Bshield_prev;
double delta_v = parent->ftl_drive.Enabled() ? 1 : parent->BShieldData() - Bshield_prev;
value = delta_v / delta_t;
Bshield_rate_old = value;
Bshield_prev_time = UniverseUtil::GetGameTime();
Bshield_prev = parent->graphicOptions.InWarp ? 1 : parent->BShieldData();
Bshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->BShieldData();
} else {
value = Bshield_rate_old;
}
Expand All @@ -380,11 +380,11 @@ bool AggressiveAI::ProcessLogicItem(const AIEvents::AIEvresult &item) {
double delta_t = UniverseUtil::GetGameTime() - Lshield_prev_time;
if (delta_t > 0.5) {
//0.5 = reaction time limit for hit rate
double delta_v = parent->graphicOptions.InWarp ? 1 : parent->LShieldData() - Lshield_prev;
double delta_v = parent->ftl_drive.Enabled() ? 1 : parent->LShieldData() - Lshield_prev;
value = delta_v / delta_t;
Lshield_rate_old = value;
Lshield_prev_time = UniverseUtil::GetGameTime();
Lshield_prev = parent->graphicOptions.InWarp ? 1 : parent->LShieldData();
Lshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->LShieldData();
} else {
value = Lshield_rate_old;
}
Expand All @@ -394,11 +394,11 @@ bool AggressiveAI::ProcessLogicItem(const AIEvents::AIEvresult &item) {
double delta_t = UniverseUtil::GetGameTime() - Rshield_prev_time;
if (delta_t > 0.5) {
//0.5 = reaction time limit for hit rate
double delta_v = parent->graphicOptions.InWarp ? 1 : parent->RShieldData() - Rshield_prev;
double delta_v = parent->ftl_drive.Enabled() ? 1 : parent->RShieldData() - Rshield_prev;
value = delta_v / delta_t;
Rshield_rate_old = value;
Rshield_prev_time = UniverseUtil::GetGameTime();
Rshield_prev = parent->graphicOptions.InWarp ? 1 : parent->RShieldData();
Rshield_prev = parent->ftl_drive.Enabled() ? 1 : parent->RShieldData();
} else {
value = Rshield_rate_old;
}
Expand Down Expand Up @@ -1562,7 +1562,7 @@ void AggressiveAI::ExecuteNoEnemies() {
//slowdown
parent->Thrust(-parent->getMass() * parent->UpCoordinateLevel(parent->GetVelocity()) / simulation_atom_var,
false);
parent->graphicOptions.InWarp = 0;
parent->ftl_drive.Disable();
if (lurk_on_arrival <= 0) {
nav = QVector(0, 0, 0);
ExecuteNoEnemies(); //select new place to go
Expand Down
8 changes: 4 additions & 4 deletions engine/src/cmd/ai/firekeyboard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1378,7 +1378,7 @@ static bool TryDock(Unit *parent, Unit *targ, unsigned char playa, int severity)
XMLSupport::parse_bool(vs_config->getVariable("AI", "can_dock_to_enemy_base", "true"));
static bool nojumpinSPEC = XMLSupport::parse_bool(vs_config->getVariable("physics", "noSPECJUMP", "true"));
bool SPEC_interference = targ && parent && nojumpinSPEC
&& (targ->graphicOptions.InWarp || parent->graphicOptions.InWarp);
&& (targ->ftl_drive.Enabled() || parent->ftl_drive.Enabled());
unsigned char gender = 0;
vector<Animation *> *anim = NULL;
if (SPEC_interference) {
Expand Down Expand Up @@ -1422,10 +1422,10 @@ static bool TryDock(Unit *parent, Unit *targ, unsigned char playa, int severity)
static bool ExecuteRequestClearenceKey(Unit *parent, Unit *endt) {
bool tmp = endt->RequestClearance(parent);
if (endt->getRelation(parent) >= 0) {
if (endt->graphicOptions.InWarp) {
if (endt->ftl_drive.Enabled()) {
endt->graphicOptions.WarpRamping = 1;
}
endt->graphicOptions.InWarp = 0;
endt->ftl_drive.Disable();
static float clearencetime = (XMLSupport::parse_float(vs_config->getVariable("general", "dockingtime", "20")));
endt->EnqueueAIFirst(new Orders::ExecuteFor(new Orders::MatchVelocity(Vector(0, 0, 0),
Vector(0, 0, 0),
Expand Down Expand Up @@ -2028,7 +2028,7 @@ void FireKeyboard::Execute() {
}
if (f().togglewarpdrive == PRESS) {
f().togglewarpdrive = DOWN;
parent->graphicOptions.InWarp = 1 - parent->graphicOptions.InWarp;
parent->ftl_drive.Toggle();
parent->graphicOptions.WarpRamping = 1;
}
if (f().toggleautotracking == PRESS) {
Expand Down
4 changes: 2 additions & 2 deletions engine/src/cmd/ai/flykeyboard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@ void FlyByKeyboard::Execute(bool resetangvelocity) {
this->eraseType(FACING | MOVEMENT);
FlyByKeyboard::inauto = false;
parent->autopilotactive = FlyByKeyboard::inauto;
if (parent->graphicOptions.InWarp) {
parent->graphicOptions.InWarp = 0;
if (parent->ftl_drive.Enabled()) {
parent->ftl_drive.Disable();
parent->graphicOptions.WarpRamping = 1;
}
} else {
Expand Down
11 changes: 6 additions & 5 deletions engine/src/cmd/ai/navigation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -537,19 +537,20 @@ static float mymin(float a, float b) {
return a < b ? a : b;
}

// TODO: move this kludge to FtlDrive
inline void WarpRampOff(Unit *un, bool rampdown) {
if (un->graphicOptions.InWarp == 1) {
un->graphicOptions.InWarp = 0;
if (un->ftl_drive.Enabled()) {
un->ftl_drive.Disable();
if (rampdown) {
un->graphicOptions.WarpRamping = 1;
}
}
}

inline void CautiousWarpRampOn(Unit *un) {
if ((un->graphicOptions.InWarp == 0)
if ((!un->ftl_drive.Enabled())
&& (un->graphicOptions.RampCounter == 0)) { // don't restart warp during ramp-down - avoid shaking
un->graphicOptions.InWarp = 1;
un->ftl_drive.Enable();
un->graphicOptions.WarpRamping = 1;
}
}
Expand Down Expand Up @@ -679,7 +680,7 @@ void AutoLongHaul::Execute() {
}
}
}
if (parent->graphicOptions.InWarp == 0 && parent->graphicOptions.RampCounter == 0) {
if (!parent->ftl_drive.Enabled() && parent->graphicOptions.RampCounter == 0) {
deactivatewarp = false;
}
double mass = parent->getMass();
Expand Down
10 changes: 5 additions & 5 deletions engine/src/cmd/ai/warpto.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,13 @@ static void ActuallyWarpTo(Unit *parent, const QVector &tarpos, Vector tarvel, U
XMLSupport::parse_float(vs_config->getVariable("AI", "min_warp_to_try", "1.5"));
if ((parent->ftl_energy.Percent() > min_energy_to_enter_warp)
&& (parent->GetMaxWarpFieldStrength(1) > min_warpfield_to_enter_warp)) {
if (parent->graphicOptions.InWarp == 0) {
parent->graphicOptions.InWarp = 1; //don't want the AI thrashing
if (!parent->ftl_drive.Enabled()) {
parent->ftl_drive.Enable(); //don't want the AI thrashing
parent->graphicOptions.WarpRamping = 1; //don't want the AI thrashing
}
}
} else {
parent->graphicOptions.InWarp = 0;
parent->ftl_drive.Disable();
}
static bool domatch = XMLSupport::parse_bool(vs_config->getVariable("AI", "match_velocity_of_pursuant", "false"));
if (chasedot > mintarveldot || !domatch) {
Expand All @@ -130,7 +130,7 @@ void WarpToP(Unit *parent, Unit *target, bool following) {
}
}
} else {
parent->graphicOptions.InWarp = 0;
parent->ftl_drive.Disable();
}
}

Expand All @@ -145,7 +145,7 @@ void WarpToP(Unit *parent, const QVector &target, float radius, bool following)
ActuallyWarpTo(parent, target, QVector(0, 0, .00001));
}
} else {
parent->graphicOptions.InWarp = 0;
parent->ftl_drive.Disable();
}
}

2 changes: 1 addition & 1 deletion engine/src/cmd/armed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ void Armed::Fire(unsigned int weapon_type_bitmask, bool listen_to_owner) {
Unit *unit = static_cast<Unit *>(this);

if ((unit->cloak.Active() && !configuration()->weapons.can_fire_in_cloak) ||
(unit->graphicOptions.InWarp && !configuration()->weapons.can_fire_in_spec)) {
(unit->ftl_drive.Enabled() && !configuration()->weapons.can_fire_in_spec)) {
UnFire();
return;
}
Expand Down
Loading

0 comments on commit c9a477f

Please sign in to comment.