RingOfRaces/modules/godot_remote/godot_remote_client/AssetsInSuperSecureAndUn1queF0lder/Scripts/Global.gd

333 lines
11 KiB
GDScript3
Raw Normal View History

extends Node
enum RateState{
NotNow = 0,
No = 1,
Yes = 2,
}
enum StatInfoState{
Hidden = 0,
Simple = 1,
Detailed = 2,
}
signal show_stats_changed(state)
const CLIENT_VERSION := 0
const SAVE_FILE := "user://settings.json"
var IsMobile : bool = false
var Billings : Node = null
var VersionChanged : bool = false
var PreviousVersion : String = ""
var AppRuns : int = 0
var TotalAppRuns : int = 0
var TouchesToOpenSettings : int = 5 setget set_touches_to_open_settings
var UserRateState : int = RateState.NotNow setget set_user_rate_state
var device_id : String = "" setget set_device_id
var connection_type : int = 0 setget set_con_type
var ip : String = "127.0.0.1" setget set_ip
var port : int = 52341 setget set_port
var stretch_mode : int = 0 setget set_stretch_mode
var target_send_fps : int = 60 setget set_target_send_fps
var texture_filtering : bool = true setget set_texture_filtering
var password : String = "" setget set_password
var sync_viewport_orientation : bool = true setget set_sync_viewport_orientation
var sync_viewport_aspect_ratio : bool = true setget set_sync_viewport_aspect_ratio
var keepscreenon : bool = false setget set_keep_screen_on
var capture_input_when_custom_scene : bool = false setget set_capture_input_when_custom_scene
var show_stats : int = StatInfoState.Hidden setget set_show_stats
var override_server_settings : bool = false setget set_override_settings
var sync_server_settings : bool = false setget set_sync_server_settings
var server_video_stream : bool = true setget set_server_video_stream
var server_compression_type : int = 1 setget set_server_compression_type
var server_jpg_quality : int = 80 setget set_server_jpg_quality
var server_render_scale : float = 0.3 setget set_server_render_scale
var server_skip_fps : int = 0 setget set_server_skip_fps
func get_random_hash(length : int = 6) -> String:
return str(randi() * randi()).md5_text().substr(0,length)
func _enter_tree():
IsMobile = OS.has_feature("mobile")
#IsMobile = true
var d = Directory.new()
d.open("res://") # godot in some versions print error if derectory not opened
var f = "res://An0therUn1queN@meOfF0lderForSecur1tyPurp0ses/AndroidBilling.gd"
var fc = f+"c"
if OS.has_feature("Android") and OS.has_feature("billing") and (d.file_exists(f) or d.file_exists(fc)):
var b = load(f)
if b:
print("Android Billings Loaded")
Billings = b.new()
add_child(Billings)
func _ready():
randomize()
device_id = get_random_hash()
if OS.has_feature("standalone") and not OS.has_feature("mobile"):
OS.window_size = Vector2(1280, 720)
_load_settings()
GodotRemote.create_remote_device(C.GodotRemote_DEVICE_CLIENT)
var d = GodotRemote.get_device()
d.capture_when_hover = false
_set_all_values()
_setup_notifications_style()
_add_runs()
#GodotRemote.set_log_level(GodotRemote.LL_Debug)
yield(get_tree(), "idle_frame")
if Billings:
Billings._init_billings()
func _add_runs():
AppRuns += 1
TotalAppRuns += 1
_save_settings()
func _setup_notifications_style():
yield(get_tree(), "idle_frame")
var s = GodotRemote.notifications_style
s.panel_style = load("res://AssetsInSuperSecureAndUn1queF0lder/Styles/NotificationPanelStyle.tres")
s.close_button_theme = load("res://AssetsInSuperSecureAndUn1queF0lder/Styles/MainTheme.tres")
s.title_font = load("res://AssetsInSuperSecureAndUn1queF0lder/Styles/NotificationPanelTitleStyle.tres")
s.text_font = load("res://AssetsInSuperSecureAndUn1queF0lder/Styles/NotificationPanelTextStyle.tres")
s.close_button_icon = load("res://AssetsInSuperSecureAndUn1queF0lder/Textures/Notifications/Close_icon.png")
s.set_notification_icon(C.GRNotifications_NOTIFICATION_ICON_SUCCESS, load("res://AssetsInSuperSecureAndUn1queF0lder/Textures/Notifications/Connected_icon.png"))
s.set_notification_icon(C.GRNotifications_NOTIFICATION_ICON_FAIL, load("res://AssetsInSuperSecureAndUn1queF0lder/Textures/Notifications/Disconnected_icon.png"))
s.set_notification_icon(C.GRNotifications_NOTIFICATION_ICON_ERROR, load("res://AssetsInSuperSecureAndUn1queF0lder/Textures/Notifications/Error_icon.png"))
s.set_notification_icon(C.GRNotifications_NOTIFICATION_ICON_WARNING, load("res://AssetsInSuperSecureAndUn1queF0lder/Textures/Notifications/Warning_icon.png"))
GodotRemote.notifications_style = s
func _notification(what):
match what:
NOTIFICATION_WM_QUIT_REQUEST:
_save_settings()
func _set_all_values():
var dev = GodotRemote.get_device()
var i_w : int = dev.get_status()
if i_w == C.GRDevice_STATUS_WORKING:
dev.stop()
dev.device_id = device_id
dev.set_address_port(ip, port)
dev.connection_type = connection_type
dev.stretch_mode = stretch_mode
dev.target_send_fps = target_send_fps
dev.texture_filtering = texture_filtering
dev.password = password
dev.server_settings_syncing = sync_server_settings
dev.viewport_orientation_syncing = sync_viewport_orientation
dev.viewport_aspect_ratio_syncing = sync_viewport_aspect_ratio
OS.keep_screen_on = keepscreenon
if override_server_settings:
dev.set_server_setting(C.GRDevice_SERVER_PARAM_VIDEO_STREAM_ENABLED, server_video_stream)
dev.set_server_setting(C.GRDevice_SERVER_PARAM_COMPRESSION_TYPE, server_compression_type)
dev.set_server_setting(C.GRDevice_SERVER_PARAM_JPG_QUALITY, server_jpg_quality)
dev.set_server_setting(C.GRDevice_SERVER_PARAM_RENDER_SCALE, server_render_scale)
dev.set_server_setting(C.GRDevice_SERVER_PARAM_SKIP_FRAMES, server_skip_fps)
if i_w:
dev.start()
func _save_settings():
var d = Dictionary()
d["m_version"] = get_version()
d["app_runs"] = AppRuns
d["total_app_runs"] = TotalAppRuns
d["touches_to_open_settings"] = TouchesToOpenSettings
d["user_rate_state"] = UserRateState
d["device_id"] = device_id
d["con_type"] = connection_type
d["ip"] = ip
d["port"] = port
d["stretch"] = stretch_mode
d["stats"] = show_stats
d["target_fps"] = target_send_fps
d["t_filter"] = texture_filtering
d["password"] = password
d["v_orient"] = sync_viewport_orientation
d["v_aspect"] = sync_viewport_aspect_ratio
d["keepscreenon"] = keepscreenon
d["capture_input_when_custom_scene"] = capture_input_when_custom_scene
d["ov_s_settings"] = override_server_settings
d["sync_s_settings"] = sync_server_settings
d["s_video_stream"] = server_video_stream
d["s_jpg_quality"] = server_jpg_quality
d["s_render_scale"] = server_render_scale
d["s_skip_fps"] = server_skip_fps
d["s_compression_type"] = server_compression_type
var dir = Directory.new()
dir.open("user://")
if dir.file_exists(SAVE_FILE):
var err = dir.remove(SAVE_FILE)
if err != OK:
return
var f = File.new()
var err = f.open(SAVE_FILE, File.WRITE)
if err == OK:
f.store_string(to_json(d))
f.close()
func _load_settings():
var f = File.new()
if f.file_exists(SAVE_FILE):
var err = f.open(SAVE_FILE, File.READ)
if err == OK:
var txt = f.get_as_text()
f.close()
var d = parse_json(txt)
PreviousVersion = _safe_get_from_dict(d, "m_version", get_version())
VersionChanged = PreviousVersion != get_version()
if VersionChanged:
AppRuns = 0
else:
AppRuns = _safe_get_from_dict(d, "app_runs", AppRuns)
TotalAppRuns = _safe_get_from_dict(d, "total_app_runs", TotalAppRuns)
TouchesToOpenSettings = _safe_get_from_dict(d, "touches_to_open_settings", TouchesToOpenSettings)
UserRateState = _safe_get_from_dict(d, "user_rate_state", UserRateState)
device_id = _safe_get_from_dict(d, "device_id", device_id)
connection_type = _safe_get_from_dict(d, "con_type", connection_type)
ip = _safe_get_from_dict(d, "ip", ip)
port = _safe_get_from_dict(d, "port", port)
stretch_mode = _safe_get_from_dict(d, "stretch", stretch_mode)
show_stats = _safe_get_from_dict(d, "stats", show_stats)
target_send_fps = _safe_get_from_dict(d, "target_fps", target_send_fps)
texture_filtering = _safe_get_from_dict(d, "t_filter", texture_filtering)
password = _safe_get_from_dict(d, "password", password)
sync_viewport_orientation = _safe_get_from_dict(d, "v_orient", sync_viewport_orientation)
sync_viewport_aspect_ratio = _safe_get_from_dict(d, "v_aspect", sync_viewport_aspect_ratio)
keepscreenon = _safe_get_from_dict(d, "keepscreenon", keepscreenon)
capture_input_when_custom_scene = _safe_get_from_dict(d, "capture_input_when_custom_scene", capture_input_when_custom_scene)
override_server_settings = _safe_get_from_dict(d, "ov_s_settings", override_server_settings)
sync_server_settings = _safe_get_from_dict(d, "sync_s_settings", sync_server_settings)
server_video_stream = _safe_get_from_dict(d, "s_video_stream", server_video_stream)
server_jpg_quality = _safe_get_from_dict(d, "s_jpg_quality", server_jpg_quality)
server_render_scale = _safe_get_from_dict(d, "s_render_scale", server_render_scale)
server_skip_fps = _safe_get_from_dict(d, "s_skip_fps", server_skip_fps)
server_compression_type = _safe_get_from_dict(d, "s_compression_type", server_compression_type)
func _safe_get_from_dict(dict:Dictionary, val, def):
if dict.has(val):
return dict[val]
return def
func get_version() -> String:
return "%s.%d" % [GodotRemote.get_version(), CLIENT_VERSION]
func set_touches_to_open_settings(val : int):
TouchesToOpenSettings = val
_save_settings()
func set_user_rate_state(val : int):
UserRateState = val
_save_settings()
func set_device_id(val : String):
device_id = val
_save_settings()
func set_con_type(val : int):
connection_type = val
_save_settings()
func set_ip(val : String):
ip = val
_save_settings()
func set_port(val : int):
port = val
_save_settings()
func set_stretch_mode(val : int):
stretch_mode = val
_save_settings()
func set_show_stats(val : int):
show_stats = val
_save_settings()
emit_signal("show_stats_changed", val)
func set_target_send_fps(val : int):
target_send_fps = val
_save_settings()
func set_texture_filtering(val : bool):
texture_filtering = val
_save_settings()
func set_password(val : String):
password = val
_save_settings()
func set_sync_viewport_orientation(val : bool):
sync_viewport_orientation = val
_save_settings()
func set_sync_viewport_aspect_ratio(val : bool):
sync_viewport_aspect_ratio = val
_save_settings()
func set_keep_screen_on(val : bool):
keepscreenon = val
_save_settings()
func set_capture_input_when_custom_scene(val : bool):
capture_input_when_custom_scene = val
_save_settings()
func set_override_settings(val : bool):
override_server_settings = val
_save_settings()
func set_sync_server_settings(val : bool):
sync_server_settings = val
_save_settings()
func set_server_video_stream(val : bool):
server_video_stream = val
_save_settings()
func set_server_compression_type(val : int):
server_compression_type = val
_save_settings()
func set_server_jpg_quality(val : int):
server_jpg_quality = val
_save_settings()
func set_server_render_scale(val : float):
server_render_scale = val
_save_settings()
func set_server_skip_fps(val : int):
server_skip_fps = val
_save_settings()