jsfehler / renpy-encyclopaedia

A Ren'Py plugin for creating an Encyclopaedia/Glossary/Bestiary or similar system.
https://renpy-encyclopaedia.readthedocs.io/
MIT License
56 stars 6 forks source link

Renpy Crash when you click the sort by "Unread" button #9

Closed Yomic closed 6 months ago

Yomic commented 6 months ago

Whenever you try to use the sort by unread function, renpy crashes with the following log:

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00gamemenu.rpy", line 174, in script
    $ ui.interact()
  File "renpy/common/00gamemenu.rpy", line 174, in <module>
    $ ui.interact()
TypeError: '<' not supported between instances of 'bool' and 'NoneType'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "renpy/common/00gamemenu.rpy", line 174, in script
    $ ui.interact()
  File "C:\code\renpy_current_version\renpy\ast.py", line 823, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "C:\code\renpy_current_version\renpy\python.py", line 1178, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "renpy/common/00gamemenu.rpy", line 174, in <module>
    $ ui.interact()
  File "C:\code\renpy_current_version\renpy\ui.py", line 301, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "C:\code\renpy_current_version\renpy\display\core.py", line 2165, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
  File "C:\code\renpy_current_version\renpy\display\core.py", line 3201, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\transition.py", line 53, in event
    return self.new_widget.event(ev, x, y, st) # E1101
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\screen.py", line 793, in event
    rv = self.child.event(ev, x, y, st)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1426, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 288, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1426, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 288, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\layout.py", line 1202, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\code\renpy_current_version\renpy\display\behavior.py", line 1174, in event
    return handle_click(self.clicked)
  File "C:\code\renpy_current_version\renpy\display\behavior.py", line 1095, in handle_click
    rv = run(action)
  File "C:\code\renpy_current_version\renpy\display\behavior.py", line 395, in run
    return action(*args, **kwargs)
  File "game/encyclopaedia/actions_ren.py", line 245, in __call__
    self.enc.sort_entries(
  File "game/encyclopaedia/encyclopaedia_ren.py", line 199, in sort_entries
    entries.sort(key=attrgetter('viewed'))
  File "C:\code\renpy_current_version\renpy\revertable.py", line 97, in do_mutation
    return method(self, *args, **kwargs)
TypeError: '<' not supported between instances of 'bool' and 'NoneType'

Windows-10-10.0.22000 AMD64
Ren'Py 8.2.1.24030407
Test Encyclopedia 1.0
Thu Mar  7 12:26:44 2024

I have created a bare-bones test project to reproduce the issue using the same encyclopaedia setup I'm using for my main project. Test Encyclopedia.zip

The only additional code that is changed is in script.rpy and the new file enc_1.rpy to define an Encyclopaedia and entries.

I am using the most up to date version of renpy (8.2.1.24030407) and addon (3.1.0) as of this ticket. Let me know if you need more additional information.

jsfehler commented 6 months ago

Pretty sure I know the cause here. I'll try to land a fix this weekend.

jsfehler commented 6 months ago

Fixed in 3.2.0

Yomic commented 6 months ago

Confirmed fixed on my end on the test project and my main project. Thanks for the quick update!