Add state machine for eating food
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user