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.
|
|
|
|
@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
|