예제 #1
0
 /// <summary>
 /// Perform the actions necessary when a battle is over
 /// </summary>
 /// <param name="winningPlayer">The player that won the battle</param>
 /// <param name="winningCard">The card that won the battle</param>
 /// <param name="losingCard">The card that lost the battle</param>
 /// <param name="winningDeck">The deck that won the battle</param>
 /// <param name="losingDeck">The deck that lost the battle</param>
 private void DoBattleOverActions(int winningPlayer, Card winningCard, Card losingCard, IDeck winningDeck, IDeck losingDeck)
 {
     _display.DisplayBattleWon(1, winningCard, losingCard);
     _statCollector.RecordBattle(1, winningCard, losingCard);
     winningDeck.Add(winningCard);
     winningDeck.Add(losingCard);
     losingDeck.Remove(losingCard);
 }
예제 #2
0
 /// <summary>
 /// This method collects cards back into the deck.
 /// </summary>
 /// <param name="deck">A deck of cards.</param>
 /// <param name="myCards">A list of player cards.</param>
 /// <param name="shufflerCards">A list of shuffler cards.</param>
 private void GetCardsBack(ref IDeck deck, ref List <ICard> myCards, ref List <ICard> shufflerCards)
 {
     foreach (ICard card in myCards)
     {
         deck.Add(card);
     }
     myCards.Clear();
     foreach (ICard card in shufflerCards)
     {
         deck.Add(card);
     }
     shufflerCards.Clear();
 }
 public bool Add(int key, V obj)
 {
     if (registry.Add(key, obj))
     {
         root.Add(0, 1, 0, key);
         return(true);
     }
     return(false);
 }
