Roll back autoformatting.
This commit is contained in:
parent
8ddb24e5c4
commit
8b00fb43ef
6 changed files with 527 additions and 614 deletions
|
@ -20,7 +20,7 @@ var i = 0
|
|||
var reparentMode = false
|
||||
var scrollSelection = 0
|
||||
|
||||
var backgroundColor = Color(0.0, 0.0, 0.0, 0.0)
|
||||
var backgroundColor = Color(0.0,0.0,0.0,0.0)
|
||||
|
||||
#Blink
|
||||
var blinkSpeed = 1.0
|
||||
|
@ -53,21 +53,19 @@ var updatePusherNode = null
|
|||
|
||||
var rand = RandomNumberGenerator.new()
|
||||
|
||||
|
||||
func _ready():
|
||||
spectrum = AudioServer.get_bus_effect_instance(1, 1)
|
||||
|
||||
|
||||
if !Saving.settings.has("useStreamDeck"):
|
||||
Saving.settings["useStreamDeck"] = false
|
||||
|
||||
|
||||
if Saving.settings.has("secondsToMicReset"):
|
||||
Global.micResetTime = Saving.settings["secondsToMicReset"]
|
||||
else:
|
||||
Saving.settings["secondsToMicReset"] = 180
|
||||
|
||||
|
||||
createMicrophone()
|
||||
|
||||
|
||||
func createMicrophone():
|
||||
var playa = AudioStreamPlayer.new()
|
||||
var mic = AudioStreamMicrophone.new()
|
||||
|
@ -84,7 +82,6 @@ func createMicrophone():
|
|||
await get_tree().create_timer(0.25).timeout
|
||||
createMicrophone()
|
||||
|
||||
|
||||
func deleteAllMics():
|
||||
for child in get_children():
|
||||
child.queue_free()
|
||||
|
@ -92,23 +89,23 @@ func deleteAllMics():
|
|||
|
||||
func _process(delta):
|
||||
animationTick += 1
|
||||
|
||||
|
||||
volume = spectrum.get_magnitude_for_frequency_range(20, 20000).length()
|
||||
if currentMicrophone != null:
|
||||
volumeSensitivity = lerp(volumeSensitivity, 0.0, delta * 2)
|
||||
|
||||
if volume > volumeLimit:
|
||||
volumeSensitivity = lerp(volumeSensitivity,0.0,delta*2)
|
||||
|
||||
if volume>volumeLimit:
|
||||
volumeSensitivity = 1.0
|
||||
|
||||
|
||||
var prev = speaking
|
||||
speaking = volumeSensitivity > senseLimit
|
||||
|
||||
|
||||
if prev != speaking:
|
||||
if speaking:
|
||||
emit_signal("startSpeaking")
|
||||
else:
|
||||
emit_signal("stopSpeaking")
|
||||
|
||||
|
||||
if main != null and heldSprite != null:
|
||||
if Input.is_action_just_pressed("zDown"):
|
||||
heldSprite.z -= 1
|
||||
|
@ -122,178 +119,180 @@ func _process(delta):
|
|||
if Input.is_action_just_pressed("reparent"):
|
||||
reparentMode = !reparentMode
|
||||
Global.chain.enable(reparentMode)
|
||||
|
||||
|
||||
else:
|
||||
reparentMode = false
|
||||
Global.chain.enable(reparentMode)
|
||||
|
||||
|
||||
if main.editMode:
|
||||
if reparentMode:
|
||||
RenderingServer.set_default_clear_color(Color.POWDER_BLUE)
|
||||
else:
|
||||
RenderingServer.set_default_clear_color(Color.GRAY)
|
||||
|
||||
|
||||
blinking()
|
||||
scrollSprites()
|
||||
|
||||
|
||||
|
||||
if !main.fileSystemOpen:
|
||||
|
||||
if Input.is_action_just_pressed("refresh"):
|
||||
refresh()
|
||||
if Input.is_action_just_pressed("unlink"):
|
||||
unlinkSprite()
|
||||
|
||||
|
||||
if Input.is_action_pressed("control"):
|
||||
if Input.is_action_just_pressed("saveImages"):
|
||||
saveImagesFromData()
|
||||
|
||||
|
||||
|
||||
|
||||
func select(areas):
|
||||
|
||||
if main.fileSystemOpen:
|
||||
return
|
||||
|
||||
|
||||
for area in areas:
|
||||
if area.is_in_group("penis"):
|
||||
return
|
||||
|
||||
|
||||
var prevSpr = heldSprite
|
||||
if areas.size() <= 0:
|
||||
heldSprite = null
|
||||
i = 0
|
||||
lastArray = []
|
||||
return
|
||||
|
||||
|
||||
if areas != lastArray:
|
||||
heldSprite = areas[0].get_parent().get_parent().get_parent()
|
||||
i = 0
|
||||
else:
|
||||
i += 1
|
||||
|
||||
|
||||
if i >= areas.size():
|
||||
i = 0
|
||||
|
||||
|
||||
heldSprite = areas[i].get_parent().get_parent().get_parent()
|
||||
|
||||
|
||||
var count = heldSprite.path.get_slice_count("/") - 1
|
||||
var i1 = heldSprite.path.get_slice("/", count)
|
||||
pushUpdate('Selected sprite "' + i1 + '"' + ".")
|
||||
|
||||
var i1 = heldSprite.path.get_slice("/",count)
|
||||
pushUpdate("Selected sprite \"" + i1 + "\"" + ".")
|
||||
|
||||
heldSprite.set_physics_process(true)
|
||||
|
||||
|
||||
if reparentMode:
|
||||
if prevSpr == heldSprite:
|
||||
reparentMode = false
|
||||
return
|
||||
if heldSprite.parentId == prevSpr.id:
|
||||
return
|
||||
|
||||
linkSprite(prevSpr, heldSprite)
|
||||
|
||||
linkSprite(prevSpr,heldSprite)
|
||||
Global.chain.enable(reparentMode)
|
||||
|
||||
|
||||
lastArray = areas.duplicate()
|
||||
|
||||
|
||||
spriteEdit.setImage()
|
||||
|
||||
|
||||
func linkSprite(sprite, newParent):
|
||||
func linkSprite(sprite,newParent):
|
||||
if sprite == newParent:
|
||||
reparentMode = false
|
||||
|
||||
|
||||
return
|
||||
if newParent.parentId == sprite.id:
|
||||
reparentMode = false
|
||||
return
|
||||
|
||||
|
||||
if sprite.is_ancestor_of(newParent):
|
||||
pushUpdate("Can't link to own child sprite!")
|
||||
reparentMode = false
|
||||
return
|
||||
|
||||
sprite.reparent(newParent.sprite, true)
|
||||
|
||||
|
||||
sprite.reparent(newParent.sprite,true)
|
||||
|
||||
sprite.parentId = newParent.id
|
||||
sprite.parentSprite = newParent
|
||||
|
||||
|
||||
reparentMode = false
|
||||
|
||||
|
||||
Global.spriteList.updateData()
|
||||
|
||||
|
||||
var count = sprite.path.get_slice_count("/") - 1
|
||||
var i1 = sprite.path.get_slice("/", count)
|
||||
|
||||
var i1 = sprite.path.get_slice("/",count)
|
||||
|
||||
count = newParent.path.get_slice_count("/") - 1
|
||||
var i2 = newParent.path.get_slice("/", count)
|
||||
|
||||
pushUpdate('Linked sprite "' + i1 + '" to sprite "' + i2 + '".')
|
||||
var i2 = newParent.path.get_slice("/",count)
|
||||
|
||||
pushUpdate("Linked sprite \"" + i1 + "\" to sprite \"" + i2 + "\".")
|
||||
newParent.set_physics_process(true)
|
||||
|
||||
|
||||
func scrollSprites():
|
||||
|
||||
if Input.is_action_pressed("control"):
|
||||
return
|
||||
|
||||
|
||||
if !main.editMode:
|
||||
return
|
||||
|
||||
|
||||
if main.fileSystemOpen:
|
||||
return
|
||||
|
||||
|
||||
for area in mouse.area.get_overlapping_areas():
|
||||
if area.is_in_group("penis"):
|
||||
return
|
||||
|
||||
|
||||
var scroll = 0
|
||||
|
||||
|
||||
if heldSprite == null:
|
||||
scrollSelection = 0
|
||||
|
||||
|
||||
if Input.is_action_just_pressed("scrollUp"):
|
||||
scroll -= 1
|
||||
scroll-=1
|
||||
if Input.is_action_just_pressed("scrollDown"):
|
||||
scroll += 1
|
||||
|
||||
scroll+=1
|
||||
|
||||
if scroll == 0:
|
||||
return
|
||||
|
||||
|
||||
|
||||
var obj = get_tree().get_nodes_in_group("saved")
|
||||
|
||||
|
||||
if obj.size() <= 0:
|
||||
return
|
||||
|
||||
|
||||
scrollSelection += scroll
|
||||
if scrollSelection >= obj.size():
|
||||
scrollSelection = 0
|
||||
elif scrollSelection < 0:
|
||||
scrollSelection = obj.size() - 1
|
||||
|
||||
|
||||
heldSprite = obj[scrollSelection]
|
||||
|
||||
|
||||
var count = heldSprite.path.get_slice_count("/") - 1
|
||||
var i1 = heldSprite.path.get_slice("/", count)
|
||||
pushUpdate('Selected sprite "' + i1 + '"' + ".")
|
||||
|
||||
var i1 = heldSprite.path.get_slice("/",count)
|
||||
pushUpdate("Selected sprite \"" + i1 + "\"" + ".")
|
||||
|
||||
heldSprite.set_physics_process(true)
|
||||
|
||||
|
||||
spriteEdit.setImage()
|
||||
|
||||
|
||||
func blinking():
|
||||
blinkTick += 1
|
||||
if blinkTick == 0:
|
||||
blink = false
|
||||
if rand.randf_range(-1.0, 1.0) > 0.5:
|
||||
if rand.randf_range(-1.0,1.0) > 0.5:
|
||||
blinkTick = (420 * blinkSpeed) + 1
|
||||
if blinkTick > 420 * blinkSpeed:
|
||||
if rand.randi() % int(blinkChance) == 0:
|
||||
blink = true
|
||||
|
||||
blinkTick = -12
|
||||
|
||||
|
||||
|
||||
func epicFail(err):
|
||||
print(fail)
|
||||
if fail == null:
|
||||
return
|
||||
|
||||
|
||||
fail.get_node("type").text = ""
|
||||
match err:
|
||||
ERR_FILE_CORRUPT:
|
||||
|
@ -310,12 +309,11 @@ func epicFail(err):
|
|||
fail.get_node("type").text = "DATA INVALID"
|
||||
ERR_FILE_CANT_READ:
|
||||
fail.get_node("type").text = "CANT READ FILE"
|
||||
|
||||
|
||||
fail.visible = true
|
||||
await get_tree().create_timer(2.5).timeout
|
||||
fail.visible = false
|
||||
|
||||
|
||||
func refresh():
|
||||
var objs = get_tree().get_nodes_in_group("saved")
|
||||
for object in objs:
|
||||
|
@ -324,42 +322,39 @@ func refresh():
|
|||
object.remadePolygon = false
|
||||
pushUpdate("Refreshed all sprites.")
|
||||
|
||||
|
||||
func unlinkSprite():
|
||||
if heldSprite == null:
|
||||
return
|
||||
if heldSprite.parentId == null:
|
||||
return
|
||||
|
||||
|
||||
var glob = heldSprite.global_position
|
||||
glob = Vector2(int(glob.x), int(glob.y))
|
||||
|
||||
glob = Vector2(int(glob.x),int(glob.y))
|
||||
|
||||
heldSprite.get_parent().remove_child(heldSprite)
|
||||
main.origin.add_child(heldSprite)
|
||||
heldSprite.set_owner(main.origin)
|
||||
heldSprite.parentId = null
|
||||
heldSprite.parentSprite = null
|
||||
heldSprite.position = glob - main.origin.position
|
||||
|
||||
|
||||
Global.spriteList.updateData()
|
||||
pushUpdate("Unlinked sprite.")
|
||||
|
||||
|
||||
func saveImagesFromData():
|
||||
var sprites = get_tree().get_nodes_in_group("saved")
|
||||
if sprites.size() <= 0:
|
||||
return
|
||||
for sprite in sprites:
|
||||
var img = sprite.imageData
|
||||
var array = sprite.path.split("/", false)
|
||||
var length = sprite.path.length() - array[array.size() - 1].length()
|
||||
|
||||
DirAccess.make_dir_recursive_absolute(sprite.path.left(length - 1))
|
||||
var array = sprite.path.split("/",false)
|
||||
var length = sprite.path.length() - array[array.size()-1].length()
|
||||
|
||||
DirAccess.make_dir_recursive_absolute(sprite.path.left(length-1))
|
||||
img.save_png(sprite.path)
|
||||
|
||||
|
||||
pushUpdate("Saved all avatar images to computer.")
|
||||
|
||||
|
||||
|
||||
func pushUpdate(text):
|
||||
if is_instance_valid(updatePusherNode):
|
||||
updatePusherNode.pushUpdate(text)
|
||||
|
|
|
@ -25,6 +25,7 @@ var editMode = true
|
|||
|
||||
@onready var shadow = $shadowSprite
|
||||
|
||||
|
||||
#Scene Reference
|
||||
@onready var spriteObject = preload("res://ui_scenes/selectedSprite/spriteObject.tscn")
|
||||
|
||||
|
@ -50,128 +51,126 @@ var fileSystemOpen = false
|
|||
#background input capture
|
||||
signal emptiedCapture
|
||||
signal pressedKey
|
||||
var costumeKeys = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
|
||||
signal spriteVisToggles(keysPressed: Array)
|
||||
var costumeKeys = ["1","2","3","4","5","6","7","8","9","0"]
|
||||
signal spriteVisToggles(keysPressed:Array)
|
||||
signal fatfuckingballs
|
||||
|
||||
|
||||
func _ready():
|
||||
Global.main = self
|
||||
Global.fail = $Failed
|
||||
|
||||
Global.connect("startSpeaking", onSpeak)
|
||||
|
||||
|
||||
|
||||
Global.connect("startSpeaking",onSpeak)
|
||||
|
||||
ElgatoStreamDeck.on_key_down.connect(changeCostumeStreamDeck)
|
||||
|
||||
OS.open_midi_inputs()
|
||||
Global.currentMidiDevices = OS.get_connected_midi_inputs()
|
||||
|
||||
|
||||
if Saving.settings["newUser"]:
|
||||
_on_load_dialog_file_selected("default")
|
||||
Saving.settings["newUser"] = false
|
||||
saveLoaded = true
|
||||
else:
|
||||
_on_load_dialog_file_selected(Saving.settings["lastAvatar"])
|
||||
|
||||
|
||||
$ControlPanel/volumeSlider.value = Saving.settings["volume"]
|
||||
$ControlPanel/sensitiveSlider.value = Saving.settings["sense"]
|
||||
|
||||
|
||||
get_window().size = str_to_var(Saving.settings["windowSize"])
|
||||
|
||||
|
||||
if Saving.settings.has("bounce"):
|
||||
bounceSlider = Saving.settings["bounce"]
|
||||
else:
|
||||
Saving.settings["bounce"] = 250
|
||||
|
||||
|
||||
if Saving.settings.has("maxFPS"):
|
||||
Engine.max_fps = Saving.settings["maxFPS"]
|
||||
else:
|
||||
Saving.settings["maxFPS"] = 60
|
||||
|
||||
|
||||
if Saving.settings.has("backgroundColor"):
|
||||
Global.backgroundColor = str_to_var(Saving.settings["backgroundColor"])
|
||||
else:
|
||||
Saving.settings["backgroundColor"] = var_to_str(Color(0.0, 0.0, 0.0, 0.0))
|
||||
|
||||
Saving.settings["backgroundColor"] = var_to_str(Color(0.0,0.0,0.0,0.0))
|
||||
|
||||
if Saving.settings.has("filtering"):
|
||||
Global.filtering = Saving.settings["filtering"]
|
||||
else:
|
||||
Saving.settings["filtering"] = false
|
||||
|
||||
|
||||
if Saving.settings.has("gravity"):
|
||||
bounceGravity = Saving.settings["gravity"]
|
||||
else:
|
||||
Saving.settings["gravity"] = 1000
|
||||
|
||||
|
||||
if Saving.settings.has("costumeKeys"):
|
||||
costumeKeys = Saving.settings["costumeKeys"]
|
||||
else:
|
||||
Saving.settings["costumeKeys"] = costumeKeys
|
||||
|
||||
|
||||
if Saving.settings.has("blinkSpeed"):
|
||||
Global.blinkSpeed = Saving.settings["blinkSpeed"]
|
||||
else:
|
||||
Saving.settings["blinkSpeed"] = 1.0
|
||||
|
||||
|
||||
if Saving.settings.has("blinkChance"):
|
||||
Global.blinkChance = Saving.settings["blinkChance"]
|
||||
else:
|
||||
Saving.settings["blinkChance"] = 200
|
||||
|
||||
|
||||
if Saving.settings.has("bounceOnCostumeChange"):
|
||||
bounceOnCostumeChange = Saving.settings["bounceOnCostumeChange"]
|
||||
else:
|
||||
Saving.settings["bounceOnCostumeChange"] = false
|
||||
|
||||
|
||||
saveLoaded = true
|
||||
|
||||
|
||||
RenderingServer.set_default_clear_color(Global.backgroundColor)
|
||||
swapMode()
|
||||
settingsMenu.setvalues()
|
||||
changeCostume(1)
|
||||
|
||||
|
||||
var s = get_viewport().get_visible_rect().size
|
||||
origin.position = s * 0.5
|
||||
origin.position = s*0.5
|
||||
camera.position = origin.position
|
||||
|
||||
|
||||
|
||||
func _process(delta):
|
||||
var hold = origin.get_parent().position.y
|
||||
|
||||
|
||||
origin.get_parent().position.y += yVel * 0.0166
|
||||
if origin.get_parent().position.y > 0:
|
||||
origin.get_parent().position.y = 0
|
||||
bounceChange = hold - origin.get_parent().position.y
|
||||
|
||||
yVel += bounceGravity * 0.0166
|
||||
|
||||
|
||||
yVel += bounceGravity*0.0166
|
||||
|
||||
if Input.is_action_just_pressed("openFolder"):
|
||||
OS.shell_open(ProjectSettings.globalize_path("user://"))
|
||||
|
||||
|
||||
moveSpriteMenu(delta)
|
||||
zoomScene()
|
||||
|
||||
|
||||
fileSystemOpen = isFileSystemOpen()
|
||||
|
||||
|
||||
followShadow()
|
||||
|
||||
|
||||
func followShadow():
|
||||
shadow.visible = is_instance_valid(Global.heldSprite)
|
||||
if !shadow.visible:
|
||||
return
|
||||
|
||||
shadow.global_position = Global.heldSprite.sprite.global_position + Vector2(6, 6)
|
||||
|
||||
shadow.global_position = Global.heldSprite.sprite.global_position + Vector2(6,6)
|
||||
shadow.global_rotation = Global.heldSprite.sprite.global_rotation
|
||||
shadow.offset = Global.heldSprite.sprite.offset
|
||||
|
||||
|
||||
shadow.texture = Global.heldSprite.sprite.texture
|
||||
shadow.hframes = Global.heldSprite.sprite.hframes
|
||||
shadow.frame = Global.heldSprite.sprite.frame
|
||||
|
||||
|
||||
|
||||
func isFileSystemOpen():
|
||||
for obj in [replaceDialog, fileDialog, saveDialog, loadDialog]:
|
||||
for obj in [replaceDialog,fileDialog,saveDialog,loadDialog]:
|
||||
if obj.visible:
|
||||
if obj == replaceDialog:
|
||||
return true
|
||||
|
@ -179,7 +178,6 @@ func isFileSystemOpen():
|
|||
return true
|
||||
return false
|
||||
|
||||
|
||||
#Displays control panel whether or not application is focused
|
||||
func _notification(what):
|
||||
match what:
|
||||
|
@ -193,46 +191,43 @@ func _notification(what):
|
|||
30:
|
||||
onWindowSizeChange()
|
||||
|
||||
|
||||
func onWindowSizeChange():
|
||||
if !saveLoaded:
|
||||
return
|
||||
Saving.settings["windowSize"] = var_to_str(get_window().size)
|
||||
var s = get_viewport().get_visible_rect().size
|
||||
origin.position = s * 0.5
|
||||
|
||||
lines.position = s * 0.5
|
||||
origin.position = s*0.5
|
||||
|
||||
lines.position = s*0.5
|
||||
lines.drawLine()
|
||||
|
||||
|
||||
camera.position = origin.position
|
||||
controlPanel.position = camera.position + (s / (camera.zoom * 2.0))
|
||||
controlPanel.position = camera.position + (s/(camera.zoom*2.0))
|
||||
tutorial.position = controlPanel.position
|
||||
editControls.position = camera.position - (s / (camera.zoom * 2.0))
|
||||
editControls.position = camera.position - (s/(camera.zoom*2.0))
|
||||
viewerArrows.position = editControls.position
|
||||
spriteList.position.x = s.x - 233
|
||||
pushUpdates.position.y = controlPanel.position.y
|
||||
pushUpdates.position.x = editControls.position.x
|
||||
|
||||
|
||||
func zoomScene():
|
||||
#Handles Zooming
|
||||
if Input.is_action_pressed("control"):
|
||||
if Input.is_action_just_pressed("scrollUp"):
|
||||
if scaleOverall < 400:
|
||||
camera.zoom += Vector2(0.1, 0.1)
|
||||
camera.zoom += Vector2(0.1,0.1)
|
||||
scaleOverall += 10
|
||||
changeZoom()
|
||||
if Input.is_action_just_pressed("scrollDown"):
|
||||
if scaleOverall > 10:
|
||||
camera.zoom -= Vector2(0.1, 0.1)
|
||||
camera.zoom -= Vector2(0.1,0.1)
|
||||
scaleOverall -= 10
|
||||
changeZoom()
|
||||
|
||||
$ControlPanel/ZoomLabel.modulate.a = lerp($ControlPanel/ZoomLabel.modulate.a, 0.0, 0.02)
|
||||
|
||||
|
||||
|
||||
$ControlPanel/ZoomLabel.modulate.a = lerp($ControlPanel/ZoomLabel.modulate.a,0.0,0.02)
|
||||
|
||||
func changeZoom():
|
||||
var newZoom = Vector2(1.0, 1.0) / camera.zoom
|
||||
var newZoom = Vector2(1.0,1.0) / camera.zoom
|
||||
controlPanel.scale = newZoom
|
||||
tutorial.scale = newZoom
|
||||
editControls.scale = newZoom
|
||||
|
@ -243,24 +238,23 @@ func changeZoom():
|
|||
|
||||
$ControlPanel/ZoomLabel.modulate.a = 6.0
|
||||
$ControlPanel/ZoomLabel.text = "Zoom : " + str(scaleOverall) + "%"
|
||||
|
||||
|
||||
Global.pushUpdate("Set zoom to " + str(scaleOverall) + "%")
|
||||
onWindowSizeChange()
|
||||
|
||||
|
||||
|
||||
#When the user speaks!
|
||||
func onSpeak():
|
||||
if origin.get_parent().position.y > -16:
|
||||
yVel = bounceSlider * -1
|
||||
|
||||
|
||||
#Swaps between edit mode and view mode
|
||||
func swapMode():
|
||||
|
||||
Global.heldSprite = null
|
||||
|
||||
|
||||
editMode = !editMode
|
||||
Global.pushUpdate("Toggled editing mode.")
|
||||
|
||||
|
||||
get_viewport().transparent_bg = !editMode
|
||||
if Global.backgroundColor.a != 0.0:
|
||||
get_viewport().transparent_bg = false
|
||||
|
@ -274,79 +268,76 @@ func swapMode():
|
|||
controlPanel.visible = !editMode
|
||||
lines.visible = editMode
|
||||
spriteList.visible = editMode
|
||||
|
||||
|
||||
|
||||
#Adds sprite object to scene
|
||||
func add_image(path):
|
||||
|
||||
var rand = RandomNumberGenerator.new()
|
||||
var id = rand.randi()
|
||||
|
||||
|
||||
var sprite = spriteObject.instantiate()
|
||||
sprite.path = path
|
||||
sprite.id = id
|
||||
origin.add_child(sprite)
|
||||
sprite.position = Vector2.ZERO
|
||||
|
||||
|
||||
Global.spriteList.updateData()
|
||||
|
||||
|
||||
Global.pushUpdate("Added new sprite.")
|
||||
|
||||
|
||||
|
||||
#Opens File Dialog
|
||||
func _on_add_button_pressed():
|
||||
fileDialog.visible = true
|
||||
|
||||
|
||||
#Runs when selecting image in File Dialog
|
||||
func _on_file_dialog_file_selected(path):
|
||||
add_image(path)
|
||||
|
||||
|
||||
func _on_save_button_pressed():
|
||||
$SaveDialog.visible = true
|
||||
|
||||
|
||||
|
||||
func _on_load_button_pressed():
|
||||
$LoadDialog.visible = true
|
||||
|
||||
|
||||
#LOAD AVATAR
|
||||
func _on_load_dialog_file_selected(path):
|
||||
var data = Saving.read_save(path)
|
||||
|
||||
|
||||
if data == null:
|
||||
return
|
||||
|
||||
|
||||
origin.queue_free()
|
||||
var new = Node2D.new()
|
||||
$OriginMotion.add_child(new)
|
||||
origin = new
|
||||
|
||||
|
||||
for item in data:
|
||||
var sprite = spriteObject.instantiate()
|
||||
sprite.path = data[item]["path"]
|
||||
sprite.id = data[item]["identification"]
|
||||
sprite.parentId = data[item]["parentId"]
|
||||
|
||||
|
||||
sprite.offset = str_to_var(data[item]["offset"])
|
||||
sprite.z = data[item]["zindex"]
|
||||
sprite.dragSpeed = data[item]["drag"]
|
||||
sprite.useMidiWobble = data[item]["useMidiWobble"]
|
||||
|
||||
sprite.xFrq = data[item]["xFrq"]
|
||||
sprite.xAmp = data[item]["xAmp"]
|
||||
sprite.yFrq = data[item]["yFrq"]
|
||||
sprite.yAmp = data[item]["yAmp"]
|
||||
|
||||
|
||||
sprite.rdragStr = data[item]["rotDrag"]
|
||||
sprite.showOnTalk = data[item]["showTalk"]
|
||||
|
||||
|
||||
sprite.showOnBlink = data[item]["showBlink"]
|
||||
|
||||
|
||||
if data[item].has("rLimitMin"):
|
||||
sprite.rLimitMin = data[item]["rLimitMin"]
|
||||
if data[item].has("rLimitMax"):
|
||||
sprite.rLimitMax = data[item]["rLimitMax"]
|
||||
|
||||
|
||||
if data[item].has("costumeLayers"):
|
||||
sprite.costumeLayers = str_to_var(data[item]["costumeLayers"]).duplicate()
|
||||
if sprite.costumeLayers.size() < 8:
|
||||
|
@ -355,10 +346,10 @@ func _on_load_dialog_file_selected(path):
|
|||
|
||||
if data[item].has("stretchAmount"):
|
||||
sprite.stretchAmount = data[item]["stretchAmount"]
|
||||
|
||||
|
||||
if data[item].has("ignoreBounce"):
|
||||
sprite.ignoreBounce = data[item]["ignoreBounce"]
|
||||
|
||||
|
||||
if data[item].has("frames"):
|
||||
sprite.frames = data[item]["frames"]
|
||||
if data[item].has("animSpeed"):
|
||||
|
@ -369,25 +360,25 @@ func _on_load_dialog_file_selected(path):
|
|||
sprite.clipped = data[item]["clipped"]
|
||||
if data[item].has("toggle"):
|
||||
sprite.toggle = data[item]["toggle"]
|
||||
|
||||
|
||||
origin.add_child(sprite)
|
||||
sprite.position = str_to_var(data[item]["pos"])
|
||||
|
||||
|
||||
changeCostume(1)
|
||||
Saving.settings["lastAvatar"] = path
|
||||
Global.spriteList.updateData()
|
||||
|
||||
|
||||
Global.pushUpdate("Loaded avatar at: " + path)
|
||||
|
||||
|
||||
onWindowSizeChange()
|
||||
|
||||
|
||||
|
||||
#SAVE AVATAR
|
||||
func _on_save_dialog_file_selected(path):
|
||||
var data = {}
|
||||
var nodes = get_tree().get_nodes_in_group("saved")
|
||||
var id = 0
|
||||
for child in nodes:
|
||||
|
||||
if child.type == "sprite":
|
||||
data[id] = {}
|
||||
data[id]["type"] = "sprite"
|
||||
|
@ -395,54 +386,52 @@ func _on_save_dialog_file_selected(path):
|
|||
data[id]["imageData"] = Marshalls.raw_to_base64(child.imageData.save_png_to_buffer())
|
||||
data[id]["identification"] = child.id
|
||||
data[id]["parentId"] = child.parentId
|
||||
|
||||
|
||||
data[id]["pos"] = var_to_str(child.position)
|
||||
data[id]["offset"] = var_to_str(child.offset)
|
||||
data[id]["zindex"] = child.z
|
||||
|
||||
|
||||
data[id]["drag"] = child.dragSpeed
|
||||
|
||||
data[id]["useMidiWobble"] = child.useMidiWobble
|
||||
|
||||
data[id]["xFrq"] = child.xFrq
|
||||
data[id]["xAmp"] = child.xAmp
|
||||
data[id]["yFrq"] = child.yFrq
|
||||
data[id]["yAmp"] = child.yAmp
|
||||
|
||||
|
||||
data[id]["rotDrag"] = child.rdragStr
|
||||
|
||||
|
||||
data[id]["showTalk"] = child.showOnTalk
|
||||
data[id]["showBlink"] = child.showOnBlink
|
||||
|
||||
|
||||
data[id]["rLimitMin"] = child.rLimitMin
|
||||
data[id]["rLimitMax"] = child.rLimitMax
|
||||
|
||||
|
||||
data[id]["costumeLayers"] = var_to_str(child.costumeLayers)
|
||||
|
||||
|
||||
data[id]["stretchAmount"] = child.stretchAmount
|
||||
|
||||
|
||||
data[id]["ignoreBounce"] = child.ignoreBounce
|
||||
|
||||
|
||||
data[id]["frames"] = child.frames
|
||||
data[id]["animSpeed"] = child.animSpeed
|
||||
|
||||
|
||||
data[id]["clipped"] = child.clipped
|
||||
|
||||
|
||||
data[id]["toggle"] = child.toggle
|
||||
|
||||
|
||||
id += 1
|
||||
|
||||
|
||||
Saving.settings["lastAvatar"] = path
|
||||
|
||||
|
||||
Saving.data = data.duplicate()
|
||||
Saving.write_save(path)
|
||||
|
||||
|
||||
Global.pushUpdate("Saved avatar at: " + path)
|
||||
|
||||
|
||||
func _on_link_button_pressed():
|
||||
Global.reparentMode = true
|
||||
Global.chain.enable(Global.reparentMode)
|
||||
|
||||
|
||||
Global.pushUpdate("Linking sprite...")
|
||||
|
||||
|
||||
|
@ -461,13 +450,11 @@ func _on_replace_button_pressed():
|
|||
return
|
||||
$ReplaceDialog.visible = true
|
||||
|
||||
|
||||
func _on_replace_dialog_file_selected(path):
|
||||
Global.heldSprite.replaceSprite(path)
|
||||
Global.spriteList.updateData()
|
||||
Global.pushUpdate("Replacing sprite with: " + path)
|
||||
|
||||
|
||||
func _on_replace_dialog_visibility_changed():
|
||||
$EditControls/ScreenCover/CollisionShape2D.disabled = !$ReplaceDialog.visible
|
||||
|
||||
|
@ -477,75 +464,62 @@ func _on_duplicate_button_pressed():
|
|||
return
|
||||
var rand = RandomNumberGenerator.new()
|
||||
var id = rand.randi()
|
||||
|
||||
|
||||
var sprite = spriteObject.instantiate()
|
||||
sprite.path = Global.heldSprite.path
|
||||
sprite.id = id
|
||||
sprite.parentId = Global.heldSprite.parentId
|
||||
|
||||
|
||||
sprite.dragSpeed = Global.heldSprite.dragSpeed
|
||||
sprite.showOnTalk = Global.heldSprite.showOnTalk
|
||||
sprite.showOnBlink = Global.heldSprite.showOnBlink
|
||||
sprite.z = Global.heldSprite.z
|
||||
|
||||
sprite.useMidiWobble = Global.heldSprite.useMidiWobble
|
||||
|
||||
sprite.xFrq = Global.heldSprite.xFrq
|
||||
sprite.xAmp = Global.heldSprite.xAmp
|
||||
sprite.yFrq = Global.heldSprite.yFrq
|
||||
sprite.yAmp = Global.heldSprite.yAmp
|
||||
|
||||
|
||||
sprite.rdragStr = Global.heldSprite.rdragStr
|
||||
|
||||
|
||||
sprite.offset = Global.heldSprite.offset
|
||||
|
||||
|
||||
sprite.rLimitMin = Global.heldSprite.rLimitMin
|
||||
sprite.rLimitMax = Global.heldSprite.rLimitMax
|
||||
|
||||
|
||||
sprite.frames = Global.heldSprite.frames
|
||||
sprite.animSpeed = Global.heldSprite.animSpeed
|
||||
|
||||
|
||||
sprite.costumeLayers = Global.heldSprite.costumeLayers
|
||||
|
||||
|
||||
origin.add_child(sprite)
|
||||
sprite.position = Global.heldSprite.position + Vector2(16, 16)
|
||||
|
||||
sprite.position = Global.heldSprite.position + Vector2(16,16)
|
||||
|
||||
Global.heldSprite = sprite
|
||||
|
||||
|
||||
Global.spriteList.updateData()
|
||||
|
||||
|
||||
Global.pushUpdate("Duplicated sprite.")
|
||||
|
||||
|
||||
func changeCostumeStreamDeck(id: String):
|
||||
match id:
|
||||
"1":
|
||||
changeCostume(1)
|
||||
"2":
|
||||
changeCostume(2)
|
||||
"3":
|
||||
changeCostume(3)
|
||||
"4":
|
||||
changeCostume(4)
|
||||
"5":
|
||||
changeCostume(5)
|
||||
"6":
|
||||
changeCostume(6)
|
||||
"7":
|
||||
changeCostume(7)
|
||||
"8":
|
||||
changeCostume(8)
|
||||
"9":
|
||||
changeCostume(9)
|
||||
"10":
|
||||
changeCostume(10)
|
||||
|
||||
"1":changeCostume(1)
|
||||
"2":changeCostume(2)
|
||||
"3":changeCostume(3)
|
||||
"4":changeCostume(4)
|
||||
"5":changeCostume(5)
|
||||
"6":changeCostume(6)
|
||||
"7":changeCostume(7)
|
||||
"8":changeCostume(8)
|
||||
"9":changeCostume(9)
|
||||
"10":changeCostume(10)
|
||||
|
||||
func changeCostume(newCostume):
|
||||
costume = newCostume
|
||||
Global.heldSprite = null
|
||||
var nodes = get_tree().get_nodes_in_group("saved")
|
||||
for sprite in nodes:
|
||||
if sprite.costumeLayers[newCostume - 1] == 1:
|
||||
if sprite.costumeLayers[newCostume-1] == 1:
|
||||
sprite.visible = true
|
||||
sprite.changeCollision(true)
|
||||
else:
|
||||
|
@ -553,55 +527,57 @@ func changeCostume(newCostume):
|
|||
sprite.changeCollision(false)
|
||||
Global.spriteEdit.layerSelected()
|
||||
spriteList.updateAllVisible()
|
||||
|
||||
|
||||
if bounceOnCostumeChange:
|
||||
onSpeak()
|
||||
|
||||
|
||||
Global.pushUpdate("Change costume: " + str(newCostume))
|
||||
|
||||
|
||||
|
||||
func moveSpriteMenu(delta):
|
||||
|
||||
#moves sprite viewer editor thing around
|
||||
|
||||
|
||||
var size = get_viewport().get_visible_rect().size
|
||||
|
||||
|
||||
var windowLength = 1275 #1187
|
||||
|
||||
$ViewerArrows/Arrows.position.y = size.y - 25
|
||||
|
||||
|
||||
$ViewerArrows/Arrows.position.y = size.y - 25
|
||||
|
||||
if !Global.spriteEdit.visible:
|
||||
$ViewerArrows/Arrows.visible = false
|
||||
$ViewerArrows/Arrows2.visible = false
|
||||
return
|
||||
|
||||
if size.y > windowLength + 50:
|
||||
|
||||
if size.y > windowLength+50:
|
||||
Global.spriteEdit.position.y = 66
|
||||
|
||||
|
||||
$ViewerArrows/Arrows.visible = false
|
||||
$ViewerArrows/Arrows2.visible = false
|
||||
|
||||
|
||||
return
|
||||
|
||||
|
||||
if Global.spriteEdit.position.y < 16:
|
||||
$ViewerArrows/Arrows2.visible = true
|
||||
else:
|
||||
$ViewerArrows/Arrows2.visible = false
|
||||
if Global.spriteEdit.position.y > size.y - windowLength + 2:
|
||||
if Global.spriteEdit.position.y > size.y-windowLength+2:
|
||||
$ViewerArrows/Arrows.visible = true
|
||||
else:
|
||||
$ViewerArrows/Arrows.visible = false
|
||||
|
||||
|
||||
if $EditControls/MoveMenuUp.overlaps_area(Global.mouse.area):
|
||||
Global.spriteEdit.position.y += (delta * 432.0)
|
||||
Global.spriteEdit.position.y += (delta*432.0)
|
||||
elif $EditControls/MoveMenuDown.overlaps_area(Global.mouse.area):
|
||||
Global.spriteEdit.position.y -= (delta * 432.0)
|
||||
|
||||
Global.spriteEdit.position.y -= (delta*432.0)
|
||||
|
||||
if Global.spriteEdit.position.y > 66:
|
||||
Global.spriteEdit.position.y = 66
|
||||
elif Global.spriteEdit.position.y < size.y - windowLength:
|
||||
Global.spriteEdit.position.y = size.y - windowLength
|
||||
|
||||
elif Global.spriteEdit.position.y < size.y-windowLength:
|
||||
Global.spriteEdit.position.y = size.y-windowLength
|
||||
|
||||
|
||||
|
||||
#UNAMED BUT THIS IS THE MICROPHONE MENU BUTTON
|
||||
func _on_button_pressed():
|
||||
$ControlPanel/MicInputSelect.visible = !$ControlPanel/MicInputSelect.visible
|
||||
|
@ -614,69 +590,49 @@ func _on_settings_buttons_pressed():
|
|||
|
||||
func _on_background_input_capture_bg_key_pressed(node, keys_pressed):
|
||||
var keyStrings = []
|
||||
|
||||
|
||||
for i in keys_pressed:
|
||||
if keys_pressed[i]:
|
||||
keyStrings.append(
|
||||
(
|
||||
OS.get_keycode_string(i)
|
||||
if !OS.get_keycode_string(i).strip_edges().is_empty()
|
||||
else "Keycode" + str(i)
|
||||
)
|
||||
)
|
||||
|
||||
keyStrings.append(OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i))
|
||||
|
||||
if fileSystemOpen:
|
||||
return
|
||||
|
||||
|
||||
if keyStrings.size() <= 0:
|
||||
emit_signal("emptiedCapture")
|
||||
return
|
||||
|
||||
|
||||
if settingsMenu.awaitingCostumeInput >= 0:
|
||||
|
||||
if keyStrings[0] == "Keycode1":
|
||||
if !settingsMenu.hasMouse:
|
||||
emit_signal("pressedKey")
|
||||
return
|
||||
|
||||
|
||||
var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput]
|
||||
costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0]
|
||||
Saving.settings["costumeKeys"] = costumeKeys
|
||||
Global.pushUpdate(
|
||||
(
|
||||
"Changed costume "
|
||||
+ str(settingsMenu.awaitingCostumeInput + 1)
|
||||
+ ' hotkey from "'
|
||||
+ currentButton
|
||||
+ '" to "'
|
||||
+ keyStrings[0]
|
||||
+ '"'
|
||||
)
|
||||
)
|
||||
Global.pushUpdate("Changed costume " + str(settingsMenu.awaitingCostumeInput+1) + " hotkey from \"" + currentButton + "\" to \"" + keyStrings[0] + "\"")
|
||||
emit_signal("pressedKey")
|
||||
|
||||
|
||||
for key in keyStrings:
|
||||
var i = costumeKeys.find(key)
|
||||
if i >= 0:
|
||||
changeCostume(i + 1)
|
||||
changeCostume(i+1)
|
||||
|
||||
|
||||
|
||||
func bgInputSprite(node, keys_pressed):
|
||||
if fileSystemOpen:
|
||||
return
|
||||
var keyStrings = []
|
||||
|
||||
|
||||
for i in keys_pressed:
|
||||
if keys_pressed[i]:
|
||||
keyStrings.append(
|
||||
(
|
||||
OS.get_keycode_string(i)
|
||||
if !OS.get_keycode_string(i).strip_edges().is_empty()
|
||||
else "Keycode" + str(i)
|
||||
)
|
||||
)
|
||||
|
||||
keyStrings.append(OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i))
|
||||
|
||||
if keyStrings.size() <= 0:
|
||||
emit_signal("fatfuckingballs")
|
||||
return
|
||||
|
||||
|
||||
spriteVisToggles.emit(keyStrings)
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -32,7 +32,7 @@ var imageSize = Vector2.ZERO
|
|||
#Visuals
|
||||
var mouseOffset = Vector2.ZERO
|
||||
var grabDelay = 0
|
||||
var size = Vector2(1, 1)
|
||||
var size = Vector2(1,1)
|
||||
|
||||
var showOnTalk = 0
|
||||
var showOnBlink = 0
|
||||
|
@ -43,6 +43,7 @@ var z = 0
|
|||
var heldTicks = 0
|
||||
var dragSpeed = 0
|
||||
|
||||
|
||||
#Origin
|
||||
var origTick = 0
|
||||
var offset = Vector2.ZERO
|
||||
|
@ -61,7 +62,7 @@ var rLimitMax = 180
|
|||
var rLimitMin = -180
|
||||
|
||||
#Layer
|
||||
var costumeLayers = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
var costumeLayers = [1,1,1,1,1,1,1,1,1,1]
|
||||
|
||||
#Stretch
|
||||
var stretchAmount = 0.0
|
||||
|
@ -82,10 +83,10 @@ var tick = 0
|
|||
#Vis toggle
|
||||
var toggle = "null"
|
||||
|
||||
|
||||
func _ready():
|
||||
|
||||
Global.main.spriteVisToggles.connect(visToggle)
|
||||
|
||||
|
||||
var img = Image.new()
|
||||
var err = img.load(path)
|
||||
if err != OK:
|
||||
|
@ -103,21 +104,22 @@ func _ready():
|
|||
print_debug("Failed to load image.")
|
||||
queue_free()
|
||||
return
|
||||
|
||||
|
||||
var texture = ImageTexture.new()
|
||||
texture = ImageTexture.create_from_image(img)
|
||||
|
||||
|
||||
|
||||
tex = texture
|
||||
imageData = img
|
||||
|
||||
|
||||
imageSize = img.get_size()
|
||||
|
||||
|
||||
sprite.texture = tex
|
||||
|
||||
|
||||
var bitmap = BitMap.new()
|
||||
bitmap.create_from_image_alpha(imageData)
|
||||
|
||||
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()), 4.0) #bitmap.get_size()
|
||||
|
||||
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()),4.0) #bitmap.get_size()
|
||||
|
||||
var b = false
|
||||
for polygon in polygons:
|
||||
|
@ -125,27 +127,28 @@ func _ready():
|
|||
var collider = CollisionPolygon2D.new()
|
||||
collider.polygon = polygon
|
||||
grabArea.add_child(collider)
|
||||
|
||||
|
||||
var outline = outlineScene.instantiate()
|
||||
outline.points = polygon
|
||||
outline.add_point(outline.points[0])
|
||||
grabArea.add_child(outline)
|
||||
|
||||
|
||||
size = imageData.get_size()
|
||||
grabArea.position = size * -0.5
|
||||
|
||||
grabArea.position = size*-0.5
|
||||
|
||||
sprite.offset = offset
|
||||
|
||||
grabArea.position = (size * -0.5) + offset
|
||||
|
||||
|
||||
grabArea.position = (size*-0.5) + offset
|
||||
|
||||
changeFrames()
|
||||
setZIndex()
|
||||
|
||||
|
||||
if frames > 1:
|
||||
remakePolygon()
|
||||
if !b:
|
||||
remakePolygon()
|
||||
|
||||
|
||||
|
||||
add_to_group(str(id))
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
if parentId != null:
|
||||
|
@ -154,13 +157,13 @@ func _ready():
|
|||
nodes[0].sprite.add_child(self)
|
||||
parentSprite = nodes[0]
|
||||
set_owner(nodes[0].sprite)
|
||||
|
||||
|
||||
setClip(clipped)
|
||||
|
||||
|
||||
|
||||
if Global.filtering:
|
||||
sprite.texture_filter = 2
|
||||
|
||||
|
||||
|
||||
func _input(event):
|
||||
if not self.useMidiWobble or not event is InputEventMIDI:
|
||||
return
|
||||
|
@ -175,41 +178,42 @@ func _input(event):
|
|||
MIDIMessage.MIDI_MESSAGE_TIMING_CLOCK:
|
||||
tick += 1
|
||||
|
||||
|
||||
func replaceSprite(pathNew):
|
||||
var img = Image.new()
|
||||
var err = img.load(pathNew)
|
||||
if err != OK:
|
||||
#Runs if image import fails.
|
||||
#Runs if image import fails.
|
||||
Global.epicFail(err)
|
||||
print_debug("Failed to load image.")
|
||||
return
|
||||
|
||||
|
||||
path = pathNew
|
||||
|
||||
|
||||
var texture = ImageTexture.new()
|
||||
texture = ImageTexture.create_from_image(img)
|
||||
|
||||
|
||||
|
||||
tex = texture
|
||||
imageData = img
|
||||
|
||||
|
||||
|
||||
sprite.texture = tex
|
||||
|
||||
|
||||
var bitmap = BitMap.new()
|
||||
bitmap.create_from_image_alpha(imageData)
|
||||
|
||||
|
||||
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()))
|
||||
|
||||
|
||||
for i in grabArea.get_children():
|
||||
i.queue_free()
|
||||
|
||||
|
||||
var b = false
|
||||
for polygon in polygons:
|
||||
b = true
|
||||
var collider = CollisionPolygon2D.new()
|
||||
collider.polygon = polygon
|
||||
grabArea.add_child(collider)
|
||||
|
||||
|
||||
var outline = outlineScene.instantiate()
|
||||
outline.points = polygon
|
||||
outline.add_point(outline.points[0])
|
||||
|
@ -217,49 +221,49 @@ func replaceSprite(pathNew):
|
|||
size = imageData.get_size()
|
||||
|
||||
sprite.offset = offset
|
||||
|
||||
grabArea.position = (size * -0.5) + offset
|
||||
|
||||
|
||||
grabArea.position = (size*-0.5) + offset
|
||||
|
||||
if !b:
|
||||
remakePolygon()
|
||||
|
||||
|
||||
func _process(delta):
|
||||
if not self.useMidiWobble:
|
||||
tick += 1
|
||||
|
||||
if Global.heldSprite == self:
|
||||
|
||||
grabArea.visible = true
|
||||
originSprite.visible = true
|
||||
|
||||
|
||||
else:
|
||||
grabArea.visible = false
|
||||
originSprite.visible = false
|
||||
|
||||
|
||||
var glob = dragger.global_position
|
||||
if ignoreBounce:
|
||||
glob.y -= Global.main.bounceChange
|
||||
|
||||
|
||||
drag(delta)
|
||||
wobble()
|
||||
|
||||
var length = glob.y - dragger.global_position.y
|
||||
|
||||
rotationalDrag(length, delta)
|
||||
stretch(length, delta)
|
||||
|
||||
|
||||
var length = (glob.y - dragger.global_position.y)
|
||||
|
||||
rotationalDrag(length,delta)
|
||||
stretch(length,delta)
|
||||
|
||||
if grabDelay > 0:
|
||||
grabDelay -= 1
|
||||
|
||||
|
||||
talkBlink()
|
||||
|
||||
|
||||
animation()
|
||||
|
||||
|
||||
func animation():
|
||||
var speed = max(float(animSpeed), Engine.max_fps * 6.0)
|
||||
|
||||
var speed = max(float(animSpeed),Engine.max_fps*6.0)
|
||||
if animSpeed > 0 and frames > 1:
|
||||
if Global.animationTick % int((speed) / float(animSpeed)) == 0:
|
||||
if Global.animationTick % int((speed)/float(animSpeed)) == 0:
|
||||
if sprite.frame == frames - 1:
|
||||
sprite.frame = 0
|
||||
else:
|
||||
|
@ -267,24 +271,18 @@ func animation():
|
|||
if frames > 1:
|
||||
remakePolygon()
|
||||
|
||||
|
||||
func setZIndex():
|
||||
sprite.z_index = z
|
||||
|
||||
|
||||
func talkBlink():
|
||||
var faded = 0.2 * int(Global.main.editMode)
|
||||
var value = (
|
||||
(showOnTalk + (showOnBlink * 3)) + (int(Global.speaking) * 10) + (int(Global.blink) * 20)
|
||||
)
|
||||
var yes = [0, 10, 20, 30, 1, 21, 12, 32, 3, 13, 4, 15, 26, 36, 27, 38].has(int(value))
|
||||
sprite.self_modulate.a = max(int(yes), faded)
|
||||
|
||||
var value = (showOnTalk + (showOnBlink*3)) + (int(Global.speaking)*10) + (int(Global.blink)*20)
|
||||
var yes = [0,10,20,30,1,21,12,32,3,13,4,15,26,36,27,38].has(int(value))
|
||||
sprite.self_modulate.a = max(int(yes),faded)
|
||||
|
||||
func delete():
|
||||
queue_free()
|
||||
|
||||
|
||||
func _physics_process(delta):
|
||||
if Global.heldSprite == self:
|
||||
var dir = pressingDirection()
|
||||
|
@ -295,36 +293,33 @@ func _physics_process(delta):
|
|||
else:
|
||||
set_physics_process(false)
|
||||
|
||||
|
||||
func pressingDirection():
|
||||
var dir = Vector2.ZERO
|
||||
|
||||
|
||||
dir.x = Input.get_action_strength("move_left") - Input.get_action_strength("move_right")
|
||||
dir.y = Input.get_action_strength("move_up") - Input.get_action_strength("move_down")
|
||||
return dir
|
||||
|
||||
|
||||
|
||||
func moveSprite(dir):
|
||||
if dir != Vector2.ZERO:
|
||||
heldTicks += 1
|
||||
else:
|
||||
heldTicks = 0
|
||||
|
||||
|
||||
if heldTicks > 30 or heldTicks == 1:
|
||||
var multiplier = 2
|
||||
if heldTicks == 1:
|
||||
multiplier = 1
|
||||
position -= dir * multiplier
|
||||
|
||||
position = Vector2(int(position.x), int(position.y))
|
||||
|
||||
|
||||
position = Vector2(int(position.x),int(position.y))
|
||||
|
||||
func moveOrigin(dir):
|
||||
if dir != Vector2.ZERO:
|
||||
origTick += 1
|
||||
else:
|
||||
origTick = 0
|
||||
|
||||
|
||||
if origTick > 30 or origTick == 1:
|
||||
var multiplier = 2
|
||||
if origTick == 1:
|
||||
|
@ -332,20 +327,17 @@ func moveOrigin(dir):
|
|||
|
||||
offset += dir * multiplier
|
||||
position -= dir * multiplier
|
||||
|
||||
offset = Vector2(int(offset.x), int(offset.y))
|
||||
|
||||
|
||||
offset = Vector2(int(offset.x),int(offset.y))
|
||||
|
||||
sprite.offset = offset
|
||||
grabArea.position = (size * -0.5) + offset
|
||||
|
||||
grabArea.position = (size*-0.5) + offset
|
||||
|
||||
func drag(delta):
|
||||
if dragSpeed == 0:
|
||||
dragger.global_position = wob.global_position
|
||||
else:
|
||||
dragger.global_position = lerp(
|
||||
dragger.global_position, wob.global_position, 1.0 / dragSpeed
|
||||
)
|
||||
dragger.global_position = lerp(dragger.global_position,wob.global_position,1/dragSpeed)
|
||||
dragOrigin.global_position = dragger.global_position
|
||||
|
||||
|
||||
|
@ -368,34 +360,29 @@ func midi_wobble():
|
|||
wob.position.x = cos(rads * xFrq * 10) * xAmp
|
||||
wob.position.y = cos(rads * yFrq * 10) * yAmp
|
||||
|
||||
|
||||
func rotationalDrag(length, delta):
|
||||
var yvel = length * rdragStr
|
||||
|
||||
func rotationalDrag(length,delta):
|
||||
var yvel = (length * rdragStr)
|
||||
|
||||
#Calculate Max angle
|
||||
|
||||
yvel = clamp(yvel,rLimitMin,rLimitMax)
|
||||
|
||||
sprite.rotation = lerp_angle(sprite.rotation,deg_to_rad(yvel),0.25)
|
||||
|
||||
yvel = clamp(yvel, rLimitMin, rLimitMax)
|
||||
|
||||
sprite.rotation = lerp_angle(sprite.rotation, deg_to_rad(yvel), 0.25)
|
||||
|
||||
|
||||
func stretch(length, delta):
|
||||
var yvel = length * stretchAmount * 0.01
|
||||
var target = Vector2(1.0 - yvel, 1.0 + yvel)
|
||||
|
||||
sprite.scale = lerp(sprite.scale, target, 0.5)
|
||||
|
||||
func stretch(length,delta):
|
||||
var yvel = (length * stretchAmount * 0.01)
|
||||
var target = Vector2(1.0-yvel,1.0+yvel)
|
||||
|
||||
sprite.scale = lerp(sprite.scale,target,0.5)
|
||||
|
||||
func changeCollision(enable):
|
||||
grabArea.monitorable = enable
|
||||
grabArea.monitorable = enable
|
||||
|
||||
|
||||
func changeFrames():
|
||||
sprite.hframes = frames
|
||||
sprite.frame = 0
|
||||
|
||||
|
||||
func remakePolygon():
|
||||
if remadePolygon:
|
||||
return
|
||||
|
@ -403,38 +390,36 @@ func remakePolygon():
|
|||
c.queue_free()
|
||||
var collider = CollisionShape2D.new()
|
||||
var shape = RectangleShape2D.new()
|
||||
shape.size = Vector2(imageSize.y, imageSize.y)
|
||||
shape.size = Vector2(imageSize.y,imageSize.y)
|
||||
collider.shape = shape
|
||||
collider.position = Vector2(imageSize.x, imageSize.y) * Vector2(0.5, 0.5)
|
||||
collider.position = Vector2(imageSize.x,imageSize.y) * Vector2(0.5,0.5)
|
||||
grabArea.add_child(collider)
|
||||
|
||||
|
||||
var p = imageSize.y * 0.5
|
||||
var outline = outlineScene.instantiate()
|
||||
outline.add_point(Vector2(-p, -p))
|
||||
outline.add_point(Vector2(p, -p))
|
||||
outline.add_point(Vector2(p, p))
|
||||
outline.add_point(Vector2(-p, p))
|
||||
outline.add_point(Vector2(-p, -p))
|
||||
outline.add_point(Vector2(-p,-p))
|
||||
outline.add_point(Vector2(p,-p))
|
||||
outline.add_point(Vector2(p,p))
|
||||
outline.add_point(Vector2(-p,p))
|
||||
outline.add_point(Vector2(-p,-p))
|
||||
outline.position = collider.position
|
||||
grabArea.add_child(outline)
|
||||
|
||||
|
||||
remadePolygon = true
|
||||
|
||||
|
||||
|
||||
func setClip(should_clip):
|
||||
if should_clip:
|
||||
sprite.clip_children = CLIP_CHILDREN_AND_DRAW
|
||||
|
||||
|
||||
for node in getAllLinkedSprites():
|
||||
node.z = z
|
||||
node.setZIndex()
|
||||
|
||||
|
||||
else:
|
||||
sprite.clip_children = CLIP_CHILDREN_DISABLED
|
||||
|
||||
|
||||
clipped = should_clip
|
||||
|
||||
|
||||
func getAllLinkedSprites():
|
||||
var nodes = get_tree().get_nodes_in_group("saved")
|
||||
var linkedSprites = []
|
||||
|
@ -443,11 +428,9 @@ func getAllLinkedSprites():
|
|||
linkedSprites.append(node)
|
||||
return linkedSprites
|
||||
|
||||
|
||||
func visToggle(keys):
|
||||
if keys.has(toggle):
|
||||
$WobbleOrigin/DragOrigin.visible = !$WobbleOrigin/DragOrigin.visible
|
||||
|
||||
|
||||
func makeVis():
|
||||
$WobbleOrigin/DragOrigin.visible = true
|
||||
|
|
|
@ -7,118 +7,111 @@ extends Node2D
|
|||
|
||||
@onready var spriteRotDisplay = $RotationalLimits/RotBack/SpriteDisplay
|
||||
|
||||
|
||||
@onready var coverCollider = $Area2D/CollisionShape2D
|
||||
|
||||
|
||||
func _ready():
|
||||
Global.spriteEdit = self
|
||||
|
||||
|
||||
|
||||
func setImage():
|
||||
if Global.heldSprite == null:
|
||||
return
|
||||
|
||||
|
||||
spriteSpin.texture = Global.heldSprite.tex
|
||||
spriteSpin.pixel_size = 1.5 / Global.heldSprite.imageData.get_size().y
|
||||
spriteSpin.hframes = Global.heldSprite.frames
|
||||
|
||||
|
||||
spriteRotDisplay.texture = Global.heldSprite.tex
|
||||
spriteRotDisplay.offset = Global.heldSprite.offset
|
||||
var displaySize = Global.heldSprite.imageData.get_size().y
|
||||
spriteRotDisplay.scale = Vector2(1, 1) * (150.0 / displaySize)
|
||||
|
||||
spriteRotDisplay.scale = Vector2(1,1) * (150.0/displaySize)
|
||||
|
||||
$Slider/Label.text = "drag: " + str(Global.heldSprite.dragSpeed)
|
||||
$Slider/DragSlider.value = Global.heldSprite.dragSpeed
|
||||
|
||||
$WobbleControl/UseMidi.button_pressed = Global.heldSprite.useMidiWobble
|
||||
|
||||
$WobbleControl/xFrqLabel.text = "x frequency: " + get_scaled_frequency(Global.heldSprite.xFrq)
|
||||
$WobbleControl/xAmpLabel.text = "x amplitude: " + str(Global.heldSprite.xAmp)
|
||||
|
||||
|
||||
$WobbleControl/xFrq.value = Global.heldSprite.xFrq
|
||||
$WobbleControl/xAmp.value = Global.heldSprite.xAmp
|
||||
|
||||
|
||||
$WobbleControl/yFrqLabel.text = "y frequency: " + get_scaled_frequency(Global.heldSprite.yFrq)
|
||||
$WobbleControl/yAmpLabel.text = "y amplitude: " + str(Global.heldSprite.yAmp)
|
||||
|
||||
|
||||
$WobbleControl/yFrq.value = Global.heldSprite.yFrq
|
||||
$WobbleControl/yAmp.value = Global.heldSprite.yAmp
|
||||
|
||||
|
||||
$Rotation/rDragLabel.text = "rotational drag: " + str(Global.heldSprite.rdragStr)
|
||||
$Rotation/rDrag.value = Global.heldSprite.rdragStr
|
||||
|
||||
|
||||
$Buttons/Speaking.frame = Global.heldSprite.showOnTalk
|
||||
$Buttons/Blinking.frame = Global.heldSprite.showOnBlink
|
||||
|
||||
|
||||
$RotationalLimits/rotLimitMin.value = Global.heldSprite.rLimitMin
|
||||
$RotationalLimits/RotLimitMin.text = "rotational limit min: " + str(Global.heldSprite.rLimitMin)
|
||||
$RotationalLimits/rotLimitMax.value = Global.heldSprite.rLimitMax
|
||||
$RotationalLimits/RotLimitMax.text = "rotational limit max: " + str(Global.heldSprite.rLimitMax)
|
||||
|
||||
|
||||
$Rotation/squashlabel.text = "squash: " + str(Global.heldSprite.stretchAmount)
|
||||
$Rotation/squash.value = Global.heldSprite.stretchAmount
|
||||
|
||||
|
||||
$Position/fileTitle.text = Global.heldSprite.path
|
||||
|
||||
|
||||
$Buttons/CheckBox.button_pressed = Global.heldSprite.ignoreBounce
|
||||
$Buttons/ClipLinked.button_pressed = Global.heldSprite.clipped
|
||||
|
||||
|
||||
$Animation/animSpeedLabel.text = "animation speed: " + str(Global.heldSprite.animSpeed)
|
||||
$Animation/animSpeed.value = Global.heldSprite.animSpeed
|
||||
|
||||
$Animation/animFramesLabel.text = "sprite frames: " + str(Global.heldSprite.frames)
|
||||
$Animation/animFrames.value = Global.heldSprite.frames
|
||||
|
||||
$VisToggle/setToggle/Label.text = 'toggle: "' + Global.heldSprite.toggle + '"'
|
||||
|
||||
|
||||
$VisToggle/setToggle/Label.text = "toggle: \"" + Global.heldSprite.toggle + "\""
|
||||
|
||||
changeRotLimit()
|
||||
|
||||
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
if Global.heldSprite.parentId == null:
|
||||
$Buttons/Unlink.visible = false
|
||||
parentSpin.visible = false
|
||||
else:
|
||||
$Buttons/Unlink.visible = true
|
||||
|
||||
|
||||
var nodes = get_tree().get_nodes_in_group(str(Global.heldSprite.parentId))
|
||||
|
||||
if nodes.size() <= 0:
|
||||
|
||||
if nodes.size()<=0:
|
||||
return
|
||||
|
||||
|
||||
parentSpin.texture = nodes[0].tex
|
||||
parentSpin.pixel_size = 1.5 / nodes[0].imageData.get_size().y
|
||||
parentSpin.hframes = nodes[0].frames
|
||||
parentSpin.visible = true
|
||||
|
||||
|
||||
|
||||
func _process(delta):
|
||||
|
||||
visible = Global.heldSprite != null
|
||||
coverCollider.disabled = !visible
|
||||
|
||||
|
||||
if !visible:
|
||||
return
|
||||
|
||||
|
||||
var obj = Global.heldSprite
|
||||
spriteSpin.rotate_y(delta * 4.0)
|
||||
parentSpin.rotate_y(delta * 4.0)
|
||||
|
||||
$Position/Label.text = (
|
||||
"position X : " + str(obj.position.x) + " Y: " + str(obj.position.y)
|
||||
)
|
||||
$Position/Label2.text = (
|
||||
"offset X : " + str(obj.offset.x) + " Y: " + str(obj.offset.y)
|
||||
)
|
||||
$Position/Label3.text = "layer : " + str(obj.z)
|
||||
|
||||
spriteSpin.rotate_y(delta*4.0)
|
||||
parentSpin.rotate_y(delta*4.0)
|
||||
|
||||
$Position/Label.text = "position X : "+str(obj.position.x)+" Y: " + str(obj.position.y)
|
||||
$Position/Label2.text = "offset X : "+str(obj.offset.x)+" Y: " + str(obj.offset.y)
|
||||
$Position/Label3.text = "layer : "+str(obj.z)
|
||||
|
||||
#Sprite Rotational Limit Display
|
||||
|
||||
|
||||
var size = Global.heldSprite.rLimitMax - Global.heldSprite.rLimitMin
|
||||
var minimum = Global.heldSprite.rLimitMin
|
||||
|
||||
spriteRotDisplay.rotation_degrees = (
|
||||
sin(Global.animationTick * 0.05) * (size / 2.0) + (minimum + (size / 2.0))
|
||||
)
|
||||
|
||||
spriteRotDisplay.rotation_degrees = sin(Global.animationTick*0.05)*(size/2.0)+(minimum+(size/2.0))
|
||||
$RotationalLimits/RotBack/RotLineDisplay3.rotation_degrees = spriteRotDisplay.rotation_degrees
|
||||
|
||||
|
||||
|
@ -145,7 +138,7 @@ func get_scaled_frequency(value):
|
|||
func _on_x_frq_value_changed(value):
|
||||
$WobbleControl/xFrqLabel.text = "x frequency: " + get_scaled_frequency(value)
|
||||
Global.heldSprite.xFrq = value
|
||||
|
||||
|
||||
|
||||
func _on_x_amp_value_changed(value):
|
||||
$WobbleControl/xAmpLabel.text = "x amplitude: " + str(value)
|
||||
|
@ -156,7 +149,6 @@ func _on_y_frq_value_changed(value):
|
|||
$WobbleControl/yFrqLabel.text = "y frequency: " + get_scaled_frequency(value)
|
||||
Global.heldSprite.yFrq = value
|
||||
|
||||
|
||||
func _on_y_amp_value_changed(value):
|
||||
$WobbleControl/yAmpLabel.text = "y amplitude: " + str(value)
|
||||
Global.heldSprite.yAmp = value
|
||||
|
@ -169,16 +161,16 @@ func _on_r_drag_value_changed(value):
|
|||
|
||||
func _on_speaking_pressed():
|
||||
var f = $Buttons/Speaking.frame
|
||||
f = (f + 1) % 3
|
||||
|
||||
f = (f+1) % 3
|
||||
|
||||
$Buttons/Speaking.frame = f
|
||||
Global.heldSprite.showOnTalk = f
|
||||
|
||||
|
||||
func _on_blinking_pressed():
|
||||
var f = $Buttons/Blinking.frame
|
||||
f = (f + 1) % 3
|
||||
|
||||
f = (f+1) % 3
|
||||
|
||||
$Buttons/Blinking.frame = f
|
||||
Global.heldSprite.showOnBlink = f
|
||||
|
||||
|
@ -186,55 +178,49 @@ func _on_blinking_pressed():
|
|||
func _on_trash_pressed():
|
||||
Global.heldSprite.queue_free()
|
||||
Global.heldSprite = null
|
||||
|
||||
|
||||
Global.spriteList.updateData()
|
||||
|
||||
|
||||
func _on_unlink_pressed():
|
||||
if Global.heldSprite.parentId == null:
|
||||
return
|
||||
Global.unlinkSprite()
|
||||
setImage()
|
||||
|
||||
|
||||
|
||||
func _on_rot_limit_min_value_changed(value):
|
||||
$RotationalLimits/RotLimitMin.text = "rotational limit min: " + str(value)
|
||||
Global.heldSprite.rLimitMin = value
|
||||
|
||||
|
||||
changeRotLimit()
|
||||
|
||||
|
||||
func _on_rot_limit_max_value_changed(value):
|
||||
$RotationalLimits/RotLimitMax.text = "rotational limit max: " + str(value)
|
||||
Global.heldSprite.rLimitMax = value
|
||||
|
||||
|
||||
changeRotLimit()
|
||||
|
||||
|
||||
func changeRotLimit():
|
||||
$RotationalLimits/RotBack/rotLimitBar.value = (
|
||||
Global.heldSprite.rLimitMax - Global.heldSprite.rLimitMin
|
||||
)
|
||||
$RotationalLimits/RotBack/rotLimitBar.value = Global.heldSprite.rLimitMax - Global.heldSprite.rLimitMin
|
||||
$RotationalLimits/RotBack/rotLimitBar.rotation_degrees = Global.heldSprite.rLimitMin + 90
|
||||
|
||||
|
||||
$RotationalLimits/RotBack/RotLineDisplay.rotation_degrees = Global.heldSprite.rLimitMin
|
||||
$RotationalLimits/RotBack/RotLineDisplay2.rotation_degrees = Global.heldSprite.rLimitMax
|
||||
|
||||
|
||||
func setLayerButtons():
|
||||
var a = Global.heldSprite.costumeLayers.duplicate()
|
||||
|
||||
$Layers/Layer1.frame = 1 - a[0]
|
||||
$Layers/Layer2.frame = 1 - a[1]
|
||||
$Layers/Layer3.frame = 1 - a[2]
|
||||
$Layers/Layer4.frame = 1 - a[3]
|
||||
$Layers/Layer5.frame = 1 - a[4]
|
||||
$Layers/Layer6.frame = 1 - a[5]
|
||||
$Layers/Layer7.frame = 1 - a[6]
|
||||
$Layers/Layer8.frame = 1 - a[7]
|
||||
$Layers/Layer9.frame = 1 - a[8]
|
||||
$Layers/Layer10.frame = 1 - a[9]
|
||||
|
||||
|
||||
$Layers/Layer1.frame = 1-a[0]
|
||||
$Layers/Layer2.frame = 1-a[1]
|
||||
$Layers/Layer3.frame = 1-a[2]
|
||||
$Layers/Layer4.frame = 1-a[3]
|
||||
$Layers/Layer5.frame = 1-a[4]
|
||||
$Layers/Layer6.frame = 1-a[5]
|
||||
$Layers/Layer7.frame = 1-a[6]
|
||||
$Layers/Layer8.frame = 1-a[7]
|
||||
$Layers/Layer9.frame = 1-a[8]
|
||||
$Layers/Layer10.frame = 1-a[9]
|
||||
|
||||
var nodes = get_tree().get_nodes_in_group("saved")
|
||||
for sprite in nodes:
|
||||
if sprite.costumeLayers[Global.main.costume - 1] == 1:
|
||||
|
@ -243,6 +229,7 @@ func setLayerButtons():
|
|||
else:
|
||||
sprite.visible = false
|
||||
sprite.changeCollision(false)
|
||||
|
||||
|
||||
|
||||
func _on_layer_button_1_pressed():
|
||||
|
@ -284,7 +271,6 @@ func _on_layer_button_5_pressed():
|
|||
Global.heldSprite.costumeLayers[4] = 0
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
func _on_layer_button_6_pressed():
|
||||
if Global.heldSprite.costumeLayers[5] == 0:
|
||||
Global.heldSprite.costumeLayers[5] = 1
|
||||
|
@ -292,7 +278,6 @@ func _on_layer_button_6_pressed():
|
|||
Global.heldSprite.costumeLayers[5] = 0
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
func _on_layer_button_7_pressed():
|
||||
if Global.heldSprite.costumeLayers[6] == 0:
|
||||
Global.heldSprite.costumeLayers[6] = 1
|
||||
|
@ -300,7 +285,6 @@ func _on_layer_button_7_pressed():
|
|||
Global.heldSprite.costumeLayers[6] = 0
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
func _on_layer_button_8_pressed():
|
||||
if Global.heldSprite.costumeLayers[7] == 0:
|
||||
Global.heldSprite.costumeLayers[7] = 1
|
||||
|
@ -308,7 +292,6 @@ func _on_layer_button_8_pressed():
|
|||
Global.heldSprite.costumeLayers[7] = 0
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
func _on_layer_button_9_pressed():
|
||||
if Global.heldSprite.costumeLayers[8] == 0:
|
||||
Global.heldSprite.costumeLayers[8] = 1
|
||||
|
@ -316,7 +299,6 @@ func _on_layer_button_9_pressed():
|
|||
Global.heldSprite.costumeLayers[8] = 0
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
func _on_layer_button_10_pressed():
|
||||
if Global.heldSprite.costumeLayers[9] == 0:
|
||||
Global.heldSprite.costumeLayers[9] = 1
|
||||
|
@ -324,7 +306,6 @@ func _on_layer_button_10_pressed():
|
|||
Global.heldSprite.costumeLayers[9] = 0
|
||||
setLayerButtons()
|
||||
|
||||
|
||||
func layerSelected():
|
||||
var newPos = Vector2.ZERO
|
||||
match Global.main.costume:
|
||||
|
@ -364,7 +345,6 @@ func _on_anim_speed_value_changed(value):
|
|||
$Animation/animSpeedLabel.text = "animation speed: " + str(value)
|
||||
Global.heldSprite.animSpeed = value
|
||||
|
||||
|
||||
func _on_anim_frames_value_changed(value):
|
||||
$Animation/animFramesLabel.text = "sprite frames: " + str(value)
|
||||
Global.heldSprite.frames = value
|
||||
|
@ -378,15 +358,14 @@ func _on_clip_linked_toggled(button_pressed):
|
|||
|
||||
func _on_delete_pressed():
|
||||
Global.heldSprite.toggle = "null"
|
||||
$VisToggle/setToggle/Label.text = 'toggle: "' + Global.heldSprite.toggle + '"'
|
||||
$VisToggle/setToggle/Label.text = "toggle: \"" + Global.heldSprite.toggle + "\""
|
||||
Global.heldSprite.makeVis()
|
||||
|
||||
|
||||
func _on_set_toggle_pressed():
|
||||
$VisToggle/setToggle/Label.text = "toggle: AWAITING INPUT"
|
||||
await Global.main.fatfuckingballs
|
||||
|
||||
|
||||
var keys = await Global.main.spriteVisToggles
|
||||
var key = keys[0]
|
||||
Global.heldSprite.toggle = key
|
||||
$VisToggle/setToggle/Label.text = 'toggle: "' + Global.heldSprite.toggle + '"'
|
||||
$VisToggle/setToggle/Label.text = "toggle: \"" + Global.heldSprite.toggle + "\""
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue