def __init__(self, screen, arealist, clock, numplayers, year, currentplayer, player): """ Initializes the variables of the AreaScene class, creates necessary Label, Bar objects and the pygame Rects corresponding to buttons. """ # Reads from the Info.txt file the current state of the game # and creates the self.AreaList, the self.TroopList and the # self.PlayerList lists. self.ReadInfo(screen) self.time = pygame.time.Clock() self.screen = screen self.area = arealist self.Clock = clock self.NumPlayers = numplayers self.year = year self.currentplayer = currentplayer self.player = player self.white = (255, 255, 255) self.black = (0, 0, 0) self.pause = False # Gets the size metrics of the current display metrics = GEN.screen_metrics() self.w = metrics[0] self.h = metrics[1] self.ratiow = metrics[2] self.ratioh = metrics[3] #Creates the necessary font objects self.hugefont = pygame.font.SysFont("Times", int(80*self.ratiow)) self.verylargefont = pygame.font.SysFont("Times", int(50*self.ratiow)) self.largefont = pygame.font.SysFont("Times", int(40*self.ratiow)) self.medfont = pygame.font.SysFont("Times", int(25*self.ratiow)) self.smallfont = pygame.font.SysFont("Times", int(20*self.ratiow)) # Creation of pygame Rect objects associated with buttons self.ButtonDict = {} buttonw = int(180*self.ratiow) buttonh = int(50*self.ratioh) marg = int(1660*self.ratiow) self.BackToMain = pygame.Rect((int(1600*self.ratiow), int(20*self.ratioh), buttonw, buttonh)) self.BuildCapital = pygame.Rect((marg, int(170*self.ratioh), buttonw, buttonh)) self.BuildFactory = pygame.Rect((marg, int(255*self.ratioh), buttonw, buttonh)) self.BuildPort = pygame.Rect((marg, int(315*self.ratioh), buttonw, buttonh)) self.BuildAirPort = pygame.Rect((marg, int(375*self.ratioh), buttonw, buttonh)) self.BuildFort = pygame.Rect((marg, int(455*self.ratioh), buttonw, buttonh)) self.BuildHospital = pygame.Rect((marg, int(515*self.ratioh), buttonw, buttonh)) self.BuildUni = pygame.Rect((marg, int(575*self.ratioh), buttonw, buttonh)) self.BuildBank = pygame.Rect((marg, int(655*self.ratioh), buttonw, buttonh)) # Creation of Bar objects (sliding bars) self.bar = pygame.image.load("bar.png") self.bar = pygame.transform.scale(self.bar, (int(400*self.ratiow), int(10*self.ratioh))) self.point = pygame.image.load("point.png") self.point = pygame.transform.scale(self.point, (int(40*self.ratiow), int(40*self.ratioh))) self.playerdot = pygame.image.load(self.area[5]+".png") self.playerdot = pygame.transform.scale(self.playerdot, (buttonh, buttonh)) self.barlist = [] marg = int(60*self.ratiow) marg2 = marg//10 self.taxesbar = GUI.Bar(self.screen, [marg - marg2, int(200*self.ratioh)], "Taxes", [marg, int(220*self.ratioh)], [0, 100], self.area[10]) self.barlist.append(self.taxesbar) self.foodbar = GUI.Bar(self.screen, [marg - marg2, int(280*self.ratioh)], "Food", [marg, int(300*self.ratioh)], [0, 200], self.area[4][5][2]) self.barlist.append(self.foodbar) self.metalbar = GUI.Bar(self.screen, [marg - marg2, int(360*self.ratioh)], "Metal", [marg, int(380*self.ratioh)], [0, 100], self.area[4][0][2]) self.barlist.append(self.metalbar) self.timberbar = GUI.Bar(self.screen, [marg - marg2, int(440*self.ratioh)], "Timber", [marg, int(460*self.ratioh)], [0, 100], self.area[4][1][2]) self.barlist.append(self.timberbar) self.fossilbar = GUI.Bar(self.screen, [marg - marg2, int(520*self.ratioh)], "Fossils", [marg, int(540*self.ratioh)], [0, 100], self.area[4][2][2]) self.barlist.append(self.fossilbar) self.uraniumbar = GUI.Bar(self.screen, [marg - marg2, int(600*self.ratioh)], "Uranium", [marg, int(620*self.ratioh)], [0, 100], self.area[4][3][2]) self.barlist.append(self.uraniumbar) self.renewbar = GUI.Bar(self.screen, [marg - marg2, int(680*self.ratioh)], "Renewables", [marg, int(700*self.ratioh)], [0, 100], self.area[4][4][1]) self.barlist.append(self.renewbar) # Creation of Label objects if self.area[11][0] == 0: capital = "- Not Capital" else: capital = "- Capital" if self.area[11][7] == 0: bank = "- No bank" else: bank = "- Bank" marg = int(660*self.ratiow) marg2 = int(1360*self.ratiow) ############################################################################### self.labellist = [GUI.Label(self.area[1], self.hugefont, [int(self.w/2 - len(self.area[1]) *19), int(20*self.ratioh)]), GUI.Label("- Moral: "+str(round(self.area[6]))+"%", self.largefont, [marg, int(175*self.ratioh)]), GUI.Label("- Population: "+str(round(self.area[3], 3)) +" million people", self.largefont, [marg, int(225*self.ratioh)]), GUI.Label("- Per Capita Income: "+str(int(self.area[9])) +" coins", self.largefont, [marg, int(275 *self.ratioh)]), GUI.Label("- Resources", self.verylargefont, [marg, int(340*self.ratioh)]), GUI.Label("- Food: "+str(int(self.area[4][5][0]))+"/" +str(self.area[4][5][1]), self.largefont, [marg, int(400*self.ratioh)]), GUI.Label("- Metal: "+str(self.area[4][0][0])+"/" +str(self.area[4][0][1]), self.largefont, [marg, int(450*self.ratioh)]), GUI.Label("- Timber: "+str(int(self.area[4][1][0]))+"/" +str(self.area[4][1][1]), self.largefont, [marg, int(500*self.ratioh)]), GUI.Label("- Fossil Fuels: "+str(self.area[4][2][0])+"/" +str(self.area[4][2][1]), self.largefont, [marg, int(550*self.ratioh)]), GUI.Label("- Uranium: "+str(self.area[4][3][0])+"/" +str(self.area[4][3][1]), self.largefont, [marg, int(600*self.ratioh)]), GUI.Label("- Renewables: "+"| "+(self.area[4][4][0] + 1)*"+" +(6 - self.area[4][4][0])*" "+"|", self.largefont, [marg, int(650*self.ratioh)]), GUI.Label(capital, self.largefont, [marg2, int(175*self.ratioh)]), GUI.Label("- Factory: lvl. "+str(self.area[11][1]), self.largefont, (marg2, int(260*self.ratioh))), GUI.Label("- Port: lvl. "+str(self.area[11][2]), self.largefont, (marg2, int(320*self.ratioh))), GUI.Label("- Airport: lvl. "+str(self.area[11][3]), self.largefont, (marg2, int(380*self.ratioh))), GUI.Label("- Fort: lvl. "+str(self.area[11][4]), self.largefont, (marg2, int(460*self.ratioh))), GUI.Label("- Hospital: lvl. "+str(self.area[11][5]), self.largefont, (marg2, int(520*self.ratioh))), GUI.Label("- University: lvl. "+str(self.area[11][6]), self.largefont, (marg2, int(580*self.ratioh))), GUI.Label(bank, self.largefont, (marg2, int(660*self.ratioh)))] # Calling the self.Draw method self.Draw()