@@ -560,41 +560,6 @@ GameNode TreeLayout::NextSameLevel(const GameNode &p_node) const
560560 return nullptr ;
561561}
562562
563- void TreeLayout::ComputeOffsets (const GameNode &p_node, const BehaviorSupportProfile &p_support,
564- int &p_ycoord)
565- {
566- const auto &settings = m_doc->GetStyle ();
567-
568- const auto entry = GetNodeEntry (p_node);
569- if (m_doc->GetStyle ().RootReachable () && p_node->GetInfoset () &&
570- !p_node->GetInfoset ()->GetPlayer ()->IsChance ()) {
571- const auto actions = p_support.GetActions (p_node->GetInfoset ());
572- for (const auto &action : actions) {
573- ComputeOffsets (p_node->GetChild (action), p_support, p_ycoord);
574- }
575- entry->m_y = (GetNodeEntry (p_node->GetChild (actions.front ()))->m_y +
576- GetNodeEntry (p_node->GetChild (actions.back ()))->m_y ) /
577- 2 ;
578- }
579- else if (!p_node->IsTerminal ()) {
580- const auto actions = p_node->GetInfoset ()->GetActions ();
581- for (const auto &action : actions) {
582- const auto child = p_node->GetChild (action);
583- ComputeOffsets (child, p_support, p_ycoord);
584- if (!p_node->GetPlayer ()->IsChance () && !p_support.Contains (action)) {
585- GetNodeEntry (child)->m_inSupport = false ;
586- }
587- }
588- entry->m_y = (GetNodeEntry (p_node->GetChild (actions.front ()))->m_y +
589- GetNodeEntry (p_node->GetChild (actions.back ()))->m_y ) /
590- 2 ;
591- }
592- else {
593- entry->m_y = p_ycoord;
594- p_ycoord += settings.TerminalSpacing ();
595- }
596- }
597-
598563std::shared_ptr<NodeEntry>
599564TreeLayout::ComputeNextInInfoset (const std::shared_ptr<NodeEntry> &p_entry) const
600565{
@@ -691,17 +656,17 @@ void TreeLayout::Layout(const BehaviorSupportProfile &p_support)
691656 BuildNodeList (p_support);
692657 }
693658
694- int maxy = c_topMargin;
695- ComputeOffsets (m_doc->GetGame ()->GetRoot (), p_support, maxy);
696- m_maxY = maxy + c_bottomMargin;
697-
698659 auto layout = Gambit::Layout (m_doc->GetGame ());
699660 layout.LayoutTree (p_support);
700661
662+ const auto spacing = m_doc->GetStyle ().GetTerminalSpacing ();
701663 for (auto [node, entry] : layout.GetNodeMap ()) {
702664 m_nodeMap[node]->m_level = entry->m_level ;
703665 m_nodeMap[node]->m_sublevel = entry->m_sublevel ;
666+ m_nodeMap[node]->m_y = entry->m_offset * spacing + c_topMargin;
704667 }
668+ m_maxY =
669+ c_topMargin + c_bottomMargin + spacing * (layout.GetMaxOffset () - layout.GetMinOffset ());
705670 ComputeNodeDepths (layout);
706671
707672 ComputeRenderedParents ();
0 commit comments