StickerClone/core/Sticker.gd

107 lines
2.9 KiB
GDScript3
Raw Normal View History

@tool
extends Area2D
2024-07-25 10:02:35 +00:00
#TODO: I need to remake stickers by exporting node directly instead of customizing all the thing in export tab.
@export_group("Sticker Detection Shape")
@export var Shape :Shape2D:
set(new_shape):
Shape = new_shape
$StickerDetectionShape.shape = Shape
$StickerDetectionShape.queue_redraw()
@export var Position :Vector2:
set(new_position):
Position = new_position
$StickerDetectionShape.position = Position
$StickerDetectionShape.queue_redraw()
@export var Rotation :float:
set(new_rotation):
Rotation = new_rotation
$StickerDetectionShape.rotation = Rotation
$StickerDetectionShape.queue_redraw()
@export_group("Sticker Sprites")
@export var WorldSprite:Texture2D:
set(new_texture):
WorldSprite = new_texture
$StickerSprite.texture = WorldSprite
$StickerSprite.queue_redraw()
@export var StickerSprite:Texture2D
@export var Offset:Vector2:
set(new_offset):
Offset = new_offset
$StickerSprite.offset = Offset
$StickerSprite.queue_redraw()
@export var FlipH:bool:
set(flip):
FlipH = flip
$StickerSprite.flip_h = FlipH
$StickerSprite.queue_redraw()
@export var OutlineMat:ShaderMaterial = preload("res://shaders/shaderMaterial_Outline.tres")
@export var PreviewSticker:bool:
set(set_preview):
PreviewSticker = set_preview
if (PreviewSticker):
$StickerSprite.texture = StickerSprite
else:
$StickerSprite.texture = WorldSprite
$StickerSprite.queue_redraw()
@export var Foiled:bool #TODO: Foil material and logic
2024-07-25 10:02:35 +00:00
func _ready():
if (position != Vector2(0,0)):
position == Vector2(0,0)
printerr(self," should not have transform, resetting")
if (get_parent() == get_tree().root):
printerr("stickers should always have a parent")
breakpoint
func on_released():
print(self," released")
get_parent().top_level = false
get_parent().reparent(MapManager.current_scene.get_child(0))
for _childNode in get_parent().get_children():
_childNode.set_deferred("disabled",false)
if(_childNode != self):
_childNode.visible = true
2024-07-25 10:02:35 +00:00
func on_click():
print(self," clicked")
2024-07-25 10:02:35 +00:00
func on_hover():
if (StickerSprite != null):
$StickerSprite.texture = StickerSprite
else:
$StickerSprite.texture = WorldSprite
$StickerSprite.material = OutlineMat
queue_redraw()
2024-07-25 10:02:35 +00:00
func on_unhover():
$StickerSprite.texture = WorldSprite
$StickerSprite.material = null
queue_redraw()
2024-07-25 10:02:35 +00:00
func on_grab(_offset:Vector2=Vector2(0.0,0.0)):
get_parent().top_level = true
get_parent().reparent(get_tree().root)
for _childNode in get_parent().get_children():
_childNode.set_deferred("disabled",true)
if(_childNode != self):
_childNode.visible = false
2024-07-25 10:02:35 +00:00
#func _on_tree_entered():
#if(ParentSprite != null):
#var StickerTag:Array
#StickerTag.append("sticker")
#Global.add_tags(ParentSprite,StickerTag)
2024-07-25 10:02:35 +00:00
#func _on_tree_exited():
#if(ParentSprite != null):
#var StickerTag:Array
#StickerTag.append("sticker")
#Global.remove_tags(ParentSprite,StickerTag)