예제 #1
0
        public static ConstellationPattern CreateAssociatedCardsPatternFrom(ConstellationPattern modelPattern, IConstellation constellation)
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            Dictionary <ConstellationNode, ConstellationNode> nodeToNewNode = new Dictionary <ConstellationNode, ConstellationNode>();

            ConstellationNode newNode;

            foreach (ConstellationNode node in modelPattern.ConstellationNodeSystem)
            {
                if (node != modelPattern.NodeSelf)
                {
                    StarEntity associatedStarEntity = constellation.NodeToStarEntity[node];

                    newNode = new ConstellationCardEntityNode(associatedStarEntity.CardSocketed);
                    nodeToNewNode.Add(node, newNode);

                    patternToCreate.AddNode(newNode);
                }
            }

            newNode = new ConstellationNodeSelf();
            nodeToNewNode.Add(modelPattern.NodeSelf, newNode);
            patternToCreate.AddNode(newNode);

            foreach (ConstellationLink link in modelPattern.ConstellationLinkSystem)
            {
                patternToCreate.AddNodeLink(new ConstellationLink(nodeToNewNode[link.Node1], nodeToNewNode[link.Node2]));
            }

            return(patternToCreate);
        }
예제 #2
0
        public static ConstellationPattern CreateToolsConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNode node1 = new ConstellationAllyNode();

            patternToCreate.AddNode(node1);
            ConstellationNode node2 = new ConstellationAllyNode();

            patternToCreate.AddNode(node2);
            ConstellationNode node3 = new ConstellationOpponentNode();

            patternToCreate.AddNode(node2);
            ConstellationNodeSelf self = new ConstellationNodeSelf();

            patternToCreate.AddNode(self);

            ConstellationLink link = new ConstellationLink(self, node1);

            patternToCreate.AddNodeLink(link);
            ConstellationLink link2 = new ConstellationLink(self, node2);

            patternToCreate.AddNodeLink(link2);
            ConstellationLink link3 = new ConstellationLink(self, node3);

            patternToCreate.AddNodeLink(link3);

            return(patternToCreate);
        }
예제 #3
0
        public static ConstellationPattern CreateDefaultConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNode node1 = new ConstellationNode();

            node1.Name = "head1";
            patternToCreate.AddNode(node1);
            ConstellationNode node2 = new ConstellationNode();

            node2.Name = "head2";
            patternToCreate.AddNode(node2);
            //ConstellationNode node3 = new ConstellationNode();
            //node3.Name = "tail";
            //patternToCreate.AddNode(node3);
            ConstellationNodeSelf self = new ConstellationNodeSelf();

            self.Name = "self";
            patternToCreate.AddNode(self);

            ConstellationLink link = new ConstellationLink(self, node2);

            patternToCreate.AddNodeLink(link);
            ConstellationLink link2 = new ConstellationLink(self, node1);

            patternToCreate.AddNodeLink(link2);
            //ConstellationLink link3 = new ConstellationLink(node1, node2);
            //patternToCreate.AddNodeLink(link3);
            //ConstellationLink link4 = new ConstellationLink(self, node3);
            //patternToCreate.AddNodeLink(link4);

            return(patternToCreate);
        }
예제 #4
0
        public static ConstellationPattern CreateMinimalConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNodeSelf self = new ConstellationNodeSelf();

            patternToCreate.AddNode(self);

            return(patternToCreate);
        }
예제 #5
0
            public Snapshot(ConstellationPattern parentConstellationPattern, Stack <StarEntity> potentialStarEntities, Dictionary <StarEntity, List <StarLinkEntity> > starEntityToStarLinks)
            {
                this.CurrentStarEntityToStarLinks = starEntityToStarLinks;

                this.currentStack    = new Stack <Tuple <ConstellationLink, ConstellationNode> >(parentConstellationPattern.constellationStack);
                this.currentTopStack = parentConstellationPattern.constellationStack.Peek();

                this.alreadyEncounteredNodes        = new HashSet <ConstellationNode>(parentConstellationPattern.alreadyEncounteredNodes);
                this.alreadyEncounteredStarEntities = new HashSet <StarEntity>(parentConstellationPattern.alreadyEncounteredStarEntities);

                this.currentPathStarEntities = new Stack <StarEntity>(parentConstellationPattern.pathStarEntities);

                this.PotentialStarEntities = potentialStarEntities;
            }
