From 4495b89ff3b33969ec7db3f00c9b1ad5a0f14cb8 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Tue, 19 May 2020 08:10:02 -0500 Subject: [PATCH] Implement rate on Android in a way that is compatible with the new API. --- TTS.gd | 14 +++++++++----- android/src/games/lightsout/godot/tts/TTS.java | 15 ++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/TTS.gd b/TTS.gd index 8497a5d..d6e844f 100644 --- a/TTS.gd +++ b/TTS.gd @@ -55,25 +55,29 @@ var normal_rate setget , _get_normal_rate var javascript_rate = 50 -func set_rate(rate): +func _set_rate(rate): if rate < self.min_rate: rate = self.min_rate elif rate > self.max_rate: rate = self.max_rate - if tts != null: + if Engine.has_singleton("AndroidTTS"): + return tts.set_rate(rate) + elif tts != null: tts.rate = rate elif OS.has_feature('JavaScript'): javascript_rate = rate -func get_rate(): - if tts != null: +func _get_rate(): + if Engine.has_singleton("AndroidTTS"): + return tts.get_rate() + elif tts != null: return tts.rate elif OS.has_feature('JavaScript'): return javascript_rate else: return 0 -var rate setget set_rate, get_rate +var rate setget _set_rate, _get_rate func _get_rate_percentage(): return range_lerp(self.rate, self.min_rate, self.max_rate, 0, 100) diff --git a/android/src/games/lightsout/godot/tts/TTS.java b/android/src/games/lightsout/godot/tts/TTS.java index b391915..14b182f 100644 --- a/android/src/games/lightsout/godot/tts/TTS.java +++ b/android/src/games/lightsout/godot/tts/TTS.java @@ -32,15 +32,12 @@ public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListe tts.stop(); } + public float get_rate() { + return tts.getSpeechRate(); + } + public void set_rate(Float rate) { - Float newRate; - if (rate <= 50) - newRate = rate / 50; - else { - newRate = rate - 50; - newRate = 1 + (newRate / 5); - } - tts.setSpeechRate(newRate); + tts.setSpeechRate(rate); } public void getInstanceId(int pInstanceId) { @@ -59,7 +56,7 @@ public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListe this.appContext = appActivity.getApplicationContext(); this.tts = new TextToSpeech(this.appContext, this); // Register class name and functions to bind. - registerClass("AndroidTTS", new String[] { "speak", "stop", "set_rate", "getInstanceId" }); + registerClass("AndroidTTS", new String[] { "speak", "stop", "get_rate", "set_rate", "getInstanceId" }); this.activity.runOnUiThread(new Runnable() { public void run() { }