diff options
Diffstat (limited to 'html')
| -rw-r--r-- | html/build.gradle | 157 | ||||
| -rw-r--r-- | html/src/main/java/kz/ilotterytea/frogartha/GdxDefinition.gwt.xml | 35 | ||||
| -rw-r--r-- | html/src/main/java/kz/ilotterytea/frogartha/GdxDefinitionSuperdev.gwt.xml | 9 | ||||
| -rw-r--r-- | html/src/main/java/kz/ilotterytea/frogartha/gwt/GwtLauncher.java | 28 | ||||
| -rw-r--r-- | html/webapp/WEB-INF/web.xml | 3 | ||||
| -rw-r--r-- | html/webapp/index.html | 31 | ||||
| -rw-r--r-- | html/webapp/refresh.png | bin | 0 -> 232 bytes | |||
| -rw-r--r-- | html/webapp/styles.css | 53 |
8 files changed, 316 insertions, 0 deletions
diff --git a/html/build.gradle b/html/build.gradle new file mode 100644 index 0000000..2036b11 --- /dev/null +++ b/html/build.gradle @@ -0,0 +1,157 @@ + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'org.gretty:gretty:3.1.0' + classpath "org.docstr:gwt-gradle-plugin:$gwtPluginVersion" + + } +} +apply plugin: "gwt" +apply plugin: "war" +apply plugin: "org.gretty" + +gwt { + gwtVersion = "$gwtFrameworkVersion" // Should match the version used for building the GWT backend. See gradle.properties. + maxHeapSize = '1G' // Default 256m is not enough for the GWT compiler. GWT is HUNGRY. + minHeapSize = '1G' + + src = files(file('src/main/java')) // Needs to be in front of "modules" below. + modules 'kz.ilotterytea.frogartha.GdxDefinition' + devModules 'kz.ilotterytea.frogartha.GdxDefinitionSuperdev' + project.webAppDirName = 'webapp' + + compiler.strict = true + compiler.disableCastChecking = true + //// The next line can be useful to uncomment if you want output that hasn't been obfuscated. +// compiler.style = org.docstr.gradle.plugins.gwt.Style.DETAILED + + sourceLevel = 1.11 +} + +dependencies { + implementation "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion" + implementation "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources" + implementation "com.badlogicgames.gdx:gdx:$gdxVersion:sources" + implementation "com.github.mgsx-dev.gdx-gltf:gltf:$gdxGltfVersion:sources" + implementation project(':core') + +} + +import org.akhikhl.gretty.AppBeforeIntegrationTestTask +import org.docstr.gradle.plugins.gwt.GwtSuperDev + +gretty.httpPort = 8080 +// The line below will need to be changed only if you change the build directory to something other than "build". +gretty.resourceBase = "${project.layout.buildDirectory.asFile.get().absolutePath}/gwt/draftOut" +gretty.contextPath = "/" +gretty.portPropertiesFileName = "TEMP_PORTS.properties" + +task startHttpServer (dependsOn: [draftCompileGwt]) { + doFirst { + copy { + from "webapp" + into gretty.resourceBase + } + copy { + from "war" + into gretty.resourceBase + } + } +} +task beforeRun(type: AppBeforeIntegrationTestTask, dependsOn: startHttpServer) { + // The next line allows ports to be reused instead of + // needing a process to be manually terminated. + file("build/TEMP_PORTS.properties").delete() + // Somewhat of a hack; uses Gretty's support for wrapping a task in + // a start and then stop of a Jetty server that serves files while + // also running the SuperDev code server. + integrationTestTask 'superDev' + + interactive false +} + +task superDev(type: GwtSuperDev) { + doFirst { + gwt.modules = gwt.devModules + } +} + +//// We delete the (temporary) war/ folder because if any extra files get into it, problems occur. +//// The war/ folder shouldn't be committed to version control. +clean.delete += [file("war")] + +// This next line can be changed if you want to, for instance, always build into the +// docs/ folder of a Git repo, which can be set to automatically publish on GitHub Pages. +// This is relative to the html/ folder. +var outputPath = "build/dist/" + +task dist(dependsOn: [clean, compileGwt]) { + doLast { + // Uncomment the next line if you have changed outputPath and know that its contents + // should be replaced by a new dist build. Some large JS files are not cleaned up by + // default unless the outputPath is inside build/ (then the clean task removes them). + // Do not uncomment the next line if you changed outputPath to a folder that has + // non-generated files that you want to keep! + //delete(file(outputPath)) + + file(outputPath).mkdirs() + copy { + from("build/gwt/out"){ + exclude '**/*.symbolMap' // Not used by a dist, and these can be large. + } + into outputPath + } + copy { + from("webapp") { + exclude 'index.html' // We edit this HTML file later. + exclude 'refresh.png' // We don't need this button; this saves some bytes. + } + into outputPath + } + copy { + from("webapp") { + // These next two lines take the index.html page and remove the superdev refresh button. + include 'index.html' + filter { String line -> line.replaceAll('<a class="superdev" .+', '') } + // This does not modify the original index.html, only the copy in the dist. + // If you decide to manually remove or comment out the superdev button from index.html, you should also + // either remove or comment out only the "filter" line above this. + } + into outputPath + } + copy { + from "war" + into outputPath + } + } +} + +task addSource { + doLast { + sourceSets.main.compileClasspath += files(project(':core').sourceSets.main.allJava.srcDirs) + sourceSets.main.compileClasspath += files("../core/build/generated/sources/annotationProcessor/java/main") + sourceSets.main.compileClasspath += files(project(':shared').sourceSets.main.allJava.srcDirs) + } +} + +task distZip(type: Zip, dependsOn: dist){ + //// This uses the output of the dist task, which removes the superdev button from index.html . + from(outputPath) + archiveVersion = projectVersion + archiveBaseName.set("${appName}-dist") + //// The result will be in html/build/ with a name containing "-dist". + destinationDirectory.set(file("build")) +} + +tasks.compileGwt.dependsOn(addSource) +tasks.draftCompileGwt.dependsOn(addSource) +tasks.checkGwt.dependsOn(addSource) + +java.sourceCompatibility = JavaVersion.VERSION_11 +java.targetCompatibility = JavaVersion.VERSION_11 +sourceSets.main.java.srcDirs = [ "src/main/java/" ] + +eclipse.project.name = appName + "-html" diff --git a/html/src/main/java/kz/ilotterytea/frogartha/GdxDefinition.gwt.xml b/html/src/main/java/kz/ilotterytea/frogartha/GdxDefinition.gwt.xml new file mode 100644 index 0000000..3f287d1 --- /dev/null +++ b/html/src/main/java/kz/ilotterytea/frogartha/GdxDefinition.gwt.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.11.0//EN" "https://www.gwtproject.org/doctype/2.11.0/gwt-module.dtd"> +<module rename-to="html"> + <!-- Paths to source are relative to this file and separated by slashes ('/'). --> + <source path="" /> + + <!-- "Inherits" lines are how GWT knows where to look for code and configuration in other projects or libraries. --> + <inherits name="com.badlogic.gdx.backends.gdx_backends_gwt" /> + <inherits name="GLTF" /> + <inherits name="kz.ilotterytea.frogartha.FrogarthaGame" /> + <inherits name="kz.ilotterytea.frogartha.Shared" /> + + <!-- You must change this if you rename packages later, or rename GwtLauncher. --> + <entry-point class="kz.ilotterytea.frogartha.gwt.GwtLauncher" /> + + <!-- Reflection includes may be needed for your code or library code. Each value is separated by periods ('.'). --> + <!-- You can include a full package by not including the name of a type at the end. --> + <!-- This is a feature of libGDX, so these lines go after the above "inherits" that brings in libGDX. --> + <!-- <extend-configuration-property name="gdx.reflect.include" value="fully.qualified.TypeName" /> --> + + <!-- Rarely, projects may need to include files but do not have access to the complete assets. --> + <!-- This happens for libraries and shared projects, typically, and the configuration goes in that project. --> + <!-- The value is a path, separated by forward slashes, where the root is your html project's resources root. --> + <!-- You can include individual files like this, and access them with Gdx.files.classpath("path/to/file.png") : --> + <!-- This is also a feature of libGDX, so these lines go after the above "inherits" that brings in libGDX. --> + <!-- <extend-configuration-property name="gdx.files.classpath" value="path/to/file.png" /> --> + + <!-- You usually won't need to make changes to the rest of this. --> + <set-configuration-property name="gdx.assetpath" value="../assets" /> + <set-configuration-property name="xsiframe.failIfScriptTag" value="FALSE"/> + <!-- These two lines reduce the work GWT has to do during compilation and also shrink output size. --> + <set-property name="user.agent" value="gecko1_8, safari"/> + <collapse-property name="user.agent" values="*" /> + <!-- Remove the "user.agent" lines above if you encounter issues with Safari or other Gecko browsers. --> +</module>
\ No newline at end of file diff --git a/html/src/main/java/kz/ilotterytea/frogartha/GdxDefinitionSuperdev.gwt.xml b/html/src/main/java/kz/ilotterytea/frogartha/GdxDefinitionSuperdev.gwt.xml new file mode 100644 index 0000000..86d6eac --- /dev/null +++ b/html/src/main/java/kz/ilotterytea/frogartha/GdxDefinitionSuperdev.gwt.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.11.0//EN" "https://www.gwtproject.org/doctype/2.11.0/gwt-module.dtd"> +<module rename-to="html"> + <inherits name="kz.ilotterytea.frogartha.GdxDefinition" /> + <collapse-all-properties /> + <add-linker name="xsiframe"/> + <set-configuration-property name="devModeRedirectEnabled" value="true"/> + <set-configuration-property name="xsiframe.failIfScriptTag" value="FALSE"/> +</module>
\ No newline at end of file diff --git a/html/src/main/java/kz/ilotterytea/frogartha/gwt/GwtLauncher.java b/html/src/main/java/kz/ilotterytea/frogartha/gwt/GwtLauncher.java new file mode 100644 index 0000000..a4e7ea3 --- /dev/null +++ b/html/src/main/java/kz/ilotterytea/frogartha/gwt/GwtLauncher.java @@ -0,0 +1,28 @@ +package kz.ilotterytea.frogartha.gwt; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.backends.gwt.GwtApplication; +import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; +import kz.ilotterytea.frogartha.FrogarthaGame; + +/** + * Launches the GWT application. + */ +public class GwtLauncher extends GwtApplication { + @Override + public GwtApplicationConfiguration getConfig() { + // Resizable application, uses available space in browser with no padding: + GwtApplicationConfiguration cfg = new GwtApplicationConfiguration(true); + cfg.padVertical = 0; + cfg.padHorizontal = 0; + return cfg; + // If you want a fixed size application, comment out the above resizable section, + // and uncomment below: + //return new GwtApplicationConfiguration(640, 480); + } + + @Override + public ApplicationListener createApplicationListener() { + return FrogarthaGame.getInstance(); + } +} diff --git a/html/webapp/WEB-INF/web.xml b/html/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..4301df2 --- /dev/null +++ b/html/webapp/WEB-INF/web.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" ?> +<web-app> +</web-app>
\ No newline at end of file diff --git a/html/webapp/index.html b/html/webapp/index.html new file mode 100644 index 0000000..01f2f40 --- /dev/null +++ b/html/webapp/index.html @@ -0,0 +1,31 @@ +<!doctype html> +<html> +<head> + <title>Frogartha</title> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta id="gameViewport" name="viewport" content="width=device-width initial-scale=1"> + <link href="styles.css" rel="stylesheet" type="text/css"> +</head> + +<body> +<a class="superdev" href="javascript:%7B%20window.__gwt_bookmarklet_params%20%3D%20%7B'server_url'%3A'http%3A%2F%2Flocalhost%3A9876%2F'%7D%3B%20var%20s%20%3D%20document.createElement('script')%3B%20s.src%20%3D%20'http%3A%2F%2Flocalhost%3A9876%2Fdev_mode_on.js'%3B%20void(document.getElementsByTagName('head')%5B0%5D.appendChild(s))%3B%7D">↻</a> +<div align="center" id="embed-html"></div> +<script type="text/javascript" src="html/html.nocache.js"></script> +</body> + +<script> +function handleMouseDown(evt) { + evt.preventDefault(); + evt.stopPropagation(); + window.focus(); +} + +function handleMouseUp(evt) { + evt.preventDefault(); + evt.stopPropagation(); +} +document.addEventListener('contextmenu', event => event.preventDefault()); +document.getElementById('embed-html').addEventListener('mousedown', handleMouseDown, false); +document.getElementById('embed-html').addEventListener('mouseup', handleMouseUp, false); +</script> +</html> diff --git a/html/webapp/refresh.png b/html/webapp/refresh.png Binary files differnew file mode 100644 index 0000000..aab1e38 --- /dev/null +++ b/html/webapp/refresh.png diff --git a/html/webapp/styles.css b/html/webapp/styles.css new file mode 100644 index 0000000..e768a39 --- /dev/null +++ b/html/webapp/styles.css @@ -0,0 +1,53 @@ +canvas { + cursor: default; + outline: none; +} + +body { + background-color: #222222; +} + +p { + text-align: center; + color: #eeeeee; +} + +a { + text-align: center; + color: #bbbbff; +} + +.superdev { + color: rgb(37,37,37); + text-shadow: 0px 1px 1px rgba(250,250,250,0.1); + font-size: 50pt; + display: block; + position: relative; + text-decoration: none; + background-color: rgb(83,87,93); + box-shadow: 0px 3px 0px 0px rgb(34,34,34), + 0px 7px 10px 0px rgb(17,17,17), + inset 0px 1px 1px 0px rgba(250, 250, 250, .2), + inset 0px -12px 35px 0px rgba(0, 0, 0, .5); + width: 70px; + height: 70px; + border: 0; + border-radius: 35px; + text-align: center; + line-height: 68px; +} + +.superdev:active { + box-shadow: 0px 0px 0px 0px rgb(34,34,34), + 0px 3px 7px 0px rgb(17,17,17), + inset 0px 1px 1px 0px rgba(250, 250, 250, .2), + inset 0px -10px 35px 5px rgba(0, 0, 0, .5); + background-color: rgb(83,87,93); + top: 3px; + color: #fff; + text-shadow: 0px 0px 3px rgb(250,250,250); +} + +.superdev:hover { + background-color: rgb(100,100,100); +} |
