Add explicit stairs and measure elevator congestion with real actors
This commit is contained in:
@@ -17,6 +17,9 @@ static func tile(canvas: CanvasItem, texture: Texture2D, index: int, target: Rec
|
||||
|
||||
static func room(canvas: CanvasItem, rect: Rect2, id: StringName, pixel: float, dungeon: Texture2D, town: Texture2D, back: bool, decoration_seed := 0) -> void:
|
||||
var p := pixel
|
||||
if id in [&"guest_stairs", &"service_stairs"]:
|
||||
stairs(canvas, rect, p, id == &"service_stairs")
|
||||
return
|
||||
if id in [&"guest_corridor", &"service_corridor"]:
|
||||
canvas.draw_rect(rect, Color("c6b999") if not back else Color("a6b6a0"))
|
||||
canvas.draw_rect(Rect2(rect.position.x,rect.end.y-4*p,rect.size.x,3*p),WOOD_LIGHT)
|
||||
@@ -101,6 +104,30 @@ static func room(canvas: CanvasItem, rect: Rect2, id: StringName, pixel: float,
|
||||
table(canvas, Vector2(mid-6*p, floor_y-7*p), p)
|
||||
|
||||
|
||||
## The upper landing owns a short flight down to the floor below. Six square
|
||||
## treads and a stepped handrail keep the shape legible at the 16 px room scale.
|
||||
static func stairs(canvas: CanvasItem, rect: Rect2, p: float, staff_only: bool, compact := false) -> void:
|
||||
if not compact:
|
||||
canvas.draw_rect(rect, INK)
|
||||
canvas.draw_rect(rect.grow(-p), Color("c7c6a6") if not staff_only else Color("a8b6aa"))
|
||||
canvas.draw_rect(Rect2(rect.position.x, rect.end.y-4*p, rect.size.x, 3*p), WOOD)
|
||||
canvas.draw_rect(Rect2(rect.position.x, rect.end.y-p, rect.size.x, p), INK)
|
||||
var at := Vector2(rect.get_center().x-6*p, rect.end.y-5*p)
|
||||
var tread := Color("d8bf89") if not staff_only else Color("aec0bf")
|
||||
var rise := Color("8a7155") if not staff_only else Color("617f82")
|
||||
for step: int in range(6):
|
||||
var top := at + Vector2(step*2, -step*2)*p
|
||||
canvas.draw_rect(Rect2(top, Vector2(2, 2+step*2)*p), rise)
|
||||
canvas.draw_rect(Rect2(top, Vector2(3, 1)*p), tread)
|
||||
canvas.draw_rect(Rect2(top+Vector2(0,-5)*p, Vector2(2,1)*p), INK)
|
||||
if step % 2 == 0:
|
||||
canvas.draw_rect(Rect2(top+Vector2(0,-4)*p, Vector2(1,4)*p), WOOD if not staff_only else TEAL)
|
||||
canvas.draw_rect(Rect2(at+Vector2(10,-11)*p, Vector2(3,2)*p), tread)
|
||||
if staff_only and not compact:
|
||||
canvas.draw_rect(Rect2(rect.position+Vector2(2,2)*p, Vector2(3,3)*p), TEAL)
|
||||
canvas.draw_rect(Rect2(rect.position+Vector2(3,3)*p, Vector2(1,1)*p), CREAM)
|
||||
|
||||
|
||||
## Static shaft rails remain when a car is stopped or the transport service is
|
||||
## unavailable. The car itself is drawn once from its authoritative trip state.
|
||||
static func elevator_shaft(canvas: CanvasItem, rect: Rect2, p: float, back: bool) -> void:
|
||||
|
||||
Reference in New Issue
Block a user