void campaign_editor::update() { char buf[MISSION_DESC_LENGTH]; // get data from dlog box UpdateData(TRUE); // update campaign name string_copy(Campaign.name, m_name, NAME_LENGTH); Campaign.type = m_type; // update campaign desc deconvert_multiline_string(buf, m_desc, MISSION_DESC_LENGTH); if (Campaign.desc) { free(Campaign.desc); } Campaign.desc = NULL; if (strlen(buf)) { Campaign.desc = strdup(buf); } // update flags Campaign.flags = CF_DEFAULT_VALUE; if (m_custom_tech_db) Campaign.flags |= CF_CUSTOM_TECH_DATABASE; // maybe update mission loop text save_loop_desc_window(); // set the number of players in a multiplayer mission equal to the number of players in the first mission if ( Campaign.type != CAMPAIGN_TYPE_SINGLE ) { if ( Campaign.num_missions == 0 ) { Campaign.num_players = 0; } else { mission a_mission; get_mission_info(Campaign.missions[0].name, &a_mission); Campaign.num_players = a_mission.num_players; } } }
void campaign_editor::OnSelchangedSexpTree(NMHDR* pNMHDR, LRESULT* pResult) { int i, node; HTREEITEM h, h2; // get handle of selected item NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; h = pNMTreeView->itemNew.hItem; Assert(h); // update help on sexp m_tree.update_help(h); // get handle of parent while ((h2 = m_tree.GetParentItem(h))>0){ h = h2; } // get identifier of parent node = m_tree.GetItemData(h); for (i=0; i<Total_links; i++){ if ((Links[i].from == Cur_campaign_mission) && (Links[i].node == node)){ break; } } if (i == Total_links) { Cur_campaign_link = -1; return; } // update mission loop text UpdateData(TRUE); save_loop_desc_window(); Cur_campaign_link = i; update_loop_desc_window(); Campaign_tree_viewp->Invalidate(); *pResult = 0; }