blob: 37e4765a5e07a445bc1878ec5365553e89beea97 [file] [log] [blame]
/*******************************************************************************
* Copyright 2011 See AUTHORS file.
*
* 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 com.badlogic.gdx.setup;
import java.util.HashMap;
public class DependencyBank {
//Versions
static String libgdxVersion = "1.9.3";
//Temporary snapshot version, we need a more dynamic solution for pointing to the latest nightly
static String libgdxNightlyVersion = "1.9.4-SNAPSHOT";
static String roboVMVersion = "2.1.0";
static String moeVersion = "1.1.0.final-1";
static String buildToolsVersion = "23.0.1";
static String androidAPILevel = "20";
static String gwtVersion = "2.6.0";
//Repositories
static String mavenLocal = "mavenLocal()";
static String mavenCentral = "mavenCentral()";
static String jCenter = "jcenter()";
static String libGDXSnapshotsUrl = "https://oss.sonatype.org/content/repositories/snapshots/";
static String libGDXReleaseUrl = "https://oss.sonatype.org/content/repositories/releases/";
static String moeLocalUrl = "uri(System.getenv(\"INTEL_MULTI_OS_ENGINE_HOME\") + \"/gradle\")";
//Project plugins
static String gwtPluginImport = "de.richsource.gradle.plugins:gwt-gradle-plugin:0.6";
static String androidPluginImport = "com.android.tools.build:gradle:1.5.0";
static String roboVMPluginImport = "com.mobidevelop.robovm:robovm-gradle-plugin:" + roboVMVersion;
static String moePluginImport = "com.intel.gradle:moeGradlePlugin:" + moeVersion;
//Extension versions
static String box2DLightsVersion = "1.4";
static String ashleyVersion = "1.7.0";
static String aiVersion = "1.8.0";
HashMap<ProjectDependency, Dependency> gdxDependencies = new HashMap<ProjectDependency, Dependency>();
public DependencyBank() {
for (ProjectDependency projectDep : ProjectDependency.values()) {
Dependency dependency = new Dependency(projectDep.name(),
projectDep.getGwtInherits(),
projectDep.getDependencies(ProjectType.CORE),
projectDep.getDependencies(ProjectType.DESKTOP),
projectDep.getDependencies(ProjectType.ANDROID),
projectDep.getDependencies(ProjectType.IOS),
projectDep.getDependencies(ProjectType.IOSMOE),
projectDep.getDependencies(ProjectType.HTML));
gdxDependencies.put(projectDep, dependency);
}
}
public Dependency getDependency(ProjectDependency gdx) {
return gdxDependencies.get(gdx);
}
/**
* This enum will hold all dependencies available for libgdx, allowing the setup to pick the ones needed by default,
* and allow the option to choose extensions as the user wishes.
* <p/>
* These depedency strings can be later used in a simple gradle plugin to manipulate the users project either after/before
* project generation
*
* @see Dependency for the object that handles sub-module dependencies. If no dependency is found for a sub-module, ie
* FreeTypeFont for gwt, an exception is thrown so the user can be notified of incompatability
*/
public enum ProjectDependency {
GDX(
new String[]{"com.badlogicgames.gdx:gdx:$gdxVersion"},
new String[]{"com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-backend-android:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.mobidevelop.robovm:robovm-rt:$roboVMVersion", "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion", "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-backend-moe:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion", "com.badlogicgames.gdx:gdx:$gdxVersion:sources", "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"},
new String[]{"com.badlogic.gdx.backends.gdx_backends_gwt"},
"Core Library for LibGDX"
),
BULLET(
new String[]{"com.badlogicgames.gdx:gdx-bullet:$gdxVersion"},
new String[]{"com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-bullet:$gdxVersion", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"},
null,
null,
"3D Collision Detection and Rigid Body Dynamics"
),
FREETYPE(
new String[]{"com.badlogicgames.gdx:gdx-freetype:$gdxVersion"},
new String[]{"com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-freetype:$gdxVersion", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"},
null,
null,
"Generate BitmapFonts from .ttf font files"
),
TOOLS(
new String[]{},
new String[]{"com.badlogicgames.gdx:gdx-tools:$gdxVersion"},
new String[]{},
new String[]{},
new String[]{},
new String[]{},
new String[]{},
"Collection of tools, including 2D/3D particle editors, texture packers, and file processors"
),
CONTROLLERS(
new String[]{"com.badlogicgames.gdx:gdx-controllers:$gdxVersion"},
new String[]{"com.badlogicgames.gdx:gdx-controllers-desktop:$gdxVersion", "com.badlogicgames.gdx:gdx-controllers-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-controllers:$gdxVersion", "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"},
new String[]{}, // works on iOS but never reports any controllers :)
new String[]{}, // works on iOS but never reports any controllers :)
new String[]{"com.badlogicgames.gdx:gdx-controllers:$gdxVersion:sources", "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion", "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion:sources"},
new String[]{"com.badlogic.gdx.controllers.controllers-gwt"},
"Controller/Gamepad API"
),
BOX2D(
new String[]{"com.badlogicgames.gdx:gdx-box2d:$gdxVersion"},
new String[]{"com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-box2d:$gdxVersion", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-box2d:$gdxVersion:sources", "com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources"},
new String[]{"com.badlogic.gdx.physics.box2d.box2d-gwt"},
"2D Physics Library"
),
BOX2DLIGHTS(
new String[]{"com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"},
new String[]{},
new String[]{"com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"},
new String[]{},
new String[]{},
new String[]{"com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion:sources"},
new String[]{"Box2DLights"},
"2D Lighting framework that utilises Box2D"
),
ASHLEY(
new String[]{"com.badlogicgames.ashley:ashley:$ashleyVersion"},
new String[]{},
new String[]{"com.badlogicgames.ashley:ashley:$ashleyVersion"},
new String[]{},
new String[]{},
new String[]{"com.badlogicgames.ashley:ashley:$ashleyVersion:sources"},
new String[]{"com.badlogic.ashley_gwt"},
"Lightweight Entity framework"
),
AI(
new String[]{"com.badlogicgames.gdx:gdx-ai:$aiVersion"},
new String[]{},
new String[]{"com.badlogicgames.gdx:gdx-ai:$aiVersion"},
new String[]{},
new String[]{},
new String[]{"com.badlogicgames.gdx:gdx-ai:$aiVersion:sources"},
new String[]{"com.badlogic.gdx.ai"},
"Artificial Intelligence framework"
);
private String[] coreDependencies;
private String[] desktopDependencies;
private String[] androidDependencies;
private String[] iosDependencies;
private String[] iosMoeDependencies;
private String[] gwtDependencies;
private String[] gwtInherits;
private String description;
ProjectDependency(String[] coreDeps, String[] desktopDeps, String[] androidDeps, String[] iosDeps, String[] iosMoeDeps, String[] gwtDeps, String[] gwtInhertis, String description) {
this.coreDependencies = coreDeps;
this.desktopDependencies = desktopDeps;
this.androidDependencies = androidDeps;
this.iosDependencies = iosDeps;
this.iosMoeDependencies = iosMoeDeps;
this.gwtDependencies = gwtDeps;
this.gwtInherits = gwtInhertis;
this.description = description;
}
public String[] getDependencies(ProjectType type) {
switch (type) {
case CORE:
return coreDependencies;
case DESKTOP:
return desktopDependencies;
case ANDROID:
return androidDependencies;
case IOS:
return iosDependencies;
case IOSMOE:
return iosMoeDependencies;
case HTML:
return gwtDependencies;
}
return null;
}
public String[] getGwtInherits() {
return gwtInherits;
}
public String getDescription() {
return description;
}
}
public enum ProjectType {
CORE("core", new String[]{"java"}),
DESKTOP("desktop", new String[]{"java"}),
ANDROID("android", new String[]{"android"}),
IOS("ios", new String[]{"java", "robovm"}),
IOSMOE("ios-moe", new String[] {"moe"}),
HTML("html", new String[]{"gwt", "war"});
private final String name;
private final String[] plugins;
ProjectType(String name, String plugins[]) {
this.name = name;
this.plugins = plugins;
}
public String getName() {
return name;
}
public String[] getPlugins() {
return plugins;
}
}
}