示例#1
0
        /// <summary>
        /// Updates the appearance of each cell in the game board according to it's
        /// corresponding <see cref="Tile"/>'s state.
        /// </summary>
        private void DrawGameBoard()
        {
            foreach (Button button in grd_GameBoard.Children)
            {
                string buttonName = button.Name;

                // Button name format: "btn_{row}{col}"
                string correspondingTilePos = buttonName.Replace("btn_", "");
                Tile   correspondingTile    = gameModel.getTileOnBoard(correspondingTilePos);
                if (correspondingTile != null)
                {
                    if (correspondingTile.Corp != null)
                    {
                        // Retrieve correct enum member for color lookup.
                        ECorporation corpName = correspondingTile.Corp.Name;
                        button.Background = aquireStyle.GetActiveCorpColor(corpName);

                        if (gameModel.getCorporationTiles(corpName).Count >= 11)
                        {
                            button.BorderBrush     = Brushes.Black;
                            button.BorderThickness = new Thickness(4);
                        }
                    }
                    else
                    {
                        button.Background = Brushes.White;
                    }
                }
                else
                {
                    button.Background = Brushes.SlateGray;
                }
            }
        }
        public void Insert()
        {
            ECorporation eCorporation = new ECorporation();
            BCorporation bCorporation = new BCorporation();
            BAudit       bAudit       = new BAudit();
            short        routes       = 0;

            eCorporation.CodeCorporation    = Aleatory.GetString(2);
            eCorporation.Name               = Aleatory.GetString(8);
            eCorporation.State              = Aleatory.GetShort();
            eCorporation.Audit.UserRegister = Aleatory.GetString(8);

            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                bCorporation.Insert(eCorporation);

                ECorporation insertedCorporation = bCorporation.Select(eCorporation);

                if (insertedCorporation != null &&
                    insertedCorporation.Name == eCorporation.Name &&
                    insertedCorporation.State == eCorporation.State)
                {
                    routes++;
                }

                EAudit lastAudit = bAudit.Select(eCorporation.Audit).Where(x => x.UserRegister == eCorporation.Audit.UserRegister && x.TypeEvent == "Insert").FirstOrDefault();

                if (lastAudit != null)
                {
                    routes++;
                }
            }

            Assert.AreEqual(routes, 2);
        }
 public void Update(ECorporation eCorporation)
 {
     eCorporation.Validar();
     dCorporation.Update(eCorporation);
     eCorporation.Audit.TypeEvent = "Update";
     bAudit.Insert(eCorporation.Audit);
 }
示例#4
0
        public DataRow Select(ECorporation corporation)
        {
            DaCommand command = new DaCommand("dbo.CorporationSelect");

            command.AddInParameter("@CodeCorporation", DbType.String, corporation.CodeCorporation);
            return(ExecuteDataRow(command));
        }
示例#5
0
        public void Delete(ECorporation corporation)
        {
            DaCommand command = new DaCommand("dbo.CorporationDelete");

            command.AddInParameter("@CodeCorporation", DbType.String, corporation.CodeCorporation);
            ExecuteNonQuery(command);
        }
示例#6
0
        /// <summary>
        /// constructor, sets the name of the corporation, active status to false, and creates an empty List for Tiles.
        /// </summary>
        /// <param name="nameOfCorporation">(string) the name of the corporation</param>
        /// <param name="s"></param>
        public Corporation(ECorporation nameOfCorporation, int s = 0)
        {
            this.name   = nameOfCorporation;
            this.active = false;
            this.tiles  = new List <Tile>();

            initialValue = s;
        }
示例#7
0
        public void Update(ECorporation corporation)
        {
            DaCommand command = new DaCommand("dbo.CorporationUpdate");

            command.AddInParameter("@CodeCorporation", DbType.String, corporation.CodeCorporation);
            command.AddInParameter("@Name", DbType.String, corporation.Name);
            command.AddInParameter("@State", DbType.Int16, corporation.State);
            ExecuteNonQuery(command);
        }
