Add state machine for eating food

This commit is contained in:
2021-01-05 05:57:06 +00:00
parent 029ef72ea5
commit 7217686716
4 changed files with 131 additions and 26 deletions
+73
View File
@@ -1707,6 +1707,62 @@ class FillBlocksStates:
self.state()
class EatFoodStates:
def idle(self):
return None
def init(self):
if self.g.food < 12:
print('Hungry, eating')
self.state = self.select_food
return
if self.g.health < 20 and self.g.food < 18:
print('Low health, eating')
self.state = self.select_food
return
print('Don\'t need to eat, aborting')
self.state = self.cleanup
def select_food(self):
if self.g.game.select_item(items.FOOD_IDS):
self.state = self.eat_food
else:
print('No food, aborting')
self.state = self.cleanup
def eat_food(self):
self.g.game.use_item(0)
print('Eating food')
self.wait_time = 3
self.state = self.wait
def wait(self):
if self.wait_time > 0:
self.wait_time -= utils.TICK
else:
self.state = self.cleanup
def cleanup(self):
self.state = self.done
def done(self):
# never gets ran, placeholder
return None
def __init__(self, global_state):
self.g = global_state
self.state = self.idle
self.wait_time = 0
def run(self):
self.state()
class JobStates:
def idle(self):
return []
@@ -1726,6 +1782,7 @@ class JobStates:
self.check_threats_states = CheckThreatsStates(self.g)
self.gather_wart_states = GatherWartStates(self.g)
self.gather_crop_states = GatherCropStates(self.g)
self.eat_food_states = EatFoodStates(self.g)
def run_machines(self, machines):
for m in machines:
@@ -1744,6 +1801,7 @@ class JobStates:
self.grab_sand_states,
self.cache_items_states,
self.sleep_with_bed_states,
self.eat_food_states,
]
return machines
@@ -1755,6 +1813,7 @@ class JobStates:
self.grab_sand_states,
self.cache_items_states,
self.sleep_with_bed_states,
self.eat_food_states,
]
self.sleep_with_bed_states.silent = True
self.cache_items_states.silent = True
@@ -1780,6 +1839,7 @@ class JobStates:
machines = [
self.gather_wood_states,
self.sleep_with_bed_states,
self.eat_food_states,
self.cache_items_states,
]
return machines
@@ -1792,6 +1852,7 @@ class JobStates:
self.plant_tree_states,
self.grab_sapling_states,
self.sleep_with_bed_states,
self.eat_food_states,
self.cache_items_states,
]
self.sleep_with_bed_states.silent = True
@@ -1805,6 +1866,7 @@ class JobStates:
machines = [
self.gather_wart_states,
self.sleep_with_bed_states,
self.eat_food_states,
self.cache_items_states,
]
self.sleep_with_bed_states.silent = True
@@ -1815,6 +1877,7 @@ class JobStates:
machines = [
self.gather_crop_states,
self.sleep_with_bed_states,
self.eat_food_states,
self.cache_items_states,
]
self.sleep_with_bed_states.silent = True
@@ -1826,6 +1889,7 @@ class JobStates:
self.grab_supplies_states,
self.fill_blocks_states,
self.sleep_with_bed_states,
self.eat_food_states,
]
self.sleep_with_bed_states.silent = True
@@ -1838,6 +1902,15 @@ class JobStates:
}
return machines
def loiter(self):
machines = [
self.check_threats_states,
self.sleep_with_bed_states,
self.eat_food_states,
]
self.sleep_with_bed_states.silent = True
return machines
def stop(self):
self.init_machines()
self.state = self.idle