Skip to content

Commit 2750c07

Browse files
committed
2 parents 16ad59d + 335f53f commit 2750c07

1 file changed

Lines changed: 66 additions & 65 deletions

File tree

GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DroneCarrierAIUpdate.cpp

Lines changed: 66 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -655,93 +655,94 @@ void DroneCarrierAIUpdate::aiDoCommand(const AICommandParms* parms)
655655

656656
UpdateSleepTime DroneCarrierAIUpdate::update()
657657
{
658-
const DroneCarrierAIUpdateModuleData* data = getDroneCarrierAIUpdateModuleData();
658+
if (!getObject()->isEffectivelyDead()) {
659+
const DroneCarrierAIUpdateModuleData* data = getDroneCarrierAIUpdateModuleData();
659660

660-
// initially fill
661-
if (!m_initial_spawns) {
662-
for (size_t i = 0; i < data->m_slots; i++) {
663-
createSpawn();
661+
// initially fill
662+
if (!m_initial_spawns) {
663+
for (size_t i = 0; i < data->m_slots; i++) {
664+
createSpawn();
665+
}
666+
m_initial_spawns = true;
664667
}
665-
m_initial_spawns = true;
666-
}
667668

668-
UnsignedInt now = TheGameLogic->getFrame();
669+
UnsignedInt now = TheGameLogic->getFrame();
669670

670-
if (m_rebuild_time != 0 && m_rebuild_time <= now && !is_full())
671-
{
672-
if (createSpawn()) {
673-
if (is_full()) {
674-
m_rebuild_time = 0;
675-
}
676-
else {
677-
m_rebuild_time = now + data->m_respawn_time;
671+
if (m_rebuild_time != 0 && m_rebuild_time <= now && !is_full())
672+
{
673+
if (createSpawn()) {
674+
if (is_full()) {
675+
m_rebuild_time = 0;
676+
}
677+
else {
678+
m_rebuild_time = now + data->m_respawn_time;
679+
}
678680
}
679681
}
680-
}
681682

682-
if (now % 5 == 0) {
683+
if (now % 5 == 0) {
683684

684-
// check for reloading drones each 5th frame
685-
Object* carrier = getObject();
686-
if (carrier != nullptr) {
685+
// check for reloading drones each 5th frame
686+
Object* carrier = getObject();
687+
if (carrier != nullptr) {
687688

688-
ContainModuleInterface* cmi = carrier->getContain();
689+
ContainModuleInterface* cmi = carrier->getContain();
689690

690-
if (cmi != nullptr) {
691-
DroneCarrierContain* drone_contain = dynamic_cast<DroneCarrierContain*>(cmi);
692-
if (drone_contain != nullptr) {
693-
drone_contain->updateContainedReloadingStatus();
691+
if (cmi != nullptr) {
692+
DroneCarrierContain* drone_contain = dynamic_cast<DroneCarrierContain*>(cmi);
693+
if (drone_contain != nullptr) {
694+
drone_contain->updateContainedReloadingStatus();
695+
}
694696
}
695697
}
696698
}
697-
}
698699

699-
Object* my_target = getCurrentVictim();
700-
const Coord3D* my_target_pos = getCurrentVictimPos();
701-
if (targetInRange(my_target) || targetInRange(my_target_pos)) {
702-
// send out contained drones
703-
deployDrones();
704-
705-
//update orders
706-
if (now % 5 == 0) { //do every 5th frame
707-
switch (m_designatedCommand) {
708-
case AICMD_GUARD_POSITION:
709-
case AICMD_ATTACK_POSITION:
710-
case AICMD_FORCE_ATTACK_OBJECT:
711-
case AICMD_ATTACK_OBJECT:
712-
case AICMD_ATTACKMOVE_TO_POSITION:
713-
propagateOrdersToDrones();
714-
break;
715-
default:
716-
break;
700+
Object* my_target = getCurrentVictim();
701+
const Coord3D* my_target_pos = getCurrentVictimPos();
702+
if (targetInRange(my_target) || targetInRange(my_target_pos)) {
703+
// send out contained drones
704+
deployDrones();
705+
706+
//update orders
707+
if (now % 5 == 0) { //do every 5th frame
708+
switch (m_designatedCommand) {
709+
case AICMD_GUARD_POSITION:
710+
case AICMD_ATTACK_POSITION:
711+
case AICMD_FORCE_ATTACK_OBJECT:
712+
case AICMD_ATTACK_OBJECT:
713+
case AICMD_ATTACKMOVE_TO_POSITION:
714+
propagateOrdersToDrones();
715+
break;
716+
default:
717+
break;
718+
}
717719
}
718720
}
719-
}
720721

721-
//Check if a drone is approaching and if a door needs to open or close
722-
if (data->m_drones_enter_main_door && now % 2 == 0) {
723-
// check every 2nd frame
722+
//Check if a drone is approaching and if a door needs to open or close
723+
if (data->m_drones_enter_main_door && now % 2 == 0) {
724+
// check every 2nd frame
724725

725-
bool dronesApproaching = areDronesApproaching();
726+
bool dronesApproaching = areDronesApproaching();
726727

727-
if (!m_doorOpen && dronesApproaching) {
728-
//Open the door
729-
m_doorOpen = true;
730-
Drawable* draw = getObject()->getDrawable();
731-
if (draw) {
732-
draw->clearAndSetModelConditionState(MODELCONDITION_CARRIER_DOOR_CLOSING, MODELCONDITION_CARRIER_DOOR_OPENING);
728+
if (!m_doorOpen && dronesApproaching) {
729+
//Open the door
730+
m_doorOpen = true;
731+
Drawable* draw = getObject()->getDrawable();
732+
if (draw) {
733+
draw->clearAndSetModelConditionState(MODELCONDITION_CARRIER_DOOR_CLOSING, MODELCONDITION_CARRIER_DOOR_OPENING);
734+
}
735+
}
736+
else if (m_doorOpen && !dronesApproaching) {
737+
//Close the door
738+
m_doorOpen = false;
739+
Drawable* draw = getObject()->getDrawable();
740+
if (draw) {
741+
draw->clearAndSetModelConditionState(MODELCONDITION_CARRIER_DOOR_OPENING, MODELCONDITION_CARRIER_DOOR_CLOSING);
742+
}
733743
}
734-
}
735-
else if (m_doorOpen && !dronesApproaching) {
736-
//Close the door
737-
m_doorOpen = false;
738-
Drawable* draw = getObject()->getDrawable();
739-
if (draw){
740-
draw->clearAndSetModelConditionState(MODELCONDITION_CARRIER_DOOR_OPENING, MODELCONDITION_CARRIER_DOOR_CLOSING);
741-
}
742744
}
743745
}
744-
745746
return AIUpdateInterface::update();
746747
}
747748

0 commit comments

Comments
 (0)