Hi everyone, first time posting here. I was going to go to Discord but thought it's better to ask somewhere that can turn up on search engines for future confused game devs.
I've got a parameterised signal listener like this:
func _on_movement_to_exit_complete(character: Node2D):
var f = func():
print("_on_movement_to_exit_complete: "+str(character))
var dungeon_tilemap: TileMap = dungeon_control.get_current_dungeon_tilemap()
var party = dungeon_tilemap.get_node("Party")
var initial_party = dungeon_control.get_parent().get_node("InitialParty")
party.remove_child(character)
initial_party.add_child(character)
if party.get_child_count() == 0:
for party_member in initial_party.get_children():
var tilemap_movement: TilemapMovement = party_member.get_node("TilemapMovement")
print("Disconnecting movement finished listener for "+str(party_member))
tilemap_movement.disconnect("movement_finished", _on_movement_to_exit_complete(character))
load_next_level()
return f
Basically, if all the party members have exited the level (and been removed from the 'party' node) I want to disconnect this movement_finished
signal from _on_movement_to_exit_complete
. But when I try this I get an error:
E 0:00:07:0777 GameControl.gd:80 @ <anonymous lambda>(): Disconnecting nonexistent signal 'movement_finished', callable: <anonymous lambda>(lambda).
<C++ Error> Condition "!s->slot_map.has(*p_callable.get_base_comparator())" is true.
<C++ Source> core/object/object.cpp:1331 @ _disconnect()
<Stack Trace> GameControl.gd:80 @ <anonymous lambda>()
TilemapMovement.gd:23 @ _on_animation_finished()
Why doesn't it think movement_finished
exists? Is there something wrong with disconnecting signals from inside their listeners? And is there another way of doing this? (Maybe something like a signal that fires once then disconnects?)
This is in Godot 4 by the way.
Also, is there a way to make the posting box wider in the programming.dev web frontend? It's really hard to work with pasted code here!
I think you should try a few different things out before you judge all software engineering jobs. There's a big variety.
As for "making shitty bloated proprietary software" that only really applies to the really big tech companies and banks etc.. Most dev jobs are about using code to solve a problem. I've worked in lots of small companies and we use open source software almost exclusively. If there's anything you write that you think could be useful as an open source project, they'll generally let you spin it out into a standalone library and you can spend some of your working time on that. The company benefits from increased visibility and can be a "thought leader" at conferences etc if it takes off. Definitely worth asking about that in the interview though, since different companies will have different philosophies around it.