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)
106 lines
2.9 KiB
GDScript
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)
|