brackeys-12/main.gd

107 lines
2.9 KiB
GDScript3
Raw Permalink Normal View History

2024-09-09 01:17:35 +00:00
extends Node2D
2024-09-14 22:01:46 +00:00
@onready var building_levels = [
2024-09-15 01:09:17 +00:00
$Node2D/Level2/BuildingLevel2,
$Node2D/Level3/BuildingLevel3,
$Node2D/Level4/BuildingLevel4,
$Node2D/Level5/BuildingLevel5,
2024-09-15 01:37:29 +00:00
$Node2D/Node2D/BuildingLevel6
2024-09-14 22:01:46 +00:00
]
2024-09-15 01:19:19 +00:00
@onready var night: ColorRect = $CanvasLayer/Night
var night_tween
2024-09-15 07:43:45 +00:00
var timer = 0
var timer2 = 0
2024-09-15 01:19:19 +00:00
func _ready() -> void:
2024-09-15 08:02:55 +00:00
Triggerer.listen("game_started", _on_game_started)
2024-09-24 00:36:55 +00:00
Triggerer.listen("destroy", _on_destroy)
2024-09-15 08:02:55 +00:00
func _on_game_started(_data):
2024-09-15 01:19:19 +00:00
if night_tween:
night_tween.kill()
night_tween = create_tween()
night_tween.set_loops()
night_tween.tween_property(night, "modulate", Color.TRANSPARENT, 5)
night_tween.tween_interval(15)
night_tween.tween_property(night, "modulate", Color.WHITE, 5)
2024-09-14 22:01:46 +00:00
func _process(delta: float) -> void:
2024-09-15 08:43:56 +00:00
if Persister.get_value("win") or Persister.get_value("lose"):
return
if Persister.get_value("population") <= 0:
Persister.persist_data("lose", true)
2024-09-23 23:59:35 +00:00
if Input.is_action_just_pressed("mclick"):
for build_level in building_levels:
build_level.pick_block()
2024-09-14 22:01:46 +00:00
if Input.is_action_just_released("lclick"):
if Persister.get_value("drag_mode") and Persister.get_value("building_mode"):
for build_level in building_levels:
build_level.place_building()
Persister.persist_data("building_mode", false)
2024-09-15 01:27:59 +00:00
var building_mode = Persister.get_value("building_mode")
if Input.is_action_just_pressed("lclick") and not Persister.get_value("drag_mode"):
if building_mode:
for build_level in building_levels:
build_level.place_building()
else:
for build_level in building_levels:
build_level.show_info_building()
Persister.persist_data("building_mode", false)
if Input.is_action_just_pressed("rclick"):
Persister.persist_data("building_mode", false)
2024-09-15 07:43:45 +00:00
if Persister.get_value("game_started"):
timer += delta
timer2 += delta
if timer >= 5:
var pop = Persister.get_value("population")
var pop_scale = ceil(pop / 5.0)
if Persister.get_value("food") > pop_scale and Persister.get_value("water") > pop_scale:
2024-09-15 08:02:55 +00:00
Persister.change_value("food", -pop_scale)
Persister.change_value("water", -pop_scale)
2024-09-15 07:43:45 +00:00
if Persister.get_value("population") < Persister.get_value("max_population"):
Persister.change_value("population", 1)
Persister.change_value("avail_population", 1)
elif Persister.get_value("population") > Persister.get_value("max_population"):
Persister.change_value("population", -1)
if Persister.get_value("avail_population") > 0:
Persister.change_value("avail_population", -1)
else:
_kill_citizen()
else:
Persister.change_value("population", -1)
if Persister.get_value("avail_population") > 0:
Persister.change_value("avail_population", -1)
else:
_kill_citizen()
timer -= 5
2024-09-24 00:36:55 +00:00
func _on_destroy(data):
var tile = data.tile
for build_level in building_levels:
build_level.destroy(tile)
2024-09-15 07:43:45 +00:00
func _kill_citizen():
for build_level in building_levels:
var val = build_level.kill_citizen()
if val:
return