Example #1
0
        /// <summary>
        /// Pays money to player according to the prices and their buildings
        /// </summary>
        private void PAYDAY()
        {
            if (!isServer)
            {
                return;
            }
            foreach (Player p in players)
            {
                int profit = 0;
                foreach (GameObject b in buildings)
                {
                    if (b.GetComponent <Building>().Owner == p)
                    {
                        ProductionConsumptionRate pcrate = (b.GetComponent <Building>() as Building).ActualBuilding.GetPCRate();

                        profit += (pcrate.p_electricity - pcrate.c_electricity) * Prices.Electricity;
                        profit += (pcrate.p_labour - pcrate.c_labour) * Prices.Labour;
                        profit += (pcrate.p_vehicles - pcrate.c_vehicles) * Prices.Vehicles;
                        profit += (pcrate.p_money - pcrate.c_money);
                        if (pcrate.charity)
                        {
                            p.Charity = (Charity)1;
                        }
                    }
                }
                p.Money = profit;
            }
        }
Example #2
0
        internal UnityEngine.Object model;         //Building model

        /// <summary>
        /// Custom Buildings attribute
        /// </summary>
        /// <param name="branch">Kind of business</param>
        /// <param name="name">Level of building</param>
        /// <param name="pcrate">Production & consumption of building</param>
        /// <param name="action">Bonus action from building</param>
        /// <param name="charity">Charity from building</param>
        /// <param name="grade">Level of building</param>
        /// <param name="model">Building model (name)</param>
        internal BuildingsAttribute(Branches branch, string name, int[] pcrate, bool action, bool charity, int grade, string model)
        {
            this.branch = branch;
            this.grade  = grade;
            this.pcrate = new ProductionConsumptionRate(pcrate, action, charity);
            this.name   = name;
            this.model  = Resources.Load("Buildings/" + model);
        }
Example #3
0
        void Update()
        {
            GameObject.Find("ElectricityPrice").GetComponent <Text>().text = string.Format("{0},000,000 Kč", Prices.Electricity);
            GameObject.Find("LabourPrice").GetComponent <Text>().text      = string.Format("{0},000,000 Kč", Prices.Labour);
            GameObject.Find("VehiclesPrice").GetComponent <Text>().text    = string.Format("{0},000,000 Kč", Prices.Vehicles);

            ProductionConsumptionRate total_pcrate = HUDProduction.TotalPCRate;

            DisplayExpectation(total_pcrate.p_electricity, total_pcrate.c_electricity, "ElectricityExpectation");
            DisplayExpectation(total_pcrate.p_labour, total_pcrate.c_labour, "LabourExpectation");
            DisplayExpectation(total_pcrate.p_vehicles, total_pcrate.c_vehicles, "VehiclesExpectation");
        }
Example #4
0
        /// <summary>
        /// Sets new prices according to production and consumption rates
        /// </summary>
        private void NewPrices()
        {
            if (!isServer)
            {
                return;
            }
            ProductionConsumptionRate total_pcrate = HUDProduction.TotalPCRate;
            int electricity = (int)Mathf.Clamp(total_pcrate.c_electricity - total_pcrate.p_electricity, -1, 1);
            int labour      = (int)Mathf.Clamp(total_pcrate.c_labour - total_pcrate.p_labour, -1, 1);
            int vehicles    = (int)Mathf.Clamp(total_pcrate.c_vehicles - total_pcrate.p_vehicles, -1, 1);

            RpcNewPrices(electricity, labour, vehicles, true);
        }
Example #5
0
        void Update()
        {
            //Summary
            ProductionConsumptionRate total_pcrate = TotalPCRate;

            //Display new rates
            SetDisplayValue(total_pcrate.p_electricity, "ElectricityProduction");
            SetDisplayValue(total_pcrate.c_electricity, "ElectricityConsumption");
            SetDisplayValue(total_pcrate.p_labour, "LabourProduction");
            SetDisplayValue(total_pcrate.c_labour, "LabourConsumption");
            SetDisplayValue(total_pcrate.p_vehicles, "VehiclesProduction");
            SetDisplayValue(total_pcrate.c_vehicles, "VehiclesConsumption");
        }
