Advertisement
Guest User

inventory

a guest
Dec 1st, 2018
4,677
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. extends Control
  2.  
  3. const item_base = preload("res://ItemBase.tscn")
  4.  
  5. onready var inv_base = $InventoryBase
  6. onready var grid_bkpk = $GridBackPack
  7. onready var eq_slots = $EquipmentSlots
  8.  
  9. var item_held = null
  10. var item_offset = Vector2()
  11. var last_container = null
  12. var last_pos = Vector2()
  13.  
  14. func _ready():
  15. pickup_item("sword")
  16. pickup_item("potato")
  17. pickup_item("potato")
  18. pickup_item("sword")
  19. pickup_item("breastplate")
  20. pickup_item("breastplate")
  21. pickup_item("khfdd")
  22.  
  23.  
  24. func _process(delta):
  25. var cursor_pos = get_global_mouse_position()
  26. if Input.is_action_just_pressed("inv_grab"):
  27. grab(cursor_pos)
  28. if Input.is_action_just_released("inv_grab"):
  29. release(cursor_pos)
  30. if item_held != null:
  31. item_held.rect_global_position = cursor_pos + item_offset
  32.  
  33. func grab(cursor_pos):
  34. var c = get_container_under_cursor(cursor_pos)
  35. if c != null and c.has_method("grab_item"):
  36. item_held = c.grab_item(cursor_pos)
  37. if item_held != null:
  38. last_container = c
  39. last_pos = item_held.rect_global_position
  40. item_offset = item_held.rect_global_position - cursor_pos
  41. move_child(item_held, get_child_count())
  42.  
  43. func release(cursor_pos):
  44. if item_held == null:
  45. return
  46. var c = get_container_under_cursor(cursor_pos)
  47. if c == null:
  48. drop_item()
  49. elif c.has_method("insert_item"):
  50. if c.insert_item(item_held):
  51. item_held = null
  52. else:
  53. return_item()
  54. else:
  55. return_item()
  56.  
  57.  
  58. func get_container_under_cursor(cursor_pos):
  59. var containers = [grid_bkpk, eq_slots, inv_base]
  60. for c in containers:
  61. if c.get_global_rect().has_point(cursor_pos):
  62. return c
  63. return null
  64.  
  65. func drop_item():
  66. item_held.queue_free()
  67. item_held = null
  68.  
  69. func return_item():
  70. item_held.rect_global_position = last_pos
  71. last_container.insert_item(item_held)
  72. item_held = null
  73.  
  74. func pickup_item(item_id):
  75. var item = item_base.instance()
  76. item.set_meta("id", item_id)
  77. item.texture = load(ItemDB.get_item(item_id)["icon"])
  78. add_child(item)
  79. if !grid_bkpk.insert_item_at_first_available_spot(item):
  80. item.queue_free()
  81. return false
  82. return true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement