ticker
This commit is contained in:
parent
c5846aba7b
commit
074bb21ffd
18 changed files with 99 additions and 51 deletions
|
@ -14,12 +14,10 @@ class_name BeltInventory
|
|||
get:
|
||||
return capacity
|
||||
|
||||
@export var progress_speed : float = 1.0
|
||||
@export var pop_treshold : float = 0.99
|
||||
|
||||
## :3
|
||||
@export_storage var internal_array : Array[InventorySlot] = []
|
||||
@export_storage var progress_array : Array[float] = []
|
||||
|
||||
func _init() -> void:
|
||||
super()
|
||||
|
@ -27,7 +25,6 @@ func _init() -> void:
|
|||
|
||||
func deferred_init():
|
||||
internal_array.resize(capacity)
|
||||
progress_array.resize(capacity)
|
||||
for i in range(capacity):
|
||||
internal_array[i] = InventorySlot.new()
|
||||
|
||||
|
@ -74,30 +71,21 @@ func can_add(_item : Item = null, context : InventoryContext = null) -> bool:
|
|||
func pop() -> Stack:
|
||||
if internal_array[capacity-1].amount == 0:
|
||||
return null
|
||||
if progress_array[capacity-1] < pop_treshold:
|
||||
return null
|
||||
stack_taken.emit(internal_array[capacity-1], capacity-1)
|
||||
return internal_array[capacity-1].extract()
|
||||
|
||||
func peek() -> Stack:
|
||||
if internal_array[capacity-1].amount == 0:
|
||||
return null
|
||||
if progress_array[capacity-1] < pop_treshold:
|
||||
return null
|
||||
return internal_array[capacity-1].as_stack()
|
||||
|
||||
func advance(delta : float) -> void:
|
||||
var progress_flag : bool = false
|
||||
for i in range(capacity):
|
||||
if internal_array[i].amount == 0:
|
||||
continue
|
||||
if progress_array[i] >= 1:
|
||||
progress_flag = true
|
||||
continue
|
||||
progress_array[i] += delta * progress_speed
|
||||
|
||||
if progress_flag:
|
||||
sort()
|
||||
func advance() -> void:
|
||||
for i in range(capacity-1,0,-1):
|
||||
if internal_array[i].amount == 0 and internal_array[0].updated == false:
|
||||
var extracted_stack = internal_array[i-1].extract()
|
||||
internal_array[i].merge_stack(extracted_stack)
|
||||
if extracted_stack != null and extracted_stack.is_valid():
|
||||
internal_array[i-1].merge_stack(extracted_stack)
|
||||
|
||||
## Tries to take certain item from inventory. Returns null if no item found
|
||||
func take(item: Item,amount: int) -> Stack:
|
||||
|
@ -108,12 +96,6 @@ func take(item: Item,amount: int) -> Stack:
|
|||
stack_taken.emit(extracted,found)
|
||||
return extracted
|
||||
|
||||
func sort() -> void:
|
||||
for i in range(capacity-1,0,-1):
|
||||
if progress_array[i-1] >= 1.0 and internal_array[i].amount == 0:
|
||||
progress_array[i-1] = 0
|
||||
progress_array[i] = 0
|
||||
var extracted_stack = internal_array[i-1].extract()
|
||||
internal_array[i].merge_stack(extracted_stack)
|
||||
if extracted_stack.is_valid():
|
||||
internal_array[i-1].merge_stack(extracted_stack)
|
||||
func refresh() -> void:
|
||||
for i in range(capacity):
|
||||
internal_array[i].updated = false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue