aboutsummaryrefslogtreecommitdiff
path: root/main.gd
diff options
context:
space:
mode:
Diffstat (limited to 'main.gd')
-rw-r--r--main.gd65
1 files changed, 65 insertions, 0 deletions
diff --git a/main.gd b/main.gd
new file mode 100644
index 0000000..ec449df
--- /dev/null
+++ b/main.gd
@@ -0,0 +1,65 @@
+extends Control
+
+var power_throttle_timeout: float
+
+onready var popup := get_node("/root/main/popup") as ModalPopup
+onready var file_picker := get_node("/root/main/file_picker") as FileDialog
+onready var stage := get_node("/root/main/stage") as Stage
+onready var database := get_node("/root/main/database") as Database
+onready var controls_sensible_to_keyboard := [
+ self,
+ file_picker,
+]
+
+
+func _init():
+
+ Physics2DServer.set_active(false)
+ PhysicsServer.set_active(false)
+
+ if OS.get_name() == "Android":
+ var permissions := Array(OS.get_granted_permissions())
+ if permissions.has("android.permission.READ_EXTERNAL_STORAGE") == false \
+ or permissions.has("android.permission.WRITE_EXTERNAL_STORAGE") == false:
+ OS.request_permissions()
+
+
+func _ready():
+ Input.set_use_accumulated_input(false)
+
+
+func _process(delta: float):
+ var keyboard_height: int = OS.get_virtual_keyboard_height()
+ for it in controls_sensible_to_keyboard:
+ it.margin_bottom = -keyboard_height
+
+ if power_throttle_timeout > 0.0:
+ power_throttle_timeout -= delta
+ else:
+ Engine.target_fps = 10
+
+
+func _input(event: InputEvent):
+ Engine.target_fps = 0
+ power_throttle_timeout = 3.5
+
+
+func _unhandled_input(event: InputEvent):
+ Engine.target_fps = 0
+ power_throttle_timeout = 3.5
+
+
+func _notification(what: int):
+ if what == MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST:
+ if popup.visible:
+ popup.call_deferred("dismiss")
+ elif file_picker.visible:
+ file_picker.hide()
+ elif stage.visible:
+ stage.discard_action()
+ elif database.selected_idx != -1:
+ database.clear_selection()
+ else:
+ get_tree().quit()
+
+