Example #6
0
        /// <summary>
        /// Calculates profit based on prices and production&consumption of building
        /// </summary>
        /// <param name="building">Building</param>
        /// <returns></returns>
        private int ProfitCalculation(Building building)
        {
            ProductionConsumptionRate pcrate = building.ActualBuilding.GetPCRate(); //Production&consumption rates

            //Incomes
            int incomes = pcrate.p_electricity * Prices.Electricity;

            incomes += pcrate.p_labour * Prices.Labour;
            incomes += pcrate.p_vehicles * Prices.Vehicles;
            incomes += pcrate.p_money;

            //Expenses
            int expenses = pcrate.c_electricity * Prices.Electricity;

            expenses += pcrate.c_labour * Prices.Labour;
            expenses += pcrate.c_vehicles * Prices.Vehicles;
            expenses += pcrate.c_money;

            //Profit
            return(incomes - expenses);
        }
        /// <summary>
        /// Draws production & consumption rate of building
        /// </summary>
        /// <param name="productionCol">Production display slots</param>
        /// <param name="consumptionCol">Consumption display slots</param>
        /// <param name="building">Building</param>
        public static void DrawPC(string productionCol, string consumptionCol, Buildings building)
        {
            //Icons textures
            Texture2D[] icons = new Texture2D[]
            {
                (Texture2D)Resources.Load("Icons/electricity"),
                (Texture2D)Resources.Load("Icons/labour"),
                (Texture2D)Resources.Load("Icons/vehicles"),
                (Texture2D)Resources.Load("Icons/money"),
                (Texture2D)Resources.Load("Icons/action"),
                (Texture2D)Resources.Load("Icons/charity")
            };

            //Get slots
            GameObject[] productionSlots  = GameObject.FindGameObjectsWithTag(productionCol);
            GameObject[] consumptionSlots = GameObject.FindGameObjectsWithTag(consumptionCol);

            //Get production&consumption rate
            ProductionConsumptionRate pcrate = building.GetPCRate();

            int[,] pcrate_array = new int[4, 2]
            {
                { pcrate.p_electricity, pcrate.c_electricity },
                { pcrate.p_labour, pcrate.c_labour },
                { pcrate.p_vehicles, pcrate.c_vehicles },
                { pcrate.p_money, pcrate.c_money }
            };

            //Index of last empty slot for production&consumption
            int productionIdx  = 0;
            int consumptionIdx = 0;

            for (int commodity = 0; commodity < 4; commodity++) //Cycle going through each commodity
            {
                if (commodity != 3)                             //Special rule for money
                {
                    //Draw commodities separately
                    //Production
                    for (int quantity = 0; quantity < pcrate_array[commodity, 0]; quantity++)
                    {
                        DrawToSlot(ref productionIdx, productionSlots, icons[commodity]);
                    }

                    //Consumption
                    for (int quantity = 0; quantity < pcrate_array[commodity, 1]; quantity++)
                    {
                        DrawToSlot(ref consumptionIdx, consumptionSlots, icons[commodity]);
                    }
                }
                //Draw money
                else
                {
                    //Production
                    if (pcrate_array[commodity, 0] > 0)
                    {
                        DrawToSlot(ref productionIdx, productionSlots, icons[commodity], pcrate.p_money);
                    }

                    //Consumption
                    if (pcrate_array[commodity, 1] > 0)
                    {
                        DrawToSlot(ref consumptionIdx, consumptionSlots, icons[commodity], pcrate.c_money);
                    }
                }
            }
            if (pcrate.action) //Draw bonus action
            {
                DrawToSlot(ref productionIdx, productionSlots, icons[4]);
            }
            if (pcrate.charity) //Draw bonus charity
            {
                DrawToSlot(ref productionIdx, productionSlots, icons[5]);
            }
        }