lassefolkersen / highfrontier

The goal of High Frontier is a civilization-like game, which uses more realistic modelling of economy, climate, research and migration. Uniquely this game starts today - the initiation date of a game is todays date and the existing world is the world as we know it today, complete with cities and countries and people. The aim from there - that is whatever the player thinks the aim is for the world. Developing of the underdeveloping world, action against climate changes, expansion into the rest of the solar system, or just racking in a lot of money.
13 stars 3 forks source link

Bug in list sorting algorithm #28

Open lassefolkersen opened 4 months ago

lassefolkersen commented 4 months ago

I've seen this happen twice now, always when opening a 'firm' window and trying to buy goods. I suspect it's some empty list that is asked to being sorted, but will use this issue to figure it out

Traceback (most recent call last):
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 459, in <module>
    introGui = IntroGui()
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 81, in __init__
    self.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 105, in receive_click
    button.activate(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui_components.py", line 499, in activate
    return_value = self.function(self.label, self.function_parameter)
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 452, in start_new_game
    self.main.start_loop(companyName = cn,
  File "/Users/lassefolkersen/Documents/highfrontier/main.py", line 114, in start_loop
    gui_instance.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 106, in receive_click
    button.activate(None)
  File "/Users/lassefolkersen/Documents/highfrontier/gui_components.py", line 499, in activate
    return_value = self.function(self.label, self.function_parameter)
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 515, in subcommandbox_button_activate
    self.all_windows[label].create()
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 3505, in create
    self.fast_list = gui_components.fast_list(
  File "/Users/lassefolkersen/Documents/highfrontier/gui_components.py", line 600, in __init__
    self.receive_data(tabular_data,column_order = column_order, sort_by = sort_by)
  File "/Users/lassefolkersen/Documents/highfrontier/gui_components.py", line 872, in receive_data
    i.sort(sorter)
TypeError: sort() takes no positional arguments
lassefolkersen commented 4 months ago

Ok, hit another bug -- just going to lump it in here with this issue, seems related


Traceback (most recent call last):
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 459, in <module>
    introGui = IntroGui()
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 81, in __init__
    self.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 105, in receive_click
    button.activate(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui_components.py", line 499, in activate
    return_value = self.function(self.label, self.function_parameter)
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 452, in start_new_game
    self.main.start_loop(companyName = cn,
  File "/Users/lassefolkersen/Documents/highfrontier/main.py", line 114, in start_loop
    gui_instance.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 113, in receive_click
    return_value = self.active_window.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 966, in receive_click
    self.fast_list.receive_click(event)
AttributeError: 'trade_window' object has no attribute 'fast_list'
lassefolkersen commented 4 months ago

One more for the thread. Triggered when going to company-menu and selecting the player company

Traceback (most recent call last):
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 459, in <module>
    introGui = IntroGui()
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 81, in __init__
    self.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 105, in receive_click
    button.activate(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui_components.py", line 499, in activate
    return_value = self.function(self.label, self.function_parameter)
  File "/Users/lassefolkersen/Documents/highfrontier/intro.py", line 452, in start_new_game
    self.main.start_loop(companyName = cn,
  File "/Users/lassefolkersen/Documents/highfrontier/main.py", line 114, in start_loop
    gui_instance.receive_click(event)
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 116, in receive_click
    self.clear_screen()
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 163, in clear_screen
    self.going_to_company_window_event(sol.company_selected)
  File "/Users/lassefolkersen/Documents/highfrontier/gui.py", line 388, in going_to_company_window_event
    surface = company_selected.draw_company_window()
  File "/Users/lassefolkersen/Documents/highfrontier/company.py", line 175, in draw_company_window
    surface = self.get_company_background()
  File "/Users/lassefolkersen/Documents/highfrontier/company.py", line 170, in get_company_background
    image_string = image.tostring()
AttributeError: 'Image' object has no attribute 'tostring'