Example #1
0
    void UpdateNodesInteractivity(MissionRouteMapNode changedNode)
    {
        // toggle has been enabled
        if (changedNode.toggle.isOn)
        {
            // disable all, except connected nodes, which are not already in route
            allNodes.ForEach(node => node.toggle.interactable =
                                 changedNode.connections.Exists(seg => seg.zone == node.zone) &&
                                 !setUpPath.Exists(seg => seg.zone == node.zone));

            // enable self for untoggle possibility
            changedNode.toggle.interactable = true;
        }
        else
        {
            if (setUpPath.NotNullOrEmpty())
            {
                var lastRouteNode = allNodes.Find(node => setUpPath.Last().zone == node.zone);
                // disable all, except connected for last node, which are not already in route
                allNodes.ForEach(node => node.toggle.interactable =
                                     lastRouteNode.connections.Exists(seg => seg.zone == node.zone) &&
                                     !setUpPath.Exists(seg => seg.zone == node.zone));

                // enable self for untoggle possibility
                lastRouteNode.toggle.interactable = true;
            }
            else
            {
                // disable all but starting Nodes
                allNodes.ForEach(node => node.toggle.interactable      = false);
                startingNodes.ForEach(node => node.toggle.interactable = true);
            }
        }
    }
Example #2
0
    void OnNodeToggle(MissionRouteMapNode changedNode)
    {
        if (changedNode.toggle.isOn)
        {
            setUpPath.Add(new MissionRouteSegment(changedNode.zone, PathLength(changedNode)));
        }
        else
        {
            setUpPath.Remove(setUpPath.Last());
        }

        UpdateNodesInteractivity(changedNode);
    }
Example #3
0
 int PathLength(MissionRouteMapNode changedNode) =>
 setUpPath.Any()
         ? changedNode.connections.Find(node => setUpPath.Last().zone == node.zone).length
         : 0;