Inventory context
This commit is contained in:
parent
d413c211b5
commit
fed57e38df
17 changed files with 128 additions and 108 deletions
|
@ -39,38 +39,37 @@ func find(item : Item) -> int:
|
|||
return -1
|
||||
|
||||
## Tries to add an item into inventory. Returns not stored stack of item.
|
||||
func add(stack: Stack) -> Stack:
|
||||
func add(stack: Stack, context: InventoryContext = null) -> Stack:
|
||||
if context != null:
|
||||
var ang_diff = (context.position - context.source.global_position).angle()-context.target.direction
|
||||
if is_equal_approx(abs(ang_diff),PI/2):
|
||||
if internal_array[capacity/2].amount != 0:
|
||||
return null
|
||||
stack_added.emit(stack,capacity/2)
|
||||
internal_array[capacity/2].merge_stack(stack)
|
||||
return stack
|
||||
elif is_equal_approx(abs(ang_diff), PI):
|
||||
if internal_array[capacity-1].amount != 0:
|
||||
return null
|
||||
stack_added.emit(stack,capacity-1)
|
||||
internal_array[capacity-1].merge_stack(stack)
|
||||
return stack
|
||||
if internal_array[0].amount != 0:
|
||||
return null
|
||||
stack_added.emit(stack,0)
|
||||
internal_array[0].merge_stack(stack)
|
||||
return stack
|
||||
|
||||
|
||||
func add_from_side(stack : Stack, ang_diff : float) -> Stack:
|
||||
if is_equal_approx(abs(ang_diff),PI/2):
|
||||
if internal_array[capacity/2].amount != 0:
|
||||
return null
|
||||
stack_added.emit(stack,capacity/2)
|
||||
internal_array[capacity/2].merge_stack(stack)
|
||||
return stack
|
||||
elif is_equal_approx(abs(ang_diff), PI):
|
||||
if internal_array[capacity-1].amount != 0:
|
||||
return null
|
||||
stack_added.emit(stack,capacity-1)
|
||||
internal_array[capacity-1].merge_stack(stack)
|
||||
return stack
|
||||
return add(stack)
|
||||
|
||||
func can_add(_item : Item = null) -> bool:
|
||||
func can_add(_item : Item = null, context : InventoryContext = null) -> bool:
|
||||
if context != null:
|
||||
var ang_diff = (context.position - context.source.global_position).angle()-context.target.direction
|
||||
if is_equal_approx(abs(ang_diff),PI/2):
|
||||
return internal_array[capacity/2].amount == 0
|
||||
elif is_equal_approx(abs(ang_diff),PI):
|
||||
return internal_array[capacity-1].amount == 0
|
||||
return internal_array[0].amount == 0
|
||||
|
||||
func can_add_from_side(ang_diff : float, item : Item = null) -> bool:
|
||||
if is_equal_approx(abs(ang_diff),PI/2):
|
||||
return internal_array[capacity/2].amount == 0
|
||||
elif is_equal_approx(abs(ang_diff),PI):
|
||||
return internal_array[capacity-1].amount == 0
|
||||
return can_add(item)
|
||||
|
||||
## Tries to take first item. Returns null if no items in inventory
|
||||
func pop() -> Stack:
|
||||
if internal_array[capacity-1].amount == 0:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue