/// <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; } }
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); }
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"); }
/// <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); }
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"); }
/// <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]); } }