feat: add better priorities setting
This commit is contained in:
@@ -13,6 +13,11 @@ var wood_modifier := 1.0
|
||||
var safety_modifier := 1.0
|
||||
var knowledge_modifier := 1.0
|
||||
|
||||
var food_priority := 1.0
|
||||
var wood_priority := 1.0
|
||||
var safety_priority := 1.0
|
||||
var knowledge_priority := 1.0
|
||||
|
||||
func update_modifiers() -> void:
|
||||
food_modifier = 1.0
|
||||
wood_modifier = 1.0
|
||||
@@ -34,15 +39,44 @@ func update_modifiers() -> void:
|
||||
knowledge_modifier
|
||||
]
|
||||
)
|
||||
|
||||
func update_priorities() -> void:
|
||||
food_priority = 1.0
|
||||
wood_priority = 1.0
|
||||
safety_priority = 1.0
|
||||
knowledge_priority = 1.0
|
||||
|
||||
if food < 10.0:
|
||||
food_priority = 3.0
|
||||
elif food < 20.0:
|
||||
food_priority = 2.0
|
||||
|
||||
if wood < 5.0:
|
||||
wood_priority = 2.5
|
||||
elif wood < 15.0:
|
||||
wood_priority = 1.75
|
||||
|
||||
if safety < 25.0:
|
||||
safety_priority = 3.0
|
||||
elif safety < 50.0:
|
||||
safety_priority = 1.5
|
||||
|
||||
if knowledge < 5.0:
|
||||
knowledge_priority = 1.75
|
||||
elif knowledge < 15.0:
|
||||
knowledge_priority = 1.25
|
||||
|
||||
if DEBUG_LOGS:
|
||||
print(get_priority_summary())
|
||||
|
||||
func apply_npc_task(npc: SimNPC) -> void:
|
||||
var productivity := 1.0
|
||||
|
||||
if npc.energy < 20.0:
|
||||
productivity = 0.25
|
||||
elif npc.energy < 40.0:
|
||||
productivity = 0.5
|
||||
|
||||
|
||||
match npc.current_task:
|
||||
"gather_food":
|
||||
food += 2.0 * productivity
|
||||
@@ -54,8 +88,9 @@ func apply_npc_task(npc: SimNPC) -> void:
|
||||
knowledge += 1.0 * productivity
|
||||
"eat":
|
||||
food -= 1.0
|
||||
npc.hunger = max(npc.hunger - 35.0, 0.0)
|
||||
"rest":
|
||||
pass
|
||||
npc.energy = min(npc.energy + 35.0, 100.0)
|
||||
"wander":
|
||||
safety -= 0.2
|
||||
|
||||
@@ -63,14 +98,30 @@ 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()
|
||||
update_priorities()
|
||||
|
||||
func get_summary() -> String:
|
||||
return "Village | food: %s | wood: %s | safety: %s | knowledge: %s" % [
|
||||
|
||||
return "Village | food: %s | wood: %s | safety: %s | knowledge: %s | priorities F/W/S/K: %s/%s/%s/%s" % [
|
||||
round(food),
|
||||
round(wood),
|
||||
round(safety),
|
||||
round(knowledge)
|
||||
round(knowledge),
|
||||
food_priority,
|
||||
wood_priority,
|
||||
safety_priority,
|
||||
knowledge_priority
|
||||
]
|
||||
|
||||
|
||||
func get_priority_summary() -> String:
|
||||
return "Priorities | food: %s | wood: %s | safety: %s | knowledge: %s" % [
|
||||
food_priority,
|
||||
wood_priority,
|
||||
safety_priority,
|
||||
knowledge_priority
|
||||
]
|
||||
|
||||
func debug_log(message: String) -> void:
|
||||
|
||||
Reference in New Issue
Block a user