예제 #4
0
 /// <summary>
 /// Perform the actions necessary when a war is over
 /// </summary>
 /// <param name="winningPlayer">The player that won the battle</param>
 /// <param name="winningCard">The card that won the battle</param>
 /// <param name="losingCard">The card that lost the battle</param>
 /// <param name="winningDeck">The deck that won the battle</param>
 /// <param name="losingDeck">The deck that lost the battle</param>
 /// <param name="cardsAtStake">The cards that were at stake</param>
 private void DoWarOverActions(int winningPlayer, Card winningCard, Card losingCard, IDeck winningDeck, IDeck losingDeck, IEnumerable <Card> cardsAtStake)
 {
     _display.DisplayBattleWon(1, winningCard, losingCard);
     _display.DisplayWarWon(1, cardsAtStake);
     _statCollector.RecordWar(1);
     _statCollector.RecordBattle(1, winningCard, losingCard);
     foreach (var card in cardsAtStake)
     {
         winningDeck.Add(card);
         losingDeck.Remove(card);
     }
 }
        /// <summary>
        /// The Add.
        /// </summary>
        /// <param name="x">The x<see cref="int"/>.</param>
        public override void Add(int x)
        {
            if ((min == x) || (max == x))
            {
                return;
            }

            if (x < min)
            {
                int tmp = x;
                x   = min;
                min = tmp;
            }

            if (size != MINIMUM_UNIVERSE_SIZE_U4)
            {
                int x_highest = highest(x);

                //--- sigmaScopes common for all sigmaNode scopes ---->
                BaseSpectrum sigmaScopesItem;

                int sigmaScopesKey =
                    levels[level].Scopes[nodeId].IndexOffset
                    + levels[level].Scopes[nodeId].NodeSize
                    * registryId
                    + x_highest;
                //<-----sigmaNode key --- global


                if (!sigmaScopes.TryGet(sigmaScopesKey, out sigmaScopesItem))
                {
                    if (parentSqrt == MINIMUM_UNIVERSE_SIZE_U4)
                    {
                        if (sigmaNode == null)
                        {
                            sigmaNode = new TetraValue(-1);
                            sigmaNode.FirstAdd(x_highest);
                        }
                        else
                        {
                            sigmaNode.Add(x_highest);
                        }

                        //--- sigmaScopes common for all sigmaNode scopes ---->
                        sigmaScopesItem = new TetraValue(-1);
                        sigmaScopes.Add(sigmaScopesKey, sigmaScopesItem);
                        sigmaScopesItem.FirstAdd(lowest(x));
                        //<-----sigmaNode key --- global
                    }
                    else //create new branch
                    {
                        if (sigmaNode == null)
                        {
                            sigmaNode = new ScopeValue(parentSqrt, scopes, sigmaScopes, levels, (byte)(level + 1), (byte)(2 * nodeId), registryId);
                            sigmaNode.FirstAdd(x_highest);
                        }
                        else
                        {
                            sigmaNode.Add(x_highest);
                        }

                        //--- sigmaScopes common for all sigmaNode scopes ---->
                        sigmaScopesItem = new ScopeValue(parentSqrt, scopes, sigmaScopes, levels, (byte)(level + 1), (byte)(2 * nodeId + 1),
                                                         registryId * levels[level].Scopes[nodeId].NodeSize + x_highest);
                        sigmaScopes.Add(sigmaScopesKey, sigmaScopesItem);
                        sigmaScopesItem.FirstAdd(lowest(x));
                        //<-----sigmaNode key --- global
                    }
                }
                else
                {
                    //--- sigmaScopes common for all sigmaNode scopes ---->
                    sigmaScopesItem.Add(lowest(x));
                    //<-----sigmaNode key --- global
                }
            }

            if (max < x)
            {
                max = x;
            }
        }
        /// <summary>
        /// The Add.
        /// </summary>
        /// <param name="offsetBase">The offsetBase<see cref="int"/>.</param>
        /// <param name="offsetFactor">The offsetFactor<see cref="int"/>.</param>
        /// <param name="indexOffset">The indexOffset<see cref="int"/>.</param>
        /// <param name="x">The x<see cref="int"/>.</param>
        public override void Add(int offsetBase, int offsetFactor, int indexOffset, int x)
        {
            if ((min == x) || (max == x))
            {
                return;
            }

            if (min == NULL_KEY)
            {
                FirstAdd(offsetBase + offsetFactor * parentSqrt, offsetFactor * parentSqrt, indexOffset * parentSqrt + highest(x), x);
                return;
            }

            if (x < min)
            {
                int tmp = x;
                x   = min;
                min = tmp;
            }

            if (size != MINIMUM_UNIVERSE_SIZE_U4)
            {
                BaseSpectrum scopesItem;
                int          x_highest = highest(x);

                int scopesKey = offsetBase + indexOffset * parentSqrt + x_highest;

                if (!scopes.TryGet(scopesKey, out scopesItem))
                {
                    if (parentSqrt == MINIMUM_UNIVERSE_SIZE_U4)
                    {
                        if (sigmaNode == null)    //sigmaNode of the current level (u>4, e.g., u=16)
                        {
                            sigmaNode = new TetraValue(-1);
                            sigmaNode.FirstAdd(x_highest);
                        }
                        else
                        {
                            sigmaNode.Add(x_highest); //tutaj zrobic else
                        }
                        scopesItem = new TetraValue(-1);
                        scopes.Add(scopesKey, scopesItem);
                        scopesItem.FirstAdd(lowest(x));
                    }
                    else //create new node (add next level)
                    {
                        if (sigmaNode == null)
                        {
                            sigmaNode = new ScopeValue(parentSqrt, scopes, sigmaScopes, levels, (byte)(level + 1), (byte)(2 * nodeId), registryId);
                            sigmaNode.FirstAdd(x_highest);
                        }
                        else
                        {
                            sigmaNode.Add(x_highest); //tutaj zrobic else
                        }

                        scopesItem = new ScopeValue(parentSqrt, scopes, sigmaScopes, levels, (byte)(level + 1), (byte)(2 * nodeId + 1),
                                                    registryId * levels[level].Scopes[nodeId].NodeSize + x_highest);
                        scopes.Add(scopesKey, scopesItem);
                        scopesItem.FirstAdd(offsetBase + offsetFactor * parentSqrt, offsetFactor * parentSqrt, indexOffset * parentSqrt + x_highest, lowest(x));
                    }
                }
                else
                {
                    scopesItem.Add(offsetBase + offsetFactor * parentSqrt, offsetFactor * parentSqrt, indexOffset * parentSqrt + x_highest, lowest(x));
                }
            }

            if (max < x)
            {
                max = x;
            }
        }
