#18 ajout de la classe UndergroundLoot et aparition de loot par jour
This commit is contained in:
48
entities/underground_loot/scripts/underground_loot.gd
Normal file
48
entities/underground_loot/scripts/underground_loot.gd
Normal file
@@ -0,0 +1,48 @@
|
||||
extends Area2D
|
||||
class_name UndergroundLoot
|
||||
|
||||
const AREA_WIDTH = 10
|
||||
const LOOTED_ITEM_RANDOM_RANGE = 100
|
||||
|
||||
const SPRITE_SCENE : PackedScene = preload("res://entities/underground_loot/underground_loot_sprite.tscn")
|
||||
|
||||
@export var loot : Array[Item]
|
||||
var planet : Planet # mis à jour par la classe Planet
|
||||
|
||||
@onready var sprite_object: Node2D = generate_sprite()
|
||||
@onready var collision_shape: CollisionShape2D = generate_collision_shape()
|
||||
|
||||
func _init(_planet = null):
|
||||
planet = _planet
|
||||
|
||||
func generate_sprite() -> Node2D:
|
||||
var object = SPRITE_SCENE.instantiate()
|
||||
|
||||
add_child(object)
|
||||
|
||||
return object
|
||||
|
||||
func generate_collision_shape() -> CollisionShape2D:
|
||||
var collision = CollisionShape2D.new()
|
||||
var shape = CircleShape2D.new()
|
||||
shape.radius = AREA_WIDTH
|
||||
|
||||
collision.shape = shape
|
||||
add_child(collision)
|
||||
|
||||
return collision
|
||||
|
||||
func dig():
|
||||
for item in loot:
|
||||
var item_object = planet.drop_item(item, global_position)
|
||||
var tween : Tween = get_tree().create_tween()
|
||||
tween.tween_property(
|
||||
item_object,
|
||||
"position",
|
||||
Vector2(
|
||||
item_object.position.x + randi()%LOOTED_ITEM_RANDOM_RANGE,
|
||||
item_object.position.y + randi()%LOOTED_ITEM_RANDOM_RANGE
|
||||
),
|
||||
0.2
|
||||
)
|
||||
queue_free()
|
||||
@@ -0,0 +1 @@
|
||||
uid://dfd2hh12155lo
|
||||
Reference in New Issue
Block a user