示例#8
0
 /// <summary>
 /// Gives a free stock to the player.
 /// </summary>
 /// <param name="player">player to give stock</param>
 /// <param name="corporation">corporation that has stock</param>
 /// <returns>true if bank has stock and is given to player</returns>
 public bool giveFreeStock(Player player, ECorporation corporation)
 {
     if (this.removeStock(corporation, 1))
     {
         player.addStock(corporation, 1);
         return(true);
     }
     return(false);
 }
        public void Delete()
        {
            bool             result              = false;
            BUserCompany     bUserCompany        = new BUserCompany();
            EUserCompany     eUserCompany        = new EUserCompany();
            EUserCompany     insertedUserCompany = new EUserCompany();
            EUserCompany     deletedUserCompany  = new EUserCompany();
            BCorporation     bCorporation        = new BCorporation();
            ECorporation     eCorporation        = new ECorporation();
            BCompany         bCompany            = new BCompany();
            ECompany         eCompany            = new ECompany();
            BUser            bUser = new BUser();
            EUser            eUser = new EUser();
            TransactionScope ts    = new TransactionScope(TransactionScopeOption.RequiresNew);

            eCorporation.CodeCorporation    = Aleatory.GetString(2);
            eCorporation.Name               = Aleatory.GetString(15);
            eCorporation.State              = Aleatory.GetShort();
            eCorporation.Audit.UserRegister = Aleatory.GetString(8);
            bCorporation.Insert(eCorporation);

            eCompany.CodeCompany        = Aleatory.GetString(2);
            eCompany.CodeCorporation    = eCorporation.CodeCorporation;
            eCompany.Ruc                = Aleatory.GetString(11);
            eCompany.LongName           = Aleatory.GetString(15);
            eCompany.State              = Aleatory.GetShort();
            eCompany.Audit.UserRegister = Aleatory.GetString(8);
            bCompany.Insert(eCompany);

            eUser.CodeUser           = Aleatory.GetString(8);
            eUser.Name               = Aleatory.GetString(8);
            eUser.Password           = Aleatory.GetString(8);
            eUser.State              = Aleatory.GetShort();
            eUser.Audit.UserRegister = Aleatory.GetString(8);
            bUser.Insert(eUser);

            eUserCompany.CodeUser    = eUser.CodeUser;
            eUserCompany.CodeCompany = eCompany.CodeCompany;
            bUserCompany.Insert(eUserCompany);

            insertedUserCompany = bUserCompany.Select(eUserCompany);

            if (insertedUserCompany != null)
            {
                bUserCompany.Delete(eUserCompany);
            }

            deletedUserCompany = bUserCompany.Select(eUserCompany);

            if (deletedUserCompany == null)
            {
                result = true;
            }

            Assert.IsTrue(result);
        }
示例#10
0
        /// <summary>
        /// Sets the content of each <see cref="Corporation"/> button with the name
        /// of that corporation.
        /// </summary>
        private void SetCorpButtonContent()
        {
            foreach (KeyValuePair <ECorporation, Button> corpEntry in corporationsView)
            {
                ECorporation currentCorp   = corpEntry.Key;
                Button       currentButton = corpEntry.Value;

                currentButton.Content = currentCorp;
            }
        }
示例#11
0
        public ECorporation Select(ECorporation corporation)
        {
            ECorporation result = null;
            DataRow      row    = dCorporation.Select(corporation);

            if (row != null)
            {
                result = new ECorporation(row, row.GetColumns());
            }
            return(result);
        }
示例#12
0
        public void Update()
        {
            short            routes         = 0;
            BAudit           bAudit         = new BAudit();
            EAudit           eAudit         = null;
            BCompany         bCompany       = new BCompany();
            ECompany         eCompany       = new ECompany();
            ECompany         updatedCompany = new ECompany();
            BCorporation     bCorporation   = new BCorporation();
            ECorporation     eCorporation   = new ECorporation();
            TransactionScope ts             = new TransactionScope(TransactionScopeOption.RequiresNew);

            eCorporation.CodeCorporation    = Aleatory.GetString(2);
            eCorporation.Name               = Aleatory.GetString(8);
            eCorporation.State              = Aleatory.GetShort();
            eCorporation.Audit.UserRegister = Aleatory.GetString(8);
            bCorporation.Insert(eCorporation);

            eCompany.CodeCompany        = Aleatory.GetString(2);
            eCompany.Ruc                = Aleatory.GetString(11);
            eCompany.CodeCorporation    = eCorporation.CodeCorporation;
            eCompany.LongName           = Aleatory.GetString(8);
            eCompany.State              = Aleatory.GetShort();
            eCompany.Audit.UserRegister = Aleatory.GetString(8);
            bCompany.Insert(eCompany);

            eCompany.LongName           = Aleatory.GetString(8);
            eCompany.State              = Aleatory.GetShort();
            eCompany.Audit.UserRegister = Aleatory.GetString(8);
            bCompany.Update(eCompany);

            updatedCompany = bCompany.Select(eCompany);

            if (updatedCompany != null &&
                updatedCompany.CodeCompany == eCompany.CodeCompany &&
                updatedCompany.CodeCorporation == eCompany.CodeCorporation &&
                updatedCompany.LongName != eCompany.LongName &&
                updatedCompany.State == eCompany.State)
            {
                routes++;
            }

            eAudit = bAudit.Select(eCompany.Audit).
                     Where(x => x.UserRegister == eCompany.Audit.UserRegister &&
                           x.Code == eCompany.Audit.Code &&
                           x.TypeEvent == "Update").FirstOrDefault();

            if (eAudit != null)
            {
                routes++;
            }

            ts.Dispose();
        }
示例#13
0
 public void Delete(ECorporation corporation)
 {
     dCorporation.Delete(corporation);
     if (dCorporation.ExistsReference())
     {
         Message = string.Format("La Corporación '{0}' tiene referencias en el Sistema, no se puede eliminar el registro.", corporation.Name);
         throw new Exception(Message);
     }
     corporation.Audit.TypeEvent = "Delete";
     bAudit.Insert(corporation.Audit);
 }
示例#14
0
 public void Insert(ECorporation eCorporation)
 {
     eCorporation.Validar();
     dCorporation.Insert(eCorporation);
     if (dCorporation.ExistsPrimaryKey())
     {
         Message = string.Format("El código de Corporación '{0}' ya existe en el Sistema, no se puede crear el registro.", eCorporation.CodeCorporation);
         throw new Exception(Message);
     }
     eCorporation.Audit.TypeEvent = "Insert";
     bAudit.Insert(eCorporation.Audit);
 }
示例#15
0
 /// <summary>
 /// Chooses the corporation to form
 /// </summary>
 /// <param name="corporation">A corporation enumeration</param>
 /// <exception cref="InvalidProgramException">Thrown when attempting to make an illegal choice</exception>
 public override void chooseCorporation(ECorporation corporation)
 {
     // Find the corporation in the valid references
     foreach (Corporation c in validCorpReferences)
     {
         if (corporation == c.Name)
         {
             adjacentTiles.Add(connector);
             c.formCorporation(adjacentTiles);
             return;
         }
     }
     throw new InvalidProgramException("Unable to choose corporation. It is not inactive.");
 }
示例#16
0
        public void Delete()
        {
            short            routes       = 0;
            BAudit           bAudit       = new BAudit();
            EAudit           eAudit       = null;
            BCompany         bCompany     = new BCompany();
            ECompany         eCompany     = new ECompany();
            BCorporation     bCorporation = new BCorporation();
            ECorporation     eCorporation = new ECorporation();
            TransactionScope ts           = new TransactionScope(TransactionScopeOption.RequiresNew);

            eCorporation.CodeCorporation    = Aleatory.GetString(2);
            eCorporation.Name               = Aleatory.GetString(8);
            eCorporation.State              = 1;
            eCorporation.Audit.UserRegister = Aleatory.GetString(8);
            bCorporation.Insert(eCorporation);

            eCompany.CodeCompany        = Aleatory.GetString(2);
            eCompany.Ruc                = Aleatory.GetString(11);
            eCompany.CodeCorporation    = eCorporation.CodeCorporation;
            eCompany.LongName           = Aleatory.GetString(8);
            eCompany.State              = Aleatory.GetShort();
            eCompany.Audit.UserRegister = Aleatory.GetString(8);
            bCompany.Insert(eCompany);

            if (bCompany.Select(eCompany) != null)
            {
                routes++;
            }

            bCompany.Delete(eCompany);

            if (bCompany.Select(eCompany) == null)
            {
                routes++;
            }

            eAudit = bAudit.Select(eCompany.Audit).
                     Where(x => x.UserRegister == eCompany.Audit.UserRegister &&
                           x.TypeEvent == "Delete" &&
                           x.Code == eCompany.Audit.Code).FirstOrDefault();
            if (eAudit != null)
            {
                routes++;
            }

            ts.Dispose();

            Assert.AreEqual(routes, 3);
        }
示例#17
0
        /// <summary>
        /// Sells stock at the current price to the bank
        /// </summary>
        /// <param name="bank">The bank</param>
        /// <param name="corporation">Corporation stock is associated with</param>
        /// <param name="qty">The number of stocks</param>
        /// <returns></returns>
        public bool sellStock(Bank bank, ECorporation corporation, int qty)
        {
            // Check if they have stocks
            if (this.countStocks(corporation) < qty)
            {
                return(false);
            }
            int sellPrice = this.stocks[corporation].getStockPrice() * qty;

            adjustMoney(sellPrice);
            // Perform stock transaction
            this.removeStock(corporation, qty);
            bank.addStock(corporation, qty);
            return(true);
        }
示例#18
0
 /// <summary>
 /// Chooses the corporation that will survive in a tie between largest size merger
 /// </summary>
 /// <param name="corporation">The survivor or overtaker</param>
 /// <exception cref="InvalidProgramException">Thrown when making an illegal corporation choice</exception>
 public override void chooseCorporation(ECorporation corporation)
 {
     if (!validCorporationChoices.Contains(corporation))     // Illegal choice
     {
         throw new InvalidProgramException("Corporation is not a valid choice.");
     }
     foreach (Corporation corporation1 in mergerCorporations)
     {
         if (corporation1.Name == corporation)
         {
             overtaker = corporation1;
             notifyDefunctStock();
             break;
         }
     }
 }
示例#19
0
        public void Select()
        {
            short            routes        = 0;
            BCompany         bCompany      = new BCompany();
            ECompany         eCompany      = new ECompany();
            BCorporation     bCorporation  = new BCorporation();
            ECorporation     eCorporation  = new ECorporation();
            ECompany         selectCompany = new ECompany();
            TransactionScope ts            = new TransactionScope(TransactionScopeOption.RequiresNew);

            eCompany.CodeCompany        = Aleatory.GetString(2);
            eCompany.Ruc                = Aleatory.GetString(11);
            eCompany.LongName           = Aleatory.GetString(8);
            eCompany.ShortName          = Aleatory.GetString(8);
            eCompany.State              = 1;
            eCompany.Audit.UserRegister = Aleatory.GetString(8);

            selectCompany = bCompany.Select(eCompany);

            if (selectCompany == null)
            {
                routes++;
            }

            eCorporation.CodeCorporation    = Aleatory.GetString(2);
            eCorporation.Name               = Aleatory.GetString(8);
            eCorporation.State              = 1;
            eCorporation.Audit.UserRegister = "uni test";
            bCorporation.Insert(eCorporation);

            eCompany.CodeCorporation = eCorporation.CodeCorporation;
            bCompany.Insert(eCompany);

            selectCompany = bCompany.Select(eCompany);

            if (selectCompany != null &&
                selectCompany.LongName == eCompany.LongName &&
                selectCompany.ShortName == eCompany.ShortName)
            {
                routes++;
            }

            ts.Dispose();

            Assert.AreEqual(routes, 2);
        }
