public void RefreshGraph(IGraphOwner graphOwner)
        {
            mGraph          = new Graph();
            mGraph.Directed = true;
            mGraph.LayoutAlgorithmSettings = new SugiyamaLayoutSettings();

            if (mCurrentGraphRoot != null)
            {
                HashSet <GameMasterNode> campaignNodes = new HashSet <GameMasterNode>();
                mCurrentGraphRoot.NodeData.GetRelatedNodes(campaignNodes);

                foreach (GameMasterNode node in campaignNodes)
                {
                    GameMasterNodeType nodeType = node.NodeType;
                    if (nodeType == GameMasterNodeType.CAMP_PIECE || nodeType == GameMasterNodeType.UNKNOWN)
                    {
                        // Do not add camp pieces or unknown node types.
                        continue;
                    }

                    if (node.NodeData != null)
                    {
                        node.NodeData.UpdateGraph(mGraph);
                    }
                }

                graphOwner.SetGraph(mGraph);
            }
        }
        public ICollection <GameMasterNode> GetAllNodesOfType(GameMasterNodeType type)
        {
            List <GameMasterNode> result = new List <GameMasterNode>();

            foreach (GameMasterNode node in mGameMasterNodes.Values)
            {
                if (node.NodeType == type)
                {
                    result.Add(node);
                }
            }

            return(result);
        }
Esempio n. 3
0
        public void OnFileChanged(Dictionary <string, GameMasterNode> allNodes)
        {
            JToken fileTypeToken = Json["type"];
            string fileType      = fileTypeToken != null?fileTypeToken.ToString().ToUpper() : "";

            GameMasterNodeType newNodeType = GameMasterNodeType.UNKNOWN;

            foreach (GameMasterNodeType nodeType in Enum.GetValues(typeof(GameMasterNodeType)))
            {
                if (fileType.Equals(nodeType.ToString()))
                {
                    newNodeType = nodeType;
                }
            }

            if (newNodeType != mNodeType)
            {
                mNodeType = newNodeType;
                switch (mNodeType)
                {
                case GameMasterNodeType.ENCOUNTER:
                    mNodeData = new EncounterNodeData();
                    break;

                case GameMasterNodeType.ARC:
                    mNodeData = new ArcNodeData();
                    break;

                case GameMasterNodeType.CAMPAIGN:
                    mNodeData = new CampaignNodeData();
                    break;

                case GameMasterNodeType.CAMP_PIECE:
                    mNodeData = new CampPieceNodeData();
                    break;

                default:
                    Console.WriteLine("unknown encounter node type for file " + Path);
                    mNodeData = new UnknownNodeData();
                    break;
                }
            }

            if (mNodeData != null)
            {
                mNodeData.NodeFile = this;
                mNodeData.LoadData(allNodes);
            }
        }
        public void OnFileChanged(Dictionary<string, GameMasterNode> allNodes)
        {
            JToken fileTypeToken = Json["type"];
            string fileType = fileTypeToken != null ? fileTypeToken.ToString().ToUpper() : "";
            GameMasterNodeType newNodeType = GameMasterNodeType.UNKNOWN;
            foreach (GameMasterNodeType nodeType in Enum.GetValues(typeof(GameMasterNodeType)))
            {
                if (fileType.Equals(nodeType.ToString()))
                {
                    newNodeType = nodeType;
                }
            }

            if (newNodeType != mNodeType)
            {
                mNodeType = newNodeType;
                switch (mNodeType)
                {
                    case GameMasterNodeType.ENCOUNTER:
                        mNodeData = new EncounterNodeData();
                        break;
                    case GameMasterNodeType.ARC:
                        mNodeData = new ArcNodeData();
                        break;
                    case GameMasterNodeType.CAMPAIGN:
                        mNodeData = new CampaignNodeData();
                        break;
                    case GameMasterNodeType.CAMP_PIECE:
                        mNodeData = new CampPieceNodeData();
                        break;
                    default:
                        Console.WriteLine("unknown encounter node type for file " + Path);
                        mNodeData = new UnknownNodeData();
                        break;
                }
            }

            if (mNodeData != null)
            {
                mNodeData.NodeFile = this;
                mNodeData.LoadData(allNodes);
            }
        }