39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Smarty
		
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Smarty
		
	
	
	
|  | {{ | |||
|  |     name = x.gdscript_full_name
 | |||
|  |     is_abstract_type = x.is_abstract_type
 | |||
|  |     parent_def_type = x.parent_def_type
 | |||
|  |     export_fields = x.export_fields
 | |||
|  |     hierarchy_export_fields = x.hierarchy_export_fields
 | |||
|  | }}
 | |||
|  | class {{name}}:
 | |||
|  |     {{if parent_def_type}}
 | |||
|  |     extends {{parent_def_type.gdscript_full_name}}
 | |||
|  |     {{end}}
 | |||
|  | {{~if x.is_abstract_type~}}
 | |||
|  |     static func from_json(_json_):
 | |||
|  |         var type = _json_['{{x.json_type_name_key}}']
 | |||
|  |         match type:
 | |||
|  |         {{~ for child in x.hierarchy_not_abstract_children~}}
 | |||
|  |             "{{cs_impl_data_type child x}}":
 | |||
|  |                 return {{child.gdscript_full_name}}.new(_json_)
 | |||
|  |         {{~end~}}
 | |||
|  |             _:
 | |||
|  |                 assert(false)
 | |||
|  | 
 | |||
|  | {{~end~}}
 | |||
|  | {{~ for field in export_fields ~}}
 | |||
|  |     var {{field.convention_name}}
 | |||
|  | {{~end~}}
 | |||
|  | {{~if parent_def_type~}}
 | |||
|  |     func _init(_json_).(_json_) -> void:
 | |||
|  | {{~else~}}
 | |||
|  |     func _init(_json_) -> void:
 | |||
|  | {{~end~}}
 | |||
|  |         {{~if export_fields~}}
 | |||
|  |         {{~ for field in export_fields ~}}
 | |||
|  |         {{gdscript_deserialize_field ('self.' + field.convention_name) '_json_' field.name field.ctype}}
 | |||
|  |         {{~end~}}
 | |||
|  |         {{~end~}}
 | |||
|  |         {{~if export_fields.empty?}}
 | |||
|  |         pass
 | |||
|  |         {{~end~}}
 |