separate awaiting into WAITING_FOR_NEW_ITEMS and WAITING_FOR_MORE_SPACE
This commit is contained in:
Binary file not shown.
@@ -1,6 +1,8 @@
|
|||||||
extends Interactable
|
extends Interactable
|
||||||
class_name Anthill
|
class_name Anthill
|
||||||
|
|
||||||
|
signal buy_ant
|
||||||
|
|
||||||
const SPAWN_RADIUS: float = 1
|
const SPAWN_RADIUS: float = 1
|
||||||
const DEFAULT_MAX_HONEYDEW: int = 120
|
const DEFAULT_MAX_HONEYDEW: int = 120
|
||||||
|
|
||||||
@@ -82,4 +84,5 @@ func _create_unit(
|
|||||||
)
|
)
|
||||||
if ding:
|
if ding:
|
||||||
audio_player.play_sound(SoundManager.ding())
|
audio_player.play_sound(SoundManager.ding())
|
||||||
|
buy_ant.emit()
|
||||||
return new_unit
|
return new_unit
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ enum State {
|
|||||||
ANT_MOVING,
|
ANT_MOVING,
|
||||||
ANT_PICKING_UP,
|
ANT_PICKING_UP,
|
||||||
ANT_DEPOSITING,
|
ANT_DEPOSITING,
|
||||||
ANT_AWAITING,
|
ANT_WAITING_FOR_NEW_ITEMS,
|
||||||
|
ANT_WAITING_FOR_MORE_SPACE,
|
||||||
APHID_IDLE,
|
APHID_IDLE,
|
||||||
APHID_PANIC,
|
APHID_PANIC,
|
||||||
APHID_EAT,
|
APHID_EAT,
|
||||||
@@ -90,7 +91,9 @@ func _get_gathering_state(gather_state: Gathering.State) -> void:
|
|||||||
_state = State.ANT_PICKING_UP
|
_state = State.ANT_PICKING_UP
|
||||||
Gathering.State.DEPOSITING:
|
Gathering.State.DEPOSITING:
|
||||||
_state = State.ANT_DEPOSITING
|
_state = State.ANT_DEPOSITING
|
||||||
Gathering.State.AWAITING:
|
Gathering.State.WAITING_FOR_NEW_ITEMS:
|
||||||
_state = State.ANT_AWAITING
|
_state = State.ANT_WAITING_FOR_NEW_ITEMS
|
||||||
|
Gathering.State.WAITING_FOR_MORE_SPACE:
|
||||||
|
_state = State.ANT_WAITING_FOR_MORE_SPACE
|
||||||
Gathering.State.STOP:
|
Gathering.State.STOP:
|
||||||
_state = State.NONE
|
_state = State.NONE
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ class_name Gathering
|
|||||||
const ANTHILL_DEPOSIT_RADIUS: float = 0.5
|
const ANTHILL_DEPOSIT_RADIUS: float = 0.5
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
AWAITING,
|
WAITING_FOR_NEW_ITEMS,
|
||||||
|
WAITING_FOR_MORE_SPACE,
|
||||||
PICKING_UP,
|
PICKING_UP,
|
||||||
DEPOSITING,
|
DEPOSITING,
|
||||||
STOP,
|
STOP,
|
||||||
@@ -88,6 +89,7 @@ func initialize(
|
|||||||
_skeleton = skeleton_3d
|
_skeleton = skeleton_3d
|
||||||
_item_bones = bones
|
_item_bones = bones
|
||||||
_unit.moving_started.connect(_on_unit_moving_started)
|
_unit.moving_started.connect(_on_unit_moving_started)
|
||||||
|
_unit.anthill.buy_ant.connect(_on_anthill_buy_ant)
|
||||||
_unit.nav_agent.navigation_finished.connect(
|
_unit.nav_agent.navigation_finished.connect(
|
||||||
_on_nav_agent_navigation_finished
|
_on_nav_agent_navigation_finished
|
||||||
)
|
)
|
||||||
@@ -100,10 +102,7 @@ func start_gathering(item: Honeydew) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _go_pick_up(item: Honeydew) -> void:
|
func _go_pick_up(item: Honeydew) -> void:
|
||||||
if _unit.anthill.space_left() <= 0:
|
if _carrying_items.size() == _max_carrying:
|
||||||
state = State.AWAITING
|
|
||||||
return
|
|
||||||
if _carrying_items.size() >= _max_carrying:
|
|
||||||
_go_deposit()
|
_go_deposit()
|
||||||
return
|
return
|
||||||
_target = item
|
_target = item
|
||||||
@@ -112,8 +111,8 @@ func _go_pick_up(item: Honeydew) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _go_deposit() -> void:
|
func _go_deposit() -> void:
|
||||||
if _unit.anthill.space_left() <= 0:
|
if _unit.anthill.space_left() == 0:
|
||||||
state = State.AWAITING
|
state = State.WAITING_FOR_MORE_SPACE
|
||||||
return
|
return
|
||||||
state = State.DEPOSITING
|
state = State.DEPOSITING
|
||||||
var dir := _unit.anthill.global_position.direction_to(global_position)
|
var dir := _unit.anthill.global_position.direction_to(global_position)
|
||||||
@@ -132,8 +131,8 @@ func _get_nth_pile_pos(n: int) -> Vector3:
|
|||||||
|
|
||||||
func _pick_up() -> void:
|
func _pick_up() -> void:
|
||||||
if _target == null or _target.carried:
|
if _target == null or _target.carried:
|
||||||
state = State.AWAITING
|
state = State.WAITING_FOR_NEW_ITEMS
|
||||||
if _nearby_items.size() != 0:
|
if _nearby_items.size() > 0:
|
||||||
_go_pick_up(_find_nearest(_nearby_items.values()))
|
_go_pick_up(_find_nearest(_nearby_items.values()))
|
||||||
elif _carrying_items.size() > 0:
|
elif _carrying_items.size() > 0:
|
||||||
_go_deposit()
|
_go_deposit()
|
||||||
@@ -148,7 +147,7 @@ func _pick_up() -> void:
|
|||||||
audio_player.play_sound(SoundManager.pop())
|
audio_player.play_sound(SoundManager.pop())
|
||||||
|
|
||||||
await get_tree().create_timer(_pickup_interval).timeout
|
await get_tree().create_timer(_pickup_interval).timeout
|
||||||
if _carrying_items.size() >= _max_carrying or _nearby_items.size() == 0:
|
if _carrying_items.size() == _max_carrying or _nearby_items.size() == 0:
|
||||||
_go_deposit()
|
_go_deposit()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -161,8 +160,8 @@ func _deposit() -> void:
|
|||||||
if state != State.DEPOSITING:
|
if state != State.DEPOSITING:
|
||||||
return
|
return
|
||||||
|
|
||||||
if _unit.anthill.space_left() <= 0:
|
if _unit.anthill.space_left() == 0:
|
||||||
state = State.AWAITING
|
state = State.WAITING_FOR_MORE_SPACE
|
||||||
return
|
return
|
||||||
|
|
||||||
var item := _carrying_items.pop_back() as Honeydew
|
var item := _carrying_items.pop_back() as Honeydew
|
||||||
@@ -178,7 +177,7 @@ func _deposit() -> void:
|
|||||||
await get_tree().create_timer(_drop_interval).timeout
|
await get_tree().create_timer(_drop_interval).timeout
|
||||||
|
|
||||||
if _nearby_items.size() == 0:
|
if _nearby_items.size() == 0:
|
||||||
state = State.AWAITING
|
state = State.WAITING_FOR_NEW_ITEMS
|
||||||
_unit.navigate(gathering_center)
|
_unit.navigate(gathering_center)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -215,7 +214,10 @@ func _on_body_entered(item: Node3D) -> void:
|
|||||||
return
|
return
|
||||||
|
|
||||||
_nearby_items[item_id] = item as Honeydew
|
_nearby_items[item_id] = item as Honeydew
|
||||||
if state == State.AWAITING:
|
if (
|
||||||
|
state == State.WAITING_FOR_NEW_ITEMS
|
||||||
|
or state == State.WAITING_FOR_MORE_SPACE
|
||||||
|
):
|
||||||
_go_pick_up(item as Honeydew)
|
_go_pick_up(item as Honeydew)
|
||||||
|
|
||||||
|
|
||||||
@@ -237,3 +239,20 @@ func _on_nav_agent_navigation_finished() -> void:
|
|||||||
|
|
||||||
if state == State.DEPOSITING:
|
if state == State.DEPOSITING:
|
||||||
_deposit()
|
_deposit()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_anthill_buy_ant() -> void:
|
||||||
|
if state != State.WAITING_FOR_MORE_SPACE:
|
||||||
|
return
|
||||||
|
|
||||||
|
if (
|
||||||
|
_carrying_items.size() == _max_carrying
|
||||||
|
or (_carrying_items.size() > 0 and _nearby_items.size() == 0)
|
||||||
|
):
|
||||||
|
_go_deposit()
|
||||||
|
return
|
||||||
|
|
||||||
|
if _nearby_items.size() > 0:
|
||||||
|
_go_pick_up(_find_nearest(_nearby_items.values()))
|
||||||
|
else:
|
||||||
|
state = State.WAITING_FOR_NEW_ITEMS
|
||||||
|
|||||||
Reference in New Issue
Block a user