def __game(self): print("entering __game") levels = Level(self.graphics, "home") bobby = Bobby(self.graphics) finalrender = pygame.Surface( (levels.get_map_size()[0], levels.get_map_size()[1])) in_dial = False pnj_name = "null" dial_count = 1 state_to_return = "EXIT" goon = True while goon: #print(self.clock.get_fps()) deltatime = self.clock.tick(30) / 100.0 #events for event in pygame.event.get(): if event.type == QUIT: goon = False if in_dial: if event.type == pygame.KEYUP: if event.key == pygame.K_ESCAPE: in_dial = False pnj_name = "null" dial_count = 1 if event.key == pygame.K_RETURN: dial_count += 1 if dial_count > len( levels.chars[pnj_name]["dials"]): in_dial = False pnj_name = "null" dial_count = 1 else: levels.event(event) bobby.event(event) # updates bob_value = bobby.update(deltatime, levels.get_map_size(), levels) if bobby.get_state_to_return() == "MENU": state_to_return = "MENU" goon = False levels.update(bob_value, bobby) if levels.currentmap == "credits": goon = False state_to_return = "CREDITS" break if finalrender.get_width() != levels.get_map_size( )[0] or finalrender.get_height() != levels.get_map_size()[1]: finalrender = pygame.Surface( (levels.get_map_size()[0], levels.get_map_size()[1])) # draws finalrender.blit(levels.draw(), (0, 0)) b_x, b_y = bobby.get_pos() finalrender.blit(bobby.draw(), (b_x, b_y)) self.screen.blit( pygame.transform.scale(finalrender, (c.WINDOW_WIDTH, c.WINDOW_HEIGHT)), (0, 0)) if bob_value.split(' ')[0] == "pnj" and not in_dial: # or in_dial in_dial = True pnj_name = bob_value.split(' ')[1] elif in_dial: bobby_talk = False my_font = pygame.font.Font("res/ubuntumono-r.ttf", 22) my_string = levels.chars[pnj_name]["dials"][str(dial_count)] if my_string[0] == "*": bobby_talk = True my_string = "<Bobby> " + my_string[1:] else: my_string = "<" + pnj_name[0].upper( ) + pnj_name[1:] + "> " + my_string my_rect = pygame.Rect( (0, 0, c.WINDOW_WIDTH, c.WINDOW_HEIGHT / 4)) rendered_text = Dialog().render_textrect( my_string, my_font, my_rect, (216, 216, 216), (0, 0, 20, 225), 0) self.screen.blit( rendered_text, (0, c.WINDOW_HEIGHT - rendered_text.get_height())) # TODO: Change head if ":" or "*" if bobby_talk: head = pygame.transform.scale( self.graphics["bobby_head.png"], (175, rendered_text.get_height() + 50)) else: head = pygame.transform.scale( self.graphics[pnj_name + "_head.png"], (175, rendered_text.get_height() + 50)) self.screen.blit( head, (0, c.WINDOW_HEIGHT - rendered_text.get_height())) continue_font = my_font continue_font.set_italic(True) dial_left = "(" + str(dial_count) + "/" + str( len(levels.chars[pnj_name]["dials"])) + ")" continue_font_rendered = continue_font.render( "Press Enter to continue... " + dial_left, 1, (150, 150, 150)) self.screen.blit( continue_font_rendered, (c.WINDOW_WIDTH - continue_font_rendered.get_width(), c.WINDOW_HEIGHT - continue_font_rendered.get_height())) pygame.display.flip() print("exiting __game") return state_to_return