Corners
This commit is contained in:
@@ -25,8 +25,16 @@ const TOP_RIGHT_RECT := Rect2(53, 0, 50, 20)
|
||||
const BOTTOM_LEFT_RECT := Rect2(103, 186, 50, 20)
|
||||
const BOTTOM_RIGHT_RECT := Rect2(53, 186, 50, 20)
|
||||
|
||||
# -- Inner corners (drawn where two perpendicular wall edges meet) --
|
||||
const INNER_CORNER_UPPER_LEFT_RECT := Rect2(0, 0, 50, 50)
|
||||
const INNER_CORNER_UPPER_RIGHT_RECT := Rect2(156, 0, 50, 50)
|
||||
const INNER_CORNER_LOWER_LEFT_RECT := Rect2(0, 156, 50, 50)
|
||||
const INNER_CORNER_LOWER_RIGHT_RECT := Rect2(156, 156, 50, 50)
|
||||
|
||||
## Wall thickness in game pixels (how far the border extends into the tile)
|
||||
const WALL_THICKNESS := 20.0
|
||||
## Inner corner piece size in game pixels (quarter of a tile)
|
||||
const CORNER_SIZE := 50.0
|
||||
## Half the tile edge length
|
||||
const HALF_EDGE := TILE_SIZE / 2.0
|
||||
|
||||
@@ -175,8 +183,36 @@ func _draw_outer_corners(_tile: Vector2i, _tile_origin: Vector2, _edges: Array)
|
||||
pass
|
||||
|
||||
|
||||
func _draw_inner_corners(_tile: Vector2i, _tile_origin: Vector2, _edges: Array) -> void:
|
||||
# TODO: Implement inner corner segments for non-rectangular rooms
|
||||
# Check diagonal neighbors where both adjacent cardinal neighbors are floor
|
||||
# but the diagonal is a wall/void.
|
||||
pass
|
||||
func _draw_inner_corners(_tile: Vector2i, tile_origin: Vector2, edges: Array) -> void:
|
||||
## Draws decorative corner pieces wherever two perpendicular wall edges meet
|
||||
## on the same tile (e.g., a top wall + left wall produces an upper-left corner).
|
||||
var has_top := edges.has(&"top")
|
||||
var has_bottom := edges.has(&"bottom")
|
||||
var has_left := edges.has(&"left")
|
||||
var has_right := edges.has(&"right")
|
||||
var corner_size := Vector2(CORNER_SIZE, CORNER_SIZE)
|
||||
|
||||
if has_top and has_left:
|
||||
_create_segment_sprite(
|
||||
tile_origin + Vector2(0, 0),
|
||||
corner_size,
|
||||
INNER_CORNER_UPPER_LEFT_RECT
|
||||
)
|
||||
if has_top and has_right:
|
||||
_create_segment_sprite(
|
||||
tile_origin + Vector2(TILE_SIZE - CORNER_SIZE, 0),
|
||||
corner_size,
|
||||
INNER_CORNER_UPPER_RIGHT_RECT
|
||||
)
|
||||
if has_bottom and has_left:
|
||||
_create_segment_sprite(
|
||||
tile_origin + Vector2(0, TILE_SIZE - CORNER_SIZE),
|
||||
corner_size,
|
||||
INNER_CORNER_LOWER_LEFT_RECT
|
||||
)
|
||||
if has_bottom and has_right:
|
||||
_create_segment_sprite(
|
||||
tile_origin + Vector2(TILE_SIZE - CORNER_SIZE, TILE_SIZE - CORNER_SIZE),
|
||||
corner_size,
|
||||
INNER_CORNER_LOWER_RIGHT_RECT
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user