@@ -32,6 +32,30 @@ campaign_tree_link Links[MAX_CAMPAIGN_TREE_LINKS];
3232LOCAL CRect Dragging_rect;
3333LOCAL CSize Rect_offset, Last_draw_size;
3434
35+ void init_link (campaign_tree_link &link, int from, int to)
36+ {
37+ link.from = from;
38+ link.to = to;
39+ link.sexp = Locked_sexp_true;
40+ link.node = -1 ;
41+ link.from_pos = -1 ;
42+ link.to_pos = -1 ;
43+ link.is_mission_loop = false ;
44+ link.is_mission_fork = false ;
45+ link.mission_branch_txt = nullptr ;
46+ link.mission_branch_brief_anim = nullptr ;
47+ link.mission_branch_brief_sound = nullptr ;
48+ link.p1 = CPoint ();
49+ link.p2 = CPoint ();
50+ }
51+
52+ void init_element (campaign_tree_element &element)
53+ {
54+ element.from_links = 0 ;
55+ element.to_links = 0 ;
56+ element.box = CRect ();
57+ }
58+
3559// ///////////////////////////////////////////////////////////////////////////
3660// campaign_tree_view
3761
@@ -247,12 +271,9 @@ void stuff_link_with_formula(int *link_idx, int formula, int mission_num)
247271 node = CDR (formula);
248272 free_one_sexp (formula);
249273 while (node != -1 ) {
274+ init_link (Links[*link_idx], mission_num);
250275 node2 = CAR (node);
251- Links[*link_idx].from = mission_num;
252276 Links[*link_idx].sexp = CAR (node2);
253- Links[*link_idx].mission_branch_txt = NULL ;
254- Links[*link_idx].mission_branch_brief_anim = NULL ;
255- Links[*link_idx].mission_branch_brief_sound = NULL ;
256277 sexp_mark_persistent (CAR (node2));
257278 free_one_sexp (node2);
258279 node3 = CADR (node2);
@@ -269,7 +290,7 @@ void stuff_link_with_formula(int *link_idx, int formula, int mission_num)
269290 }
270291
271292 } else if ( !stricmp ( CTEXT (node3), " end-of-campaign" ) ) {
272- Links[ (*link_idx)++]. to = - 1 ;
293+ (*link_idx)++;
273294 Elements[mission_num].from_links ++;
274295
275296 } else
@@ -292,7 +313,7 @@ void campaign_tree_view::construct_tree()
292313
293314 // initialize mission link counts
294315 for (i=0 ; i<Campaign.num_missions ; i++) {
295- Elements[i]. from_links = Elements[i]. to_links = 0 ;
316+ init_element ( Elements[i]) ;
296317 }
297318
298319 // analyze branching sexps and build links from them.
@@ -753,14 +774,7 @@ int campaign_tree_view::add_link(int from, int to)
753774 return -1 ;
754775
755776 Campaign_tree_formp->load_tree (1 );
756- Links[Total_links].from = from;
757- Links[Total_links].to = to;
758- Links[Total_links].sexp = Locked_sexp_true;
759- Links[Total_links].is_mission_loop = false ;
760- Links[Total_links].is_mission_fork = false ;
761- Links[Total_links].mission_branch_txt = NULL ;
762- Links[Total_links].mission_branch_brief_anim = NULL ;
763- Links[Total_links].mission_branch_brief_sound = NULL ;
777+ init_link (Links[Total_links], from, to);
764778 Total_links++;
765779 if (from != to) {
766780 if (from >= 0 )
@@ -964,7 +978,7 @@ BOOL campaign_tree_view::OnDrop(COleDataObject* pDataObject, DROPEFFECT dropEffe
964978 }
965979 }
966980
967- Elements[Campaign.num_missions].from_links = Elements[Campaign.num_missions].to_links = 0 ;
981+ init_element( Elements[Campaign.num_missions]) ;
968982 cm = &(Campaign.missions[Campaign.num_missions++]);
969983 cm->name = strdup(pData);
970984 cm->formula = Locked_sexp_true;
@@ -1062,7 +1076,7 @@ void campaign_tree_view::drop_mission(int m, CPoint point)
10621076 }
10631077 }
10641078
1065- Elements[Campaign.num_missions ]. from_links = Elements[Campaign. num_missions ]. to_links = 0 ;
1079+ init_element ( Elements[Campaign.num_missions ]) ;
10661080 cm = &(Campaign.missions [Campaign.num_missions ++]);
10671081 cm->name = strdup (name);
10681082 cm->formula = Locked_sexp_true;
0 commit comments