void AltShipClassDlg::OnAltClassAdd() { alt_class new_list_item; alt_class_update_entry(new_list_item); alt_class_pool.push_back(new_list_item); alt_class_list_rebuild(); }
void AltShipClassDlg::OnAltClassDelete() { int index = m_alt_class_list.GetCurSel(); // Nothing selected if (index == -1) { return; } Assert(index < (int) alt_class_pool.size()); alt_class_pool.erase(alt_class_pool.begin() + index); alt_class_list_rebuild(); }
void AltShipClassDlg::OnMoveUp() { int index = m_alt_class_list.GetCurSel(); // Nothing selected or already at the top if (index < 1) { return; } std::swap(alt_class_pool[index], alt_class_pool[index-1]); alt_class_list_rebuild(); m_alt_class_list.SetCurSel(index-1); }
void AltShipClassDlg::OnMoveDown() { int index = m_alt_class_list.GetCurSel(); // Nothing selected or already at the bottom if (index == -1 || (index >= m_alt_class_list.GetCount() - 1) ) { return; } std::swap(alt_class_pool[index], alt_class_pool[index++]); alt_class_list_rebuild(); m_alt_class_list.SetCurSel(index); }
void AltShipClassDlg::OnSelendokSetFromVariables() { int current_selection; if (m_set_from_variables.GetCurSel() == 0) { m_set_from_ship_class.SetCurSel(num_string_variables ? 1 : 0); } else { m_set_from_ship_class.SetCurSel(0); } // if a list entry is selected we should update it current_selection = m_alt_class_list.GetCurSel(); if (current_selection >= 0) { alt_class_update_entry(alt_class_pool[m_alt_class_list.GetCurSel()]); alt_class_list_rebuild(); } }
void AltShipClassDlg::OnAltClassInsert() { int index; alt_class new_list_item; alt_class_update_entry(new_list_item); index = m_alt_class_list.GetCurSel(); // If nothing is selected just add it if (index == -1) { alt_class_pool.push_back(new_list_item); } // Stick it in front of the current selection else { alt_class_pool.insert(alt_class_pool.begin() + index, new_list_item); } alt_class_list_rebuild(); // If we inserted the user will probably want to edit the selection if (index > -1) { m_alt_class_list.SetCurSel(index); } }
BOOL AltShipClassDlg::OnInitDialog() { int i, count; char buff[TOKEN_LENGTH + TOKEN_LENGTH + 2]; // VariableName[VariableValue] CDialog::OnInitDialog(); // have we got multiple selected ships? num_selected_ships = 0; object *objp; 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) { m_selected_ships[num_selected_ships++] = objp->instance; } } objp = GET_NEXT(objp); } Assert (num_selected_ships > 0); Assert (Objects[cur_object_index].flags & OF_MARKED); if (num_selected_ships > 1) { multi_edit = true; } // Fill the variable combo box m_set_from_variables.ResetContent(); m_set_from_variables.AddString("Set From Ship Class"); for (i=0; i < MAX_SEXP_VARIABLES; i++) { if (Sexp_variables[i].type & SEXP_VARIABLE_STRING) { sprintf(buff, "%s[%s]", Sexp_variables[i].variable_name, Sexp_variables[i].text); m_set_from_variables.AddString(buff); string_variable_indices[num_string_variables++] = i; } } m_set_from_variables.SetCurSel(0); if (!num_string_variables) { m_set_from_variables.EnableWindow(FALSE); } // Fill the ship classes combo box m_set_from_ship_class.ResetContent(); // Add the default entry if we need one followed by all the ship classes if (num_string_variables) { m_set_from_ship_class.AddString("Set From Variable"); } count = 0; for (i=0; i<Num_ship_classes; i++) { if (player_ships_only && !(Ship_info[i].flags & SIF_PLAYER_SHIP)) { continue; } ship_class_indices[count++] = i; m_set_from_ship_class.AddString(Ship_info[i].name); } m_set_from_ship_class.SetCurSel(num_string_variables?1:0); // Set to the first ship class // Set up the actual list of alt classes alt_class_pool.clear(); alt_class_pool = Ships[Objects[cur_object_index].instance].s_alt_classes; alt_class_list_rebuild(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }