Ejemplo n.º 1
0
    // Upgrade a development chart in the specified field
    public bool upgradeDevChart(Enums.DevChartType dev, int[] commodities,
                                List <GamePiece> pieces, int[] devChart, bool server)
    {
        // Check if the knight can be upgraded
        if (!ma.canUpgradeDevChart(dev, commodities, pieces, devChart))
        {
            return(false);
        }

        Player current = GameManager.instance.getCurrentPlayer();

        Enums.CommodityType com = (CommodityType)((int)dev);
        int level    = devChart[(int)dev];
        int newLevel = level + 1;

        // Spend the correct resources
        current.changeCommodity(com, -level);
        Bank.instance.depositCommodity(com, level, current.isServer);

        current.upgradeDevChart(dev);

        if (newLevel == 3)
        {
            if (dev == Enums.DevChartType.TRADE)
            {
                for (int i = 0; i < 3; i++)
                {
                    current.updateCommodityRatio(com, 2);
                }
            }
            else if (dev == Enums.DevChartType.SCIENCE)
            {
                current.makeAqueduct();
            }
        }

        // Metropolis

        return(true);
    }
Ejemplo n.º 2
0
    // return true upon success, false upon failure
    // give the given player a metropolis on the chosen city
    // remove it from another player if another player controlled it
    public bool giveMetropolis(int player, Enums.DevChartType met, Vertex city)
    {
        GamePiece p = city.getOccupyingPiece();

        if (Object.ReferenceEquals(p, null))
        {
            return(false);
        }
        else if (p.getPieceType() != Enums.PieceType.CITY)
        {
            return(false);
        }

        Vertex current = metropolises[met];

        if (!Object.ReferenceEquals(current, null))
        {
            GamePiece opponent = current.getOccupyingPiece();
            if (Object.ReferenceEquals(opponent, null))
            {
                return(false);
            }
            else if (opponent.getPieceType() != Enums.PieceType.CITY)
            {
                return(false);
            }
            else
            {
                ((City)opponent).removeMetropolis();
                Enums.Color opColor = opponent.getColor();
                Player      op      = getPlayer(opColor);
                op.changeVictoryPoints(-2);
            }
        }

        ((City)p).makeMetropolis();
        getPlayer(player).changeVictoryPoints(2);

        return(true);
    }
Ejemplo n.º 3
0
    // Check if the development chart can be upgraded for a specific development type
    public bool canUpgradeDevChart(Enums.DevChartType dev, int[] commodities,
                                   List <GamePiece> pieces, int[] devChart)
    {
        // Make sure there is a city on the board
        bool cityOnBoard = false;

        foreach (GamePiece p in pieces)
        {
            if (p.getPieceType() != Enums.PieceType.CITY)
            {
                continue;
            }
            else
            {
                if (p.isOnBoard())
                {
                    cityOnBoard = true;
                    break;
                }
            }
        }
        if (!cityOnBoard)
        {
            return(false);
        }

        // Make sure there are enough resources for the upgrade
        // Or that the chart is not at maximum capacity
        int level, coms;

        if (dev == Enums.DevChartType.TRADE)
        {
            level = devChart[(int)Enums.DevChartType.TRADE];
            coms  = commodities[(int)Enums.CommodityType.CLOTH];
            if (coms < level)
            {
                return(false);
            }
            else if (level >= 5)
            {
                return(false);
            }
        }
        else if (dev == Enums.DevChartType.POLITICS)
        {
            level = devChart[(int)Enums.DevChartType.POLITICS];
            coms  = commodities[(int)Enums.CommodityType.COIN];
            if (coms < level)
            {
                return(false);
            }
            else if (level >= 5)
            {
                return(false);
            }
        }
        else if (dev == Enums.DevChartType.SCIENCE)
        {
            level = devChart[(int)Enums.DevChartType.SCIENCE];
            coms  = commodities[(int)Enums.CommodityType.PAPER];
            if (coms < level)
            {
                return(false);
            }
            else if (level >= 5)
            {
                return(false);
            }
        }
        return(true);
    }
Ejemplo n.º 4
0
    public void RpcUpgradeDevChart(Enums.DevChartType devChartType)
    {
        int devPosition = (int)devChartType;

        this.devFlipChart[devPosition]++;
    }
Ejemplo n.º 5
0
 public void CmdUpgradeDevChart(Enums.DevChartType devChartType)
 {
     RpcUpgradeDevChart(devChartType);
 }
Ejemplo n.º 6
0
 public void upgradeDevChart(Enums.DevChartType devChartType)
 {
     CmdUpgradeDevChart(devChartType);
 }