void asteroid_editor::OnOK() { int i; update_init(); if (!validate_data()) { return; } for (i=0; i<1 /*MAX_ASTEROID_FIELDS*/; i++) Asteroid_field = a_field[i]; update_map_window(); theApp.record_window_data(&Asteroid_wnd_data, this); CDialog::OnOK(); }
void briefing_editor_dlg::create() { int i; CComboBox *box; CDialog::Create(IDD); theApp.init_window(&Briefing_wnd_data, this); box = (CComboBox *) GetDlgItem(IDC_ICON_IMAGE); for (i=0; i<MAX_BRIEF_ICONS; i++) box->AddString(Icon_names[i]); box = (CComboBox *) GetDlgItem(IDC_TEAM); for (i=0; i<Num_team_names; i++) box->AddString(Iff_info[i].iff_name); box = (CComboBox *) GetDlgItem(IDC_SHIP_TYPE); for (i=0; i<Num_ship_classes; i++) box->AddString(Ship_info[i].name); box = (CComboBox *) GetDlgItem(IDC_BRIEFING_MUSIC); box->AddString("None"); for (i=0; i<Num_music_files; i++) box->AddString(Spooled_music[i].name); box = (CComboBox *) GetDlgItem(IDC_SUBSTITUTE_BRIEFING_MUSIC); box->AddString("None"); for (i=0; i<Num_music_files; i++) box->AddString(Spooled_music[i].name); m_play_bm.LoadBitmap(IDB_PLAY); ((CButton *) GetDlgItem(IDC_PLAY)) -> SetBitmap(m_play_bm); m_current_briefing = 0; Briefing = &Briefings[m_current_briefing]; m_briefing_music = Mission_music[SCORE_BRIEFING] + 1; m_substitute_briefing_music = The_mission.substitute_briefing_music_name; UpdateData(FALSE); update_data(); OnGotoView(); update_map_window(); }
void initial_status::update_docking_info() { int i; object *objp = &Objects[Ships[m_ship].objnum]; // remove old info for (i = 0; i < num_dock_points; i++) { // see if the object at this point is no longer there object *dockee_objp = dock_find_object_at_dockpoint(objp, i); if (dockee_objp != NULL) { // check if the dockee ship thinks that this ship is docked to this dock point if (objp != dock_find_object_at_dockpoint(dockee_objp, dockpoint_array[i].dockee_point) ) { // undock it undock(objp, dockee_objp); } } } // add new info for (i = 0; i < num_dock_points; i++) { // see if there is an object at this point that wasn't there before if (dockpoint_array[i].dockee_shipnum >= 0) { if (dock_find_object_at_dockpoint(objp, i) == NULL) { object *dockee_objp = &Objects[Ships[dockpoint_array[i].dockee_shipnum].objnum]; int dockee_point = dockpoint_array[i].dockee_point; // dock it dock(objp, i, dockee_objp, dockee_point); } } } update_map_window(); }
// update wing structure(s) with dialog data. The data is first checked for errors. If // no errors occur, returns 0. If an error occurs, returns -1. If the update is bypassed, // returns 1. Bypass is necessary to avoid an infinite loop, and it doesn't actually // update the data. Bypass only occurs if bypass mode is active and we still get an error. // Once the error no longer occurs, bypass mode is cleared and data is updated. int wing_editor::update_data(int redraw) { char *str, old_name[255], buf[512]; int i, z; object *ptr; nprintf(("Fred routing", "Wing dialog save\n")); if (!GetSafeHwnd()) return 0; UpdateData(TRUE); UpdateData(TRUE); if (cur_wing >= 0) { if (!strnicmp(m_wing_name, "player ", 7)) { if (bypass_errors) return 1; bypass_errors = 1; z = MessageBox("Wing names can't start with the word 'player'\n" "Press OK to restore old name", "Error", MB_ICONEXCLAMATION | MB_OKCANCEL); if (z == IDCANCEL) return -1; m_wing_name = _T(Wings[cur_wing].name); UpdateData(FALSE); } for (i=0; i<MAX_WINGS; i++) if (Wings[i].wave_count && !stricmp(Wings[i].name, m_wing_name) && (i != cur_wing)) { if (bypass_errors) return 1; bypass_errors = 1; z = MessageBox("This wing name is already being used by another wing\n" "Press OK to restore old name", "Error", MB_ICONEXCLAMATION | MB_OKCANCEL); if (z == IDCANCEL) return -1; m_wing_name = _T(Wings[cur_wing].name); UpdateData(FALSE); } ptr = GET_FIRST(&obj_used_list); while (ptr != END_OF_LIST(&obj_used_list)) { if (ptr->type == OBJ_SHIP) { if (!stricmp(m_wing_name, Ships[ptr->instance].ship_name)) { if (bypass_errors) return 1; bypass_errors = 1; z = MessageBox("This wing name is already being used by a ship\n" "Press OK to restore old name", "Error", MB_ICONEXCLAMATION | MB_OKCANCEL); if (z == IDCANCEL) return -1; m_wing_name = _T(Wings[cur_wing].name); UpdateData(FALSE); } } ptr = GET_NEXT(ptr); } for (i=0; i<MAX_WAYPOINT_LISTS; i++) if (Waypoint_lists[i].count && !stricmp(Waypoint_lists[i].name, m_wing_name)) { if (bypass_errors) return 1; bypass_errors = 1; z = MessageBox("This wing name is already being used by a waypoint path\n" "Press OK to restore old name", "Error", MB_ICONEXCLAMATION | MB_OKCANCEL); if (z == IDCANCEL) return -1; m_wing_name = _T(Wings[cur_wing].name); UpdateData(FALSE); } for (i=0; i<Num_jump_nodes; i++) if (!stricmp(Jump_nodes[i].name, m_wing_name)) { if (bypass_errors) return 1; bypass_errors = 1; z = MessageBox("This wing name is already being used by a hyper buoy\n" "Press OK to restore old name", "Error", MB_ICONEXCLAMATION | MB_OKCANCEL); if (z == IDCANCEL) return -1; m_wing_name = _T(Wings[cur_wing].name); UpdateData(FALSE); } strcpy(old_name, Wings[cur_wing].name); string_copy(Wings[cur_wing].name, m_wing_name, NAME_LENGTH, 1); update_data_safe(); bypass_errors = 0; modified = 0; str = Wings[cur_wing].name; if (stricmp(old_name, str)) { update_sexp_references(old_name, str); ai_update_goal_references(REF_TYPE_WING, old_name, str); for (i=0; i<Num_reinforcements; i++) if (!stricmp(old_name, Reinforcements[i].name)) { Assert(strlen(str) < NAME_LENGTH); strcpy(Reinforcements[i].name, str); } for (i=0; i<Wings[cur_wing].wave_count; i++) { if ((Objects[wing_objects[cur_wing][i]].type == OBJ_SHIP) || (Objects[wing_objects[cur_wing][i]].type == OBJ_START)) { sprintf(buf, "%s %d", str, i + 1); rename_ship(Wings[cur_wing].ship_index[i], buf); } } Update_window = 1; } if (set_reinforcement(str, m_reinforcement) == 1) { free_sexp2(Wings[cur_wing].arrival_cue); Wings[cur_wing].arrival_cue = Locked_sexp_false; } } if (redraw) update_map_window(); return 0; }