示例#20
0
        /// <summary>
        /// Calculates the total purchase price of buying stocks.
        /// </summary>
        /// <returns>A string representing the price as money.</returns>
        private int CalculatePurchaseTotal()
        {
            int purchaseTotal = 0;

            foreach (KeyValuePair <Slider, ECorporation> corpSlider in corporationSliders)
            {
                Slider       slider      = corpSlider.Key;
                ECorporation corporation = corpSlider.Value;

                if (model.isActiveCorporation(corporation))
                {
                    int purchaseQty   = (int)slider.Value;
                    int purchasePrice = model.getStockValue(corporation);

                    purchaseTotal += purchaseQty * purchasePrice;
                }
            }

            return(purchaseTotal);
        }
示例#21
0
        /// <summary>
        /// Trades stocks at a rate of 2:1 for the overtaking corporation stock.
        /// </summary>
        /// <param name="player">The player trading stocks</param>
        /// <param name="defunct">The defunct corporation</param>
        /// <param name="overtaker">The overtaking corporation</param>
        /// <param name="qty">The quantity of stocks to get in the overtaking corporation</param>
        /// <returns></returns>
        public bool tradeStock(Player player, ECorporation defunct, ECorporation overtaker, int qty)
        {
            // Does the bank have enough stocks?
            if (this.countStocks(overtaker) < qty)
            {
                return(false);
            }
            // Does the player have the stocks to trade?
            int defunctQty = qty * 2;

            if (player.countStocks(defunct) < defunctQty)
            {
                return(false);
            }
            // Do the trade
            player.removeStock(defunct, defunctQty);
            this.addStock(defunct, defunctQty);
            this.removeStock(overtaker, qty);
            player.addStock(overtaker, qty);
            return(true);
        }
示例#22
0
        public void Select()
        {
            ECorporation eCorporation = new ECorporation();
            BCorporation bCorporation = new BCorporation();
            BAudit       bAudit       = new BAudit();
            short        routes       = 0;

            eCorporation.CodeCorporation    = Aleatory.GetString(2);
            eCorporation.Name               = Aleatory.GetString(8);
            eCorporation.State              = 1;
            eCorporation.Audit.UserRegister = Aleatory.GetString(8);

            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                if (bCorporation.Select(eCorporation) == null)
                {
                    routes++;
                }

                bCorporation.Insert(eCorporation);

                ECorporation insertedCorporation = bCorporation.Select(eCorporation);

                if (insertedCorporation != null && insertedCorporation.Name == eCorporation.Name && insertedCorporation.State == eCorporation.State)
                {
                    routes++;
                }

                EAudit lastAudit = bAudit.Select(eCorporation.Audit)[0];

                if (lastAudit != null && lastAudit.UserRegister == eCorporation.Audit.UserRegister &&
                    lastAudit.TypeEvent.ToLower() == "insert")
                {
                    routes++;
                }
            }

            Assert.AreEqual(routes, 3);
        }
示例#23
0
        /// <summary>
        /// Purchases stock from the bank at the current price.
        /// </summary>
        /// <param name="bank">The bank</param>
        /// <param name="corporation">The corporation</param>
        /// <param name="qty">The amount of stocks</param>
        /// <returns>True if successful</returns>
        public bool purchaseStock(Bank bank, ECorporation corporation, int qty)
        {
            if (stocksPurchasedPerTurn + qty > 3)
            {
                throw new InvalidOperationException("Nope, you can't purchase more than 3 stocks per turn!");
            }
            // Check if we have enough money
            int purchasePrice = this.stocks[corporation].getStockPrice() * qty;

            if (money < purchasePrice)
            {
                return(false);
            }
            // Does bank have stock
            if (!bank.removeStock(corporation, qty))
            {
                return(false);
            }
            adjustMoney(-1 * purchasePrice);
            addStock(corporation, qty);
            stocksPurchasedPerTurn += qty;
            return(true);
        }
        /// <summary>
        /// Constructor for the stock Merger window
        /// </summary>
        public StockMerger(GameModel model)
        {
            InitializeComponent();

            this.model  = model;
            aquireStyle = new AquireStyle();
            ECorporation defunct         = model.getDefunctCorporation();
            ECorporation overtaker       = model.getOvertaker();
            int          inHand          = model.getCurrentPlayerStocks(defunct);
            int          overtakerInBank = model.getBankStocks(overtaker);
            int          maximum         = (int)inHand / 2;

            // Get player info.
            grp_PlayerInfo.Header = model.getCurrentPlayerName();
            tb_PlayerMoney.Text   = "$" + model.getCurrentPlayerMoney();

            // Get defunct corporation and overtaker corporation.
            lbl_merger.Content = "Merging " + defunct.ToString() + " into " + overtaker.ToString();

            // Set defunct label values.
            lbl_defunct.Content           = defunct.ToString();
            lbl_defunct_inBank.Content    = model.getBankStocks(defunct);
            lbl_defunct_inHand.Content    = inHand;
            lbl_defunct_price.Content     = "$" + model.getStockValue(defunct).ToString();
            brd_DefunctBorder.BorderBrush = aquireStyle.GetActiveCorpColor(defunct);

            // Set overtaker label values.
            lbl_overtaker.Content           = overtaker.ToString();
            lbl_overtaker_inBank.Content    = overtakerInBank;
            lbl_overtaker_inHand.Content    = model.getCurrentPlayerStocks(overtaker);
            lbl_overtaker_price.Content     = "$" + model.getStockValue(overtaker).ToString();
            brd_OvertakerBorder.BorderBrush = aquireStyle.GetActiveCorpColor(overtaker);

            // Set slider maximum values.
            slider_defunct_sell.Maximum  = inHand;
            slider_defunct_trade.Maximum = (maximum < overtakerInBank ? maximum : overtakerInBank);
        }
 /// <summary>
 /// Returns the number of stocks in a Stockpile
 /// </summary>
 /// <param name="corp">The corporation the stocks belong to</param>
 /// <returns></returns>
 public int countStocks(ECorporation corp)
 {
     return(stocks[corp].NumStocks);
 }
 /// <summary>
 /// Removes stocks from a StockPile
 /// </summary>
 /// <param name="corp">The coporation the stocks belong to</param>
 /// <param name="qty">Number of stocks to remove</param>
 /// <returns></returns>
 public bool removeStock(ECorporation corp, int qty)
 {
     return(stocks[corp].remove(qty));
 }
 /// <summary>
 /// Gets a color which represents the inactive version of the named corporation.
 /// </summary>
 /// <param name="corpName">The corporation whose color is being retrieved.</param>
 /// <returns>A <see cref="SolidColorBrush"/> of the retrieved color.</returns>
 public SolidColorBrush GetInactiveCorpColor(ECorporation corpName)
 {
     return(new SolidColorBrush(
                (Color)ColorConverter.ConvertFromString(inactiveCorpColors[corpName])));
 }
 /// <summary>
 /// Corporations cannot be selected during a standard expansion
 /// </summary>
 /// <param name="corporation">Corporation chosen</param>
 public override void chooseCorporation(ECorporation corporation)
 {
     throw new InvalidOperationException("Unable to choose a corporation during an expansion.");
 }
示例#29
0
 /// <summary>
 /// Chooses the corporation from the valid choices
 /// </summary>
 /// <param name="corporation">One of the valid corporation enumerations</param>
 public abstract void chooseCorporation(ECorporation corporation);
示例#30
0
 public void handleGiveFreeStock(ECorporation corporation)
 {
     // Do nothing
 }