You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			829 B
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			829 B
		
	
	
	
		
			GDScript
		
	
| extends Node3D
 | |
| class_name ItemManager
 | |
| 
 | |
| var pt_count: int
 | |
| 
 | |
| func _ready():
 | |
| 	Global.item_mgr = self
 | |
| 	SignalManager.level_loading_start.connect(on_level_loading_start)
 | |
| 
 | |
| 
 | |
| func on_level_loading_start():
 | |
| 	pass
 | |
| 
 | |
| 
 | |
| func create_pt(type: Enum.EPtType, value: int, pos: Vector3):
 | |
| 	if pt_count < 20:
 | |
| 		value = randi_range(int(0.5 * value), int(1.5 * value))
 | |
| 		var pt_slice: Array[int] = [100, 50, 20, 10, 5, 2, 1]
 | |
| 		while value > 0:
 | |
| 			for i in pt_slice:
 | |
| 				if value < i:
 | |
| 					continue
 | |
| 				value -= i
 | |
| 				_create_pt(type, i, pos)
 | |
| 				break
 | |
| 	else:
 | |
| 		_create_pt(type, value, pos)
 | |
| 
 | |
| 
 | |
| func destroy_pt(pt: PT):
 | |
| 	pt_count -= 1
 | |
| 	pt.queue_free()
 | |
| 
 | |
| func _create_pt(type: Enum.EPtType, value: int, pos: Vector3):
 | |
| 	pt_count += 1
 | |
| 	var pt: PT = ResourceManager.scene_pt.instantiate() as PT
 | |
| 	pt.type = type
 | |
| 	pt.value = value
 | |
| 	add_child(pt)
 | |
| 	pt.position = pos |