diff options
author | Fredia Huya-Kouadio <fhuya@meta.com> | 2023-07-14 13:46:24 -0700 |
---|---|---|
committer | Fredia Huya-Kouadio <fhuya@meta.com> | 2023-07-14 13:46:24 -0700 |
commit | b4844e98619766232645d70f80a29c2a53bc2709 (patch) | |
tree | 500a6deee2dfbd36f4356d69a2d5cb762314b03f /plugins/hello_signals/src/main/java | |
parent | 1d19d5912d1ac5bfa3cf6cc30f086aee8f0464f2 (diff) | |
download | godot-android-samples-b4844e98619766232645d70f80a29c2a53bc2709.tar.gz godot-android-samples-b4844e98619766232645d70f80a29c2a53bc2709.tar.bz2 godot-android-samples-b4844e98619766232645d70f80a29c2a53bc2709.zip |
Update the directory structure to make room for additional Godot Android samples besides plugins
Diffstat (limited to 'plugins/hello_signals/src/main/java')
-rw-r--r-- | plugins/hello_signals/src/main/java/fhuyakou/godot/plugin/android/hellosignals/HelloSignalsPlugin.kt | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/plugins/hello_signals/src/main/java/fhuyakou/godot/plugin/android/hellosignals/HelloSignalsPlugin.kt b/plugins/hello_signals/src/main/java/fhuyakou/godot/plugin/android/hellosignals/HelloSignalsPlugin.kt new file mode 100644 index 0000000..d6df7ef --- /dev/null +++ b/plugins/hello_signals/src/main/java/fhuyakou/godot/plugin/android/hellosignals/HelloSignalsPlugin.kt @@ -0,0 +1,59 @@ +package fhuyakou.godot.plugin.android.hellosignals + +import android.util.Log +import org.godotengine.godot.Godot +import org.godotengine.godot.plugin.GodotPlugin +import org.godotengine.godot.plugin.SignalInfo +import org.godotengine.godot.plugin.UsedByGodot +import java.util.concurrent.Executors +import java.util.concurrent.ScheduledFuture +import java.util.concurrent.TimeUnit + +/** + * Exposes a [onButtonPressed] method to the game logic. Invoking the method starts a timer which + * fires a `TikTok` signal every second. Invoking the method a second time stops the timer. + */ +class HelloSignalsPlugin(godot: Godot) : GodotPlugin(godot) { + + companion object { + val TAG = HelloSignalsPlugin::class.java.simpleName + } + + private val tikTokSignalInfo = SignalInfo("TikTok") + private var tikTokTask : ScheduledFuture<*>? = null + + override fun getPluginName() = "HelloSignals" + + override fun getPluginSignals(): Set<SignalInfo> { + Log.i(TAG, "Registering $tikTokSignalInfo") + return setOf(tikTokSignalInfo) + } + + private fun startTikTok(): Boolean { + if (tikTokTask == null || tikTokTask!!.isDone) { + Log.i(TAG, "Starting tiktok...") + tikTokTask = Executors.newSingleThreadScheduledExecutor() + .scheduleAtFixedRate({ emitSignal(tikTokSignalInfo.name) }, 0, 1, TimeUnit.SECONDS) + return true + } + return false + } + + private fun stopTikTok() { + if (tikTokTask != null) { + if (!tikTokTask!!.isDone) { + Log.i(TAG, "Stopping tiktok...") + tikTokTask!!.cancel(true) + } + tikTokTask = null + } + } + + @UsedByGodot + private fun onButtonPressed() { + Log.i(TAG, "OnButtonPressed from Kotlin") + if (!startTikTok()) { + stopTikTok() + } + } +} |