예제 #6
0
        public static ConstellationPattern CreateRockConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNode node1 = new ConstellationLockNode();

            patternToCreate.AddNode(node1);
            ConstellationNodeSelf self = new ConstellationNodeSelf();

            patternToCreate.AddNode(self);

            ConstellationLink link = new ConstellationLink(self, node1);

            patternToCreate.AddNodeLink(link);

            return(patternToCreate);
        }
예제 #7
0
        public static ConstellationPattern CreateHierophantConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNode node1 = new ConstellationNode();

            patternToCreate.AddNode(node1);
            ConstellationNode node2 = new ConstellationNode();

            patternToCreate.AddNode(node2);

            ConstellationNode node3 = new ConstellationNode();

            patternToCreate.AddNode(node3);
            ConstellationNode node4 = new ConstellationNode();

            patternToCreate.AddNode(node4);

            ConstellationNodeSelf self = new ConstellationNodeSelf();

            patternToCreate.AddNode(self);

            ConstellationLink link = new ConstellationLink(self, node1);

            patternToCreate.AddNodeLink(link);
            ConstellationLink link2 = new ConstellationLink(node1, node2);

            patternToCreate.AddNodeLink(link2);

            ConstellationLink link3 = new ConstellationLink(self, node3);

            patternToCreate.AddNodeLink(link3);
            ConstellationLink link4 = new ConstellationLink(node3, node4);

            patternToCreate.AddNodeLink(link4);

            return(patternToCreate);
        }
예제 #8
0
        public static ConstellationPattern CreateEmpressConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNode node1 = new ConstellationAllyNode();

            patternToCreate.AddNode(node1);
            ConstellationNode node2 = new ConstellationSpecificCardNode("emperor", ConstellationSpecificCardNode.NodeType.ALLY);

            patternToCreate.AddNode(node2);
            ConstellationNodeSelf self = new ConstellationNodeSelf();

            patternToCreate.AddNode(self);

            ConstellationLink link = new ConstellationLink(self, node2);

            patternToCreate.AddNodeLink(link);
            ConstellationLink link2 = new ConstellationLink(self, node1);

            patternToCreate.AddNodeLink(link2);

            return(patternToCreate);
        }
예제 #9
0
        public static ConstellationPattern CreateArchitectsConstellation()
        {
            ConstellationPattern patternToCreate = new ConstellationPattern();

            ConstellationNode node1 = new ConstellationAllyNode();

            patternToCreate.AddNode(node1);
            ConstellationNode node2 = new ConstellationAllyNode();

            patternToCreate.AddNode(node2);
            ConstellationNodeSelf self = new ConstellationNodeSelf();

            patternToCreate.AddNode(self);

            ConstellationLink link = new ConstellationLink(self, node1);

            patternToCreate.AddNodeLink(link);
            ConstellationLink link2 = new ConstellationLink(node1, node2);

            patternToCreate.AddNodeLink(link2);

            return(patternToCreate);
        }
 public HoldingCardsConstellation(ConstellationPattern constellationPattern)
     : base(constellationPattern, null)
 {
 }
예제 #11
0
        public HoldingConstellation(ConstellationPattern constellationPattern, ConstellationPattern holdingConstellationPattern)
        {
            this.constellationPattern = constellationPattern;

            this.holdingConstellationPattern = holdingConstellationPattern;
        }
예제 #12
0
 public Constellation(ConstellationPattern constellationPattern)
 {
     this.constellationPattern = constellationPattern;
 }