refactor BunchSpawner
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
extends ControlledUnit
|
||||
class_name AntGatherer
|
||||
|
||||
enum AntGathererState {
|
||||
enum State {
|
||||
WANDERING,
|
||||
MOVING,
|
||||
GATHERING,
|
||||
@@ -10,7 +10,7 @@ enum AntGathererState {
|
||||
const ITEM_BONE_NAME = "Gatherer_item_"
|
||||
const MAX_CARRY: int = 8
|
||||
|
||||
var state: AntGathererState = AntGathererState.WANDERING
|
||||
var state: State = State.WANDERING
|
||||
|
||||
@onready var gathering: Gathering = $Gathering
|
||||
@onready var skeleton: Skeleton3D = $AntModel/Armature/Skeleton3D
|
||||
@@ -37,7 +37,7 @@ func _ready() -> void:
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
if is_relocating:
|
||||
state = AntGathererState.MOVING
|
||||
state = State.MOVING
|
||||
|
||||
_handle_wandering(delta)
|
||||
_handle_gathering()
|
||||
@@ -45,12 +45,12 @@ func _process(delta: float) -> void:
|
||||
|
||||
func _interact(with: Interactable) -> void:
|
||||
if with is Honeydew:
|
||||
state = AntGathererState.GATHERING
|
||||
state = State.GATHERING
|
||||
gathering.start_gathering(with as Honeydew)
|
||||
|
||||
|
||||
func _handle_wandering(delta: float) -> void:
|
||||
if state != AntGathererState.WANDERING:
|
||||
if state != State.WANDERING:
|
||||
return
|
||||
|
||||
_wander(delta)
|
||||
@@ -61,17 +61,17 @@ func _handle_gathering() -> void:
|
||||
|
||||
|
||||
func _on_moving_ended() -> void:
|
||||
state = AntGathererState.WANDERING
|
||||
state = State.WANDERING
|
||||
|
||||
|
||||
func _on_moving_started() -> void:
|
||||
if state == AntGathererState.GATHERING:
|
||||
if state == State.GATHERING:
|
||||
gathering.stop_gathering()
|
||||
state = AntGathererState.MOVING
|
||||
state = State.MOVING
|
||||
|
||||
|
||||
func _on_gathering_navigate_to(pos: Vector3) -> void:
|
||||
if state != AntGathererState.GATHERING:
|
||||
if state != State.GATHERING:
|
||||
return
|
||||
|
||||
navigate(pos)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
extends ControlledUnit
|
||||
class_name AntNitwit
|
||||
|
||||
enum AntNitwitState {
|
||||
enum State {
|
||||
WANDERING,
|
||||
MOVING,
|
||||
GATHERING,
|
||||
@@ -9,7 +9,7 @@ enum AntNitwitState {
|
||||
|
||||
const ITEM_BONE_NAME = "Nitwit_item_"
|
||||
|
||||
var state: AntNitwitState = AntNitwitState.WANDERING
|
||||
var state: State = State.WANDERING
|
||||
|
||||
@onready var gathering: Gathering = $Gathering
|
||||
@onready var skeleton: Skeleton3D = $AntModel/Armature/Skeleton3D
|
||||
@@ -36,7 +36,7 @@ func _ready() -> void:
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
if is_relocating:
|
||||
state = AntNitwitState.MOVING
|
||||
state = State.MOVING
|
||||
|
||||
_handle_wandering(delta)
|
||||
_handle_gathering()
|
||||
@@ -44,12 +44,12 @@ func _process(delta: float) -> void:
|
||||
|
||||
func _interact(with: Interactable) -> void:
|
||||
if with is Honeydew:
|
||||
state = AntNitwitState.GATHERING
|
||||
state = State.GATHERING
|
||||
gathering.start_gathering(with as Honeydew)
|
||||
|
||||
|
||||
func _handle_wandering(delta: float) -> void:
|
||||
if state != AntNitwitState.WANDERING:
|
||||
if state != State.WANDERING:
|
||||
return
|
||||
|
||||
_wander(delta)
|
||||
@@ -60,18 +60,18 @@ func _handle_gathering() -> void:
|
||||
|
||||
|
||||
func _on_moving_ended() -> void:
|
||||
state = AntNitwitState.WANDERING
|
||||
state = State.WANDERING
|
||||
|
||||
|
||||
func _on_moving_started() -> void:
|
||||
if state == AntNitwitState.GATHERING:
|
||||
if state == State.GATHERING:
|
||||
gathering.stop_gathering()
|
||||
state = AntNitwitState.MOVING
|
||||
state = State.MOVING
|
||||
|
||||
|
||||
func _on_gathering_navigate_to(pos: Vector3) -> void:
|
||||
print('_on_gathering_navigate_to')
|
||||
if state != AntNitwitState.GATHERING:
|
||||
if state != State.GATHERING:
|
||||
return
|
||||
print('_on_gathering_navigate_to 2')
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
extends Unit
|
||||
class_name Aphid
|
||||
|
||||
enum AphidState {
|
||||
enum State {
|
||||
WANDERING,
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ const HONEYDEW_INTERVAL_MAX: float = 60
|
||||
const HONEYDEW_SPAWN_SPREAD: float = 0.5
|
||||
const HONEYDEWS_MAX: int = 5
|
||||
|
||||
var state: AphidState = AphidState.WANDERING
|
||||
var state: State = State.WANDERING
|
||||
var honeydew_spawn_timer: float = 0
|
||||
var spawned_honeydews: Dictionary = {}
|
||||
|
||||
@@ -37,7 +37,7 @@ func erase_honeydew(item: Honeydew) -> void:
|
||||
|
||||
|
||||
func _handle_wandering(delta: float) -> void:
|
||||
if state != AphidState.WANDERING:
|
||||
if state != State.WANDERING:
|
||||
return
|
||||
|
||||
_wander(delta)
|
||||
@@ -50,8 +50,7 @@ func _handle_honeydew_spawn(delta: float) -> void:
|
||||
if honeydew_spawn_timer >= 0:
|
||||
honeydew_spawn_timer -= delta
|
||||
return
|
||||
|
||||
audio_player.play_sound(SoundManager.pop())
|
||||
|
||||
var new_honeydew := honeydew_scene.instantiate() as Honeydew
|
||||
new_honeydew.set_aphid(self)
|
||||
|
||||
|
||||
@@ -9,14 +9,14 @@ const DEFAULT_PICKUP_INTERVAL = 0.5
|
||||
const DROP_SPREAD: float = 0.1
|
||||
const ANTHILL_DEPOSIT_RADIUS: float = 0.5
|
||||
|
||||
enum GatherState {
|
||||
enum State {
|
||||
AWAITING,
|
||||
PICKING_UP,
|
||||
DEPOSITING,
|
||||
STOP,
|
||||
}
|
||||
|
||||
var state: GatherState = GatherState.STOP
|
||||
var state: State = State.STOP
|
||||
|
||||
var nearby_items: Dictionary = {}
|
||||
var carrying_items: Array[Honeydew] = []
|
||||
@@ -94,7 +94,7 @@ func handle_gathering(showing_info: bool) -> void:
|
||||
collision_shape.global_rotation = Vector3.ZERO
|
||||
|
||||
radius_indicator.visible = (
|
||||
(state != GatherState.STOP and showing_info)
|
||||
(state != State.STOP and showing_info)
|
||||
or showing_after_set
|
||||
)
|
||||
|
||||
@@ -102,40 +102,40 @@ func handle_gathering(showing_info: bool) -> void:
|
||||
func start_gathering(item: Honeydew) -> void:
|
||||
gathering_center = item.global_position
|
||||
showing_after_set = true
|
||||
state = GatherState.AWAITING
|
||||
state = State.AWAITING
|
||||
_go_pick_up(item)
|
||||
|
||||
|
||||
func stop_gathering() -> void:
|
||||
state = GatherState.STOP
|
||||
state = State.STOP
|
||||
target = null
|
||||
|
||||
|
||||
func on_nav_agent_navigation_finished() -> void:
|
||||
if state == GatherState.PICKING_UP:
|
||||
if state == State.PICKING_UP:
|
||||
_pick_up()
|
||||
|
||||
if (
|
||||
state == GatherState.DEPOSITING
|
||||
state == State.DEPOSITING
|
||||
and global_position.distance_to(anthill.global_position) < 1
|
||||
):
|
||||
_deposit()
|
||||
|
||||
|
||||
func _go_pick_up(item: Honeydew) -> void:
|
||||
state = GatherState.AWAITING
|
||||
state = State.AWAITING
|
||||
if anthill.space_left() <= 0:
|
||||
return
|
||||
if carrying_items.size() >= max_carrying:
|
||||
_go_deposit()
|
||||
return
|
||||
target = item
|
||||
state = GatherState.PICKING_UP
|
||||
state = State.PICKING_UP
|
||||
navigate_to.emit(item.global_position)
|
||||
|
||||
|
||||
func _go_deposit() -> void:
|
||||
state = GatherState.DEPOSITING
|
||||
state = State.DEPOSITING
|
||||
var dir := anthill.global_position.direction_to(global_position)
|
||||
navigate_to.emit(
|
||||
anthill.global_position
|
||||
@@ -151,7 +151,7 @@ func _get_nth_pile_pos(n: int) -> Vector3:
|
||||
func _pick_up() -> void:
|
||||
var nearest := _find_nearest(nearby_items.values())
|
||||
if target == null or target.carried:
|
||||
state = GatherState.AWAITING
|
||||
state = State.AWAITING
|
||||
if nearest != null:
|
||||
_go_pick_up(nearest)
|
||||
elif carrying_items.size() > 0:
|
||||
@@ -177,11 +177,11 @@ func _pick_up() -> void:
|
||||
func _deposit() -> void:
|
||||
await get_tree().create_timer(0.5).timeout
|
||||
while carrying_items.size() > 0:
|
||||
if state != GatherState.DEPOSITING:
|
||||
if state != State.DEPOSITING:
|
||||
return
|
||||
|
||||
if anthill.space_left() <= 0:
|
||||
state = GatherState.AWAITING
|
||||
state = State.AWAITING
|
||||
await _drop_everything()
|
||||
return
|
||||
|
||||
@@ -200,7 +200,7 @@ func _deposit() -> void:
|
||||
_go_pick_up(nearest)
|
||||
return
|
||||
|
||||
state = GatherState.AWAITING
|
||||
state = State.AWAITING
|
||||
navigate_to.emit(gathering_center)
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ func _on_body_entered(item: Node3D) -> void:
|
||||
return
|
||||
|
||||
nearby_items[item_id] = item as Honeydew
|
||||
if state == GatherState.AWAITING and anthill.space_left() > 0:
|
||||
if state == State.AWAITING and anthill.space_left() > 0:
|
||||
_go_pick_up(item as Honeydew)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user