StickerClone/core/Sticker.gd
Lucas Peter f54aa28f8e
rework sticker
Now sticker works by being placed under any Node2D that serve as root/transform. Sticker node handle the visual aspect of the sticker.
This should be changed soon (view TODO)
2024-07-30 18:12:30 +02:00

106 lines
2.9 KiB
GDScript

@tool
extends Area2D
#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
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
func on_click():
print(self," clicked")
func on_hover():
if (StickerSprite != null):
$StickerSprite.texture = StickerSprite
else:
$StickerSprite.texture = WorldSprite
$StickerSprite.material = OutlineMat
queue_redraw()
func on_unhover():
$StickerSprite.texture = WorldSprite
$StickerSprite.material = null
queue_redraw()
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
#func _on_tree_entered():
#if(ParentSprite != null):
#var StickerTag:Array
#StickerTag.append("sticker")
#Global.add_tags(ParentSprite,StickerTag)
#func _on_tree_exited():
#if(ParentSprite != null):
#var StickerTag:Array
#StickerTag.append("sticker")
#Global.remove_tags(ParentSprite,StickerTag)