private static INode GetNodeFromGSAData(string[] nodeData)
        {
            var nodeType = nodeData[1].ToLower();

            if (nodeType == "begin")
            {
                var startingNode = new StartingNode(int.Parse(nodeData[0]));
                startingNode.AddFollowingNode(int.Parse(nodeData[2]));
                return(startingNode);
            }
            else if (nodeType == "end")
            {
                return(new EndingNode(int.Parse(nodeData[0])));
            }
            else if (new Regex(@"y[0-9]+").IsMatch(nodeType))
            {
                var processNode = new ProcessNode(int.Parse(nodeData[0]));
                processNode.AddFollowingNode(int.Parse(nodeData[2]));
                return(processNode);
            }
            else if (new Regex(@"x[0-9]+").IsMatch(nodeType))
            {
                var decisionNode = new DecisionNode(int.Parse(nodeData[0]));
                decisionNode.AddLeftNode(int.Parse(nodeData[3]));
                decisionNode.AddRightNode(int.Parse(nodeData[2]));
                return(decisionNode);
            }
            else
            {
                return(null);
            }
        }
        private static INode GetNodeFromData(string[] nodeData)
        {
            switch (nodeData[1])
            {
            case "Begin":
                var startingNode = new StartingNode(int.Parse(nodeData[0]));
                startingNode.AddFollowingNode(int.Parse(nodeData[2]));
                return(startingNode);

            case "End":
                return(new EndingNode(int.Parse(nodeData[0])));

            case "Decis":
                var decisionNode = new DecisionNode(int.Parse(nodeData[0]));
                decisionNode.AddLeftNode(int.Parse(nodeData[3]), nodeData[5]);
                decisionNode.AddRightNode(int.Parse(nodeData[2]), nodeData[4]);
                return(decisionNode);

            case "Proc":
                var processNode = new ProcessNode(int.Parse(nodeData[0]));
                processNode.AddFollowingNode(int.Parse(nodeData[2]));
                return(processNode);

            default:
                return(null);
            }
        }
示例#3
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((StartingNode.GetHashCode() * 397) ^ EndingNode.GetHashCode());
     }
 }
示例#4
0
 public bool Equals(RouteSegment other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(StartingNode.Equals(other.StartingNode) && EndingNode.Equals(other.EndingNode));
 }
示例#5
0
        private void SetPlayers(Player[] players)
        {
            TotalPlayers = players.Length;
            PlayerList   = players;
            var i = 0;

            foreach (var player in players)
            {
                player.CurrentNode    = StartingNode;
                player.ActualLocation = StartingNode.GetTravelPosition(i, TotalPlayers);
                WorldObjects.Add(player);
                i++;
            }
        }
示例#6
0
        private static List <WorldObject> CreateBasicEmptyWorld(ContentManager content)
        {
            var worldObjects = new List <WorldObject>();
            var startingNode = new StartingNode(new Vector2(100, 100));

            startingNode.InitializeContent(content);

            //  var universityLogic = new BindedLogic(new StartUniversity(), true, "Start\nCollege\n-$20k");
            //  var universityLogic = new BindedLogic(new BlankStory(), true, false, "Story");
            // var getMarried = new BindedLogic(new GetMarried(10000), true, false, "Get\nMarried");
            //  var travelOne = new BindedLogic(new Travel(IslandType.Snow, WorldTransportType.Boat), true, false, "Travel A");
            // var minusCash = new BindedLogic(new ModifyCashStory(10000), hasPassLogic: true);

            //  var universityNode = new BindedLogic(new StartUniversity(), hasPassLogic: true);
            var universityPath = new Node(new Vector2(100, 220), true);

            universityPath.SetBindedLogic(new BindedLogic(new StartUniversity(), hasPassLogic: true));
            universityPath.InitializeContent(content);
            startingNode.AddLinkedNode(universityPath);

            // var careerLogic = new BindedLogic(new StartCareer(), true, "Start\nCareer");
            // var spinToWin = new BindedLogic(new SpinToWin(50000), true, false, "Spin To\nWin\n$50k");
            // var travelTwo = new BindedLogic(new Travel(IslandType.City, WorldTransportType.Boat), true, false, "Travel B");
            // var giveChild = new BindedLogic(new GiveChild(), true, false, "Acquire\nChild");
            //var givePet = new BindedLogic(new GivePet(), true, false, "Get\nPet");
            //var buyHouse = new BindedLogic(new BuyHouse(null), true, false, "Buy house");
            // var takeExam = new BindedLogic(new TakeExam(), true, true, "Take\nExam");
            //var addCash = new BindedLogic(new Nothing(), hasPassLogic: true);
            var careerPath = new Node(new Vector2(245, 100), true);

            //careerPath.SetBindedLogic(addCash);
            careerPath.SetBindedLogic(new BindedLogic(new StartCareer(), hasPassLogic: true));
            careerPath.InitializeContent(content);

            careerPath.AddLinkedNode(universityPath);
            startingNode.AddLinkedNode(careerPath);
            universityPath.AddLinkedNode(careerPath);

            var spinner = new Spinner(new Vector2(400, 100));

            spinner.InitializeContent(content);

            worldObjects.Add(startingNode);
            worldObjects.Add(universityPath);
            worldObjects.Add(careerPath);
            worldObjects.Add(spinner);

            return(worldObjects);
        }