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 |