BOOL ship_flags_dlg::OnInitDialog() { int j, first; int protect_ship = 0, beam_protect_ship = 0, ignore_count = 0, reinforcement = 0, cargo_known = 0; int destroy_before_mission = 0, no_arrival_music = 0, escort = 0, invulnerable = 0, targetable_as_bomb = 0; int hidden_from_sensors = 0, primitive_sensors = 0, no_subspace_drive = 0, affected_by_gravity = 0; int toggle_subsystem_scanning = 0, scannable = 0, kamikaze = 0, no_dynamic = 0, red_alert_carry = 0; int special_warpin = 0, disable_messages = 0, guardian = 0, vaporize = 0, stealth = 0, friendly_stealth_invisible = 0; int no_death_scream = 0, always_death_scream = 0; int nav_carry = 0, nav_needslink = 0, hide_ship_name = 0, set_class_dynamically = 0; int hide_log_entries = 0, is_harmless = 0; object *objp; ship *shipp; bool ship_in_wing = false; first = 1; objp = GET_FIRST(&obj_used_list); while (objp != END_OF_LIST(&obj_used_list)) { if ((objp->type == OBJ_START) || (objp->type == OBJ_SHIP)) { if (objp->flags & OF_MARKED) { shipp = &Ships[objp->instance]; if (first) { first = 0; scannable = (shipp->flags & SF_SCANNABLE) ? 1 : 0; red_alert_carry = (shipp->flags & SF_RED_ALERT_STORE_STATUS) ? 1 : 0; special_warpin = (objp->flags & OF_SPECIAL_WARPIN) ? 1 : 0; protect_ship = (objp->flags & OF_PROTECTED) ? 1 : 0; beam_protect_ship = (objp->flags & OF_BEAM_PROTECTED) ? 1 : 0; invulnerable = (objp->flags & OF_INVULNERABLE) ? 1 : 0; targetable_as_bomb = (objp->flags & OF_TARGETABLE_AS_BOMB) ? 1 : 0; hidden_from_sensors = (shipp->flags & SF_HIDDEN_FROM_SENSORS) ? 1 : 0; primitive_sensors = (shipp->flags2 & SF2_PRIMITIVE_SENSORS) ? 1 : 0; no_subspace_drive = (shipp->flags2 & SF2_NO_SUBSPACE_DRIVE) ? 1 : 0; affected_by_gravity = (shipp->flags2 & SF2_AFFECTED_BY_GRAVITY) ? 1 : 0; toggle_subsystem_scanning = (shipp->flags2 & SF2_TOGGLE_SUBSYSTEM_SCANNING) ? 1 : 0; ignore_count = (shipp->flags & SF_IGNORE_COUNT) ? 1 : 0; no_arrival_music = (shipp->flags & SF_NO_ARRIVAL_MUSIC) ? 1 : 0; cargo_known = (shipp->flags & SF_CARGO_REVEALED) ? 1 : 0; no_dynamic = (Ai_info[shipp->ai_index].ai_flags & AIF_NO_DYNAMIC) ? 1 : 0; disable_messages = (shipp->flags2 & SF2_NO_BUILTIN_MESSAGES) ? 1 : 0; set_class_dynamically = (shipp->flags2 & SF2_SET_CLASS_DYNAMICALLY) ? 1 : 0; no_death_scream = (shipp->flags2 & SF2_NO_DEATH_SCREAM) ? 1 : 0; always_death_scream = (shipp->flags2 & SF2_ALWAYS_DEATH_SCREAM) ? 1 : 0; guardian = (shipp->ship_guardian_threshold) ? 1 : 0; vaporize = (shipp->flags & SF_VAPORIZE) ? 1 : 0; stealth = (shipp->flags2 & SF2_STEALTH) ? 1 : 0; friendly_stealth_invisible = (shipp->flags2 & SF2_FRIENDLY_STEALTH_INVIS) ? 1 : 0; nav_carry = (shipp->flags2 & SF2_NAVPOINT_CARRY) ? 1 : 0; nav_needslink = (shipp->flags2 & SF2_NAVPOINT_NEEDSLINK) ? 1 : 0; hide_ship_name = (shipp->flags2 & SF2_HIDE_SHIP_NAME) ? 1 : 0; hide_log_entries = (shipp->flags2 & SF2_HIDE_LOG_ENTRIES) ? 1 : 0; is_harmless = (shipp->flags2 & SF2_IS_HARMLESS) ? 1 : 0; destroy_before_mission = (shipp->flags & SF_KILL_BEFORE_MISSION) ? 1 : 0; m_destroy_value.init(shipp->final_death_time); kamikaze = (Ai_info[shipp->ai_index].ai_flags & AIF_KAMIKAZE) ? 1 : 0; m_kdamage.init( (int) Ai_info[shipp->ai_index].kamikaze_damage ); escort = (shipp->flags & SF_ESCORT) ? 1 : 0; m_escort_value.init(shipp->escort_priority); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.init(shipp->respawn_priority); } for (j=0; j<Num_reinforcements; j++) { if (!stricmp(Reinforcements[j].name, shipp->ship_name)) { break; } } reinforcement = (j < Num_reinforcements) ? 1 : 0; // check if ship in wing ship_in_wing = (shipp->wingnum != -1);; } else { scannable = tristate_set( shipp->flags & SF_SCANNABLE, scannable ); red_alert_carry = tristate_set( shipp->flags & SF_RED_ALERT_STORE_STATUS, red_alert_carry ); special_warpin = tristate_set( objp->flags & OF_SPECIAL_WARPIN, special_warpin ); protect_ship = tristate_set(objp->flags & OF_PROTECTED, protect_ship); beam_protect_ship = tristate_set(objp->flags & OF_BEAM_PROTECTED, beam_protect_ship); invulnerable = tristate_set(objp->flags & OF_INVULNERABLE, invulnerable); targetable_as_bomb = tristate_set(objp->flags & OF_TARGETABLE_AS_BOMB, targetable_as_bomb); hidden_from_sensors = tristate_set(shipp->flags & SF_HIDDEN_FROM_SENSORS, hidden_from_sensors); primitive_sensors = tristate_set(shipp->flags2 & SF2_PRIMITIVE_SENSORS, primitive_sensors); no_subspace_drive = tristate_set(shipp->flags2 & SF2_NO_SUBSPACE_DRIVE, no_subspace_drive); affected_by_gravity = tristate_set(shipp->flags2 & SF2_AFFECTED_BY_GRAVITY, affected_by_gravity); toggle_subsystem_scanning = tristate_set(shipp->flags2 & SF2_TOGGLE_SUBSYSTEM_SCANNING, toggle_subsystem_scanning); ignore_count = tristate_set(shipp->flags & SF_IGNORE_COUNT, ignore_count); no_arrival_music = tristate_set(shipp->flags & SF_NO_ARRIVAL_MUSIC, no_arrival_music); cargo_known = tristate_set(shipp->flags & SF_CARGO_REVEALED, cargo_known); no_dynamic = tristate_set( Ai_info[shipp->ai_index].ai_flags & AIF_NO_DYNAMIC, no_dynamic ); disable_messages = tristate_set(shipp->flags2 & SF2_NO_BUILTIN_MESSAGES, disable_messages); set_class_dynamically = tristate_set(shipp->flags2 & SF2_SET_CLASS_DYNAMICALLY, set_class_dynamically); no_death_scream = tristate_set(shipp->flags2 & SF2_NO_DEATH_SCREAM, no_death_scream); always_death_scream = tristate_set(shipp->flags2 & SF2_ALWAYS_DEATH_SCREAM, always_death_scream); guardian = tristate_set(shipp->ship_guardian_threshold, guardian); vaporize = tristate_set(shipp->flags & SF_VAPORIZE, vaporize); stealth = tristate_set(shipp->flags2 & SF2_STEALTH, stealth); friendly_stealth_invisible = tristate_set(shipp->flags2 & SF2_FRIENDLY_STEALTH_INVIS, friendly_stealth_invisible); nav_carry = tristate_set(shipp->flags2 & SF2_NAVPOINT_CARRY, nav_carry); nav_needslink = tristate_set(shipp->flags2 & SF2_NAVPOINT_NEEDSLINK, nav_needslink); hide_ship_name = tristate_set(shipp->flags2 & SF2_HIDE_SHIP_NAME, hide_ship_name); hide_log_entries = tristate_set(shipp->flags2 & SF2_HIDE_LOG_ENTRIES, hide_log_entries); is_harmless = tristate_set(shipp->flags2 & SF2_IS_HARMLESS, is_harmless); // check the final death time and set the internal variable according to whether or not // the final_death_time is set. Also, the value in the edit box must be set if all the // values are the same, and cleared if the values are not the same. destroy_before_mission = tristate_set(shipp->flags & SF_KILL_BEFORE_MISSION, destroy_before_mission); m_destroy_value.set(shipp->final_death_time); kamikaze = tristate_set( Ai_info[shipp->ai_index].ai_flags & AIF_KAMIKAZE, kamikaze ); m_kdamage.set( (int) Ai_info[shipp->ai_index].kamikaze_damage ); escort = tristate_set(shipp->flags & SF_ESCORT, escort); m_escort_value.init(shipp->escort_priority); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.init(shipp->escort_priority); } for (j=0; j<Num_reinforcements; j++) { if (!stricmp(Reinforcements[j].name, shipp->ship_name)) { break; } } reinforcement = tristate_set(j < Num_reinforcements, reinforcement); // check if ship in wing ship_in_wing = (shipp->wingnum != -1);; } } } objp = GET_NEXT(objp); } CDialog::OnInitDialog(); m_protect_ship.SetCheck(protect_ship); m_beam_protect_ship.SetCheck(beam_protect_ship); m_ignore_count.SetCheck(ignore_count); m_reinforcement.SetCheck(reinforcement); m_cargo_known.SetCheck(cargo_known); m_destroy.SetCheck(destroy_before_mission); m_no_arrival_music.SetCheck(no_arrival_music); m_escort.SetCheck(escort); m_invulnerable.SetCheck(invulnerable); m_targetable_as_bomb.SetCheck(targetable_as_bomb); m_hidden.SetCheck(hidden_from_sensors); m_primitive_sensors.SetCheck(primitive_sensors); m_no_subspace_drive.SetCheck(no_subspace_drive); m_affected_by_gravity.SetCheck(affected_by_gravity); m_toggle_subsystem_scanning.SetCheck(toggle_subsystem_scanning); m_scannable.SetCheck(scannable); m_kamikaze.SetCheck(kamikaze); m_no_dynamic.SetCheck(no_dynamic); m_red_alert_carry.SetCheck(red_alert_carry); m_special_warpin.SetCheck(special_warpin); m_disable_messages.SetCheck(disable_messages); m_set_class_dynamically.SetCheck(set_class_dynamically); m_no_death_scream.SetCheck(no_death_scream); m_always_death_scream.SetCheck(always_death_scream); m_guardian.SetCheck(guardian); m_vaporize.SetCheck(vaporize); m_stealth.SetCheck(stealth); m_friendly_stealth_invisible.SetCheck(friendly_stealth_invisible); m_nav_carry.SetCheck(nav_carry); m_nav_needslink.SetCheck(nav_needslink); m_hide_ship_name.SetCheck(hide_ship_name); m_is_harmless.SetCheck(is_harmless); m_hide_log_entries.SetCheck(hide_log_entries); m_kdamage.setup(IDC_KDAMAGE, this); m_destroy_value.setup(IDC_DESTROY_VALUE, this); m_escort_value.setup(IDC_ESCORT_PRIORITY, this); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.setup(IDC_RESPAWN_PRIORITY, this); } m_destroy_spin.SetRange(0, UD_MAXVAL); m_destroy_value.display(); m_kdamage.display(); m_escort_value.display(); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.display(); } else { GetDlgItem(IDC_RESPAWN_PRIORITY)->EnableWindow(FALSE); } // flags that enable/disable according to whether this isn't a player GetDlgItem(IDC_REINFORCEMENT)->EnableWindow(p_enable); GetDlgItem(IDC_CARGO_KNOWN)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_CHECK)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(p_enable); GetDlgItem(IDC_SCANNABLE)->EnableWindow(p_enable); // disable the spinner and edit window if the corrsponding check box // is not checked! if (m_destroy.GetCheck() != 1) { GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(FALSE); } // disable destroy option for ship in wing if (ship_in_wing) { GetDlgItem(IDC_DESTROY_CHECK)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(FALSE); } // maybe disable escort priority window if (m_escort.GetCheck() == 1) GetDlgItem(IDC_ESCORT_PRIORITY)->EnableWindow(TRUE); else GetDlgItem(IDC_ESCORT_PRIORITY)->EnableWindow(FALSE); // maybe disable kamikaze damage window if (m_kamikaze.GetCheck() == 1) GetDlgItem(IDC_KDAMAGE)->EnableWindow(TRUE); else GetDlgItem(IDC_KDAMAGE)->EnableWindow(FALSE); return TRUE; }
BOOL ship_flags_dlg::OnInitDialog() { int i, j, first; int protect_ship = 0, beam_protect_ship = 0, ignore_count = 0, reinforcement = 0, cargo_known = 0, destroy_before_mission = 0; int no_arrival_music = 0, escort = 0, invulnerable = 0, hidden_from_sensors = 0, primitive_sensors = 0, no_subspace_drive = 0; int scannable = 0, kamikaze = 0, no_dynamic = 0, red_alert_carry = 0, special_warp = 0, weapon_jammer = 0; object *objp; bool ship_in_wing = false; first = 1; objp = GET_FIRST(&obj_used_list); while (objp != END_OF_LIST(&obj_used_list)) { if ((objp->type == OBJ_START) || (objp->type == OBJ_SHIP)) { if (objp->flags & OF_MARKED) { i = objp->instance; if (first) { first = 0; scannable = (Ships[i].flags & SF_SCANNABLE) ? 1 : 0; red_alert_carry = (Ships[i].flags & SF_RED_ALERT_STORE_STATUS) ? 1 : 0; special_warp = (Objects[Ships[i].objnum].flags & OF_SPECIAL_WARP) ? 1 : 0; protect_ship = (Objects[Ships[i].objnum].flags & OF_PROTECTED) ? 1 : 0; beam_protect_ship = (Objects[Ships[i].objnum].flags & OF_BEAM_PROTECTED) ? 1 : 0; invulnerable = (Ships[i].flags & SF_INVULNERABLE) ? 1 : 0; hidden_from_sensors = (Ships[i].flags & SF_HIDDEN_FROM_SENSORS) ? 1 : 0; primitive_sensors = (Ships[i].flags2 & SF2_PRIMITIVE_SENSORS) ? 1 : 0; no_subspace_drive = (Ships[i].flags2 & SF2_NO_SUBSPACE_DRIVE) ? 1 : 0; ignore_count = (Ships[i].flags & SF_IGNORE_COUNT) ? 1 : 0; no_arrival_music = (Ships[i].flags & SF_NO_ARRIVAL_MUSIC) ? 1 : 0; cargo_known = (Ships[i].flags & SF_CARGO_REVEALED) ? 1 : 0; no_dynamic = (Ai_info[Ships[i].ai_index].ai_flags & AIF_NO_DYNAMIC) ? 1 : 0; weapon_jammer = (Ships[i].flags2 & SF2_JAMMER_ON) ? 1 : 0; destroy_before_mission = (Ships[i].flags & SF_KILL_BEFORE_MISSION) ? 1 : 0; m_destroy_value.init(Ships[i].final_death_time); kamikaze = (Ai_info[Ships[i].ai_index].ai_flags & AIF_KAMIKAZE) ? 1 : 0; m_kdamage.init( (int) Ai_info[Ships[i].ai_index].kamikaze_damage ); escort = (Ships[i].flags & SF_ESCORT) ? 1 : 0; m_escort_value.init(Ships[i].escort_priority); if(The_mission.game_type & MISSION_TYPE_MULTI){ m_respawn_priority.init(Ships[i].respawn_priority); } for (j=0; j<Num_reinforcements; j++){ if (!stricmp(Reinforcements[j].name, Ships[i].ship_name)){ break; } } reinforcement = (j < Num_reinforcements) ? 1 : 0; // check if ship in wing ship_in_wing = (Ships[i].wingnum != -1);; } else { scannable = tristate_set( Ships[i].flags & SF_SCANNABLE, scannable ); red_alert_carry = tristate_set( Ships[i].flags & SF_RED_ALERT_STORE_STATUS, red_alert_carry ); special_warp = tristate_set( Objects[Ships[i].objnum].flags & OF_SPECIAL_WARP, special_warp ); protect_ship = tristate_set(Objects[Ships[i].objnum].flags & OF_PROTECTED, protect_ship); beam_protect_ship = tristate_set(Objects[Ships[i].objnum].flags & OF_BEAM_PROTECTED, beam_protect_ship); invulnerable = tristate_set(Ships[i].flags & SF_INVULNERABLE, invulnerable); hidden_from_sensors = tristate_set(Ships[i].flags & SF_HIDDEN_FROM_SENSORS, hidden_from_sensors); primitive_sensors = tristate_set(Ships[i].flags2 & SF2_PRIMITIVE_SENSORS, primitive_sensors); no_subspace_drive = tristate_set(Ships[i].flags2 & SF2_NO_SUBSPACE_DRIVE, no_subspace_drive); ignore_count = tristate_set(Ships[i].flags & SF_IGNORE_COUNT, ignore_count); no_arrival_music = tristate_set(Ships[i].flags & SF_NO_ARRIVAL_MUSIC, no_arrival_music); cargo_known = tristate_set(Ships[i].flags & SF_CARGO_REVEALED, cargo_known); no_dynamic = tristate_set( Ai_info[Ships[i].ai_index].ai_flags & AIF_NO_DYNAMIC, no_dynamic ); weapon_jammer = (Ships[i].flags2 & SF2_JAMMER_ON) ? 1 : 0; // check the final death time and set the internal variable according to whether or not // the final_death_time is set. Also, the value in the edit box must be set if all the // values are the same, and cleared if the values are not the same. destroy_before_mission = tristate_set(Ships[i].flags & SF_KILL_BEFORE_MISSION, destroy_before_mission); m_destroy_value.set(Ships[i].final_death_time); kamikaze = tristate_set( Ai_info[Ships[i].ai_index].ai_flags & AIF_KAMIKAZE, kamikaze ); m_kdamage.set( (int) Ai_info[Ships[i].ai_index].kamikaze_damage ); escort = tristate_set(Ships[i].flags & SF_ESCORT, escort); m_escort_value.init(Ships[i].escort_priority); if(The_mission.game_type & MISSION_TYPE_MULTI){ m_respawn_priority.init(Ships[i].escort_priority); } for (j=0; j<Num_reinforcements; j++){ if (!stricmp(Reinforcements[j].name, Ships[i].ship_name)){ break; } } reinforcement = tristate_set(j < Num_reinforcements, reinforcement); // check if ship in wing ship_in_wing = (Ships[i].wingnum != -1);; } } } objp = GET_NEXT(objp); } CDialog::OnInitDialog(); m_protect_ship.SetCheck(protect_ship); m_beam_protect_ship.SetCheck(beam_protect_ship); m_ignore_count.SetCheck(ignore_count); m_reinforcement.SetCheck(reinforcement); m_cargo_known.SetCheck(cargo_known); m_destroy.SetCheck(destroy_before_mission); m_no_arrival_music.SetCheck(no_arrival_music); m_escort.SetCheck(escort); m_invulnerable.SetCheck(invulnerable); m_hidden.SetCheck(hidden_from_sensors); m_primitive_sensors.SetCheck(primitive_sensors); m_no_subspace_drive.SetCheck(no_subspace_drive); m_scannable.SetCheck(scannable); m_kamikaze.SetCheck(kamikaze); m_no_dynamic.SetCheck(no_dynamic); m_red_alert_carry.SetCheck(red_alert_carry); m_special_warp.SetCheck(special_warp); m_weapon_jam.SetCheck(weapon_jammer); m_kdamage.setup(IDC_KDAMAGE, this); m_destroy_value.setup(IDC_DESTROY_VALUE, this); m_escort_value.setup(IDC_ESCORT_PRIORITY, this); if(The_mission.game_type & MISSION_TYPE_MULTI){ m_respawn_priority.setup(IDC_RESPAWN_PRIORITY, this); } m_destroy_spin.SetRange(0, UD_MAXVAL); m_destroy_value.display(); m_kdamage.display(); m_escort_value.display(); if(The_mission.game_type & MISSION_TYPE_MULTI){ m_respawn_priority.display(); } else { GetDlgItem(IDC_RESPAWN_PRIORITY)->EnableWindow(FALSE); } GetDlgItem(IDC_REINFORCEMENT)->EnableWindow(p_enable); GetDlgItem(IDC_CARGO_KNOWN)->EnableWindow(p_enable); GetDlgItem(IDC_PROTECT_SHIP)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_CHECK)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(p_enable); GetDlgItem(IDC_SCANNABLE)->EnableWindow(p_enable); // disable the spinner and edit window if the corrsponding check box // is not checked! if (m_destroy.GetCheck() != 1) { GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(FALSE); } // disable destroy option for ship in wing if (ship_in_wing) { GetDlgItem(IDC_DESTROY_CHECK)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(FALSE); } // maybe disable escort priority window if (m_escort.GetCheck() == 1) GetDlgItem(IDC_ESCORT_PRIORITY)->EnableWindow(TRUE); else GetDlgItem(IDC_ESCORT_PRIORITY)->EnableWindow(FALSE); // maybe disable kamikaze damage window if (m_kamikaze.GetCheck() == 1) GetDlgItem(IDC_KDAMAGE)->EnableWindow(TRUE); else GetDlgItem(IDC_KDAMAGE)->EnableWindow(FALSE); return TRUE; }
BOOL ship_flags_dlg::OnInitDialog() { int j, first; int protect_ship = 0, beam_protect_ship = 0, flak_protect_ship = 0, laser_protect_ship = 0, missile_protect_ship = 0; int ignore_count = 0, reinforcement = 0, cargo_known = 0, immobile = 0; int destroy_before_mission = 0, no_arrival_music = 0, escort = 0, invulnerable = 0, targetable_as_bomb = 0; int hidden_from_sensors = 0, primitive_sensors = 0, no_subspace_drive = 0, affected_by_gravity = 0; int toggle_subsystem_scanning = 0, scannable = 0, kamikaze = 0, no_dynamic = 0, red_alert_carry = 0; int special_warpin = 0, disable_messages = 0, guardian = 0, vaporize = 0, stealth = 0, friendly_stealth_invisible = 0; int no_death_scream = 0, always_death_scream = 0, scramble_messages = 0, no_disabled_self_destruct = 0; int nav_carry = 0, nav_needslink = 0, hide_ship_name = 0, set_class_dynamically = 0, no_ets = 0, cloaked = 0, no_collide = 0; object *objp; ship *shipp; bool ship_in_wing = false; first = 1; objp = GET_FIRST(&obj_used_list); while (objp != END_OF_LIST(&obj_used_list)) { if ((objp->type == OBJ_START) || (objp->type == OBJ_SHIP)) { if (objp->flags[Object::Object_Flags::Marked]) { shipp = &Ships[objp->instance]; if (first) { first = 0; scannable = (shipp->flags[Ship::Ship_Flags::Scannable]) ? 1 : 0; red_alert_carry = (shipp->flags[Ship::Ship_Flags::Red_alert_store_status]) ? 1 : 0; special_warpin = (objp->flags[Object::Object_Flags::Special_warpin]) ? 1 : 0; protect_ship = (objp->flags[Object::Object_Flags::Protected]) ? 1 : 0; beam_protect_ship = (objp->flags[Object::Object_Flags::Beam_protected]) ? 1 : 0; flak_protect_ship = (objp->flags[Object::Object_Flags::Flak_protected]) ? 1 : 0; laser_protect_ship = (objp->flags[Object::Object_Flags::Laser_protected]) ? 1 : 0; missile_protect_ship = (objp->flags[Object::Object_Flags::Missile_protected]) ? 1 : 0; invulnerable = (objp->flags[Object::Object_Flags::Invulnerable]) ? 1 : 0; targetable_as_bomb = (objp->flags[Object::Object_Flags::Targetable_as_bomb]) ? 1 : 0; immobile = (objp->flags[Object::Object_Flags::Immobile]) ? 1 : 0; hidden_from_sensors = (shipp->flags[Ship::Ship_Flags::Hidden_from_sensors]) ? 1 : 0; primitive_sensors = (shipp->flags[Ship::Ship_Flags::Primitive_sensors]) ? 1 : 0; no_subspace_drive = (shipp->flags[Ship::Ship_Flags::No_subspace_drive]) ? 1 : 0; affected_by_gravity = (shipp->flags[Ship::Ship_Flags::Affected_by_gravity]) ? 1 : 0; toggle_subsystem_scanning = (shipp->flags[Ship::Ship_Flags::Toggle_subsystem_scanning]) ? 1 : 0; ignore_count = (shipp->flags[Ship::Ship_Flags::Ignore_count]) ? 1 : 0; no_arrival_music = (shipp->flags[Ship::Ship_Flags::No_arrival_music]) ? 1 : 0; cargo_known = (shipp->flags[Ship::Ship_Flags::Cargo_revealed]) ? 1 : 0; no_dynamic = (Ai_info[shipp->ai_index].ai_flags[AI::AI_Flags::No_dynamic]) ? 1 : 0; disable_messages = (shipp->flags[Ship::Ship_Flags::No_builtin_messages]) ? 1 : 0; set_class_dynamically = (shipp->flags[Ship::Ship_Flags::Set_class_dynamically]) ? 1 : 0; no_death_scream = (shipp->flags[Ship::Ship_Flags::No_death_scream]) ? 1 : 0; always_death_scream = (shipp->flags[Ship::Ship_Flags::Always_death_scream]) ? 1 : 0; guardian = (shipp->ship_guardian_threshold) ? 1 : 0; vaporize = (shipp->flags[Ship::Ship_Flags::Vaporize]) ? 1 : 0; stealth = (shipp->flags[Ship::Ship_Flags::Stealth]) ? 1 : 0; friendly_stealth_invisible = (shipp->flags[Ship::Ship_Flags::Friendly_stealth_invis]) ? 1 : 0; nav_carry = (shipp->flags[Ship::Ship_Flags::Navpoint_carry]) ? 1 : 0; nav_needslink = (shipp->flags[Ship::Ship_Flags::Navpoint_needslink]) ? 1 : 0; hide_ship_name = (shipp->flags[Ship::Ship_Flags::Hide_ship_name]) ? 1 : 0; no_ets = (shipp->flags[Ship::Ship_Flags::No_ets]) ? 1 : 0; cloaked = (shipp->flags[Ship::Ship_Flags::Cloaked]) ? 1 : 0; scramble_messages = (shipp->flags[Ship::Ship_Flags::Scramble_messages]) ? 1 : 0; no_collide = (objp->flags[Object::Object_Flags::Collides]) ? 0 : 1; no_disabled_self_destruct = (shipp->flags[Ship::Ship_Flags::No_disabled_self_destruct]) ? 1 : 0; destroy_before_mission = (shipp->flags[Ship::Ship_Flags::Kill_before_mission]) ? 1 : 0; m_destroy_value.init(shipp->final_death_time); kamikaze = (Ai_info[shipp->ai_index].ai_flags[AI::AI_Flags::Kamikaze]) ? 1 : 0; m_kdamage.init( Ai_info[shipp->ai_index].kamikaze_damage ); escort = (shipp->flags[Ship::Ship_Flags::Escort]) ? 1 : 0; m_escort_value.init(shipp->escort_priority); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.init(shipp->respawn_priority); } for (j=0; j<Num_reinforcements; j++) { if (!stricmp(Reinforcements[j].name, shipp->ship_name)) { break; } } reinforcement = (j < Num_reinforcements) ? 1 : 0; // check if ship in wing ship_in_wing = (shipp->wingnum != -1);; } else { scannable = tristate_set( shipp->flags[Ship::Ship_Flags::Scannable], scannable ); red_alert_carry = tristate_set( shipp->flags[Ship::Ship_Flags::Red_alert_store_status], red_alert_carry ); special_warpin = tristate_set( objp->flags[Object::Object_Flags::Special_warpin], special_warpin ); protect_ship = tristate_set(objp->flags[Object::Object_Flags::Protected], protect_ship); beam_protect_ship = tristate_set(objp->flags[Object::Object_Flags::Beam_protected], beam_protect_ship); flak_protect_ship = tristate_set(objp->flags[Object::Object_Flags::Flak_protected], flak_protect_ship); laser_protect_ship = tristate_set(objp->flags[Object::Object_Flags::Laser_protected], laser_protect_ship); missile_protect_ship = tristate_set(objp->flags[Object::Object_Flags::Missile_protected], missile_protect_ship); invulnerable = tristate_set(objp->flags[Object::Object_Flags::Invulnerable], invulnerable); targetable_as_bomb = tristate_set(objp->flags[Object::Object_Flags::Targetable_as_bomb], targetable_as_bomb); immobile = tristate_set(objp->flags[Object::Object_Flags::Immobile], immobile); hidden_from_sensors = tristate_set(shipp->flags[Ship::Ship_Flags::Hidden_from_sensors], hidden_from_sensors); primitive_sensors = tristate_set(shipp->flags[Ship::Ship_Flags::Primitive_sensors], primitive_sensors); no_subspace_drive = tristate_set(shipp->flags[Ship::Ship_Flags::No_subspace_drive], no_subspace_drive); affected_by_gravity = tristate_set(shipp->flags[Ship::Ship_Flags::Affected_by_gravity], affected_by_gravity); toggle_subsystem_scanning = tristate_set(shipp->flags[Ship::Ship_Flags::Toggle_subsystem_scanning], toggle_subsystem_scanning); ignore_count = tristate_set(shipp->flags[Ship::Ship_Flags::Ignore_count], ignore_count); no_arrival_music = tristate_set(shipp->flags[Ship::Ship_Flags::No_arrival_music], no_arrival_music); cargo_known = tristate_set(shipp->flags[Ship::Ship_Flags::Cargo_revealed], cargo_known); no_dynamic = tristate_set( Ai_info[shipp->ai_index].ai_flags[AI::AI_Flags::No_dynamic], no_dynamic ); disable_messages = tristate_set(shipp->flags[Ship::Ship_Flags::No_builtin_messages], disable_messages); set_class_dynamically = tristate_set(shipp->flags[Ship::Ship_Flags::Set_class_dynamically], set_class_dynamically); no_death_scream = tristate_set(shipp->flags[Ship::Ship_Flags::No_death_scream], no_death_scream); always_death_scream = tristate_set(shipp->flags[Ship::Ship_Flags::Always_death_scream], always_death_scream); guardian = tristate_set(shipp->ship_guardian_threshold, guardian); vaporize = tristate_set(shipp->flags[Ship::Ship_Flags::Vaporize], vaporize); stealth = tristate_set(shipp->flags[Ship::Ship_Flags::Stealth], stealth); friendly_stealth_invisible = tristate_set(shipp->flags[Ship::Ship_Flags::Friendly_stealth_invis], friendly_stealth_invisible); nav_carry = tristate_set(shipp->flags[Ship::Ship_Flags::Navpoint_carry], nav_carry); nav_needslink = tristate_set(shipp->flags[Ship::Ship_Flags::Navpoint_needslink], nav_needslink); hide_ship_name = tristate_set(shipp->flags[Ship::Ship_Flags::Hide_ship_name], hide_ship_name); no_ets = tristate_set(shipp->flags[Ship::Ship_Flags::No_ets], no_ets); cloaked = tristate_set(shipp->flags[Ship::Ship_Flags::Cloaked], cloaked); scramble_messages = tristate_set(shipp->flags[Ship::Ship_Flags::Scramble_messages], scramble_messages); no_collide = tristate_set(!(objp->flags[Object::Object_Flags::Collides]), no_collide); no_disabled_self_destruct = tristate_set(shipp->flags[Ship::Ship_Flags::No_disabled_self_destruct], no_disabled_self_destruct); // check the final death time and set the internal variable according to whether or not // the final_death_time is set. Also, the value in the edit box must be set if all the // values are the same, and cleared if the values are not the same. destroy_before_mission = tristate_set(shipp->flags[Ship::Ship_Flags::Kill_before_mission], destroy_before_mission); m_destroy_value.set(shipp->final_death_time); kamikaze = tristate_set( Ai_info[shipp->ai_index].ai_flags[AI::AI_Flags::Kamikaze], kamikaze ); m_kdamage.set( Ai_info[shipp->ai_index].kamikaze_damage ); escort = tristate_set(shipp->flags[Ship::Ship_Flags::Escort], escort); m_escort_value.init(shipp->escort_priority); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.init(shipp->escort_priority); } for (j=0; j<Num_reinforcements; j++) { if (!stricmp(Reinforcements[j].name, shipp->ship_name)) { break; } } reinforcement = tristate_set(j < Num_reinforcements, reinforcement); // check if ship in wing ship_in_wing = (shipp->wingnum != -1);; } } } objp = GET_NEXT(objp); } CDialog::OnInitDialog(); m_protect_ship.SetCheck(protect_ship); m_beam_protect_ship.SetCheck(beam_protect_ship); m_flak_protect_ship.SetCheck(flak_protect_ship); m_laser_protect_ship.SetCheck(laser_protect_ship); m_missile_protect_ship.SetCheck(missile_protect_ship); m_ignore_count.SetCheck(ignore_count); m_reinforcement.SetCheck(reinforcement); m_cargo_known.SetCheck(cargo_known); m_destroy.SetCheck(destroy_before_mission); m_no_arrival_music.SetCheck(no_arrival_music); m_escort.SetCheck(escort); m_invulnerable.SetCheck(invulnerable); m_targetable_as_bomb.SetCheck(targetable_as_bomb); m_immobile.SetCheck(immobile); m_hidden.SetCheck(hidden_from_sensors); m_primitive_sensors.SetCheck(primitive_sensors); m_no_subspace_drive.SetCheck(no_subspace_drive); m_affected_by_gravity.SetCheck(affected_by_gravity); m_toggle_subsystem_scanning.SetCheck(toggle_subsystem_scanning); m_scannable.SetCheck(scannable); m_kamikaze.SetCheck(kamikaze); m_no_dynamic.SetCheck(no_dynamic); m_red_alert_carry.SetCheck(red_alert_carry); m_special_warpin.SetCheck(special_warpin); m_disable_messages.SetCheck(disable_messages); m_set_class_dynamically.SetCheck(set_class_dynamically); m_no_death_scream.SetCheck(no_death_scream); m_always_death_scream.SetCheck(always_death_scream); m_guardian.SetCheck(guardian); m_vaporize.SetCheck(vaporize); m_stealth.SetCheck(stealth); m_friendly_stealth_invisible.SetCheck(friendly_stealth_invisible); m_nav_carry.SetCheck(nav_carry); m_nav_needslink.SetCheck(nav_needslink); m_hide_ship_name.SetCheck(hide_ship_name); m_disable_ets.SetCheck(no_ets); m_cloaked.SetCheck(cloaked); m_scramble_messages.SetCheck(scramble_messages); m_no_collide.SetCheck(no_collide); m_no_disabled_self_destruct.SetCheck(no_disabled_self_destruct); m_kdamage.setup(IDC_KDAMAGE, this); m_destroy_value.setup(IDC_DESTROY_VALUE, this); m_escort_value.setup(IDC_ESCORT_PRIORITY, this); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.setup(IDC_RESPAWN_PRIORITY, this); } m_destroy_spin.SetRange(0, UD_MAXVAL); m_destroy_value.display(); m_kdamage.display(); m_escort_value.display(); if(The_mission.game_type & MISSION_TYPE_MULTI) { m_respawn_priority.display(); } else { GetDlgItem(IDC_RESPAWN_PRIORITY)->EnableWindow(FALSE); } // flags that enable/disable according to whether this isn't a player GetDlgItem(IDC_REINFORCEMENT)->EnableWindow(p_enable && !ship_in_wing); GetDlgItem(IDC_CARGO_KNOWN)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_CHECK)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(p_enable); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(p_enable); GetDlgItem(IDC_SCANNABLE)->EnableWindow(p_enable); // disable the spinner and edit window if the corrsponding check box // is not checked! if (m_destroy.GetCheck() != 1) { GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(FALSE); } // disable destroy option for ship in wing if (ship_in_wing) { GetDlgItem(IDC_DESTROY_CHECK)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_VALUE)->EnableWindow(FALSE); GetDlgItem(IDC_DESTROY_SPIN)->EnableWindow(FALSE); } // maybe disable escort priority window if (m_escort.GetCheck() == 1) GetDlgItem(IDC_ESCORT_PRIORITY)->EnableWindow(TRUE); else GetDlgItem(IDC_ESCORT_PRIORITY)->EnableWindow(FALSE); // maybe disable kamikaze damage window if (m_kamikaze.GetCheck() == 1) GetDlgItem(IDC_KDAMAGE)->EnableWindow(TRUE); else GetDlgItem(IDC_KDAMAGE)->EnableWindow(FALSE); return TRUE; }