void campaign_tree_view::free_links() { int i; for (i=0; i<Total_links; i++) { sexp_unmark_persistent(Links[i].sexp); free_sexp2(Links[i].sexp); } Total_links = 0; }
void campaign_tree_view::delete_link(int num) { Assert((num >= 0) && (num < Total_links)); if (Links[num].from != Links[num].to) { Elements[Links[num].from].from_links--; Elements[Links[num].to].to_links--; } sexp_unmark_persistent(Links[num].sexp); free_sexp2(Links[num].sexp); while (num < Total_links - 1) { Links[num] = Links[num + 1]; num++; } Total_links--; sort_links(); Invalidate(); Campaign_modified = 1; return; }
void campaign_editor::save_tree(int clear) { int i; if (m_last_mission < 0){ return; // nothing to save } for (i=0; i<Total_links; i++){ if (Links[i].from == m_last_mission) { sexp_unmark_persistent(Links[i].sexp); free_sexp2(Links[i].sexp); Links[i].sexp = m_tree.save_tree(Links[i].node); sexp_mark_persistent(Links[i].sexp); } } if (clear){ m_last_mission = -1; } }