13 #include "Sexp_tree.h" 
   16 #include "Management.h" 
   18 #include "OperatorArgTypeSelect.h" 
   20 #include "EventEditor.h" 
   21 #include "MissionGoalsDlg.h" 
   25 #include "CampaignEditorDlg.h" 
   27 #include "IgnoreOrdersDlg.h" 
   35 #include "AddVariableDlg.h" 
   36 #include "ModifyVariableDlg.h" 
   51 #define TREE_NODE_INCREMENT     100 
   53 #define MAX_OP_MENUS    30 
   54 #define MAX_SUBMENUS    (MAX_OP_MENUS * MAX_OP_MENUS) 
   56 #define ID_VARIABLE_MENU        0xda00 
   57 #define ID_ADD_MENU                     0xdc00 
   58 #define ID_REPLACE_MENU         0xde00 
   63 static char THIS_FILE[] = __FILE__;
 
   70         ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag)
 
   75         ON_NOTIFY_REFLECT(TVN_KEYDOWN, OnKeydown)
 
   79 static 
int Add_count, Replace_count;
 
   80 static 
int Modify_variable;
 
   89         select_sexp_node = -1;
 
   93         m_p_image_list = NULL;
 
  101         mprintf((
"Resetting dynamic tree node limit from %d to %d...\n", 
tree_nodes.size(), 0));
 
  159         Assert(sexp_var_index > -1);
 
  171         while (index != -1) {
 
  251         int var_name_length = strcspn(text, 
"(");
 
  254         strncpy(var_name, text, var_name_length);
 
  255         var_name[var_name_length] = 
'\0';
 
  258 #define NO_PREVIOUS_NODE -9 
  270                         if ((
tree_nodes[cur].parent >= 0) && !at_root) {
 
  295                 } 
else if (last >= 0){
 
  339                 mprintf((
"Bumping dynamic tree node limit from %d to %d...\n", old_size, 
tree_nodes.size()));
 
  377                         while ((i != after) && (
tree_nodes[i].next != -1))
 
  454         Assert(strlen(text) < max_length);
 
  573         int i, j, 
z, 
count, op, add_type, replace_type, 
type, subcategory_id;
 
  577         POINT click_point, mouse;
 
  578         CMenu menu, *mptr, *popup_menu, *add_data_menu = NULL, *replace_data_menu = NULL;
 
  580         CMenu *replace_op_menu, replace_op_submenu[
MAX_OP_MENUS];
 
  582         CMenu *replace_variable_menu = NULL;
 
  593         GetCursorPos(&mouse);
 
  595         ScreenToClient(&click_point);
 
  596         h = HitTest(CPoint(click_point), &_flags);  
 
  600                 popup_menu = menu.GetSubMenu(0);
 
  601                 ASSERT(popup_menu != NULL);
 
  604                 add_op_menu = replace_op_menu = insert_op_menu = NULL;
 
  607                 i = popup_menu->GetMenuItemCount();
 
  609                         if ( (mptr = popup_menu->GetSubMenu(i)) > 0 ) {
 
  610                                 popup_menu->GetMenuString(i, buf, 
sizeof(buf), MF_BYPOSITION);
 
  612                                 if (!
stricmp(buf, 
"add operator")) {
 
  615                                 } 
else if (!
stricmp(buf, 
"replace operator")) {
 
  616                                         replace_op_menu = mptr;
 
  618                                 } 
else if (!
stricmp(buf, 
"add data")) {
 
  619                                         add_data_menu = mptr;
 
  621                                 } 
else if (!
stricmp(buf, 
"replace data")) {
 
  622                                         replace_data_menu = mptr;
 
  624                                 } 
else if (!
stricmp(buf, 
"insert operator")) {
 
  625                                         insert_op_menu = mptr;
 
  627                                 } 
else if (!
stricmp(buf, 
"replace variable")) {
 
  628                                         replace_variable_menu = mptr;
 
  636                         add_op_submenu[
i].CreatePopupMenu();
 
  637                         replace_op_submenu[
i].CreatePopupMenu();
 
  638                         insert_op_submenu[
i].CreatePopupMenu();
 
  640                         add_op_menu->AppendMenu(MF_POPUP, (
UINT) add_op_submenu[i].m_hMenu, 
op_menu[i].
name);
 
  641                         replace_op_menu->AppendMenu(MF_POPUP, (
UINT) replace_op_submenu[i].m_hMenu, 
op_menu[i].name);
 
  642                         insert_op_menu->AppendMenu(MF_POPUP, (
UINT) insert_op_submenu[i].m_hMenu, 
op_menu[i].name);
 
  691                                         int temp = first_arg;
 
  733                                                         Assert(max_sexp_vars < 512);
 
  735                                                         for (
int idx=0; 
idx<max_sexp_vars; 
idx++) {
 
  746                                                                         if ( type & SEXPT_STRING ) {
 
  751                                                                         if ( type & SEXPT_NUMBER ) {
 
  769                                                                         if (!( (
idx + 3) % 30)) {
 
  770                                                                                 flag |= MF_MENUBARBREAK;
 
  795                         add_op_subcategory_menu[
i].CreatePopupMenu();
 
  796                         replace_op_subcategory_menu[
i].CreatePopupMenu();
 
  797                         insert_op_subcategory_menu[
i].CreatePopupMenu();
 
  803                                         add_op_submenu[j].AppendMenu(MF_POPUP, (
UINT) add_op_subcategory_menu[i].m_hMenu, 
op_submenu[i].
name);
 
  804                                         replace_op_submenu[j].AppendMenu(MF_POPUP, (
UINT) replace_op_subcategory_menu[i].m_hMenu, 
op_submenu[i].name);
 
  805                                         insert_op_submenu[j].AppendMenu(MF_POPUP, (
UINT) insert_op_subcategory_menu[i].m_hMenu, 
op_submenu[i].name);
 
  816                         if (subcategory_id == -1)
 
  847                                                 if (j < Num_op_menus) {
 
  848                                                         add_op_submenu[j].AppendMenu(MF_STRING | MF_GRAYED, 
Operators[i].value, 
Operators[i].text);
 
  889                                                 if (j < Num_submenus) {
 
  890                                                         add_op_subcategory_menu[j].AppendMenu(MF_STRING | MF_GRAYED, 
Operators[i].value, 
Operators[i].text);
 
  918                         menu.EnableMenuItem(ID_EDIT_COPY, MF_GRAYED);
 
  924                         popup_menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, mouse.
x, mouse.
y, 
this);
 
  934                         menu.EnableMenuItem(
ID_DELETE, MF_GRAYED);  
 
  972                                                 if ( (data_idx + 3) % 30) {
 
  973                                                         add_data_menu->AppendMenu(MF_STRING | MF_ENABLED, 
ID_ADD_MENU + data_idx, ptr->
text);
 
  975                                                         add_data_menu->AppendMenu(MF_MENUBARBREAK | MF_STRING | MF_ENABLED, 
ID_ADD_MENU + data_idx, ptr->
text);
 
 1038                                 menu.EnableMenuItem(
ID_DELETE, MF_GRAYED);
 
 1043                         int temp = first_arg;
 
 1055                         for (i=Replace_count+1; i<
count; i++) {
 
 1057                                         menu.EnableMenuItem(
ID_DELETE, MF_GRAYED);
 
 1082                                                 if ( (data_idx + 3) % 30)
 
 1083                                                         replace_data_menu->AppendMenu(MF_STRING | MF_ENABLED, 
ID_REPLACE_MENU + data_idx, ptr->
text);
 
 1085                                                         replace_data_menu->AppendMenu(MF_MENUBARBREAK | MF_STRING | MF_ENABLED, 
ID_REPLACE_MENU + data_idx, ptr->
text);
 
 1141                                 if (Replace_count == 0) {
 
 1263                                 if (replace_type == z)
 
 1264                                         menu.EnableMenuItem(ID_EDIT_PASTE, MF_ENABLED);
 
 1271                                         menu.EnableMenuItem(ID_EDIT_PASTE_SPECIAL, MF_ENABLED);
 
 1275                                         menu.EnableMenuItem(ID_EDIT_PASTE, MF_ENABLED);
 
 1278                                         menu.EnableMenuItem(ID_EDIT_PASTE, MF_ENABLED);
 
 1281                                         menu.EnableMenuItem(ID_EDIT_PASTE_SPECIAL, MF_ENABLED);
 
 1284                                         menu.EnableMenuItem(ID_EDIT_PASTE_SPECIAL, MF_ENABLED);
 
 1288                                         menu.EnableMenuItem(ID_EDIT_PASTE, MF_ENABLED);
 
 1291                                         menu.EnableMenuItem(ID_EDIT_PASTE_SPECIAL, MF_ENABLED);
 
 1297                 if (!(menu.GetMenuState(
ID_DELETE, MF_BYCOMMAND) & MF_GRAYED))
 
 1298                         menu.EnableMenuItem(ID_EDIT_CUT, MF_ENABLED);
 
 1301                 popup_menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, mouse.
x, mouse.
y, 
this);
 
 1311         while (node != -1) {
 
 1326         while (node != -1) {
 
 1406         Assert(parent_node >= 0);
 
 1414         HTREEITEM 
h = item.hItem; 
 
 1415         char *str = item.pszText;
 
 1417         bool update_node = 
true; 
 
 1454                         update_node = 
false;
 
 1462                         int val = atoi(str); 
 
 1465                                 update_node = 
false; 
 
 1503         int z, 
i, op, arg_num, opf, opr;
 
 1504         const char *sub_best = NULL, *best = NULL;
 
 1566         id = LOWORD(wParam);
 
 1620                         Assert(sexp_var_index != -1);
 
 1639                         Assert(sexp_var_index != -1);
 
 1695                 if (Modify_variable) {
 
 1706                         if (type & SEXPT_NUMBER) {
 
 1710                         if (type & SEXPT_STRING) {
 
 1799                                         SetItemData(h, node);
 
 1804                                         SetItemData(h, node);
 
 1808                                         SetItemData(h, node);
 
 1890                 case ID_EDIT_PASTE_SPECIAL:  
 
 1983                         int parent, theNode;
 
 2032         return CTreeCtrl::OnCommand(wParam, lParam);
 
 2038         int i, op_index, op2;
 
 2181                         free((
void *) ptr->
text);
 
 2223                                 Assert(sexp_var_index != -1);
 
 2243                                 Assert(sexp_var_index != -1);
 
 2347                                 sprintf(sexp_str_token, 
"%d", temp);
 
 2369                                 sprintf(sexp_str_token, 
"%d", temp);
 
 2390                                 sprintf(sexp_str_token, 
"%d", temp);
 
 2398                                 if (i==4) temp = 100;
 
 2400                                 sprintf(sexp_str_token, 
"%d", temp);
 
 2428                         int sound_index = -1;
 
 2439                         if (sound_index >= 0)
 
 2465                         free((
void *) first_ptr->
text);
 
 2476                 strcpy(text_buf, list->
text);
 
 2477                 item->
text = text_buf;
 
 2495                         str = 
"<name of ship here>";
 
 2499                         str = 
"<all fighters>";
 
 2509                         str = 
"<name of wing here>";
 
 2513                         str = 
"<docker point>";
 
 2517                         str = 
"<dockee point>";
 
 2524                         str = 
"<name of subsystem>";
 
 2541                         str = 
"<any wingman>";
 
 2545                         str = 
"<waypoint path>";
 
 2549                         str = 
"<mission name>";
 
 2553                         str = 
"<goal name>";
 
 2557                         str = 
"<ship type here>";
 
 2561                         str = 
"<event name>";
 
 2565                         str = 
"<huge weapon type>";
 
 2569                         str = 
"<Jump node name>";
 
 2581                         str = 
"<persona name>";
 
 2593                         str = 
"<Effect Name>";
 
 2601                         str = 
"<new default required!>";
 
 2729                                 if (
Wings[j].wave_count)
 
 2800                         return (
Ssm_info.size() > 0) ? 1 : 0;
 
 2831                 SetItem(h, TVIF_TEXT, 
tree_nodes[node].text, 0, 0, 0, 0, 0);
 
 2836                 Expand(h, TVE_EXPAND);
 
 2843         Expand(h, TVE_EXPAND);
 
 2844         h = GetChildItem(h);
 
 2847                 h = GetNextSiblingItem(h);
 
 3132         sprintf(text, 
"%s\n\nContinue checking for more errors?", msg);
 
 3167         start = strstr(text, 
"(");
 
 3172         len = strlen(start);
 
 3173         strncpy(default_text, start, len-1);
 
 3176         default_text[len-1] = 
'\0';
 
 3182         length = strcspn(text, 
"(");
 
 3184         strncpy(var_name, text, length);
 
 3190         int sexp_var_index = -1;
 
 3200                 Assert(sexp_var_index >= 0);
 
 3204                         sexp_var_index = atoi(node_text);
 
 3205                         Assert(sexp_var_index >= 0);
 
 3207                 else if (strchr(node_text, 
'(') && strchr(node_text, 
')')) {
 
 3231         int op, arg_num, 
type, tmp;
 
 3232         static int flag = 0;
 
 3234         bool is_variable_arg = 
false; 
 
 3253                         is_variable_arg = 
true;
 
 3258                         if (!list && (arg_num >= 
Operators[op].min)) {
 
 3283                                                 text_ptr = default_variable_text;
 
 3288                                                 bool types_match = 
false; 
 
 3289                                                 Assert(sexp_var_index != -1);
 
 3314                                                         text_ptr = default_variable_text;
 
 3324                                         if (ptr->
text != NULL) {
 
 3338                                         if (list->
op >= 0) {
 
 3346                                 bool invalid = 
false;
 
 3406         while (ItemHasChildren(h))
 
 3407                 DeleteItem(GetChildItem(h));
 
 3410         SetItemText(h, data);
 
 3412         SetItemImage(h, bmap, bmap);
 
 3438         while (ItemHasChildren(h)) {
 
 3439                 DeleteItem(GetChildItem(h));
 
 3446         SetItemText(h, buf);
 
 3470         while (ItemHasChildren(h))
 
 3471                 DeleteItem(GetChildItem(h));
 
 3556         HTREEITEM 
h = 0, child, next;
 
 3564                         GetItemImage(source, image1, image2);
 
 3565                         h = 
insert(GetItemText(source), image1, image2, parent, after);
 
 3569                         GetItemImage(source, image1, image2);
 
 3570                         h = 
insert(GetItemText(source), image1, image2, parent, after);
 
 3573                 SetItemData(h, GetItemData(source));
 
 3574                 child = GetChildItem(source);
 
 3576                         next = GetNextSiblingItem(child);
 
 3581                 if (GetItemState(source, TVIS_EXPANDED) & TVIS_EXPANDED)
 
 3582                         Expand(h, TVE_EXPAND);
 
 3602                         GetItemImage(source, image1, image2);
 
 3603                         h = 
insert(GetItemText(source), image1, image2, parent, after);
 
 3607                         GetItemImage(source, image1, image2);
 
 3608                         h = 
insert(GetItemText(source), image1, image2, parent, after);
 
 3611                 SetItemData(h, GetItemData(source));
 
 3612                 child = GetChildItem(source);
 
 3615                         child = GetNextSiblingItem(child);
 
 3618                 if (GetItemState(source, TVIS_EXPANDED) & TVIS_EXPANDED)
 
 3619                         Expand(h, TVE_EXPAND);
 
 3627         Assert(!GetParentItem(one));
 
 3628         Assert(!GetParentItem(two));
 
 3667         CTreeCtrl::OnLButtonDown(nFlags, point);
 
 3672         HTREEITEM hitem = NULL;
 
 3678                 if ((hitem = HitTest(point, &flags)) != NULL)
 
 3679                         if (!GetParentItem(hitem)) {
 
 3681                                 SelectDropTarget(hitem);
 
 3687         CTreeCtrl::OnMouseMove(nFlags, point);
 
 3725                 SelectDropTarget(NULL);
 
 3728         CTreeCtrl::OnLButtonUp(nFlags, point);
 
 3731 const static UINT Numbered_data_bitmaps[] = {
 
 3756         CImageList *pimagelist;
 
 3761                 int stops[2] = { 10, 30 };
 
 3763                 help_box -> SetTabStops(2, (LPINT) stops);
 
 3766         pimagelist = GetImageList(TVSIL_NORMAL);
 
 3768                 pimagelist = 
new CImageList();
 
 3769                 pimagelist->Create(16, 16, 
TRUE, 2, 22);
 
 3773                 pimagelist->Add(&bitmap, (COLORREF) 0xFFFFFF);
 
 3774                 bitmap.DeleteObject();
 
 3777                 pimagelist->Add(&bitmap, (COLORREF) 0xFF00FF);
 
 3778                 bitmap.DeleteObject();
 
 3781                 pimagelist->Add(&bitmap, (COLORREF) 0xFF00FF);
 
 3782                 bitmap.DeleteObject();
 
 3785                 pimagelist->Add(&bitmap, (COLORREF) 0xFF00FF);
 
 3786                 bitmap.DeleteObject();
 
 3789                 pimagelist->Add(&bitmap, (COLORREF) 0xFFFFFF);
 
 3790                 bitmap.DeleteObject();
 
 3793                 pimagelist->Add(&bitmap, (COLORREF) 0xFF00FF);
 
 3794                 bitmap.DeleteObject();
 
 3797                 pimagelist->Add(&bitmap, (COLORREF) 0xFFFFFF);
 
 3798                 bitmap.DeleteObject();
 
 3801                 pimagelist->Add(&bitmap, (COLORREF) 0xFFFFFF);
 
 3802                 bitmap.DeleteObject();
 
 3805                 pimagelist->Add(&bitmap, (COLORREF) 0xFFFFFF);
 
 3806                 bitmap.DeleteObject();
 
 3809                 int num = 
sizeof(Numbered_data_bitmaps)/
sizeof(
UINT);
 
 3811                 for(i = 0; i < 
num; i++)
 
 3813                         bitmap.LoadBitmap(Numbered_data_bitmaps[i]);
 
 3814                         pimagelist->Add(&bitmap, (COLORREF) 0xFF00FF);
 
 3815                         bitmap.DeleteObject();
 
 3818                 SetImageList(pimagelist, TVSIL_NORMAL);
 
 3834         return InsertItem(lpszItem, image, sel_image, hParent, hInsertAfter);
 
 3840         CImageList *pimagelist;
 
 3842         pimagelist = GetImageList(TVSIL_NORMAL);
 
 3844                 pimagelist->DeleteImageList();
 
 3848         CTreeCtrl::OnDestroy();
 
 3901                                         mprintf((
"Allender!  If you add new sexp operators, add help for them too! :)\n"));
 
 3944                         char buffer[10240] = {
""};
 
 3947                         const char *helpstr = 
help(code);
 
 3948                         bool display_number = 
true;
 
 3954                                 const char *loc=NULL, *loc2=NULL;
 
 3958                                         sprintf(searchstr, 
"\n%d:", sibling_place);
 
 3959                                         loc = strstr(helpstr, searchstr);
 
 3964                                         sprintf(searchstr, 
"\t%d:", sibling_place);
 
 3965                                         loc = strstr(helpstr, searchstr);
 
 3969                                         sprintf(searchstr, 
" %d:", sibling_place);
 
 3970                                         loc = strstr(helpstr, searchstr);
 
 3974                                         sprintf(searchstr, 
"%d:", sibling_place);
 
 3975                                         loc = strstr(helpstr, searchstr);
 
 3979                                         loc = strstr(helpstr, 
"Rest:");
 
 3983                                         loc = strstr(helpstr, 
"All:");
 
 3989                                         while(*loc==
'\r' || *loc == 
'\n' || *loc == 
' ' || *loc == 
'\t') loc++;
 
 3992                                         loc2 = strpbrk(loc, 
"\r\n");
 
 3995                                                 size_t size = loc2-loc;
 
 3996                                                 strncpy(buffer, loc, size);
 
 3997                                                 if(size < 
sizeof(buffer))
 
 3999                                                         buffer[
size] = 
'\0';
 
 4001                                                 display_number = 
false;
 
 4006                                                 display_number = 
false;
 
 4014                                 sprintf(buffer, 
"%d:", sibling_place);
 
 4023                         while ((j >= 0) && (j != i)) {
 
 4045                 str = 
"No help available";
 
 4069                                 find[find_count++] = 
i;
 
 4072                                 if (find_count == MAX_SEARCH_MESSAGE_DEPTH) {
 
 4086         TV_KEYDOWN *pTVKeyDown = (TV_KEYDOWN *) pNMHDR;
 
 4088         key = pTVKeyDown->wVKey;
 
 4089         if (key == VK_SPACE)
 
 4090                 EditLabel(GetSelectedItem());
 
 4489         if (w_arg < 1 && e_arg < 1  ) {
 
 4510         int arg_num, current_node;
 
 4514         current_node = 
tree_nodes[parent_node].child;
 
 4515         while (current_node >= 0)
 
 4518                 if (current_node == child_node)
 
 4523                 current_node = 
tree_nodes[current_node].next;
 
 4535         if(child_node == -1)
 
 4541         current_node = child_node;
 
 4542         parent_node = 
tree_nodes[current_node].parent;
 
 4544         while (parent_node >= 0)
 
 4551                 current_node = parent_node;
 
 4552                 parent_node = 
tree_nodes[current_node].parent;
 
 4575         int idx = (count % 100) / 5;
 
 4577         int num = 
sizeof(Numbered_data_bitmaps)/
sizeof(
UINT);
 
 4593         if(myparent->
child == -1)
 
 4601                 if(mysibling == &tree_nodes[node])
 
 4604                 if(mysibling->
next == -1)
 
 4608                 mysibling = &tree_nodes[mysibling->
next];
 
 4647         if ( parent_node != -1 ) {
 
 4700         int op = 0, dock_ship = -1, require_cap_ship = 0;
 
 4704         if ( parent_node >= 0 ) {
 
 4721                         Assert( dock_ship != -1 );
 
 4762                 if (
Wings[i].wave_count){
 
 4771 #define OPS_CAP_CARGO           1        
 4772 #define OPS_STRENGTH                    2 
 4773 #define OPS_BEAM_TURRET         3 
 4775 #define OPS_ROTATE                      5 
 4780         int special_subsys = 0;
 
 4786         Assert(parent_node >= 0);       
 
 4902                         switch(special_subsys){
 
 4956         int i, child, shipnum, num_added = 0;
 
 4993         if (num_added == 0) {
 
 5009                 for (j = 0; (
uint) j < ii->get_waypoints().size(); ++j)
 
 5011                         sprintf(buf, 
"%s:%d", ii->get_name(), j + 1);
 
 5045         head.
add_data(
"<species support ship class>");
 
 5131         int i, restrict_to_players;
 
 5135         for (restrict_to_players = 0; restrict_to_players < 2; restrict_to_players++)
 
 5159         int i, 
n, 
w, 
z, child;
 
 5162         Assert(parent_node >= 0);
 
 5204         Assert(parent_node >= 0);
 
 5241         Assert(parent_node >= 0);
 
 5510                 Assert(parent_node >= 0);
 
 5590                 Assert(parent_node >= 0);
 
 5896         for (i=0; i < ppe_names.size(); i++) {
 
 6040         char search_str[64];
 
 6043         sprintf(search_str, 
"%s(", var_name);
 
 6080         char search_str[64];
 
 6087         if (
Sexp_variables[sexp_var_index].type & SEXP_VARIABLE_NUMBER) {
 
 6097         sprintf(search_str, 
"%s(", old_name);
 
 6132         int chars_to_copy = strcspn(tree_name, 
"(");
 
 6136         strncpy(var_name, tree_name, chars_to_copy);
 
 6137         var_name[chars_to_copy] = 
'\0';
 
 6147         char compare_name[64];
 
 6156                         if ( strstr(
tree_nodes[idx].text, compare_name) ) {
 
#define SF2_TOGGLE_SUBSYSTEM_SCANNING
 
CImageList * m_p_image_list
 
#define ID_REPLACE_NUMBER
 
void expand_operator(int node)
 
#define OPF_ROTATING_SUBSYSTEM
 
#define OPF_AUDIO_VOLUME_OPTION
 
int stars_get_num_entries(bool is_a_sun, bool bitmap_count)
 
#define MAX_SEARCH_MESSAGE_DEPTH
 
int handler(int code, int goal)
 
SCP_vector< medal_stuff > Medals
 
void swap_handler(int node1, int node2)
 
int find_argument_number(int parent_node, int child_node)
 
int query_default_argument_available(int op)
 
model_subsystem * system_info
 
sexp_list_item * get_listing_opf_message()
 
SCP_vector< ArmorType > Armor_types
 
#define OPF_SUPPORT_SHIP_CLASS
 
bool m_type_player_persistent
 
#define SEXP_VARIABLE_NETWORK
 
#define SEXP_ATOM_OPERATOR
 
sexp_list_item * get_listing_opf_order_recipient()
 
sexp_list_item * get_listing_opf_who_from()
 
sexp_list_item * get_listing_opf_string()
 
sexp_list_item * get_listing_opf(int opf, int parent_node, int arg_index)
 
void sexp_variable_sort()
 
op_menu_struct op_submenu[]
 
GLfloat GLfloat GLfloat GLfloat h
 
void add_sub_tree(int node, HTREEITEM root)
 
weapon_info Weapon_info[MAX_WEAPON_TYPES]
 
#define OPF_SHIP_CLASS_NAME
 
sexp_list_item * get_listing_opf_turret_target_order()
 
char * Explosion_option[]
 
#define OPF_WAYPOINT_PATH
 
#define OP_CUTSCENES_SHOW_SUBTITLE
 
SCP_vector< game_snd > Snds
 
int add_default_operator(int op, int argnum)
 
int query_node_argument_type(int node)
 
const char * stars_get_name_FRED(int index, bool is_a_sun)
 
int sexp_add_variable(const char *text, const char *var_name, int type, int index)
 
sexp_list_item * get_listing_opf_dockee_point(int parent_node)
 
GLsizei const GLfloat * value
 
campaign_editor * Campaign_tree_formp
 
#define OP_BEAM_FIRE_COORDS
 
#define OP_HITS_LEFT_SUBSYSTEM
 
sexp_list_item * get_listing_opf_damage_type()
 
sexp_list_item * get_listing_opf_ship_effect()
 
#define MAX_OBJECT_FLAG_NAMES
 
void swap_handler(int node1, int node2)
 
#define OPF_VARIABLE_NAME
 
SCP_vector< ssm_info > Ssm_info
 
#define OP_HAS_UNDOCKED_DELAY
 
sexp_list_item * get_listing_opf_ship_class_name()
 
#define SEXP_ALL_BANKS_STRING
 
void insert_handler(int old, int node)
 
#define OP_CAMPAIGN_ONLY_FLAG
 
#define NUM_COMM_ORDER_ITEMS
 
sexp_list_item * get_listing_opf_sound_environment_option()
 
#define ID_REPLACE_STRING
 
void copy_branch(HTREEITEM source, HTREEITEM parent=TVI_ROOT, HTREEITEM after=TVI_LAST)
 
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
#define TREE_NODE_INCREMENT
 
#define OP_EXPLOSION_EFFECT
 
sexp_list_item * get_listing_opf_support_ship_class()
 
#define OP_DISTANCE_SUBSYSTEM
 
void stuff_special_arrival_anchor_name(char *buf, int iff_index, int restrict_to_players, int retail_format)
 
#define OPF_TURRET_TARGET_ORDER
 
void set_data(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
 
sexp_list_item * get_listing_opf_medal_name()
 
#define OP_PREVIOUS_GOAL_INCOMPLETE
 
#define SEXP_VARIABLE_SET
 
int get_item_index_to_var_index()
 
#define OPF_EXPLOSION_OPTION
 
#define OPF_ANIMATION_TYPE
 
#define OPF_BACKGROUND_BITMAP
 
GLenum GLsizei GLenum GLenum const GLvoid * image
 
#define MAX_AI_FLAG_NAMES
 
void free_node2(int node)
 
#define OP_PREVIOUS_EVENT_FALSE
 
sexp_list_item * get_listing_opf_subsystem_or_none(int parent_node, int arg_index)
 
#define OP_SET_VARIABLE_BY_INDEX
 
#define MAX_TRIGGER_ANIMATION_TYPES
 
void link_modified(int *ptr)
 
#define OP_COPY_VARIABLE_FROM_INDEX
 
#define OP_NONCAMPAIGN_FLAG
 
#define NUM_TURRET_ORDER_TYPES
 
void sexp_fred_modify_variable(const char *text, const char *var_name, int index, int type)
 
int get_subcategory(int sexp_id)
 
#define PERSONA_FLAG_WINGMAN
 
#define END_OF_LIST(head)
 
#define OP_SHIP_SUBSYS_GUARDIAN_THRESHOLD
 
int add_variable_data(const char *data, int type)
 
int alloc_sexp(char *text, int type, int subtype, int first, int rest)
 
SCP_vector< sexp_tree_item > tree_nodes
 
sexp_list_item * get_listing_opf_jump_nodes()
 
afx_msg void OnMouseMove(UINT nFlags, CPoint point)
 
#define BITMAP_NUMBERED_DATA
 
void delete_sexp_tree_variable(const char *var_name)
 
sexp_variable Sexp_variables[MAX_SEXP_VARIABLES]
 
const char * match_closest_operator(const char *str, int node)
 
void setup(CEdit *ptr=NULL)
 
int edit_label(HTREEITEM h)
 
#define SEXP_VARIABLE_NOT_USED
 
GLenum GLuint GLenum GLsizei const GLchar * message
 
#define OP_REVERSE_ROTATING_SUBSYSTEM
 
#define ST_ROOT_DELETABLE
 
UINT WPARAM LPARAM lParam
 
sexp_list_item * get_listing_opf_hud_gauge_name()
 
#define SEXP_FLAG_VARIABLE
 
afx_msg void OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
 
int find_text(const char *text, int *find)
 
#define OPF_ARRIVAL_LOCATION
 
int get_index_sexp_variable_name(const char *text)
 
sexp_list_item * get_listing_opf_ship_point()
 
SOUNDTRACK_INFO Soundtracks[MAX_SOUNDTRACKS]
 
int get_default_value(sexp_list_item *item, char *text_buf, int op, int i)
 
char * textify_scancode(int code)
 
sexp_list_item * get_listing_opf_persona()
 
char Neb2_poof_filenames[MAX_NEB2_POOFS][MAX_FILENAME_LEN]
 
sexp_list_item * get_listing_opf_weapon_name()
 
GLenum GLuint GLenum GLsizei const GLchar * buf
 
void set_node(int index, int type, const char *text)
 
int query_operator_argument_type(int op, int argnum)
 
int get_docking_list(int model_index)
 
mission_goal Mission_goals[MAX_GOALS]
 
void get_post_process_effect_names(SCP_vector< SCP_string > &names)
 
SCP_list< waypoint_list > Waypoint_lists
 
sexp_list_item * get_listing_opf_priority()
 
int get_type(HTREEITEM h)
 
sexp_list_item * get_listing_opf_docker_point(int parent_node)
 
void right_clicked(int mode=0)
 
sexp_list_item * get_listing_opf_game_snds()
 
void verify_and_fix_arguments(int node)
 
#define OPF_AWACS_SUBSYSTEM
 
SCP_list< CJumpNode > Jump_nodes
 
#define OPF_ORDER_RECIPIENT
 
int get_tree_name_to_sexp_variable_index(const char *tree_name)
 
int get_variable_count(const char *var_name)
 
config_item Control_config[]
Stores the keyboard configuration. 
 
#define OPF_FLEXIBLE_ARGUMENT
 
iff_info Iff_info[MAX_IFFS]
 
void sexp_variable_delete(int index)
 
void swap_roots(HTREEITEM one, HTREEITEM two)
 
sexp_list_item * get_listing_opf_adjust_audio_volume()
 
void get_variable_name_from_sexp_tree_node_text(const char *text, char *var_name)
 
sexp_list_item * get_listing_opf_background_bitmap()
 
int valid_cap_subsys_cargo_list(char *subsys)
 
int query_operator_return_type(int op)
 
SCP_vector< MMessage > Messages
 
sexp_list_item * get_listing_opf_departure_location()
 
void update_help(HTREEITEM h)
 
void sexp_mark_persistent(int n)
 
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
 
#define OPF_SUBSYSTEM_TYPE
 
bool m_type_campaign_persistent
 
sexp_list_item * get_listing_opf_goal_name(int parent_node)
 
sexp_list_item * get_listing_opf_sun_bitmap()
 
sexp_list_item * get_listing_opf_iff()
 
GLdouble GLdouble GLdouble r
 
int Num_sound_environment_options
 
char * Departure_location_names[MAX_DEPARTURE_NAMES]
 
#define MAX_DEPARTURE_NAMES
 
#define OP_CAP_SUBSYS_CARGO_KNOWN_DELAY
 
int save_branch(int cur, int at_root=0)
 
char * Animation_type_names[MAX_TRIGGER_ANIMATION_TYPES]
 
void replace_operator(const char *op)
 
char Neb2_bitmap_filenames[MAX_NEB2_BITMAPS][MAX_FILENAME_LEN]
 
sexp_list_item * get_listing_opf_point()
 
void var_name_from_sexp_tree_text(char *var_name, const char *text)
 
virtual void build_tree()
 
sexp_list_item * get_listing_opf_skybox_flags()
 
sexp_list_item * get_listing_opf_ship_wing_point_or_none()
 
#define OP_SABOTAGE_SUBSYSTEM
 
#define OPF_SHIP_WING_SHIPONTEAM_POINT
 
event_editor * Event_editor_dlg
 
char * current_message_name(int index)
 
afx_msg void OnLButtonUp(UINT nFlags, CPoint point)
 
sexp_list_item * get_listing_opf_nebula_patterns()
 
#define SEXP_VARIABLE_BLOCK
 
int get_data_image(int node)
 
int gray_menu_tree(CMenu *base)
 
#define OPF_TARGET_PRIORITIES
 
int end_label_edit(TVITEMA &item)
 
sexp_list_item * get_listing_opf_nebula_storm_type()
 
mission_event Mission_events[MAX_MISSION_EVENTS]
 
#define OPF_SHIP_WING_POINT
 
afx_msg void OnKeydown(NMHDR *pNMHDR, LRESULT *pResult)
 
void insert_handler(int old, int node)
 
sexp_list_item * get_listing_opf_sound_environment()
 
sexp_list_item * get_listing_opf_ship_wing()
 
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
 
ai_flag_name Ai_flag_names[]
 
sexp_list_item * get_listing_opf_font()
 
sexp_list_item * get_listing_opf_ship_not_player()
 
sexp_list_item * get_listing_opf_explosion_option()
 
SCP_vector< storm_type > Storm_types
 
void sexp_unmark_persistent(int n)
 
#define OPF_NEBULA_PATTERN
 
sexp_list_item * get_listing_opf_huge_weapon()
 
sexp_list_item * get_listing_opf_skybox_model()
 
#define OP_TRIGGER_SUBMODEL_ANIMATION
 
#define OP_SET_SUBSYSTEM_STRNGTH
 
#define OP_MODIFY_VARIABLE
 
int query_sexp_ai_goal_valid(int sexp_ai_goal, int ship_num)
 
#define OPF_MESSAGE_OR_STRING
 
bool can_construe_as_integer(const char *text)
 
sexp_list_item * get_listing_opf_keypress()
 
void merge_operator(int node)
 
char * Turret_target_order_names[NUM_TURRET_ORDER_TYPES]
 
const char * help(int code)
 
#define OPF_SHIP_WING_WHOLETEAM
 
int category_of_subcategory(int subcategory_id)
 
int get_modify_variable_type(int parent)
 
sexp_list_item * get_listing_opf_subsystem(int parent_node, int arg_index)
 
char Mission_filename[80]
 
sexp_list_item * get_listing_opf_soundtrack_name()
 
int get_operator_index(const char *token)
 
sexp_list_item * get_listing_opf_post_effect()
 
#define ID_SEXP_TREE_MODIFY_VARIABLE
 
sexp_list_item * get_listing_opf_waypoint_path()
 
sexp_list_item * get_listing_opf_animation_type()
 
int add_data(const char *data, int type)
 
#define OPF_HUD_GAUGE_NAME
 
void expand_branch(HTREEITEM h)
 
sexp_list_item * get_listing_opf_arrival_location()
 
#define IDC_MINI_HELP_BOX
 
int query_restricted_opf_range(int opf)
 
HTREEITEM insert(LPCTSTR lpszItem, int image=BITMAP_ROOT, int sel_image=BITMAP_ROOT, HTREEITEM hParent=TVI_ROOT, HTREEITEM hInsertAfter=TVI_LAST)
 
char * Subsystem_types[SUBSYSTEM_MAX]
 
#define SEXP_ALL_TURRETS_STRING
 
sexp_list_item * get_listing_opf_ship_wing_wholeteam()
 
bool m_type_player_persistent
 
#define OPF_SOUND_ENVIRONMENT_OPTION
 
sexp_list_item * get_listing_opf_positive()
 
bool m_type_network_variable
 
#define OP_SHIP_TYPE_DESTROYED
 
int sexp_variable_count()
 
#define OP_SET_ARMOR_TYPE
 
comm_order Comm_orders[NUM_COMM_ORDER_ITEMS]
 
#define OP_PREVIOUS_EVENT_TRUE
 
#define OP_ADD_BACKGROUND_BITMAP
 
#define OPF_SKYBOX_MODEL_NAME
 
void replace_data(const char *data, int type)
 
char * Sound_environment_option[]
 
void insert_handler(int old, int node)
 
sexp_list_item * get_listing_opf_ssm_class()
 
sexp_list_item * get_listing_opf_bool(int parent_node=-1)
 
#define OPF_SUBSYSTEM_OR_NONE
 
sexp_list_item * get_listing_opf_ship_type()
 
afx_msg void OnLButtonDown(UINT nFlags, CPoint point)
 
int handler(int code, int node, char *str=NULL)
 
void move_branch(int source, int parent=-1)
 
int Num_explosion_options
 
flag_def_list Hud_gauge_types[]
 
SCP_string name
The name of the sound. 
 
sexp_list_item * get_listing_opf_intel_name()
 
#define SEXP_SIM_HULL_STRING
 
sexp_list_item * get_listing_opf_ship_wing_point()
 
sexp_list_item * get_listing_opf_ai_order()
 
int wing_name_lookup(const char *name, int ignore_count)
 
void get_combined_variable_name(char *combined_name, const char *sexp_var_name)
 
GLuint const GLchar * name
 
#define ID_SEXP_TREE_ADD_VARIABLE
 
#define OPF_SHIP_WITH_BAY
 
sexp_list_item * get_listing_opf_armor_type()
 
bool m_type_network_variable
 
sexp_list_item * get_listing_opf_skill_level()
 
ship_flag_name Ship_flag_names[]
 
CMissionGoalsDlg * Goal_editor_dlg
 
#define OP_LOCK_ROTATING_SUBSYSTEM
 
#define OP_PREVIOUS_GOAL_FALSE
 
int get_category(int sexp_id)
 
SCP_vector< ship_effect > Ship_effects
 
#define IDB_CHAINED_DIRECTIVE
 
#define OPF_WEAPON_BANK_NUMBER
 
void add_data(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
 
sexp_list_item * get_listing_opf_hud_gauge()
 
sexp_list_item * get_listing_opf_turret_target_priorities()
 
int load_sub_tree(int index, bool valid, const char *text)
 
#define MB_ICONEXCLAMATION
 
void ensure_visible(int node)
 
#define OP_SET_SUPPORT_SHIP
 
bool ship_has_dock_bay(int shipnum)
 
#define OP_EVERY_TIME_ARGUMENT
 
void swap_handler(int node1, int node2)
 
sexp_list_item * get_listing_opf_wing()
 
#define OPF_JUMP_NODE_NAME
 
sexp_list_item * get_listing_opf_weapon_banks()
 
void add_operator(const char *op, HTREEITEM h=TVI_ROOT)
 
#define OP_REPAIR_SUBSYSTEM
 
void add_data_dup(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
 
void replace_variable_data(int var_idx, int type)
 
int ship_docking_valid(int docker, int dockee)
 
void free_node(int node, int cascade=0)
 
int get_sibling_place(int node)
 
sexp_help_struct Sexp_help[]
 
void set_data_dup(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
 
sexp_list_item * get_listing_opf_mission_name()
 
#define SUBSYSTEM_UNKNOWN
 
#define OPF_SOUNDTRACK_NAME
 
void read_mission_goal_list(int num)
 
CString m_cur_variable_name
 
sexp_tree * m_p_sexp_tree
 
int save_tree(int node=-1)
 
HTREEITEM handle(int node)
 
#define OP_GOOD_SECONDARY_TIME
 
#define OP_MISSILE_LOCKED
 
#define OP_FREE_ROTATING_SUBSYSTEM
 
#define SEXP_VARIABLE_CAMPAIGN_PERSISTENT
 
sexp_list_item * get_listing_opf_flexible_argument()
 
char subobj_name[MAX_NAME_LEN]
 
char * Docking_bay_list[MAX_DOCKS]
 
#define MAX_SHIP_FLAG_NAMES
 
SCP_vector< EFXREVERBPROPERTIES > EFX_presets
 
sexp_list_item * get_listing_opf_hud_elements()
 
int sexp_query_type_match(int opf, int opr)
 
capital warp hole closing 
 
SCP_vector< ship_info > Ship_info
 
#define OP_STRING_SET_SUBSTRING
 
#define OP_TECH_ADD_INTEL
 
int MessageBox(HWND h, const char *s1, const char *s2, int i)
 
const char * Skill_level_names(int skill_level, int translate=1)
 
GLenum GLsizei GLenum GLenum const GLvoid * data
 
int find_ancestral_argument_number(int parent_op, int child_node)
 
The total number of defined control actions (or last define + 1) 
 
sexp_list_item * get_listing_opf_ship_flags()
 
int get_operator_const(const char *token)
 
#define OP_STRING_CONCATENATE
 
SCP_vector< DamageTypeStruct > Damage_types
 
#define OPF_ARRIVAL_ANCHOR_ALL
 
void load_tree(int index, const char *deflt="true")
 
#define OPF_DEPARTURE_LOCATION
 
char * HUD_gauge_text[NUM_HUD_GAUGES]
 
#define OPF_SOUND_ENVIRONMENT
 
GLenum GLuint GLenum GLsizei length
 
sexp_list_item * get_listing_opf_ai_goal(int parent_node)
 
void add_or_replace_operator(int op, int replace_flag=0)
 
int node_error(int node, const char *msg, int *bypass)
 
GLsizei GLsizei GLchar * source
 
int handler(int code, int node, char *str=NULL)
 
sexp_list_item * get_listing_opf_nebula_poof()
 
team_data Team_data[MAX_TVT_TEAMS]
 
#define SEXP_VARIABLE_NUMBER
 
sexp_list_item * get_listing_opf_ship_wing_shiponteam_point()
 
void hilite_item(int node)
 
void get_variable_default_text_from_variable_text(char *text, char *default_text)
 
#define MAX_ARRIVAL_NAMES
 
sexp_list_item * get_listing_opf_team_colors()
 
#define SEXP_SHIELD_STRING
 
sexp_list_item * get_listing_opf_mission_moods()
 
capital warp hole opening 
 
int ship_index[MAX_SHIPS_PER_WING]
 
sexp_list_item * get_listing_opf_cargo()
 
sexp_list_item * get_listing_opf_null()
 
void add_list(sexp_list_item *list)
 
SCP_map< SCP_string, team_color > Team_Colors
 
SCP_vector< SCP_string > Builtin_moods
 
int load_branch(int index, int parent)
 
char * Adjust_audio_options[]
 
#define OP_PREVIOUS_EVENT_INCOMPLETE
 
int Num_adjust_audio_options
 
int ship_name_lookup(const char *name, int inc_players)
 
int query_false(int node=-1)
 
bool m_type_campaign_persistent
 
obj_flag_name Object_flag_names[]
 
int get_ship_from_obj(int obj)
 
sexp_list_item * get_listing_opf_event_name(int parent_node)
 
#define OP_HUD_GAUGE_SET_ACTIVE
 
#define EMP_DEFAULT_INTENSITY
 
sexp_list_item * get_listing_opf_number()
 
#define IDB_ROOT_DIRECTIVE
 
#define OPF_NEBULA_STORM_TYPE
 
#define OPR_FLEXIBLE_ARGUMENT
 
#define OP_CHANGE_AI_CLASS
 
#define OP_ROTATING_SUBSYS_SET_TURN_TIME
 
int identify_arg_type(int node)
 
#define OP_HUD_ACTIVATE_GAUGE_TYPE
 
sexp_list_item * get_listing_opf_variable_names()
 
#define OP_PREVIOUS_GOAL_TRUE
 
void lcl_fred_replace_stuff(char *text, size_t max_len)
 
#define OP_STRING_GET_SUBSTRING
 
SCP_vector< ai_target_priority > Ai_tp_list
 
char iff_name[NAME_LENGTH]
 
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam)
 
#define OP_SCRIPT_EVAL_STRING
 
sexp_list_item * get_listing_opf_ai_class()
 
#define OPF_SHIP_NOT_PLAYER
 
#define OP_ADD_SUN_BITMAP
 
sexp_list_item * get_listing_opf_arrival_anchor_all()
 
#define SEXP_ALL_ENGINES_STRING
 
char ship_name[NAME_LENGTH]
 
sexp_list_item * get_listing_opf_subsys_or_generic(int parent_node, int arg_index)
 
#define OPF_SUBSYS_OR_GENERIC
 
sexp_list_item * get_listing_opf_ship_with_bay()
 
#define OP_HAS_DOCKED_DELAY
 
#define SEXP_VARIABLE_STRING
 
SCP_vector< ship_type_info > Ship_types
 
cmission missions[MAX_CAMPAIGN_MISSIONS]
 
void clear_tree(const char *op=NULL)
 
void modify_sexp_tree_variable(const char *old_name, int sexp_var_index)
 
#define MAX_SEXP_VARIABLES
 
#define OPF_SHIP_WING_POINT_OR_NONE
 
#define OP_AWACS_SET_RADIUS
 
#define IDR_MENU_EDIT_SEXP_TREE
 
int get_loadout_variable_count(int var_index)
 
#define SEXP_VARIABLE_PLAYER_PERSISTENT
 
char filename[MAX_FILENAME_LEN]
 
sexp_list_item * get_listing_opf_ship(int parent_node=-1)
 
sexp_list_item * get_listing_opf_ship_or_none()
 
sexp_list_item * get_listing_opf_subsystem_type(int parent_node)
 
char * Arrival_location_names[MAX_ARRIVAL_NAMES]
 
#define SEXP_ARGUMENT_STRING
 
void setup_selected(HTREEITEM h=NULL)