salmon-wallpaper/proj.android-studio/app/src/main/java/fishrungames/mountainwallpaper/MountainWallpaper.kt
2018-11-18 21:43:08 +05:00

128 lines
4.1 KiB
Kotlin
Executable File

/*
* Copyright 2014 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package fishrungames.mountainwallpaper
import android.content.*
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.preference.PreferenceManager
import android.view.GestureDetector
import android.view.MotionEvent
import android.view.SurfaceHolder
import fishrungames.salmonengineandroid.EngineWrapper
class MountainWallpaper : GLWallpaperService(), SharedPreferences.OnSharedPreferenceChangeListener {
init
{
EngineWrapper.LoadSalmonEngineLibrary();
//JniWrapper.LoadLibrary();
}
override fun onCreate() {
super.onCreate()
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
EngineWrapper.SetActivityInstance(this)
EngineWrapper.SetupEnviroment()
var apkFilePath: String? = null
var appInfo: ApplicationInfo? = null
val packMgmr = this.packageManager
try {
appInfo = packMgmr.getApplicationInfo("fishrungames.mountainwallpaper", 0)
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
throw RuntimeException("Unable to locate assets, aborting...")
}
apkFilePath = appInfo!!.sourceDir
EngineWrapper.SetupApkFilePath(apkFilePath)
}
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
return START_STICKY
}
override fun onCreateEngine(): Engine {
return MuzeiWallpaperEngine()
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
if (key.compareTo("Timeofday", ignoreCase = true) == 0) {
val time = Integer.parseInt(sharedPreferences.getString("Timeofday", "0")!!)
JniWrapper.SetTimeOfDayPref(time)
}
if (key.compareTo("Snow", ignoreCase = true) == 0) {
JniWrapper.SetSnowPref(sharedPreferences.getBoolean("Snow", false))
}
}
inner class MuzeiWallpaperEngine : GLWallpaperService.GLEngine()
{
private lateinit var renderer: WallpaperRenderer
private val gestureListener = object : GestureDetector.SimpleOnGestureListener() {
override fun onDown(e: MotionEvent): Boolean {
return true
}
}
private val gestureDetector: GestureDetector = GestureDetector(this@MountainWallpaper,
gestureListener)
override fun onCreate(surfaceHolder: SurfaceHolder) {
super.onCreate(surfaceHolder)
setEGLContextClientVersion(2)
setRenderer(WallpaperRenderer())
renderMode = RENDERMODE_CONTINUOUSLY
requestRender()
// Use the MuzeiWallpaperService's lifecycle to wait for the user to unlock
setTouchEventsEnabled(true)
setOffsetNotificationsEnabled(true)
}
override fun onOffsetsChanged(
xOffset: Float,
yOffset: Float,
xOffsetStep: Float,
yOffsetStep: Float,
xPixelOffset: Int,
yPixelOffset: Int
) {
super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset,
yPixelOffset)
JniWrapper.SetOffset(xPixelOffset * xOffsetStep, yPixelOffset * yOffsetStep)
}
override fun onTouchEvent(event: MotionEvent) {
super.onTouchEvent(event)
gestureDetector.onTouchEvent(event)
}
}
}