16 #include "InitialStatus.h"
17 #include "Management.h"
24 static char THIS_FILE[] = __FILE__;
58 dockpoint_array = NULL;
61 cur_docker_point = -1;
63 cur_dockee_point = -1;
70 if (dockpoint_array != NULL)
71 delete [] dockpoint_array;
78 CDialog::DoDataExchange(pDX);
86 DDV_MinMaxInt(pDX,
m_damage, 0, 100);
99 if (pDX->m_bSaveAndValidate) {
114 GetDlgItem(
IDC_HULL)->GetWindowText(str);
125 ON_LBN_SELCHANGE(
IDC_SUBSYS, OnSelchangeSubsys)
127 ON_CBN_SELCHANGE(
IDC_DOCKEE, OnSelchangeDockee)
145 int z, vflag, sflag, hflag;
163 for (
int i = 0;
i < num_dock_points;
i++)
166 if (docked_objp != NULL)
168 dockpoint_array[
i].dockee_shipnum = docked_objp->
instance;
173 dockpoint_array[
i].dockee_shipnum = -1;
174 dockpoint_array[
i].dockee_point = -1;
179 vflag = sflag = hflag = 0;
199 m_weapons_locked = 1;
201 m_weapons_locked = 0;
205 m_primaries_locked = 1;
208 m_primaries_locked = 0;
213 m_secondaries_locked = 1;
216 m_secondaries_locked = 0;
221 m_turrets_locked = 1;
224 m_turrets_locked = 0;
228 m_afterburner_locked = 1;
231 m_afterburner_locked = 0;
246 if (objp->
flags & OF_NO_SHIELDS) {
258 if (!m_force_shields)
276 if (!m_weapons_locked)
277 m_weapons_locked = 2;
280 if (m_weapons_locked)
281 m_weapons_locked = 2;
285 if (!m_primaries_locked)
286 m_primaries_locked = 2;
289 if (m_primaries_locked)
290 m_primaries_locked = 2;
294 if (!m_secondaries_locked)
295 m_secondaries_locked = 2;
298 if (m_secondaries_locked)
299 m_secondaries_locked = 2;
303 if (!m_turrets_locked)
304 m_turrets_locked = 2;
307 if (m_turrets_locked)
308 m_turrets_locked = 2;
312 if (!m_afterburner_locked)
313 m_afterburner_locked = 2;
316 if (m_afterburner_locked)
317 m_afterburner_locked = 2;
325 CDialog::OnInitDialog();
326 str.Format(
"%d", m_velocity);
328 str.Format(
"%d", m_shields);
330 str.Format(
"%d", m_hull);
331 GetDlgItem(
IDC_HULL)->SetWindowText(str);
338 m_velocity_spin.SetRange(0, 100);
339 m_hull_spin.SetRange(0, 100);
340 m_shields_spin.SetRange(0, 100);
341 m_damage_spin.SetRange(0, 100);
344 lstDockerPoints = (CListBox *) GetDlgItem(IDC_DOCKER_POINT);
345 cboDockees = (CComboBox *) GetDlgItem(IDC_DOCKEE);
346 cboDockeePoints = (CComboBox *) GetDlgItem(IDC_DOCKEE_POINT);
347 lstDockerPoints->ResetContent();
348 cboDockees->ResetContent();
349 cboDockeePoints->ResetContent();
353 for (
int dockpoint = 0; dockpoint < num_dock_points; dockpoint++)
356 lstDockerPoints->SetItemData(z, dockpoint);
366 GetDlgItem(IDC_SUBSYS)->EnableWindow(FALSE);
369 change_docker_point(
false);
379 GetDlgItem(
IDC_HULL)->SetWindowText(
"");
388 int t = m_team_color_setting.AddString(
"None");
389 m_team_color_setting.SetItemData(t, i);
393 int z = m_team_color_setting.AddString(tni->c_str());
395 m_team_color_setting.SetCurSel(i);
397 m_team_color_setting.SetItemData(z, i);
401 m_team_color_setting.EnableWindow();
403 m_team_color_setting.EnableWindow(FALSE);
414 int vflag = 0, sflag = 0, hflag = 0;
419 if (GetDlgItem(
IDC_SHIELDS)->GetWindowText(buf, 255))
421 if (GetDlgItem(
IDC_HULL)->GetWindowText(buf, 255))
545 update_docking_info();
562 MessageBox(
"At least one selected ship was set to Force Shields On. This is now turned off for all selected ships",
"Resetting Flag",
MB_OK |
MB_ICONEXCLAMATION);
590 MessageBox(
"At least one selected ship was set to have no shields. Shields are now enabled for all selected ships",
"Resetting Flag",
MB_OK |
MB_ICONEXCLAMATION);
628 int ship_has_scannable_subsystems;
634 ship_has_scannable_subsystems = !ship_has_scannable_subsystems;
636 if (cur_subsys != LB_ERR) {
638 while (cur_subsys--) {
648 if (cargo_index == -1) {
662 cur_subsys = z = ((CListBox *) GetDlgItem(
IDC_SUBSYS)) -> GetCurSel();
675 enable_cargo_name =
TRUE;
687 GetDlgItem(
IDC_DAMAGE) -> EnableWindow(enable);
689 GetDlgItem(
IDC_CARGO_NAME)->EnableWindow(enable && enable_cargo_name);
705 sel = lstDockerPoints->GetCurSel();
707 cur_docker_point = lstDockerPoints->GetItemData(sel);
709 cur_docker_point = -1;
712 if (cur_docker_point < 0)
716 list_dockee_points(-1);
724 if (dockpoint_array[cur_docker_point].dockee_shipnum >= 0)
727 cboDockees->SelectString(-1,
Ships[dockpoint_array[cur_docker_point].dockee_shipnum].ship_name);
733 cboDockees->SetCurSel(0);
755 sel = cboDockees->GetCurSel();
757 cur_dockee = cboDockees->GetItemData(sel);
772 list_dockee_points(-1);
777 list_dockee_points(cur_dockee);
780 if (dockpoint_array[cur_docker_point].
dockee_point >= 0)
787 else if (cboDockeePoints->GetCount() == 0)
789 cboDockeePoints->EnableWindow(
FALSE);
795 cboDockeePoints->SetCurSel(0);
817 sel = cboDockeePoints->GetCurSel();
819 cur_dockee_point = cboDockeePoints->GetItemData(sel);
821 cur_dockee_point = -1;
826 dockpoint_array[cur_docker_point].
dockee_point = cur_dockee_point;
833 void initial_status::list_dockees(
int dock_types)
838 cboDockees->EnableWindow((dock_types >= 0) ?
TRUE :
FALSE);
841 cboDockees->ResetContent();
850 z = cboDockees->AddString(
"Nothing");
851 cboDockees->SetItemData(z, static_cast<DWORD_PTR>(-1));
865 bool docked_elsewhere =
false;
866 for (
int i = 0;
i < num_dock_points;
i++)
869 if (
i == cur_docker_point)
873 if (dockpoint_array[
i].dockee_shipnum == ship)
875 docked_elsewhere =
true;
880 if (docked_elsewhere)
892 z = cboDockees->AddString(
Ships[ship].ship_name);
893 cboDockees->SetItemData(z, ship);
898 void initial_status::list_dockee_points(
int shipnum)
902 ship *other_shipp = &
Ships[shipnum];
905 cboDockeePoints->EnableWindow((shipnum >= 0) ?
TRUE : FALSE);
908 cboDockeePoints->ResetContent();
922 if ((docked_objp != NULL) && (docked_objp != &
Objects[shipp->
objnum]))
931 cboDockeePoints->SetItemData(z,
i);
935 void initial_status::update_docking_info()
941 for (i = 0; i < num_dock_points; i++)
945 if (dockee_objp != NULL)
950 undock(objp, dockee_objp);
956 for (i = 0; i < num_dock_points; i++)
959 if (dockpoint_array[i].dockee_shipnum >= 0)
967 dock(objp, i, dockee_objp, dockee_point);
977 if (objp == NULL || other_objp == NULL)
980 if (dockpoint < 0 || other_dockpoint < 0)
1005 int ship_num, other_ship_num;
1007 if (objp1 == NULL || objp2 == NULL)
1015 if (
ship_class_compare(Ships[ship_num].ship_info_index, Ships[other_ship_num].ship_info_index) <= 0)
1028 if ( Ships[ship_num].arrival_cue ==
Locked_sexp_false && Ships[ship_num].wingnum < 0 ) {
1030 }
else if ( Ships[other_ship_num].arrival_cue ==
Locked_sexp_false && Ships[other_ship_num].wingnum < 0 ) {
1072 ship *shipp = &Ships[shipnum];
1077 sprintf(buf,
"Setting arrival cue of ship %s\nto false for initial docking purposes.", shipp->
ship_name);
1082 if (reset_wing && shipp->
wingnum >= 0)
1089 sprintf(buf,
"Setting arrival cue of wing %s\nto false for initial docking purposes.", wingp->
name);
1102 ship *shipp = &Ships[objp->
instance];
1119 object *existing_leader;
1126 if (existing_leader != NULL)
1128 ship *leader_shipp = &Ships[existing_leader->
instance];
#define SF2_TOGGLE_SUBSYSTEM_SCANNING
#define SF2_WEAPONS_LOCKED
#define IDC_PRIMARIES_LOCKED
model_subsystem * system_info
afx_msg void OnSecondariesLocked()
CShipEditorDlg Ship_editor_dialog
#define IDC_VELOCITY_SPIN
char * model_get_dock_name(int modelnum, int index)
int model_get_dock_index_type(int modelnum, int index)
#define SF2_FORCE_SHIELDS_ON
void dock(object *objp1, int dockpoint1, object *objp2, int dockpoint2)
afx_msg void OnTurretsLocked()
int update_data(int redraw=1)
#define IDC_TURRETS_LOCKED
object * dock_find_object_at_dockpoint(object *objp, int dockpoint)
#define SHIP_INDEX(shipp)
int dock_find_dockpoint_used_by_object(object *objp, object *other_objp)
#define END_OF_LIST(head)
void vm_vec_scale_add2(vec3d *dest, const vec3d *src, float k)
int model_get_num_dock_points(int modelnum)
char dockee_point[NAME_LENGTH]
void dock_move_docked_objects(object *objp)
GLenum GLuint GLenum GLsizei const GLchar * buf
void change_docker_point(bool store_selection)
int valid_cap_subsys_cargo_list(char *subsys)
#define IDC_WEAPONS_LOCKED
int object_is_docked(object *objp)
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
afx_msg void OnAfterburnersLocked()
int update_data(int redraw=1)
void reset_arrival_to_false(int shipnum, bool reset_wing)
afx_msg void OnForceShields()
void ai_dock_with_object(object *docker, int docker_index, object *dockee, int dockee_index, int dock_type)
CSpinButtonCtrl m_velocity_spin
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
#define IDC_FORCE_SHIELDS
CSpinButtonCtrl m_damage_spin
void initialize_data(int full)
void initial_status_mark_dock_leader_helper(object *objp, dock_function_info *infop)
void undock(object *objp1, object *objp2)
int ship_class_compare(int ship_class_1, int ship_class_2)
afx_msg void OnShipLocked()
object Objects[MAX_OBJECTS]
int model_get_dock_types(int modelnum)
wing_editor Wing_editor_dialog
void set_modified(BOOL arg)
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
#define SF2_PRIMARIES_LOCKED
int string_lookup(const CString &str1, char *strlist[], int max)
afx_msg void OnSelchangeDockerPoint()
virtual void DoDataExchange(CDataExchange *pDX)
#define MB_ICONEXCLAMATION
afx_msg void OnHasShields()
afx_msg void OnWeaponsLocked()
int ship_docking_valid(int docker, int dockee)
#define IDC_SECONDARIES_LOCKED
SCP_vector< SCP_string > Team_Names
#define SF2_LOCK_ALL_TURRETS_INITIALLY
struct dock_function_info::@258 maintained_variables
char subobj_name[MAX_NAME_LEN]
void dock_evaluate_all_docked_objects(object *objp, dock_function_info *infop, void(*function)(object *, dock_function_info *))
afx_msg void OnPrimariesLocked()
SCP_vector< ship_info > Ship_info
void ai_do_objects_undocked_stuff(object *docker, object *dockee)
int MessageBox(HWND h, const char *s1, const char *s2, int i)
#define SF2_AFTERBURNER_LOCKED
SCP_vector< float > shield_quadrant
CSpinButtonCtrl m_shields_spin
bool set_cue_to_false(int *cue)
void change_dockee_point(bool store_selection)
afx_msg void OnSelchangeDockeePoint()
int ship_index[MAX_SHIPS_PER_WING]
afx_msg void OnSelchangeSubsys()
void change_dockee(bool store_selection)
int get_ship_from_obj(int obj)
void initial_status_unmark_dock_handled_flag(object *objp, dock_function_info *infop)
#define IDC_AFTERBURNER_LOCKED
#define SF2_SECONDARIES_LOCKED
CComboBox m_team_color_setting
afx_msg void OnSelchangeDockee()
char ship_name[NAME_LENGTH]
CSpinButtonCtrl m_hull_spin
#define OF_DOCKED_ALREADY_HANDLED
initial_status(CWnd *pParent=NULL)
float vm_vec_normalize(vec3d *v)
void initialize_data(int full)