//checks an airport for new gates public static void CheckForExtendGates(Airport airport) { int minYearsBetweenExpansions = 5; if (airport.Terminals.getOrdereredGates() == 0 && GameObject.GetInstance().GameTime.AddYears(-minYearsBetweenExpansions) > airport.LastExpansionDate) { Terminal minTerminal = airport.Terminals.AirportTerminals.OrderBy(t => t.Gates.NumberOfGates).First(); Boolean newTerminal = minTerminal.Gates.NumberOfGates > 50; //extend existing if (!newTerminal) { int numberOfGates = Math.Max(5, minTerminal.Gates.NumberOfGates); int daysToBuild = numberOfGates * 10 + (newTerminal ? 60 : 0); long price = numberOfGates * airport.getTerminalGatePrice() + (newTerminal ? airport.getTerminalPrice() : 0); price = price / 3 * 4; if (airport.Income > price) { for (int i = 0; i < numberOfGates; i++) minTerminal.Gates.addGate(new Gate(GameObject.GetInstance().GameTime.AddDays(daysToBuild))); airport.Income -= price; airport.LastExpansionDate = GameObject.GetInstance().GameTime; } } //build new terminal else { int numberOfGates = airport.Terminals.getTerminals()[0].Gates.NumberOfDeliveredGates; int daysToBuild = numberOfGates * 10 + (newTerminal ? 60 : 0); long price = numberOfGates * airport.getTerminalGatePrice() + (newTerminal ? airport.getTerminalPrice() : 0); price = price / 3 * 4; if (airport.Income > price) { Terminal terminal = new Terminal(airport, null, "Terminal", numberOfGates, GameObject.GetInstance().GameTime.AddDays(daysToBuild)); airport.addTerminal(terminal); airport.Income -= price; airport.LastExpansionDate = GameObject.GetInstance().GameTime; } } } }