Beispiel #1
0
        /*
         * Get a board entry by it's id.
         * Looks in both Boards and BoardFolders.
         */
        public IBoardEntry GetBoardEntry(string hashID)
        {
            IBoardEntry entry = GetBoard(hashID);

            if (entry != null)
            {
                return(entry);
            }

            for (int i = 0; i < boardFolders.Length; i++)
            {
                if (boardFolders[i].id == hashID)
                {
                    return(boardFolders[i]);
                }
            }

            return(null);
        }
        /*
         * Create the runner from given project, with given runner.
         */
        public ProjectRunner(Project project, MonoBehaviour runner)
        {
            this.project = project;
            this.runner  = runner;

            walkers = new List <BoardWalker>();
            for (int i = 0; i < project.boards.Length; i++)
            {
                IBoardEntry entry = project.boards[i];

                if (!(entry is Board))
                {
                    continue;
                }

                Board board = entry as Board;
                try {
                    BoardWalker walker = new BoardWalker(board, this.project);
                    walkers.Add(walker);
                } catch (Exception e) {
                    Debug.LogWarning("[Arcweave] Cannot create BoardWalker for Board " + board.realName + ".\n" + e.Message);
                }
            }

            // If there's no walker loaded, bail!
            if (walkers.Count == 0)
            {
                throw new Exception("Cannot create ProjectRunner. No board loaded.");
            }

            // Use starting board and root node of that board
            Board startingBoard = project.boards[project.startingBoardIdx];

            active         = walkers[project.startingBoardIdx];
            active.current = startingBoard.GetElement(startingBoard.rootElementId);

            // Set callbacks to board runners
            walkers.ForEach(x => x.SetElementCallback(OnBoardCallback));
        }