Skip to content

Commit 598cd82

Browse files
committed
feat: Add parameters to Signals.
1 parent e0e1b5f commit 598cd82

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/dart/godot_dart/lib/src/annotations/godot_script.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,21 @@ class GodotExport {
2121
const GodotExport({this.name});
2222
}
2323

24+
@immutable
25+
class SignalArgument {
26+
final String name;
27+
final Type type;
28+
29+
const SignalArgument(this.name, this.type);
30+
}
31+
2432
/// Annotate a Godot Signal
2533
@immutable
2634
class GodotSignal {
2735
final String signalName;
36+
final List<SignalArgument> args;
2837

29-
const GodotSignal(this.signalName);
38+
const GodotSignal(this.signalName, {this.args = const []});
3039
}
3140

3241
/// Annotate a field that should be visible to the Godot property inspector

src/dart/godot_dart_build/lib/src/godot_script_generator.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,16 @@ class GodotScriptAnnotationGenerator
155155
final signalName = reader.read('signalName').stringValue;
156156
buffer.writeln(' name: \'$signalName\',');
157157

158-
// TODO: Signals that take parameters....
159-
buffer.writeln(' args: [],');
158+
final signalArguments = reader.read('args').listValue;
159+
buffer.writeln(' args: [');
160+
for (final arg in signalArguments) {
161+
final argReader = ConstantReader(arg);
162+
final argName = argReader.read('name').stringValue;
163+
final argType = argReader.read('type').typeValue;
164+
buffer.writeln(
165+
' PropertyInfo(name: \'${argName}\', typeInfo: ${_typeInfoForType(argType)}),');
166+
}
167+
buffer.writeln(']');
160168
buffer.write(')');
161169

162170
return buffer.toString();

0 commit comments

Comments
 (0)