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.
		
		
		
		
		
			
		
			
	
	
		
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			GDScript
		
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			GDScript
		
	
| 
								 
											2 years ago
										 
									 | 
							
								@tool
							 | 
						||
| 
								 | 
							
								extends "res://addons/MetroidvaniaSystem/Database/CellPaintEditor.gd"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func _editor_init() -> void:
							 | 
						||
| 
								 | 
							
									use_cursor = false
							 | 
						||
| 
								 | 
							
									super()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func _editor_input(event: InputEvent):
							 | 
						||
| 
								 | 
							
									var cell_data := get_cell_at_cursor()
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if event is InputEventMouseMotion:
							 | 
						||
| 
								 | 
							
										if cell_data:
							 | 
						||
| 
								 | 
							
											var rel := editor.map_overlay.get_local_mouse_position().posmodv(MetSys.CELL_SIZE)
							 | 
						||
| 
								 | 
							
											var border := get_square_border_idx(cell_data.borders, rel)
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											var new_border := -1
							 | 
						||
| 
								 | 
							
											var borders: Array[int] = cell_data.borders
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											for i in 4:
							 | 
						||
| 
								 | 
							
												if border == i and borders[i] > -1:
							 | 
						||
| 
								 | 
							
													new_border = border
							 | 
						||
| 
								 | 
							
													break
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if new_border != highlighted_border:
							 | 
						||
| 
								 | 
							
												highlighted_border = new_border
							 | 
						||
| 
								 | 
							
												editor.map_overlay.queue_redraw()
							 | 
						||
| 
								 | 
							
										else:
							 | 
						||
| 
								 | 
							
											highlighted_border = -1
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									super(event)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func update_hovered_room():
							 | 
						||
| 
								 | 
							
									if highlighted_border == -1:
							 | 
						||
| 
								 | 
							
										highlighted_room.clear()
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									super()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func modify_cell(cell_data: MetroidvaniaSystem.MapData.CellData, mode: int) -> bool:
							 | 
						||
| 
								 | 
							
									if highlighted_border == -1:
							 | 
						||
| 
								 | 
							
										return false
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									var modified: bool
							 | 
						||
| 
								 | 
							
									if whole_room:
							 | 
						||
| 
								 | 
							
										for i in 4:
							 | 
						||
| 
								 | 
							
											modified = modify_border(cell_data, i, mode) or modified
							 | 
						||
| 
								 | 
							
									else:
							 | 
						||
| 
								 | 
							
										modified = modify_border(cell_data, highlighted_border, mode)
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return modified
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func modify_border(cell_data: MetroidvaniaSystem.MapData.CellData, border: int, mode: int) -> bool:
							 | 
						||
| 
								 | 
							
									return false
							 |