diff options
| author | ilotterytea <iltsu@alright.party> | 2022-12-24 18:17:04 +0600 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2022-12-24 18:17:04 +0600 |
| commit | c6d944bc8d3c86695a25b0a19cb4ab9baf0ec694 (patch) | |
| tree | 43ecf7d5c589c99bff6560a04bf74c2413e776d9 | |
| parent | dd82481dd42f71ef4886f1a63eacf9456883c5d2 (diff) | |
Removed 'android' module because it was moved to maxoning/pocket repository.
| -rw-r--r-- | .github/workflows/release.yml | 32 | ||||
| -rw-r--r-- | android/AndroidManifest.xml | 30 | ||||
| -rw-r--r-- | android/build.gradle | 92 | ||||
| -rw-r--r-- | android/proguard-rules.pro | 42 | ||||
| -rw-r--r-- | android/project.properties | 9 | ||||
| -rw-r--r-- | android/res/drawable-hdpi/maxon.png | bin | 10340 -> 0 bytes | |||
| -rw-r--r-- | android/res/drawable-mdpi/maxon.png | bin | 5249 -> 0 bytes | |||
| -rw-r--r-- | android/res/drawable-xhdpi/maxon.png | bin | 17088 -> 0 bytes | |||
| -rw-r--r-- | android/res/drawable-xxhdpi/maxon.png | bin | 35049 -> 0 bytes | |||
| -rw-r--r-- | android/res/drawable-xxxhdpi/maxon.png | bin | 58327 -> 0 bytes | |||
| -rw-r--r-- | android/res/values/strings.xml | 6 | ||||
| -rw-r--r-- | android/src/com/ilotterytea/maxoning/AndroidLauncher.java | 27 | ||||
| -rw-r--r-- | build.gradle | 27 | ||||
| -rw-r--r-- | core/src/com/ilotterytea/maxoning/screens/MobileMenuScreen.java | 252 | ||||
| -rw-r--r-- | core/src/com/ilotterytea/maxoning/screens/SplashScreen.java | 7 | ||||
| -rw-r--r-- | settings.gradle | 2 |
16 files changed, 3 insertions, 523 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 62cdeb0..2658729 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,31 +26,12 @@ jobs: - name: Build for desktop run: ./gradlew desktop:dist - - name: Build for android - run: ./gradlew android:assembleRelease - - name: Upload the desktop game uses: actions/upload-artifact@v2 with: name: deskjars path: desktop/build/libs/Maxoning.jar - - name: Sign APK file - uses: r0adkll/sign-android-release@v1 - id: sign_apk - with: - releaseDirectory: android/build/outputs/apk/release - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - - - name: Upload the Android game - uses: actions/upload-artifact@v2 - with: - name: apks - path: ${{ steps.sign_apk.outputs.signedReleaseFile }} - release: needs: [ build ] runs-on: ubuntu-latest @@ -81,15 +62,4 @@ jobs: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: deskjars/Maxoning.jar asset_name: Maxoning.jar - asset_content_type: application/x-java-archive - - - name: Upload APK release - uses: actions/upload-release-asset@v1 - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: apks/android-release-unsigned-signed.apk - asset_name: Maxoning.apk - asset_content_type: application/vnd.android.package-archive + asset_content_type: application/x-java-archive
\ No newline at end of file diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml deleted file mode 100644 index 344d39f..0000000 --- a/android/AndroidManifest.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - package="com.ilotterytea.maxoning"> - - <uses-feature android:glEsVersion="0x00020000" android:required="true" /> - <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> - - <application - android:allowBackup="true" - android:fullBackupContent="true" - android:icon="@drawable/maxon" - android:isGame="true" - android:appCategory="game" - android:label="@string/app_name" - tools:ignore="UnusedAttribute"> - <activity - android:name="com.ilotterytea.maxoning.AndroidLauncher" - android:label="@string/app_name" - android:screenOrientation="portrait" - android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize|screenLayout" - android:exported="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> - -</manifest> diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 09a505a..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,92 +0,0 @@ -android { - buildToolsVersion "33.0.1" - compileSdkVersion 33 - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['../assets'] - jniLibs.srcDirs = ['libs'] - } - - } - packagingOptions { - resources { - excludes += ['META-INF/robovm/ios/robovm.xml'] - } - } - defaultConfig { - applicationId "com.ilotterytea.maxoning" - minSdkVersion 16 - targetSdkVersion 33 - versionCode 1 - versionName "Alpha 1.2" - } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - - -// called every time gradle gets executed, takes the native dependencies of -// the natives configuration, and extracts them to the proper libs/ folders -// so they get packed with the APK. -task copyAndroidNatives { - doFirst { - file("libs/armeabi-v7a/").mkdirs() - file("libs/arm64-v8a/").mkdirs() - file("libs/x86_64/").mkdirs() - file("libs/x86/").mkdirs() - - configurations.natives.copy().files.each { jar -> - def outputDir = null - if (jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a") - if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") - if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64") - if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") - if(outputDir != null) { - copy { - from zipTree(jar) - into outputDir - include "*.so" - } - } - } - } -} - -tasks.whenTaskAdded { packageTask -> - if (packageTask.name.contains("merge") && packageTask.name.contains("JniLibFolders")) { - packageTask.dependsOn 'copyAndroidNatives' - } -} - -task run(type: Exec) { - def path - def localProperties = project.file("../local.properties") - if (localProperties.exists()) { - Properties properties = new Properties() - localProperties.withInputStream { instr -> - properties.load(instr) - } - def sdkDir = properties.getProperty('sdk.dir') - if (sdkDir) { - path = sdkDir - } else { - path = "$System.env.ANDROID_HOME" - } - } else { - path = "$System.env.ANDROID_HOME" - } - - def adb = path + "/platform-tools/adb" - commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.ilotterytea.maxoning/com.ilotterytea.maxoning.AndroidLauncher' -} - -eclipse.project.name = appName + "-android" diff --git a/android/proguard-rules.pro b/android/proguard-rules.pro deleted file mode 100644 index 6e0b079..0000000 --- a/android/proguard-rules.pro +++ /dev/null @@ -1,42 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - --verbose - --dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication --dontwarn com.badlogic.gdx.utils.GdxBuild --dontwarn com.badlogic.gdx.physics.box2d.utils.Box2DBuild --dontwarn com.badlogic.gdx.jnigen.BuildTarget* --dontwarn com.badlogic.gdx.graphics.g2d.freetype.FreetypeBuild - -# Required if using Gdx-Controllers extension --keep class com.badlogic.gdx.controllers.android.AndroidControllers - -# Required if using Box2D extension --keepclassmembers class com.badlogic.gdx.physics.box2d.World { - boolean contactFilter(long, long); - void beginContact(long); - void endContact(long); - void preSolve(long, long); - void postSolve(long, long); - boolean reportFixture(long); - float reportRayFixture(long, float, float, float, float, float); -} diff --git a/android/project.properties b/android/project.properties deleted file mode 100644 index 3fefa92..0000000 --- a/android/project.properties +++ /dev/null @@ -1,9 +0,0 @@ -# This file is used by the Eclipse ADT plugin. It is unnecessary for IDEA and Android Studio projects, which -# configure Proguard and the Android target via the build.gradle file. - -# To enable ProGuard to work with Eclipse ADT, uncomment this (available properties: sdk.dir, user.home) -# and ensure proguard.jar in the Android SDK is up to date (or alternately reduce the android target to 23 or lower): -# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-rules.pro - -# Project target. -target=android-19 diff --git a/android/res/drawable-hdpi/maxon.png b/android/res/drawable-hdpi/maxon.png Binary files differdeleted file mode 100644 index 8ed0628..0000000 --- a/android/res/drawable-hdpi/maxon.png +++ /dev/null diff --git a/android/res/drawable-mdpi/maxon.png b/android/res/drawable-mdpi/maxon.png Binary files differdeleted file mode 100644 index f195939..0000000 --- a/android/res/drawable-mdpi/maxon.png +++ /dev/null diff --git a/android/res/drawable-xhdpi/maxon.png b/android/res/drawable-xhdpi/maxon.png Binary files differdeleted file mode 100644 index 5c1bdb2..0000000 --- a/android/res/drawable-xhdpi/maxon.png +++ /dev/null diff --git a/android/res/drawable-xxhdpi/maxon.png b/android/res/drawable-xxhdpi/maxon.png Binary files differdeleted file mode 100644 index 324d127..0000000 --- a/android/res/drawable-xxhdpi/maxon.png +++ /dev/null diff --git a/android/res/drawable-xxxhdpi/maxon.png b/android/res/drawable-xxxhdpi/maxon.png Binary files differdeleted file mode 100644 index e73c52c..0000000 --- a/android/res/drawable-xxxhdpi/maxon.png +++ /dev/null diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml deleted file mode 100644 index cbe6c20..0000000 --- a/android/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - - <string name="app_name">Maxon Petting Simulator</string> - -</resources> diff --git a/android/src/com/ilotterytea/maxoning/AndroidLauncher.java b/android/src/com/ilotterytea/maxoning/AndroidLauncher.java deleted file mode 100644 index e6d3551..0000000 --- a/android/src/com/ilotterytea/maxoning/AndroidLauncher.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ilotterytea.maxoning; - -import android.Manifest; -import android.content.pm.PackageManager; -import android.os.Build; -import android.os.Bundle; - -import com.badlogic.gdx.backends.android.AndroidApplication; -import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; -import com.ilotterytea.maxoning.MaxonGame; - -public class AndroidLauncher extends AndroidApplication { - @Override - protected void onCreate (Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); - - // Granting the permissions: - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (this.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - this.requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 100); - } - } - - initialize(new MaxonGame(), config); - } -} diff --git a/build.gradle b/build.gradle index fec8450..9be4df5 100644 --- a/build.gradle +++ b/build.gradle @@ -58,33 +58,6 @@ project(":desktop") { } } -project(":android") { - apply plugin: "com.android.application" - apply plugin: "kotlin-android" - - configurations { natives } - - dependencies { - implementation project(":core") - api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" - api "com.badlogicgames.gdx-controllers:gdx-controllers-android:$gdxControllersVersion" - api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" - natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a" - natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a" - natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86" - natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64" - api "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion" - api "com.badlogicgames.gdx:gdx-ai:$aiVersion" - api "com.badlogicgames.ashley:ashley:$ashleyVersion" - api "de.golfgl.gdxgamesvcs:gdx-gamesvcs-android-gpgs:1.1.0" - api "de.tomgrill.gdxdialogs:gdx-dialogs-android:1.3.0" - } -} - project(":core") { apply plugin: "kotlin" diff --git a/core/src/com/ilotterytea/maxoning/screens/MobileMenuScreen.java b/core/src/com/ilotterytea/maxoning/screens/MobileMenuScreen.java deleted file mode 100644 index 4c8450c..0000000 --- a/core/src/com/ilotterytea/maxoning/screens/MobileMenuScreen.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.ilotterytea.maxoning.screens; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Screen; -import com.badlogic.gdx.audio.Music; -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.TextureAtlas; -import com.badlogic.gdx.math.Interpolation; -import com.badlogic.gdx.scenes.scene2d.InputEvent; -import com.badlogic.gdx.scenes.scene2d.Stage; -import com.badlogic.gdx.scenes.scene2d.actions.Actions; -import com.badlogic.gdx.scenes.scene2d.actions.RepeatAction; -import com.badlogic.gdx.scenes.scene2d.ui.*; -import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import com.badlogic.gdx.utils.Align; -import com.badlogic.gdx.utils.viewport.FillViewport; -import com.ilotterytea.maxoning.MaxonConstants; -import com.ilotterytea.maxoning.MaxonGame; -import com.ilotterytea.maxoning.anim.SpriteUtils; -import com.ilotterytea.maxoning.player.MaxonSavegame; -import com.ilotterytea.maxoning.ui.AnimatedImage; -import com.ilotterytea.maxoning.ui.MovingChessBackground; -import com.ilotterytea.maxoning.utils.I18N; -import com.ilotterytea.maxoning.utils.serialization.GameDataSystem; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Locale; - -/** - * Menu screen for mobile devices. - * @since 1.3 - * @author ilotterytea - */ -public class MobileMenuScreen implements Screen { - private final MaxonGame game; - private Stage stage; - - private Skin skin; - - private MovingChessBackground bg; - - private MaxonSavegame sav; - private Music menuMusic; - - public MobileMenuScreen(MaxonGame game) { - this.game = game; - } - - @Override - public void show() { - stage = new Stage(new FillViewport(Gdx.graphics.getWidth() / game.prefs.getFloat("scale", 2f), Gdx.graphics.getHeight() / game.prefs.getFloat("scale", 2f))); - skin = game.assetManager.get("MainSpritesheet.skin", Skin.class); - - TextureAtlas brandAtlas = game.assetManager.get("sprites/gui/brand.atlas", TextureAtlas.class); - - sav = GameDataSystem.load("latest.sav"); - menuMusic = game.assetManager.get("mus/menu/mus_menu_loop.ogg", Music.class); - menuMusic.setLooping(true); - menuMusic.play(); - - // Background: - bg = new MovingChessBackground( - 1, - 1, - stage.getWidth(), - stage.getHeight(), - skin.getDrawable("tile_01"), - skin.getDrawable("tile_02") - ); - - // Cat: - AnimatedImage cat = new AnimatedImage( - SpriteUtils.splitToTextureRegions(game.assetManager.get("sprites/sheet/loadingCircle.png", Texture.class), - 112, 112, 10, 5 - ) - ); - cat.setOrigin( - cat.getWidth() / 2f, - cat.getHeight() / 2f - ); - cat.setPosition( - (stage.getWidth() / 2f) - (cat.getWidth() / 2f), - (stage.getHeight() / 2f) - (cat.getHeight() / 2f) + 128f - ); - cat.addAction( - Actions.repeat( - RepeatAction.FOREVER, - Actions.sequence( - Actions.rotateTo(-5, 5f, Interpolation.smoother), - Actions.rotateTo(5, 5f, Interpolation.smoother) - ) - ) - ); - - stage.addActor(cat); - - // - - - - - - L O G O - - - - - - : - Image logoImage = new Image(brandAtlas.findRegion("brand")); - logoImage.setScale(0.5f); - logoImage.setPosition( - (stage.getWidth() / 2f) - (logoImage.getWidth() / 2f), - (stage.getHeight() / 2f) - (logoImage.getHeight() / 2f) + 128f - ); - logoImage.setOrigin( - logoImage.getWidth() / 2f, - logoImage.getHeight() / 2f - ); - logoImage.addAction( - Actions.repeat( - RepeatAction.FOREVER, - Actions.sequence( - Actions.parallel( - Actions.rotateTo(-5, 5f, Interpolation.smoother), - Actions.scaleTo(0.45f, 0.45f, 5f, Interpolation.smoother) - ), - Actions.parallel( - Actions.rotateTo(5, 5f, Interpolation.smoother), - Actions.scaleTo(0.5f, 0.5f, 5f, Interpolation.smoother) - ) - ) - ) - ); - - - stage.addActor(logoImage); - - // - - - - - - M E N U - - - - - - : - Table menuTable = new Table(); - menuTable.setSize(stage.getWidth(), stage.getHeight()); - menuTable.setPosition(0, 0); - menuTable.align(Align.bottom | Align.center); - menuTable.pad(20f); - - stage.addActor(menuTable); - - // Play button: - final TextButton startBtn = new TextButton( - (sav == null) ? - game.locale.TranslatableText("menu.playGame") : - game.locale.TranslatableText("menu.continue"), - skin - ); - - startBtn.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - try { - game.setScreen(new GameScreen( - game, - (sav == null) ? new MaxonSavegame() : sav, - 0 - )); - } catch (IOException | ClassNotFoundException e) { - throw new RuntimeException(e); - } - } - }); - - menuTable.add(startBtn).width(256f).pad(6f).row(); - - // Table for lang and reset buttons: - Table langResetTable = new Table(); - menuTable.add(langResetTable).width(256f).row(); - - // Language button: - String[] fh4Locale = game.locale.getFileHandle().nameWithoutExtension().split("_"); - Locale locale = new Locale(fh4Locale[0], fh4Locale[1]); - final TextButton langBtn = new TextButton(locale.getDisplayLanguage(), skin); - - langBtn.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - int index = 0; - ArrayList<FileHandle> fhArray = new ArrayList<>(); - fhArray.add(MaxonConstants.FILE_RU_RU); - fhArray.add(MaxonConstants.FILE_EN_US); - - if (fhArray.indexOf(game.locale.getFileHandle()) + 1 < fhArray.size()) { - index = fhArray.indexOf(game.locale.getFileHandle()) + 1; - } - - FileHandle fhNext = fhArray.get(index); - - game.locale = new I18N(fhNext); - game.prefs.putString("lang", fhNext.nameWithoutExtension()); - game.prefs.flush(); - - String[] fh4Locale = fhNext.nameWithoutExtension().split("_"); - Locale locale = new Locale(fh4Locale[0], fh4Locale[1]); - - langBtn.setText(locale.getDisplayLanguage()); - game.setScreen(new SplashScreen(game)); - } - }); - - langResetTable.add(langBtn).width(256f);//.padRight(6f); - - // Reset save button: - //TextButton resetBtn = new TextButton("Reset", widgetSkin); - //langResetTable.add(resetBtn).width(125f); - - Gdx.input.setInputProcessor(stage); - - render(Gdx.graphics.getDeltaTime()); - } - - @Override - public void render(float delta) { - Gdx.gl.glClearColor(0, 0, 0, 1f); - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - - game.batch.begin(); - - bg.draw(game.batch); - - game.batch.end(); - - stage.draw(); - stage.act(delta); - } - - @Override - public void resize(int width, int height) { - stage.getViewport().update(width, height, true); - - bg.update(width, height); - } - - @Override - public void pause() { - - } - - @Override - public void resume() { - - } - - @Override - public void hide() { - menuMusic.stop(); - dispose(); - } - - @Override - public void dispose() { - stage.dispose(); - } -} diff --git a/core/src/com/ilotterytea/maxoning/screens/SplashScreen.java b/core/src/com/ilotterytea/maxoning/screens/SplashScreen.java index a25a6bf..5170f46 100644 --- a/core/src/com/ilotterytea/maxoning/screens/SplashScreen.java +++ b/core/src/com/ilotterytea/maxoning/screens/SplashScreen.java @@ -12,7 +12,6 @@ import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.viewport.FillViewport; import com.ilotterytea.maxoning.MaxonGame; import com.ilotterytea.maxoning.utils.AssetLoading; -import com.ilotterytea.maxoning.utils.OsUtils; public class SplashScreen implements Screen { final MaxonGame game; @@ -59,11 +58,7 @@ public class SplashScreen implements Screen { private void update() { if (game.assetManager.update()) { AssetLoading.registerItems(game.assetManager, game.locale); - if (OsUtils.isAndroid || OsUtils.isIos) { - game.setScreen(new MobileMenuScreen(game)); - } else { - game.setScreen(new MenuScreen(game)); - } + game.setScreen(new MenuScreen(game)); dispose(); } } diff --git a/settings.gradle b/settings.gradle index 77ae463..74fc652 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include 'desktop', 'android', 'core'
\ No newline at end of file +include 'desktop', 'core'
\ No newline at end of file |