예제 #7
0
        public static void Initialize(IDeck <SpaceSector> deck)
        {
            Console.WriteLine("Adding Open Space ...");
            deck.Add(new SpaceSector {
                Number = 1, Terrain = SpaceTerrain.OpenSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 2, Terrain = SpaceTerrain.OpenSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 3, Terrain = SpaceTerrain.OpenSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 4, Terrain = SpaceTerrain.OpenSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 5, Terrain = SpaceTerrain.OpenSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 6, Terrain = SpaceTerrain.OpenSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector
            {
                Number   = 7,
                Terrain  = SpaceTerrain.OpenSpace,
                Contents =
                {
                    new Planet            {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 7, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 8,
                Terrain  = SpaceTerrain.OpenSpace,
                Contents =
                {
                    new Planet            {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 14, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 9,
                Terrain  = SpaceTerrain.OpenSpace,
                Contents =
                {
                    new Planet            {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 4, Size = SatelliteSize.Small
                            },
                            new Satellite {
                                Radius = 11, Size = SatelliteSize.Small
                            },
                            new Satellite {
                                Radius = 16, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 10,
                Terrain  = SpaceTerrain.OpenSpace,
                Contents =
                {
                    new Planet {
                        Offset = 5
                    },
                    new Planet {
                        Offset = 5
                    },
                }
            });

            Console.WriteLine("Adding Asteroids ...");
            deck.Add(new SpaceSector {
                Number = 11, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 12, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 13, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 14, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 15, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 16, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 17, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 18, Terrain = SpaceTerrain.Asteroids, Contents = { new Planet() }
            });

            Console.WriteLine("Adding Gas Giants ...");
            deck.Add(new SpaceSector
            {
                Number   = 19,
                Terrain  = SpaceTerrain.GasGiant,
                Contents =
                {
                    new Planet            {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 6, Size = SatelliteSize.Small
                            },
                            new Satellite {
                                Radius = 10, Size = SatelliteSize.Medium
                            },
                            new Satellite {
                                Radius = 20, Size = SatelliteSize.Small
                            },
                        },
                        Diameter = 3,
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 20,
                Terrain  = SpaceTerrain.GasGiant,
                Contents =
                {
                    new Planet            {
                        Diameter   = 5,
                        Satellites =
                        {
                            new Satellite {
                                Radius = 8, Size = SatelliteSize.Medium
                            },
                        }
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 21,
                Terrain  = SpaceTerrain.GasGiant,
                Contents = { new Planet {
                                 Diameter = 5
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 22,
                Terrain  = SpaceTerrain.GasGiant,
                Contents = { new Planet {
                                 Diameter = 7
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 23,
                Terrain  = SpaceTerrain.GasGiant,
                Contents =
                {
                    new Planet            {
                        Diameter   = 9,
                        Satellites =
                        {
                            new Satellite {
                                Radius = 15, Size = SatelliteSize.Large
                            },
                        }
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 24,
                Terrain  = SpaceTerrain.GasGiant,
                Contents =
                {
                    new Planet            {
                        Diameter   = 11,
                        Satellites =
                        {
                            new Satellite {
                                Radius = 13, Size = SatelliteSize.Large
                            },
                            new Satellite {
                                Radius = 19, Size = SatelliteSize.Small
                            },
                        }
                    }
                }
            });
            deck.Add(new SpaceSector
            {
                Number   = 25,
                Terrain  = SpaceTerrain.GasGiant,
                Contents = { new Planet {
                                 Diameter = 11
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 26,
                Terrain  = SpaceTerrain.GasGiant,
                Contents = { new Planet {
                                 Diameter = 13
                             } }
            });

            Console.WriteLine("Adding Dust Clouds ...");
            deck.Add(new SpaceSector {
                Number = 27, Terrain = SpaceTerrain.DustCloud, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 28, Terrain = SpaceTerrain.DustCloud, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 29, Terrain = SpaceTerrain.DustCloud, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 30, Terrain = SpaceTerrain.DustCloud, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 31, Terrain = SpaceTerrain.DustCloud, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector
            {
                Number   = 32,
                Terrain  = SpaceTerrain.DustCloud,
                Contents =
                {
                    new Planet
                    {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 12, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });

            Console.WriteLine("Adding Heat Zones ...");
            deck.Add(new SpaceSector {
                Number = 33, Terrain = SpaceTerrain.HeatZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 34, Terrain = SpaceTerrain.HeatZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 35, Terrain = SpaceTerrain.HeatZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 36, Terrain = SpaceTerrain.HeatZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 37, Terrain = SpaceTerrain.HeatZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector
            {
                Number   = 38,
                Terrain  = SpaceTerrain.HeatZone,
                Contents =
                {
                    new Planet
                    {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 4, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });

            Console.WriteLine("Adding Radiation Zones ...");
            deck.Add(new SpaceSector {
                Number = 39, Terrain = SpaceTerrain.RadiationZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 40, Terrain = SpaceTerrain.RadiationZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 41, Terrain = SpaceTerrain.RadiationZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 42, Terrain = SpaceTerrain.RadiationZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 43, Terrain = SpaceTerrain.RadiationZone, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector
            {
                Number   = 44,
                Terrain  = SpaceTerrain.RadiationZone,
                Contents =
                {
                    new Planet
                    {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 17, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });

            Console.WriteLine("Adding Mine Fields ...");
            deck.Add(new SpaceSector {
                Number = 45, Terrain = SpaceTerrain.MineField, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 46, Terrain = SpaceTerrain.MineField, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 47, Terrain = SpaceTerrain.MineField, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 48, Terrain = SpaceTerrain.MineField, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector
            {
                Number   = 49,
                Terrain  = SpaceTerrain.MineField,
                Contents =
                {
                    new Planet
                    {
                        Satellites =
                        {
                            new Satellite {
                                Radius = 12, Size = SatelliteSize.Small
                            }
                        }
                    }
                }
            });

            Console.WriteLine("Adding Black Holes ...");
            deck.Add(new SpaceSector {
                Number = 50, Terrain = SpaceTerrain.BlackHole, Contents = { new BlackHole() }
            });
            deck.Add(new SpaceSector {
                Number = 51, Terrain = SpaceTerrain.BlackHole, Contents = { new BlackHole() }
            });
            deck.Add(new SpaceSector {
                Number = 52, Terrain = SpaceTerrain.BlackHole, Contents = { new BlackHole() }
            });
            deck.Add(new SpaceSector {
                Number = 53, Terrain = SpaceTerrain.BlackHole, Contents = { new BlackHole() }
            });
            deck.Add(new SpaceSector {
                Number = 54, Terrain = SpaceTerrain.BlackHole, Contents = { new BlackHole() }
            });

            Console.WriteLine("Adding Nebulae ...");
            deck.Add(new SpaceSector
            {
                Number   = 55,
                Terrain  = SpaceTerrain.Nebula,
                Contents = { new Planet {
                                 HasAtomosphere = false
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 56,
                Terrain  = SpaceTerrain.Nebula,
                Contents = { new Planet {
                                 HasAtomosphere = false
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 57,
                Terrain  = SpaceTerrain.Nebula,
                Contents = { new Planet {
                                 HasAtomosphere = false
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 58,
                Terrain  = SpaceTerrain.Nebula,
                Contents = { new Planet {
                                 HasAtomosphere = false
                             } }
            });
            deck.Add(new SpaceSector
            {
                Number   = 59,
                Terrain  = SpaceTerrain.Nebula,
                Contents = { new Planet {
                                 HasAtomosphere = false
                             } }
            });

            Console.WriteLine("Adding Voids ...");
            deck.Add(new SpaceSector {
                Number = 60, Terrain = SpaceTerrain.Void
            });
            deck.Add(new SpaceSector {
                Number = 61, Terrain = SpaceTerrain.Void
            });
            deck.Add(new SpaceSector {
                Number = 62, Terrain = SpaceTerrain.Void
            });
            deck.Add(new SpaceSector {
                Number = 63, Terrain = SpaceTerrain.Void
            });
            deck.Add(new SpaceSector {
                Number = 64, Terrain = SpaceTerrain.Void
            });

            Console.WriteLine("Adding unusual ...");
            deck.Add(new SpaceSector {
                Number = 65, Terrain = SpaceTerrain.BlackHoleMania, Contents = { new BlackHole() }
            });
            deck.Add(new SpaceSector {
                Number = 66, Terrain = SpaceTerrain.DragSpace, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 67, Terrain = SpaceTerrain.SubspaceCurrent, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 68, Terrain = SpaceTerrain.WebClusters, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 69, Terrain = SpaceTerrain.WrapAround, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 70, Terrain = SpaceTerrain.Cluster, Contents = { new Planet() }
            });

            Console.WriteLine("Adding central zones ...");
            deck.Add(new SpaceSector {
                Number = 71, Terrain = SpaceTerrain.Arena, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 72, Terrain = SpaceTerrain.Pass
            });
            deck.Add(new SpaceSector {
                Number = 73, Terrain = SpaceTerrain.Cage
            });
            deck.Add(new SpaceSector
            {
                Number   = 74,
                Terrain  = SpaceTerrain.Confluence,
                Contents =
                {
                    new Planet
                    {
                        Diameter   = 11,
                        Satellites =
                        {
                            new Satellite {
                                Radius = 9, Size = SatelliteSize.Medium
                            },
                            new Satellite {
                                Radius = 12, Size = SatelliteSize.Small
                            },
                            new Satellite {
                                Radius = 16, Size = SatelliteSize.Large
                            },
                            new Satellite {
                                Radius = 22, Size = SatelliteSize.Small
                            },
                        }
                    }
                }
            });
            deck.Add(new SpaceSector {
                Number = 75, Terrain = SpaceTerrain.Monsters, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 76, Terrain = SpaceTerrain.Mystery
            });
            deck.Add(new SpaceSector {
                Number = 77, Terrain = SpaceTerrain.NeutronStar, Contents = { new NeutronStar() }
            });
            deck.Add(new SpaceSector {
                Number = 78, Terrain = SpaceTerrain.Racetrack
            });
            deck.Add(new SpaceSector {
                Number = 79, Terrain = SpaceTerrain.Ringworld, Contents = { new Planet() }
            });
            deck.Add(new SpaceSector {
                Number = 80, Terrain = SpaceTerrain.WhiteHole, Contents = { new WhiteHole() }
            });
        }