diff --git a/simulation/SimNPC.gd b/simulation/SimNPC.gd index 35c054d..391bdc4 100644 --- a/simulation/SimNPC.gd +++ b/simulation/SimNPC.gd @@ -29,7 +29,7 @@ func _init( position = Vector3(randf_range(-8.0, 8.0), 0.0, randf_range(-8.0, 8.0)) func simulate_tick(village: SimVillage) -> void: - hunger += 5.0 + hunger += 5.0 * village.food_modifier energy -= 2.0 hunger = clamp(hunger, 0.0, 100.0) diff --git a/simulation/SimVillage.gd b/simulation/SimVillage.gd index c9115d8..53639d2 100644 --- a/simulation/SimVillage.gd +++ b/simulation/SimVillage.gd @@ -1,11 +1,41 @@ class_name SimVillage extends RefCounted +const DEBUG_LOGS := true + var food := 20.0 var wood := 10.0 var safety := 50.0 var knowledge := 0.0 +var food_modifier := 1.0 +var wood_modifier := 1.0 +var safety_modifier := 1.0 +var knowledge_modifier := 1.0 + +func update_modifiers() -> void: + food_modifier = 1.0 + wood_modifier = 1.0 + safety_modifier = 1.0 + knowledge_modifier = 1.0 + if food <= 0: + food_modifier = 2.0 + if wood <= 0: + wood_modifier = 2.0 + if safety < 20: + safety_modifier = 2.0 + if knowledge > 25: + knowledge_modifier = 0.75 + + debug_log("FoodMod=%s SafetyMod=%s KnowledgeMod=%s" % + [ + food_modifier, + safety_modifier, + knowledge_modifier + ] + ) + + func apply_npc_task(npc: SimNPC) -> void: match npc.current_task: "gather_food": @@ -27,6 +57,7 @@ func apply_npc_task(npc: SimNPC) -> void: wood = max(wood, 0.0) safety = clamp(safety, 0.0, 100.0) knowledge = max(knowledge, 0.0) + update_modifiers() func get_summary() -> String: return "Village | food: %s | wood: %s | safety: %s | knowledge: %s" % [ @@ -35,3 +66,7 @@ func get_summary() -> String: round(safety), round(knowledge) ] + +func debug_log(message: String) -> void: + if DEBUG_LOGS: + print("[Village] ", message) diff --git a/world/ui/ui.gd b/world/ui/ui.gd index 8659ba1..13fd801 100644 --- a/world/ui/ui.gd +++ b/world/ui/ui.gd @@ -21,15 +21,23 @@ func _ready() -> void: func _on_village_changed(village: SimVillage) -> void: village_stats_label.text = """ -Village + Village -Food: %s -Wood: %s -Safety: %s -Knowledge: %s -""" % [ + Food: %s + Wood: %s + Safety: %s + Knowledge: %s + + Food Mod: %.2f + Safety Mod: %.2f + Knowledge Mod: %.2f + """ % [ round(village.food), round(village.wood), round(village.safety), - round(village.knowledge) + round(village.knowledge), + + village.food_modifier, + village.safety_modifier, + village.knowledge_modifier ]