feat: TimeSystem 增加月/年信号与日期设置接口

- 新增 month_passed/year_passed 信号,供俸禄与年度结算
- 新增 speed_changed/pause_changed 信号及 set_paused
- 新增 set_date 接口,供读档恢复时间
This commit is contained in:
2026-08-03 22:24:04 +08:00
parent 0320d98a73
commit 19f81ceeec
+26
View File
@@ -1,6 +1,10 @@
extends Node
signal day_passed(year, month, day)
signal month_passed(year, month)
signal year_passed(year)
signal speed_changed(speed_index)
signal pause_changed(paused)
const SPEEDS := [1.0, 5.0, 20.0]
const DAYS_PER_MONTH := 30
@@ -25,28 +29,45 @@ func _is_in_game() -> bool:
return scene != null and scene.name == "MainGame"
func _advance() -> void:
var new_month := false
var new_year := false
GameState.day += 1
if GameState.day > DAYS_PER_MONTH:
GameState.day = 1
GameState.month += 1
new_month = true
if GameState.month > MONTHS_PER_YEAR:
GameState.month = 1
GameState.year += 1
new_year = true
day_passed.emit(GameState.year, GameState.month, GameState.day)
if new_month:
month_passed.emit(GameState.year, GameState.month)
if new_year:
year_passed.emit(GameState.year)
func cycle_speed() -> float:
speed_index = (speed_index + 1) % SPEEDS.size()
speed = SPEEDS[speed_index]
speed_changed.emit(speed_index)
return speed
func set_speed_index(index: int) -> void:
speed_index = clampi(index, 0, SPEEDS.size() - 1)
speed = SPEEDS[speed_index]
speed_changed.emit(speed_index)
func toggle_pause() -> bool:
paused = not paused
pause_changed.emit(paused)
return paused
func set_paused(value: bool) -> void:
if paused == value:
return
paused = value
pause_changed.emit(paused)
func get_speed_label() -> String:
return "x%d" % int(speed)
@@ -55,3 +76,8 @@ func get_current_date() -> Array:
func get_date_text() -> String:
return "%d%d%d" % [GameState.year, GameState.month, GameState.day]
func set_date(y: int, m: int, d: int) -> void:
GameState.year = y
GameState.month = m
GameState.day = d