Map 1: rebuild Hollywood as the El Capitan landmark
Replace the generic boulevard facade with a stylized 6840 Hollywood Blvd block: six Ionic columns, eight stone steps, Masonic frieze/medallions, event banners, side doors, El Capitan Theatre and retail neighbours, Ovation Hollywood arcade, Walk of Fame and four-lane street markings. Add the Day and Night Hollywood venue-menu rows. Night uses a phase-time offset so a full-length shift stays in LATE while the clock starts at zero; late routine traffic keeps the street populated and the offset round-trips through checkpoint restore. Retune local-light falloff to linear attenuation, add a cool north sky fill, and use the smooth limestone facade texture. Refresh the staged gallery and map references; add geometry-budget, menu, night-offset and late-traffic tests.
This commit is contained in:
1 parent
3f335481d6
commit
74dc1fdc1d
50 files changed
+1176
-100
No files matched your search
@@ -24,6 +24,9 @@ var elapsed_s: float = 0.0
|
||||
## Wall-clock start, so the shift review can show event times as mm:ss.
|
||||
var started_at_ms: int = 0
|
||||
var current_phase: int = Rules.Phase.EARLY
|
||||
## Shift time added when resolving the phase. A night variant starts at 0:00
|
||||
## elapsed but reads LATE, so its full shift stays after dark.
|
||||
var phase_offset_s: float = 0.0
|
||||
var running := false
|
||||
|
||||
var event_bus := EventBus.new()
|
||||
@@ -50,6 +53,8 @@ func setup(p_scenario: VenueScenario, p_duration_s: float = 900.0, p_seed: int =
|
||||
duration_s = p_duration_s
|
||||
spawn_seed = p_seed
|
||||
scheduler.setup(scenario, p_seed)
|
||||
phase_offset_s = 0.0
|
||||
current_phase = Rules.Phase.EARLY
|
||||
event_bus = EventBus.new()
|
||||
responder_outcomes.clear()
|
||||
investigations.clear()
|
||||
@@ -101,17 +106,21 @@ func tick(delta: float) -> void:
|
||||
func _phase_for_time(t: float) -> int:
|
||||
if scenario == null or scenario.shift_phases.is_empty():
|
||||
return Rules.Phase.EARLY
|
||||
var shifted := t + phase_offset_s
|
||||
var last_phase := Rules.Phase.EARLY
|
||||
var keys := scenario.shift_phases.keys()
|
||||
keys.sort()
|
||||
for phase in keys:
|
||||
var start_s: float = scenario.shift_phases[phase].get("start_s", 0.0)
|
||||
if t >= start_s:
|
||||
if shifted >= start_s:
|
||||
last_phase = phase
|
||||
return last_phase
|
||||
|
||||
func schedule_time_s() -> float:
|
||||
return elapsed_s + phase_offset_s
|
||||
|
||||
func _spawn_due(delta: float) -> void:
|
||||
var due := scheduler.pull_due(elapsed_s, current_phase)
|
||||
var due := scheduler.pull_due(schedule_time_s(), current_phase)
|
||||
var fallback := scheduler.fallback_routine_traffic(current_phase)
|
||||
var all := due
|
||||
all.append_array(fallback)
|
||||
@@ -161,6 +170,7 @@ func snapshot() -> Dictionary:
|
||||
"duration_s": duration_s,
|
||||
"elapsed_s": elapsed_s,
|
||||
"current_phase": current_phase,
|
||||
"phase_offset_s": phase_offset_s,
|
||||
"spawned_count": spawned_count,
|
||||
"responder_outcomes": responder_outcomes.duplicate(),
|
||||
"investigations": investigations.duplicate(),
|
||||
@@ -175,6 +185,7 @@ func restore(data: Dictionary) -> void:
|
||||
duration_s = float(data.get("duration_s", duration_s))
|
||||
elapsed_s = float(data.get("elapsed_s", 0.0))
|
||||
current_phase = int(data.get("current_phase", Rules.Phase.EARLY))
|
||||
phase_offset_s = float(data.get("phase_offset_s", 0.0))
|
||||
spawned_count = int(data.get("spawned_count", 0))
|
||||
responder_outcomes.clear()
|
||||
for value in data.get("responder_outcomes", []):
|
||||
|
||||
Reference in new issue
Block a user