diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index a1c2a23..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
diff --git a/.idea/JavaStandaloneDesktopApplication_for_Java_Course.iml b/.idea/JavaStandaloneDesktopApplication_for_Java_Course.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/JavaStandaloneDesktopApplication_for_Java_Course.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..7aa4c67
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..1f2cab7
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1602056444321
+
+
+ 1602056444321
+
+
+
+
\ No newline at end of file
diff --git a/Huy/.gradle/5.4.1/executionHistory/executionHistory.bin b/Huy/.gradle/5.4.1/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..ae94782
Binary files /dev/null and b/Huy/.gradle/5.4.1/executionHistory/executionHistory.bin differ
diff --git a/Huy/.gradle/5.4.1/executionHistory/executionHistory.lock b/Huy/.gradle/5.4.1/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..2f1de0a
Binary files /dev/null and b/Huy/.gradle/5.4.1/executionHistory/executionHistory.lock differ
diff --git a/Huy/.gradle/5.4.1/fileChanges/last-build.bin b/Huy/.gradle/5.4.1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/Huy/.gradle/5.4.1/fileChanges/last-build.bin differ
diff --git a/Huy/.gradle/5.4.1/fileContent/fileContent.lock b/Huy/.gradle/5.4.1/fileContent/fileContent.lock
new file mode 100644
index 0000000..f3a19a6
Binary files /dev/null and b/Huy/.gradle/5.4.1/fileContent/fileContent.lock differ
diff --git a/Huy/.gradle/5.4.1/fileHashes/fileHashes.bin b/Huy/.gradle/5.4.1/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..99cb908
Binary files /dev/null and b/Huy/.gradle/5.4.1/fileHashes/fileHashes.bin differ
diff --git a/Huy/.gradle/5.4.1/fileHashes/fileHashes.lock b/Huy/.gradle/5.4.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..4602d50
Binary files /dev/null and b/Huy/.gradle/5.4.1/fileHashes/fileHashes.lock differ
diff --git a/Huy/.gradle/5.4.1/fileHashes/resourceHashesCache.bin b/Huy/.gradle/5.4.1/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..08920c0
Binary files /dev/null and b/Huy/.gradle/5.4.1/fileHashes/resourceHashesCache.bin differ
diff --git a/Huy/.gradle/5.4.1/gc.properties b/Huy/.gradle/5.4.1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Huy/.gradle/5.4.1/javaCompile/classAnalysis.bin b/Huy/.gradle/5.4.1/javaCompile/classAnalysis.bin
new file mode 100644
index 0000000..220ffeb
Binary files /dev/null and b/Huy/.gradle/5.4.1/javaCompile/classAnalysis.bin differ
diff --git a/Huy/.gradle/5.4.1/javaCompile/jarAnalysis.bin b/Huy/.gradle/5.4.1/javaCompile/jarAnalysis.bin
new file mode 100644
index 0000000..c6b17b3
Binary files /dev/null and b/Huy/.gradle/5.4.1/javaCompile/jarAnalysis.bin differ
diff --git a/Huy/.gradle/5.4.1/javaCompile/javaCompile.lock b/Huy/.gradle/5.4.1/javaCompile/javaCompile.lock
new file mode 100644
index 0000000..c27533b
Binary files /dev/null and b/Huy/.gradle/5.4.1/javaCompile/javaCompile.lock differ
diff --git a/Huy/.gradle/5.4.1/javaCompile/taskHistory.bin b/Huy/.gradle/5.4.1/javaCompile/taskHistory.bin
new file mode 100644
index 0000000..eb3d41e
Binary files /dev/null and b/Huy/.gradle/5.4.1/javaCompile/taskHistory.bin differ
diff --git a/Huy/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/Huy/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..1872388
Binary files /dev/null and b/Huy/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/Huy/.gradle/buildOutputCleanup/cache.properties b/Huy/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..c176539
--- /dev/null
+++ b/Huy/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Thu Oct 08 09:17:00 ICT 2020
+gradle.version=5.4.1
diff --git a/Huy/.gradle/buildOutputCleanup/outputFiles.bin b/Huy/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..17ce105
Binary files /dev/null and b/Huy/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/Huy/.gradle/vcs-1/gc.properties b/Huy/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Huy/.idea/.gitignore b/Huy/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Huy/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Huy/.idea/Hao.iml b/Huy/.idea/Hao.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/Huy/.idea/Hao.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/Huy/.idea/artifacts/Hao_desktop_main_jar.xml b/Huy/.idea/artifacts/Hao_desktop_main_jar.xml
new file mode 100644
index 0000000..8f58d56
--- /dev/null
+++ b/Huy/.idea/artifacts/Hao_desktop_main_jar.xml
@@ -0,0 +1,28 @@
+
+
+ $PROJECT_DIR$/out/artifacts/Hao_desktop_main_jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Huy/.idea/compiler.xml b/Huy/.idea/compiler.xml
new file mode 100644
index 0000000..1c5ab05
--- /dev/null
+++ b/Huy/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Huy/.idea/gradle.xml b/Huy/.idea/gradle.xml
new file mode 100644
index 0000000..8a8d7a9
--- /dev/null
+++ b/Huy/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Huy/.idea/jarRepositories.xml b/Huy/.idea/jarRepositories.xml
new file mode 100644
index 0000000..97a3718
--- /dev/null
+++ b/Huy/.idea/jarRepositories.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Huy/.idea/misc.xml b/Huy/.idea/misc.xml
new file mode 100644
index 0000000..08d187b
--- /dev/null
+++ b/Huy/.idea/misc.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Huy/.idea/vcs.xml b/Huy/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/Huy/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Huy/build.gradle b/Huy/build.gradle
new file mode 100644
index 0000000..0b817eb
--- /dev/null
+++ b/Huy/build.gradle
@@ -0,0 +1,63 @@
+buildscript {
+
+
+ repositories {
+ mavenLocal()
+ mavenCentral()
+ maven { url "https://plugins.gradle.org/m2/" }
+ maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
+ jcenter()
+ google()
+ }
+ dependencies {
+
+
+ }
+}
+
+allprojects {
+ apply plugin: "eclipse"
+
+ version = '1.0'
+ ext {
+ appName = "Demo"
+ gdxVersion = '1.9.11'
+ roboVMVersion = '2.3.10'
+ box2DLightsVersion = '1.4'
+ ashleyVersion = '1.7.0'
+ aiVersion = '1.8.0'
+ }
+
+ repositories {
+ mavenLocal()
+ mavenCentral()
+ jcenter()
+ google()
+ maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
+ maven { url "https://oss.sonatype.org/content/repositories/releases/" }
+ }
+}
+
+project(":desktop") {
+ apply plugin: "java-library"
+
+
+ dependencies {
+ implementation project(":core")
+ api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
+ api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
+ api "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
+
+ }
+}
+
+project(":core") {
+ apply plugin: "java-library"
+
+
+ dependencies {
+ api "com.badlogicgames.gdx:gdx:$gdxVersion"
+ api "com.badlogicgames.ashley:ashley:$ashleyVersion"
+
+ }
+}
diff --git a/Huy/core/assets/Audio/README.md b/Huy/core/assets/Audio/README.md
new file mode 100644
index 0000000..45d50c5
--- /dev/null
+++ b/Huy/core/assets/Audio/README.md
@@ -0,0 +1 @@
+# For sounds and stuff
diff --git a/Huy/core/assets/Audio/ZA-WARUDO.mp3 b/Huy/core/assets/Audio/ZA-WARUDO.mp3
new file mode 100644
index 0000000..79299cd
Binary files /dev/null and b/Huy/core/assets/Audio/ZA-WARUDO.mp3 differ
diff --git a/Huy/core/assets/Bullet_plane.png b/Huy/core/assets/Bullet_plane.png
new file mode 100644
index 0000000..d6fb36d
Binary files /dev/null and b/Huy/core/assets/Bullet_plane.png differ
diff --git a/Huy/core/assets/Enemy.png b/Huy/core/assets/Enemy.png
new file mode 100644
index 0000000..5f41564
Binary files /dev/null and b/Huy/core/assets/Enemy.png differ
diff --git a/Huy/core/assets/META-INF/MANIFEST.MF b/Huy/core/assets/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..788c1a2
--- /dev/null
+++ b/Huy/core/assets/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: game.demo.desktop.DesktopLauncher
+
diff --git a/Huy/core/assets/Plane.png b/Huy/core/assets/Plane.png
new file mode 100644
index 0000000..f4d0b59
Binary files /dev/null and b/Huy/core/assets/Plane.png differ
diff --git a/Huy/core/assets/Star0.png b/Huy/core/assets/Star0.png
new file mode 100644
index 0000000..8903a23
Binary files /dev/null and b/Huy/core/assets/Star0.png differ
diff --git a/Huy/core/assets/Star1.png b/Huy/core/assets/Star1.png
new file mode 100644
index 0000000..27618fe
Binary files /dev/null and b/Huy/core/assets/Star1.png differ
diff --git a/Huy/core/assets/Star2.png b/Huy/core/assets/Star2.png
new file mode 100644
index 0000000..a186f92
Binary files /dev/null and b/Huy/core/assets/Star2.png differ
diff --git a/Huy/core/assets/Star3.png b/Huy/core/assets/Star3.png
new file mode 100644
index 0000000..b4df82c
Binary files /dev/null and b/Huy/core/assets/Star3.png differ
diff --git a/Huy/core/assets/badlogic.jpg b/Huy/core/assets/badlogic.jpg
new file mode 100644
index 0000000..4390da6
Binary files /dev/null and b/Huy/core/assets/badlogic.jpg differ
diff --git a/Huy/core/assets/database.txt b/Huy/core/assets/database.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Huy/core/assets/skin/ArcadeClassic.fnt b/Huy/core/assets/skin/ArcadeClassic.fnt
new file mode 100644
index 0000000..ef5dcb1
--- /dev/null
+++ b/Huy/core/assets/skin/ArcadeClassic.fnt
@@ -0,0 +1,71 @@
+info face="ArcadeClassic" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
+common lineHeight=33 base=26 scaleW=512 scaleH=512 pages=1 packed=0
+page id=0 file="ArcadeClassic.png"
+chars count=66
+char id=10 x=0 y=0 width=15 height=28 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=25 xadvance=4 page=0 chnl=0
+char id=33 x=146 y=28 width=13 height=18 xoffset=0 yoffset=7 xadvance=22 page=0 chnl=0
+char id=34 x=0 y=0 width=15 height=28 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=48 x=127 y=28 width=19 height=18 xoffset=-1 yoffset=7 xadvance=18 page=0 chnl=0
+char id=49 x=475 y=0 width=16 height=18 xoffset=1 yoffset=7 xadvance=18 page=0 chnl=0
+char id=50 x=491 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=51 x=0 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=52 x=18 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=53 x=36 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=54 x=54 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=55 x=72 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=56 x=90 y=28 width=19 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=57 x=109 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=65 x=15 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=66 x=33 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=67 x=51 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=68 x=69 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=69 x=87 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=70 x=105 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=71 x=123 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=72 x=141 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=73 x=159 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=74 x=175 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=75 x=193 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=76 x=211 y=0 width=16 height=18 xoffset=-2 yoffset=7 xadvance=18 page=0 chnl=0
+char id=77 x=227 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=78 x=245 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=79 x=263 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=80 x=281 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=81 x=299 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=82 x=317 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=83 x=335 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=84 x=353 y=0 width=16 height=18 xoffset=-3 yoffset=7 xadvance=17 page=0 chnl=0
+char id=85 x=369 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=86 x=387 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=87 x=405 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=88 x=423 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=89 x=441 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=90 x=457 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=97 x=15 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=98 x=33 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=99 x=51 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=100 x=69 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=101 x=87 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=102 x=105 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=103 x=123 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=104 x=141 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=105 x=159 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=106 x=175 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=107 x=193 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=108 x=211 y=0 width=16 height=18 xoffset=-2 yoffset=7 xadvance=18 page=0 chnl=0
+char id=109 x=227 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=110 x=245 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=111 x=263 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=112 x=281 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=113 x=299 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=114 x=317 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=115 x=335 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=116 x=353 y=0 width=16 height=18 xoffset=-3 yoffset=7 xadvance=17 page=0 chnl=0
+char id=117 x=369 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=118 x=387 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=119 x=405 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=120 x=423 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=121 x=441 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=122 x=457 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+kernings count=0
diff --git a/Huy/core/assets/skin/ArcadeClassic.png b/Huy/core/assets/skin/ArcadeClassic.png
new file mode 100644
index 0000000..475c9d6
Binary files /dev/null and b/Huy/core/assets/skin/ArcadeClassic.png differ
diff --git a/Huy/core/assets/skin/ButtonPack.atlas b/Huy/core/assets/skin/ButtonPack.atlas
new file mode 100644
index 0000000..d7e5f98
--- /dev/null
+++ b/Huy/core/assets/skin/ButtonPack.atlas
@@ -0,0 +1,111 @@
+
+ButtonPack.png
+size: 2048,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+ExitButtonDown
+ rotate: false
+ xy: 1558, 274
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonHover
+ rotate: false
+ xy: 1108, 138
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonUp
+ rotate: false
+ xy: 658, 2
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+MainMenuButtonDown
+ rotate: false
+ xy: 2, 138
+ size: 448, 134
+ orig: 448, 134
+ offset: 0, 0
+ index: -1
+MainMenuButtonHover
+ rotate: false
+ xy: 452, 274
+ size: 448, 134
+ orig: 448, 134
+ offset: 0, 0
+ index: -1
+MainMenuButtonUp
+ rotate: false
+ xy: 2, 274
+ size: 448, 134
+ orig: 448, 134
+ offset: 0, 0
+ index: -1
+PlayButtonDown
+ rotate: false
+ xy: 1406, 138
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonHover
+ rotate: false
+ xy: 1254, 2
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonUp
+ rotate: false
+ xy: 956, 2
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ResumeButtonDown
+ rotate: false
+ xy: 1230, 274
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+ResumeButtonHover
+ rotate: false
+ xy: 780, 138
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+ResumeButtonUp
+ rotate: false
+ xy: 902, 274
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+RetryButtonDown
+ rotate: false
+ xy: 330, 2
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+RetryButtonHover
+ rotate: false
+ xy: 2, 2
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+RetryButtonUp
+ rotate: false
+ xy: 452, 138
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
diff --git a/Huy/core/assets/skin/ButtonPack.json b/Huy/core/assets/skin/ButtonPack.json
new file mode 100644
index 0000000..f19178f
--- /dev/null
+++ b/Huy/core/assets/skin/ButtonPack.json
@@ -0,0 +1,34 @@
+{
+ com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ },
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ },
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+ Resume: {
+ up: ResumeButtonUp
+ down: ResumeButtonDown
+ over: ResumeButtonHover
+ },
+ Retry: {
+ up: RetryButtonUp
+ down: RetryButtonDown
+ over: RetryButtonHover
+ }
+ MainMenu: {
+ up: MainMenuButtonUp
+ down: MainMenuButtonDown
+ over: MainMenuButtonHover
+ }
+ }
+}
\ No newline at end of file
diff --git a/Huy/core/assets/skin/ButtonPack.png b/Huy/core/assets/skin/ButtonPack.png
new file mode 100644
index 0000000..8cf3d7f
Binary files /dev/null and b/Huy/core/assets/skin/ButtonPack.png differ
diff --git a/Huy/core/assets/skin/ButtonPackTestField.json b/Huy/core/assets/skin/ButtonPackTestField.json
new file mode 100644
index 0000000..884dc43
--- /dev/null
+++ b/Huy/core/assets/skin/ButtonPackTestField.json
@@ -0,0 +1,24 @@
+{
+com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+}
+}
\ No newline at end of file
diff --git a/Huy/core/assets/skin/GAMEOVER.png b/Huy/core/assets/skin/GAMEOVER.png
new file mode 100644
index 0000000..524ca13
Binary files /dev/null and b/Huy/core/assets/skin/GAMEOVER.png differ
diff --git a/Huy/core/assets/skin/GameTitle.png b/Huy/core/assets/skin/GameTitle.png
new file mode 100644
index 0000000..62b55b6
Binary files /dev/null and b/Huy/core/assets/skin/GameTitle.png differ
diff --git a/Huy/core/assets/skin/Pause.png b/Huy/core/assets/skin/Pause.png
new file mode 100644
index 0000000..171044e
Binary files /dev/null and b/Huy/core/assets/skin/Pause.png differ
diff --git a/Huy/core/assets/skin/README.md b/Huy/core/assets/skin/README.md
new file mode 100644
index 0000000..7ed66f0
--- /dev/null
+++ b/Huy/core/assets/skin/README.md
@@ -0,0 +1 @@
+# Skin stuff
diff --git a/Huy/core/assets/skin/Rectangle 1.png b/Huy/core/assets/skin/Rectangle 1.png
new file mode 100644
index 0000000..28f6afe
Binary files /dev/null and b/Huy/core/assets/skin/Rectangle 1.png differ
diff --git a/Huy/core/assets/skin/Textfield.atlas b/Huy/core/assets/skin/Textfield.atlas
new file mode 100644
index 0000000..a43181e
--- /dev/null
+++ b/Huy/core/assets/skin/Textfield.atlas
@@ -0,0 +1,83 @@
+
+Textfield.png
+size: 2048,2048
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+Background_mainmenu
+ rotate: false
+ xy: 1, 1243
+ size: 1280, 720
+ orig: 1280, 720
+ offset: 0, 0
+ index: -1
+ExitButtonDown
+ rotate: false
+ xy: 1283, 1634
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonHover
+ rotate: false
+ xy: 1, 398
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonUp
+ rotate: false
+ xy: 1283, 1498
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+Group 1
+ rotate: false
+ xy: 1, 1048
+ size: 682, 193
+ orig: 682, 193
+ offset: 0, 0
+ index: -1
+PlayButtonDown
+ rotate: false
+ xy: 1581, 1634
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonHover
+ rotate: false
+ xy: 1, 262
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonUp
+ rotate: false
+ xy: 1283, 1362
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+Rectangle 1
+ rotate: false
+ xy: 685, 1151
+ size: 489, 90
+ orig: 489, 90
+ offset: 0, 0
+ index: -1
+clicked
+ rotate: false
+ xy: 1283, 1770
+ size: 682, 193
+ orig: 682, 193
+ offset: 0, 0
+ index: -1
+minecraft
+ rotate: false
+ xy: 1, 534
+ size: 512, 512
+ orig: 512, 512
+ offset: 0, 0
+ index: -1
diff --git a/Huy/core/assets/skin/Textfield.json b/Huy/core/assets/skin/Textfield.json
new file mode 100644
index 0000000..f8420ab
--- /dev/null
+++ b/Huy/core/assets/skin/Textfield.json
@@ -0,0 +1,57 @@
+{
+com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+}
+com.badlogic.gdx.graphics.Color: {
+ RGBA_255_255_255_255: {
+ r: 1
+ g: 1
+ b: 1
+ a: 1
+ }
+}
+com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable: {
+ Group 1: {
+ region: Group 1
+ minWidth: 13
+ minHeight: 3
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ background: Rectangle 1
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: {
+ default: {
+ label: default
+ }
+}
+}
\ No newline at end of file
diff --git a/Huy/core/assets/skin/Textfield.png b/Huy/core/assets/skin/Textfield.png
new file mode 100644
index 0000000..d44f513
Binary files /dev/null and b/Huy/core/assets/skin/Textfield.png differ
diff --git a/Huy/core/assets/skin/minecraft.fnt b/Huy/core/assets/skin/minecraft.fnt
new file mode 100644
index 0000000..8070467
--- /dev/null
+++ b/Huy/core/assets/skin/minecraft.fnt
@@ -0,0 +1,102 @@
+info face="Minecraft" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
+common lineHeight=35 base=24 scaleW=512 scaleH=512 pages=1 packed=0
+page id=0 file="minecraft.png"
+chars count=97
+char id=0 x=194 y=60 width=10 height=23 xoffset=0 yoffset=2 xadvance=12 page=0 chnl=0
+char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=10 page=0 chnl=0
+char id=33 x=0 y=60 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=34 x=22 y=86 width=18 height=14 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=35 x=114 y=60 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=36 x=80 y=0 width=18 height=30 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=37 x=88 y=60 width=26 height=26 xoffset=1 yoffset=-1 xadvance=28 page=0 chnl=0
+char id=38 x=136 y=60 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=39 x=76 y=86 width=6 height=10 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=40 x=24 y=60 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=41 x=38 y=60 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=42 x=496 y=60 width=14 height=14 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=43 x=478 y=60 width=18 height=18 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
+char id=44 x=82 y=86 width=6 height=10 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=0
+char id=45 x=102 y=86 width=12 height=6 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0
+char id=46 x=96 y=86 width=6 height=6 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=0
+char id=47 x=52 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=48 x=492 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=49 x=326 y=34 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=50 x=340 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=51 x=358 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=52 x=376 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=53 x=396 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=54 x=418 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=55 x=438 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=56 x=456 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=57 x=474 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=58 x=420 y=60 width=6 height=20 xoffset=1 yoffset=5 xadvance=8 page=0 chnl=0
+char id=59 x=188 y=60 width=6 height=24 xoffset=1 yoffset=5 xadvance=8 page=0 chnl=0
+char id=60 x=450 y=60 width=14 height=18 xoffset=-1 yoffset=3 xadvance=14 page=0 chnl=0
+char id=61 x=58 y=86 width=18 height=14 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=62 x=464 y=60 width=14 height=18 xoffset=-1 yoffset=3 xadvance=14 page=0 chnl=0
+char id=63 x=6 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=64 x=50 y=0 width=30 height=32 xoffset=-1 yoffset=-1 xadvance=30 page=0 chnl=0
+char id=65 x=116 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=66 x=136 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=67 x=158 y=0 width=24 height=26 xoffset=-1 yoffset=-1 xadvance=24 page=0 chnl=0
+char id=68 x=182 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=69 x=204 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=70 x=226 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=71 x=246 y=0 width=24 height=26 xoffset=-1 yoffset=-1 xadvance=24 page=0 chnl=0
+char id=72 x=270 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=73 x=292 y=0 width=10 height=26 xoffset=1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=74 x=302 y=0 width=16 height=26 xoffset=-1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=75 x=318 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=76 x=338 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=77 x=358 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=78 x=380 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=79 x=402 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=80 x=428 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=81 x=450 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=82 x=476 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=83 x=0 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=84 x=20 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=85 x=42 y=34 width=20 height=26 xoffset=1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=86 x=62 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=87 x=84 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=88 x=106 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=89 x=128 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=90 x=150 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=91 x=30 y=0 width=10 height=32 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=92 x=70 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=93 x=40 y=0 width=10 height=32 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=94 x=40 y=86 width=18 height=14 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=95 x=136 y=86 width=20 height=4 xoffset=-1 yoffset=21 xadvance=20 page=0 chnl=0
+char id=96 x=88 y=86 width=8 height=8 xoffset=1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=97 x=260 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=98 x=172 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=99 x=280 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=100 x=194 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=101 x=300 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=102 x=212 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=103 x=98 y=0 width=18 height=28 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=104 x=230 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=105 x=502 y=0 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=106 x=248 y=34 width=16 height=26 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
+char id=107 x=264 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=108 x=282 y=34 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=109 x=318 y=60 width=30 height=20 xoffset=-1 yoffset=5 xadvance=30 page=0 chnl=0
+char id=110 x=348 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=111 x=368 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=112 x=288 y=34 width=20 height=26 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=113 x=308 y=34 width=18 height=26 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=114 x=386 y=60 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=0
+char id=115 x=204 y=60 width=16 height=22 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
+char id=116 x=158 y=60 width=12 height=24 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0
+char id=117 x=402 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=118 x=0 y=86 width=22 height=16 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=0
+char id=119 x=426 y=60 width=24 height=18 xoffset=-1 yoffset=7 xadvance=24 page=0 chnl=0
+char id=120 x=220 y=60 width=22 height=22 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
+char id=121 x=170 y=60 width=18 height=24 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=122 x=242 y=60 width=18 height=22 xoffset=-1 yoffset=3 xadvance=18 page=0 chnl=0
+char id=123 x=0 y=0 width=12 height=34 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=124 x=24 y=0 width=6 height=34 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=125 x=12 y=0 width=12 height=34 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=126 x=114 y=86 width=22 height=6 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=0
+kernings count=0
diff --git a/Huy/core/assets/skin/minecraft.png b/Huy/core/assets/skin/minecraft.png
new file mode 100644
index 0000000..128908f
Binary files /dev/null and b/Huy/core/assets/skin/minecraft.png differ
diff --git a/Huy/core/assets/skin/test_data/check-off.png b/Huy/core/assets/skin/test_data/check-off.png
new file mode 100644
index 0000000..1cc70c4
Binary files /dev/null and b/Huy/core/assets/skin/test_data/check-off.png differ
diff --git a/Huy/core/assets/skin/test_data/check-on.png b/Huy/core/assets/skin/test_data/check-on.png
new file mode 100644
index 0000000..57d6d0f
Binary files /dev/null and b/Huy/core/assets/skin/test_data/check-on.png differ
diff --git a/Huy/core/assets/skin/test_data/cursor.9.png b/Huy/core/assets/skin/test_data/cursor.9.png
new file mode 100644
index 0000000..6aa4fab
Binary files /dev/null and b/Huy/core/assets/skin/test_data/cursor.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-pane-noborder.9.png b/Huy/core/assets/skin/test_data/default-pane-noborder.9.png
new file mode 100644
index 0000000..b308275
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-pane-noborder.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-pane.9.png b/Huy/core/assets/skin/test_data/default-pane.9.png
new file mode 100644
index 0000000..655164f
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-pane.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-rect-down.9.png b/Huy/core/assets/skin/test_data/default-rect-down.9.png
new file mode 100644
index 0000000..2ef326f
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-rect-down.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-rect-pad.9.png b/Huy/core/assets/skin/test_data/default-rect-pad.9.png
new file mode 100644
index 0000000..655164f
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-rect-pad.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-rect.9.png b/Huy/core/assets/skin/test_data/default-rect.9.png
new file mode 100644
index 0000000..6309ff0
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-rect.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-round-down.9.png b/Huy/core/assets/skin/test_data/default-round-down.9.png
new file mode 100644
index 0000000..8311e06
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-round-down.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-round-large.9.png b/Huy/core/assets/skin/test_data/default-round-large.9.png
new file mode 100644
index 0000000..4fcba07
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-round-large.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-round.9.png b/Huy/core/assets/skin/test_data/default-round.9.png
new file mode 100644
index 0000000..08b7b93
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-round.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-scroll.9.png b/Huy/core/assets/skin/test_data/default-scroll.9.png
new file mode 100644
index 0000000..09b5de9
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-scroll.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-select-selection.9.png b/Huy/core/assets/skin/test_data/default-select-selection.9.png
new file mode 100644
index 0000000..12202e7
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-select-selection.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-select.9.png b/Huy/core/assets/skin/test_data/default-select.9.png
new file mode 100644
index 0000000..b4aef8b
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-select.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-slider-knob.png b/Huy/core/assets/skin/test_data/default-slider-knob.png
new file mode 100644
index 0000000..2ba5b9d
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-slider-knob.png differ
diff --git a/Huy/core/assets/skin/test_data/default-slider.9.png b/Huy/core/assets/skin/test_data/default-slider.9.png
new file mode 100644
index 0000000..7ef86d8
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-slider.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-splitpane-vertical.9.png b/Huy/core/assets/skin/test_data/default-splitpane-vertical.9.png
new file mode 100644
index 0000000..13ffaa5
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-splitpane-vertical.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-splitpane.9.png b/Huy/core/assets/skin/test_data/default-splitpane.9.png
new file mode 100644
index 0000000..070753d
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-splitpane.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default-window.9.png b/Huy/core/assets/skin/test_data/default-window.9.png
new file mode 100644
index 0000000..5204599
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default-window.9.png differ
diff --git a/Huy/core/assets/skin/test_data/default.png b/Huy/core/assets/skin/test_data/default.png
new file mode 100644
index 0000000..1bb19f6
Binary files /dev/null and b/Huy/core/assets/skin/test_data/default.png differ
diff --git a/Huy/core/assets/skin/test_data/selection.png b/Huy/core/assets/skin/test_data/selection.png
new file mode 100644
index 0000000..26cc9f1
Binary files /dev/null and b/Huy/core/assets/skin/test_data/selection.png differ
diff --git a/Huy/core/assets/skin/test_data/textfield.9.png b/Huy/core/assets/skin/test_data/textfield.9.png
new file mode 100644
index 0000000..df7bfb4
Binary files /dev/null and b/Huy/core/assets/skin/test_data/textfield.9.png differ
diff --git a/Huy/core/assets/skin/test_data/tree-minus.png b/Huy/core/assets/skin/test_data/tree-minus.png
new file mode 100644
index 0000000..99924c9
Binary files /dev/null and b/Huy/core/assets/skin/test_data/tree-minus.png differ
diff --git a/Huy/core/assets/skin/test_data/tree-plus.png b/Huy/core/assets/skin/test_data/tree-plus.png
new file mode 100644
index 0000000..a4a5876
Binary files /dev/null and b/Huy/core/assets/skin/test_data/tree-plus.png differ
diff --git a/Huy/core/assets/skin/test_data/white.png b/Huy/core/assets/skin/test_data/white.png
new file mode 100644
index 0000000..a5566c7
Binary files /dev/null and b/Huy/core/assets/skin/test_data/white.png differ
diff --git a/Huy/core/assets/test.png b/Huy/core/assets/test.png
new file mode 100644
index 0000000..d094b81
Binary files /dev/null and b/Huy/core/assets/test.png differ
diff --git a/Huy/core/build.gradle b/Huy/core/build.gradle
new file mode 100644
index 0000000..d192d04
--- /dev/null
+++ b/Huy/core/build.gradle
@@ -0,0 +1,6 @@
+sourceCompatibility = 1.7
+[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
+
+sourceSets.main.java.srcDirs = [ "src/" ]
+
+eclipse.project.name = appName + "-core"
diff --git a/Huy/core/build/classes/java/main/UI/GameOverScreen$1$1.class b/Huy/core/build/classes/java/main/UI/GameOverScreen$1$1.class
new file mode 100644
index 0000000..9bfeafc
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/GameOverScreen$1$1.class differ
diff --git a/Huy/core/build/classes/java/main/UI/GameOverScreen$1.class b/Huy/core/build/classes/java/main/UI/GameOverScreen$1.class
new file mode 100644
index 0000000..5f393db
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/GameOverScreen$1.class differ
diff --git a/Huy/core/build/classes/java/main/UI/GameOverScreen$2$1.class b/Huy/core/build/classes/java/main/UI/GameOverScreen$2$1.class
new file mode 100644
index 0000000..a55a10b
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/GameOverScreen$2$1.class differ
diff --git a/Huy/core/build/classes/java/main/UI/GameOverScreen$2.class b/Huy/core/build/classes/java/main/UI/GameOverScreen$2.class
new file mode 100644
index 0000000..9085a7a
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/GameOverScreen$2.class differ
diff --git a/Huy/core/build/classes/java/main/UI/GameOverScreen$3.class b/Huy/core/build/classes/java/main/UI/GameOverScreen$3.class
new file mode 100644
index 0000000..67cd9e8
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/GameOverScreen$3.class differ
diff --git a/Huy/core/build/classes/java/main/UI/GameOverScreen.class b/Huy/core/build/classes/java/main/UI/GameOverScreen.class
new file mode 100644
index 0000000..92a923e
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/GameOverScreen.class differ
diff --git a/Huy/core/build/classes/java/main/UI/MainClass.class b/Huy/core/build/classes/java/main/UI/MainClass.class
new file mode 100644
index 0000000..e377a1c
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/MainClass.class differ
diff --git a/Huy/core/build/classes/java/main/UI/MainMenu$1$1.class b/Huy/core/build/classes/java/main/UI/MainMenu$1$1.class
new file mode 100644
index 0000000..43c2325
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/MainMenu$1$1.class differ
diff --git a/Huy/core/build/classes/java/main/UI/MainMenu$1.class b/Huy/core/build/classes/java/main/UI/MainMenu$1.class
new file mode 100644
index 0000000..e33e858
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/MainMenu$1.class differ
diff --git a/Huy/core/build/classes/java/main/UI/MainMenu$2.class b/Huy/core/build/classes/java/main/UI/MainMenu$2.class
new file mode 100644
index 0000000..53e21b5
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/MainMenu$2.class differ
diff --git a/Huy/core/build/classes/java/main/UI/MainMenu.class b/Huy/core/build/classes/java/main/UI/MainMenu.class
new file mode 100644
index 0000000..8a515de
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/MainMenu.class differ
diff --git a/Huy/core/build/classes/java/main/UI/PauseScreen$1.class b/Huy/core/build/classes/java/main/UI/PauseScreen$1.class
new file mode 100644
index 0000000..8741232
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/PauseScreen$1.class differ
diff --git a/Huy/core/build/classes/java/main/UI/PauseScreen$2.class b/Huy/core/build/classes/java/main/UI/PauseScreen$2.class
new file mode 100644
index 0000000..cfa3076
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/PauseScreen$2.class differ
diff --git a/Huy/core/build/classes/java/main/UI/PauseScreen.class b/Huy/core/build/classes/java/main/UI/PauseScreen.class
new file mode 100644
index 0000000..6c14230
Binary files /dev/null and b/Huy/core/build/classes/java/main/UI/PauseScreen.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Assets.class b/Huy/core/build/classes/java/main/game/demo/Assets.class
new file mode 100644
index 0000000..611dc08
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Assets.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Background.class b/Huy/core/build/classes/java/main/game/demo/Background.class
new file mode 100644
index 0000000..df12f11
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Background.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Bullet.class b/Huy/core/build/classes/java/main/game/demo/Bullet.class
new file mode 100644
index 0000000..577687b
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Bullet.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Collision.class b/Huy/core/build/classes/java/main/game/demo/Collision.class
new file mode 100644
index 0000000..dcfc530
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Collision.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Enemy.class b/Huy/core/build/classes/java/main/game/demo/Enemy.class
new file mode 100644
index 0000000..96810a3
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Enemy.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/GameObj.class b/Huy/core/build/classes/java/main/game/demo/GameObj.class
new file mode 100644
index 0000000..fb2baf8
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/GameObj.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/MyGdxGame.class b/Huy/core/build/classes/java/main/game/demo/MyGdxGame.class
new file mode 100644
index 0000000..6d8b02f
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/MyGdxGame.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/PixelCoord.class b/Huy/core/build/classes/java/main/game/demo/PixelCoord.class
new file mode 100644
index 0000000..fda5e28
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/PixelCoord.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Player.class b/Huy/core/build/classes/java/main/game/demo/Player.class
new file mode 100644
index 0000000..df143a6
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Player.class differ
diff --git a/Huy/core/build/classes/java/main/game/demo/Waves.class b/Huy/core/build/classes/java/main/game/demo/Waves.class
new file mode 100644
index 0000000..e6bf305
Binary files /dev/null and b/Huy/core/build/classes/java/main/game/demo/Waves.class differ
diff --git a/Huy/core/build/libs/core-1.0.jar b/Huy/core/build/libs/core-1.0.jar
new file mode 100644
index 0000000..7f00307
Binary files /dev/null and b/Huy/core/build/libs/core-1.0.jar differ
diff --git a/Huy/core/build/tmp/jar/MANIFEST.MF b/Huy/core/build/tmp/jar/MANIFEST.MF
new file mode 100644
index 0000000..59499bc
--- /dev/null
+++ b/Huy/core/build/tmp/jar/MANIFEST.MF
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
diff --git a/Huy/core/src/UI/GameOverScreen.java b/Huy/core/src/UI/GameOverScreen.java
new file mode 100644
index 0000000..717f719
--- /dev/null
+++ b/Huy/core/src/UI/GameOverScreen.java
@@ -0,0 +1,147 @@
+package UI;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Screen;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+import com.badlogic.gdx.graphics.g2d.GlyphLayout;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+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.ui.Image;
+import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import com.badlogic.gdx.scenes.scene2d.ui.Table;
+import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.badlogic.gdx.utils.Align;
+import com.badlogic.gdx.utils.viewport.ScreenViewport;
+import game.demo.Background;
+
+public class GameOverScreen implements Screen {
+ private SpriteBatch batch;
+ private Texture GameOverTitle;
+ private Image title;
+
+ private ImageButton RetryButton;
+ private ImageButton ExitButton;
+ private ImageButton MainMenuButton;
+ private Skin skin;
+ private MainClass mainClass;
+ private Table table;
+ private Background background;
+
+ private Stage stage;
+
+
+ float tableY = Gdx.graphics.getHeight()/2;
+
+ public GameOverScreen(final MainClass mainClass) {
+ this.mainClass = mainClass;
+ batch = new SpriteBatch();
+ GameOverTitle = new Texture("skin/GAMEOVER.png");
+ title = new Image(GameOverTitle);
+
+ background = new Background();
+ background.create();
+ background.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
+
+ skin = new Skin(Gdx.files.internal("skin/ButtonPack.json"));
+
+ stage = new Stage(new ScreenViewport());
+
+ table = new Table();
+ table.setWidth(stage.getWidth());
+ table.align(Align.center | Align.top);
+ table.setPosition(0, tableY);
+
+ RetryButton = new ImageButton(skin, "Retry");
+ RetryButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ stage.addAction(Actions.sequence(Actions.fadeOut(1), Actions.run(new Runnable() {
+ @Override
+ public void run() {
+ mainClass.setNewGameScreen();
+ }
+ })));
+ }
+ });
+
+ MainMenuButton = new ImageButton(skin, "MainMenu");
+ MainMenuButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ stage.addAction(Actions.sequence(Actions.fadeOut(1), Actions.run(new Runnable() {
+ @Override
+ public void run() {
+ mainClass.setMenuScreen();
+ }
+ })));
+ }
+ });
+
+ ExitButton = new ImageButton(skin, "Exit");
+ ExitButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ Gdx.app.log("Exit Game", "BEEP");
+ Gdx.app.exit();
+ }
+ });
+
+ table.pad(30);
+ table.add(title).size(500,100);
+ table.row();
+ table.add(RetryButton);
+ table.row();
+ table.add(MainMenuButton);
+ table.row();
+ table.add(ExitButton);
+
+ stage.addActor(table);
+
+ }
+
+ public void show() {
+ stage.addAction(Actions.fadeIn(1));
+ Gdx.input.setInputProcessor(stage); // kieu nhu no add input vao thang render. -- call before render each frame.
+ }
+
+ public void render(float delta) {
+ background.render();
+ stage.addAction(Actions.fadeIn(1));
+ stage.act();
+ stage.draw();
+ }
+
+ @Override
+ public void resize(int width, int height) {
+ stage.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true); // this line is important. update size of stage = current screen size.
+ table.setWidth(stage.getWidth());
+ table.align(Align.center|Align.top);
+ table.setPosition(0, tableY +table.getMinHeight()/2);
+ }
+
+ @Override
+ public void pause() {
+
+ }
+
+ @Override
+ public void resume() {
+
+ }
+
+ @Override
+ public void hide() {
+
+ }
+
+
+ public void dispose() {
+ stage.dispose();
+ batch.dispose();
+ skin.dispose();
+ }
+}
diff --git a/Huy/core/src/UI/MainClass.java b/Huy/core/src/UI/MainClass.java
new file mode 100644
index 0000000..fda420b
--- /dev/null
+++ b/Huy/core/src/UI/MainClass.java
@@ -0,0 +1,76 @@
+package UI;
+
+import com.badlogic.gdx.*;
+import com.badlogic.gdx.graphics.GL20;
+import game.demo.MyGdxGame;
+
+public class MainClass extends Game implements ApplicationListener {
+
+ private MyGdxGame gameScreen;
+ private MainMenu mainMenu;
+ private PauseScreen pauseScreen;
+// private HudClass hudScreen;
+// private StartClass startScreen;
+ @Override
+ public void create() {
+ gameScreen=new MyGdxGame(this);
+ //menuScreen=new MenuClass(this);
+ mainMenu = new MainMenu(this);
+// startScreen=new StartClass(this);
+ pauseScreen = new PauseScreen(this);
+ setMenuScreen();
+
+ }
+ public void setGameScreen()
+ {
+
+ setScreen(gameScreen);
+
+ }
+// public void setStartScreen(){
+// setScreen(startScreen);
+// }
+ public void setNewGameScreen(){
+ gameScreen=new MyGdxGame(this);
+ setScreen(gameScreen);
+ }
+ public void setMenuScreen()
+ {
+
+ setScreen(mainMenu);
+ gameScreen.pause();
+ }
+ public void setPauseScreen(){
+ setScreen(pauseScreen);
+
+ }
+
+
+
+ @Override
+ public void dispose() {
+
+ super.dispose();
+ }
+
+ @Override
+ public void render() {
+ super.render();
+ }
+
+ @Override
+ public void resize(int width, int height) {
+
+ super.resize(width, height);
+ }
+
+ @Override
+ public void pause() {
+ super.pause();
+ }
+
+ @Override
+ public void resume() {
+ super.resume();
+ }
+}
diff --git a/Huy/core/src/UI/MainMenu.java b/Huy/core/src/UI/MainMenu.java
new file mode 100644
index 0000000..8166f4f
--- /dev/null
+++ b/Huy/core/src/UI/MainMenu.java
@@ -0,0 +1,130 @@
+package UI;
+
+import com.badlogic.gdx.Game;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Screen;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+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.ui.Image;
+import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import com.badlogic.gdx.scenes.scene2d.ui.Table;
+import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.badlogic.gdx.utils.Align;
+import com.badlogic.gdx.utils.viewport.ScreenViewport;
+import UI.MainClass;
+import game.demo.Background;
+
+public class MainMenu implements Screen {
+ private SpriteBatch batch;
+ private ImageButton PlayButton;
+ private ImageButton ExitButton;
+ private Skin skin;
+ private MainClass mainClass;
+ private Table table;
+ private Background background;
+
+ private Image title;
+
+ private Stage stage;
+
+ float tableY = Gdx.graphics.getHeight()/2 - 100;
+
+ public MainMenu(final MainClass mainClass){
+ this.mainClass = mainClass;
+
+ batch = new SpriteBatch();
+
+ title = new Image(new Texture("skin/GameTitle.png"));
+
+ background = new Background();
+ background.create();
+ background.resize(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
+
+ skin = new Skin(Gdx.files.internal("skin/ButtonPack.json"));
+
+ stage = new Stage(new ScreenViewport());
+
+ table = new Table();
+ table.setWidth(stage.getWidth());
+ table.align(Align.center|Align.top);
+ table.setPosition(0, tableY);
+
+ PlayButton = new ImageButton(skin, "Play");
+ PlayButton.addListener(new ClickListener(){
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ stage.addAction(Actions.sequence(Actions.fadeOut(1), Actions.run(new Runnable() {
+ @Override
+ public void run() {
+ mainClass.setNewGameScreen();
+ }
+ })));
+ }
+ });
+
+ ExitButton = new ImageButton(skin, "Exit");
+ ExitButton.addListener(new ClickListener(){
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ Gdx.app.exit();
+ }
+ });
+
+ table.pad(30);
+ table.add(title).size(700,60);
+ table.row();
+ table.add(PlayButton);
+ table.row();
+ table.add(ExitButton);
+
+ stage.addActor(table);
+ }
+ @Override
+ public void show() {
+ stage.addAction(Actions.fadeIn(1));
+ Gdx.input.setInputProcessor(stage); // kieu nhu no add input vao thang render. -- call before render each frame.
+ }
+
+ public void render (float delta) {
+ background.render();
+
+ stage.act();
+ stage.draw();
+ }
+
+
+
+ @Override
+ public void resize(int width, int height) {
+ stage.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true); // this line is important. update size of stage = current screen size.
+ table.setWidth(stage.getWidth());
+ table.align(Align.center|Align.top);
+ table.setPosition(0, tableY +table.getMinHeight()/2);
+ }
+
+ @Override
+ public void pause() {
+
+ }
+
+ @Override
+ public void resume() {
+
+ }
+
+ @Override
+ public void hide() {
+
+ }
+
+
+ public void dispose() {
+ stage.dispose();
+ batch.dispose();
+ skin.dispose();
+ }
+}
diff --git a/Huy/core/src/UI/PauseScreen.java b/Huy/core/src/UI/PauseScreen.java
new file mode 100644
index 0000000..af38339
--- /dev/null
+++ b/Huy/core/src/UI/PauseScreen.java
@@ -0,0 +1,127 @@
+package UI;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Screen;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+import com.badlogic.gdx.graphics.g2d.GlyphLayout;
+import com.badlogic.gdx.graphics.g2d.Sprite;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.scenes.scene2d.InputEvent;
+import com.badlogic.gdx.scenes.scene2d.Stage;
+import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import com.badlogic.gdx.scenes.scene2d.ui.Table;
+import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.badlogic.gdx.utils.Align;
+import com.badlogic.gdx.utils.viewport.ScreenViewport;
+import game.demo.Background;
+
+public class PauseScreen implements Screen {
+ private SpriteBatch batch;
+ private static Texture PauseTitle;
+
+ private ImageButton ResumeButton;
+ private ImageButton ExitButton;
+ private Skin skin;
+ private MainClass mainClass;
+ private Table table;
+ private Background background;
+
+ BitmapFont font;
+ GlyphLayout layout;
+
+ private Stage stage;
+
+
+ public PauseScreen(final MainClass mainClass) {
+ this.mainClass = mainClass;
+ batch = new SpriteBatch();
+ PauseTitle = new Texture("skin/Pause.png");
+
+ background = new Background();
+ background.create();
+ background.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
+
+ skin = new Skin(Gdx.files.internal("skin/ButtonPack.json"));
+ font = new BitmapFont(Gdx.files.internal("skin/minecraft.fnt"));
+
+ layout = new GlyphLayout();
+ layout.setText(font, "PAUSE");
+
+ stage = new Stage(new ScreenViewport());
+
+ table = new Table();
+ table.setWidth(stage.getWidth());
+ table.align(Align.center | Align.top);
+ table.setPosition(0, Gdx.graphics.getHeight() / 2);
+
+ ResumeButton = new ImageButton(skin, "Resume");
+ ResumeButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ Gdx.app.log("Resume Game", "BEEP");
+ mainClass.setGameScreen();
+ }
+ });
+
+ ExitButton = new ImageButton(skin, "Exit");
+ ExitButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ Gdx.app.log("Exit Game", "BEEP");
+ Gdx.app.exit();
+ }
+ });
+
+ table.pad(30);
+ table.add(ResumeButton);
+ table.row();
+ table.add(ExitButton);
+
+ stage.addActor(table);
+
+ }
+
+ public void show() {
+ Gdx.input.setInputProcessor(stage); // kieu nhu no add input vao thang render. -- call before render each frame.
+ }
+
+ public void render(float delta) {
+ background.render();
+
+ stage.act();
+ stage.draw();
+
+ batch.begin();
+ batch.draw(PauseTitle, Gdx.graphics.getWidth()/2 - PauseTitle.getWidth()/2, Gdx.graphics.getHeight()/2);
+ batch.end();
+ }
+
+ @Override
+ public void resize(int width, int height) {
+
+ }
+
+ @Override
+ public void pause() {
+
+ }
+
+ @Override
+ public void resume() {
+
+ }
+
+ @Override
+ public void hide() {
+
+ }
+
+
+ public void dispose() {
+ stage.dispose();
+ batch.dispose();
+ skin.dispose();
+ }
+}
diff --git a/Huy/core/src/game/demo/Assets.java b/Huy/core/src/game/demo/Assets.java
new file mode 100644
index 0000000..3a518e4
--- /dev/null
+++ b/Huy/core/src/game/demo/Assets.java
@@ -0,0 +1,15 @@
+package game.demo;
+
+import com.badlogic.gdx.graphics.Texture;
+
+public class Assets {
+ public static Texture texture_bullet;
+ public static Texture texture_plane;
+ public static Texture texture_enemy;
+
+ public void load(){
+ texture_bullet = new Texture("Bullet99.png");
+ texture_plane = new Texture("Spacefighter2_Small.png");
+ texture_enemy = new Texture("Enemy_Small.png");
+ }
+}
diff --git a/Huy/core/src/game/demo/Background.java b/Huy/core/src/game/demo/Background.java
new file mode 100644
index 0000000..2522a86
--- /dev/null
+++ b/Huy/core/src/game/demo/Background.java
@@ -0,0 +1,84 @@
+package game.demo;
+
+import com.badlogic.gdx.ApplicationAdapter;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Camera;
+import com.badlogic.gdx.graphics.GL20;
+import com.badlogic.gdx.graphics.OrthographicCamera;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.utils.viewport.StretchViewport;
+import com.badlogic.gdx.utils.viewport.Viewport;
+
+public class Background {
+
+ //Screen
+ private Camera camera;
+ private Viewport viewport;
+
+ //Graphics
+ SpriteBatch batch;
+ Texture[] background;
+
+ //Background movement
+ private float[] backgroundOffset = {0,0,0,0};
+ private float speed;
+
+ //World parameters (Based on the game resolution)
+ private final int WORLD_WIDTH = 1280;
+ private final int WORLD_HEIGHT = 720;
+
+
+ public void create () {
+ background = new Texture[4];
+ camera = new OrthographicCamera();
+ viewport = new StretchViewport(WORLD_WIDTH, WORLD_HEIGHT, camera);
+
+ speed = WORLD_HEIGHT / 2;
+
+ batch = new SpriteBatch();
+
+ background[0] = new Texture("Star0.png");
+ background[1] = new Texture("Star1.png");
+ background[2] = new Texture("Star2.png");
+ background[3] = new Texture("Star3.png");
+
+ }
+
+ public void render () {
+ float deltaTime = Gdx.graphics.getDeltaTime(); //Time between frames
+ batch.begin();
+ MoveBackground(deltaTime);
+ batch.end();
+ }
+
+ public void MoveBackground(float deltaTime)
+ {
+ backgroundOffset[0] += speed/8 * deltaTime;
+ backgroundOffset[1] += speed/4 * deltaTime;
+ backgroundOffset[2] += speed/2 * deltaTime;
+ backgroundOffset[3] += speed * deltaTime;
+
+ for(int i = 0; i < background.length; i++)
+ {
+ backgroundOffset[i]++;
+ if(backgroundOffset[i] > WORLD_HEIGHT)
+ backgroundOffset[i] = 0;
+ batch.draw(background[i], 0, -backgroundOffset[i], WORLD_WIDTH, WORLD_HEIGHT);
+ batch.draw(background[i], 0, -backgroundOffset[i] + WORLD_HEIGHT, WORLD_WIDTH, WORLD_HEIGHT);
+ }
+ }
+
+
+ public void resize(int width, int height) {
+ viewport.update(width, height, true);
+ batch.setProjectionMatrix(camera.combined);
+ }
+
+
+ public void dispose () {
+ batch.dispose();
+ for(int i = 0; i < background.length; i++)
+ background[i].dispose();
+ }
+}
\ No newline at end of file
diff --git a/Huy/core/src/game/demo/Bullet.java b/Huy/core/src/game/demo/Bullet.java
new file mode 100644
index 0000000..f72f58d
--- /dev/null
+++ b/Huy/core/src/game/demo/Bullet.java
@@ -0,0 +1,198 @@
+package game.demo;
+
+import com.badlogic.gdx.ApplicationAdapter;
+import com.badlogic.gdx.Game;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.graphics.GL20;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+
+import java.util.Vector;
+import java.lang.Math;
+
+public class Bullet extends GameObj {
+ private SpriteBatch batch;
+ private long t=0l;
+ private static Bullet fakebase=new Bullet(0,0,0,0);
+ protected int Source_ID_Collision=0;
+
+
+
+
+ protected boolean isAlly(){
+ return (this.Source_ID_Collision==1);
+ }
+ public Bullet(float x_c, float y_c, float xfromhost, float yfromhost, int Id,int CollisionID) {
+ x = x_c + xfromhost;
+ x_b = x_c;
+ y = y_c + yfromhost;
+ y_b = y_c;
+ moveId = Id;
+ id=Id;
+ State=true;
+ scale = 1f;
+ Source_ID_Collision=CollisionID;
+ t=System.currentTimeMillis();
+ }
+
+ public Bullet(float x_c, float y_c, int Id,int CollisionID) {
+ x = x_c;
+ x_b = x_c;
+ y = y_c;
+ y_b = y_c;
+ scale = 0.7f;
+ id = Id;
+ Source_ID_Collision=CollisionID;
+ }
+
+ public static void resetfakebase(){
+ fakebase.x_b=MyGdxGame.player.getX();
+ fakebase.y_b=MyGdxGame.player.getY();
+ }
+
+ public void setX_move(float x_move) { this.x_move = x_move; }
+
+ public void setY_move(float y_move) {
+ this.y_move = y_move;
+ }
+
+ public void create() {
+
+ batch = new SpriteBatch();
+ State=true;
+ }
+
+ public void render(GameObj playerObject,Vector Earr,int location_of_Bullet,Vector Pixel1,Vector Pixel2) { // loop
+ batch.begin();
+ batch.draw(Assets.texture_bullet, (x- (this.Texture_Width/2)),(y- (this.Texture_Height/2)));
+ if (this.isAlly()){
+ for(int i=0;i< Earr.size();i++){
+ if ((this.distanceto(Earr.elementAt(i))<(Earr.elementAt(i).getSonarRange()+this.getSonarRange()))||(this.distanceto2(Earr.elementAt(i))<(Earr.elementAt(i).getSonarRange()+this.getSonarRange()))){
+ Pixel1.addElement(new PixelCoord(x- (this.Texture_Width/2),y- (this.Texture_Height/2),location_of_Bullet,i));
+ }
+ }
+ }
+ if (!this.isAlly()){
+ if ((this.distanceto(playerObject)<(playerObject.getSonarRange()+this.getSonarRange()))||(this.distanceto2(playerObject)<(playerObject.getSonarRange()+this.getSonarRange()))){
+ Pixel2.addElement(new PixelCoord(x- (this.Texture_Width/2),y- (this.Texture_Height/2),location_of_Bullet));
+ }
+ }
+ batch.end();
+ y += y_move;
+ x += x_move;
+ if (System.currentTimeMillis()-t>10000){
+ State=false;
+ }
+ }
+
+ public static void render(Player player,Vector Earr,Vector bullet_arr,Vector Pixel1,Vector Pixel2) {
+ for (int i = 0; i < bullet_arr.size(); i++) {
+ if (bullet_arr.elementAt(i).State) {
+ bullet_arr.elementAt(i).setMove();
+ bullet_arr.elementAt(i).render(player,Earr,i,Pixel1,Pixel2);
+ }
+ }
+ }
+
+ public void dispose() {
+ batch.dispose();
+ }
+
+ public static void Bullet_Reallo(Vector bullet_arr, float x_c, float y_c, float x_offset, float y_offset,int id,int Collision_ID) {
+ int BulletGen = 0;
+ loop: while (BulletGen == 0) {
+ // need change to replace DED value with ALIVE value in order for the vector not to be too long, waste of memory
+ for (int i = 0; i < bullet_arr.size(); i++) { //there exists at least an element in the array
+ if (bullet_arr.elementAt(i).isDed()) { // there is 1 dead bullet
+ bullet_arr.elementAt(i).Revive(x_c, y_c, x_offset,y_offset,id,Collision_ID);//revive it as a new bullet
+ BulletGen = 1;
+
+ /*Gdx.app.log("Log", "Bullet number "+i+" revived");*/
+ continue loop;
+ }
+ }
+ // if the code get here, there is NO dead bullet in the array
+ bullet_arr.addElement(new Bullet(x_c, y_c,x_offset,y_offset,id,Collision_ID));// create a new bullet
+ bullet_arr.lastElement().setParam();
+ bullet_arr.lastElement().create();
+ BulletGen = 1;
+ }
+ }
+
+ public boolean isDed() {
+ return !State;
+ }
+
+ public void Revive(float x_c,float y_c, float x_offset, float y_offset,int id,int CollisionID){
+ this.x_b=x_c;// omit for more effects
+ this.y_b=y_c;// omit for more effects
+ this.x=x_c+x_offset;
+ this.y=y_c+y_offset;
+ this.id=id;
+ this.moveId=id;
+ this.State=true;
+ this.Source_ID_Collision=CollisionID;
+ setHitboxRadius();
+ setValue();
+ t=System.currentTimeMillis();
+ }
+
+ public void Execute(){
+ State=false;
+ id=0;
+ }
+
+ /* ----------------------------------------------------------------------
+ * ----------------------------------------------------------------------
+ * --------------------------Edit - add more-----------------------------
+ * -------------------Bullets' hitbox, value, orbit----------------------
+ * ----------------------------------------------------------------------
+ * ----------------------------------------------------------------------*/
+
+ public void setHitboxRadius() {
+ switch (id){
+ case -1:
+ case -2:
+ case -3:
+ case 1:
+ hitboxRadius=((float)Assets.texture_bullet.getHeight()+(float)Assets.texture_bullet.getWidth())/4;
+ break;
+ }
+ }
+
+ public void setValue(){
+ value=1;
+ }
+
+ public void setMove() { //Furthermore edit bullet orbit here
+ X = x - x_b;
+ Y = y - y_b;
+ D = Math.sqrt((double) X * (double) X + (double) Y * (double) Y);
+ switch (moveId) {
+ case -1://straight
+ setX_move(10 * X / (float) D);
+ setY_move(10 * Y / (float) D);
+ break;
+ case -2://spin around host
+ setX_move(((Y*15-X*10)*5/(float)D));
+ setY_move(((-X*15-Y*10)*5/(float)D));
+ x_b=MyGdxGame.player.getX();
+ y_b=MyGdxGame.player.getY();
+ if (System.currentTimeMillis()-t>500){
+ t=System.currentTimeMillis();
+ moveId=-1;
+ }
+ break;
+ case -3:
+ x_b=fakebase.x_b;
+ y_b=fakebase.y_b;
+ moveId=-1;
+ break;
+ case 1:
+ setX_move(3 * X / (float) D);
+ setY_move(3 * Y / (float) D);
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Huy/core/src/game/demo/Collision.java b/Huy/core/src/game/demo/Collision.java
new file mode 100644
index 0000000..1145691
--- /dev/null
+++ b/Huy/core/src/game/demo/Collision.java
@@ -0,0 +1,83 @@
+package game.demo;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Pixmap;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.Vector;
+
+public class Collision {
+
+//ALERT, THIS WILL CAUSE OUT OF BOUNDS OF SCREEN REAL PIXELS, WHAT IF WE HAVE THE CURSOR AT THE CORNER, WHERE ARE THE WASTED PIXEL?
+
+
+ public int[][] Materialize(String name,int ID,int width_of_byte,int bpp){
+ Pixmap pixmap = new Pixmap(Gdx.files.internal(name));
+ ByteBuffer nativeData = pixmap.getPixels();
+ byte[] byte_arr = new byte[nativeData.remaining()];
+ nativeData.get(byte_arr);
+ pixmap.dispose();
+ int [][] result=HitboxGen(byte_arr,width_of_byte,bpp);
+ return result;
+ }
+
+ public int[][] HitboxGen(byte [] byte_arr ,int width_of_byte,int bpp){
+ int[] newdata=new int[byte_arr.length/(bpp/8)];
+ int height_of_byte= byte_arr.length/(bpp/8)/width_of_byte;
+ int[][] TransparencyMap=new int[height_of_byte+2][width_of_byte+2];//map of transparent pixels
+ int[][] DensityMap=new int[height_of_byte+2][width_of_byte+2];//map of hitbox
+ int[][] Hitbox=new int[height_of_byte][width_of_byte];//map of density level
+ for(int i=0;i enemy_arr,Vector Sonar) {
+ for (int i = 0; i < enemy_arr.size(); i++) {
+ if (enemy_arr.elementAt(i).State) {
+ enemy_arr.elementAt(i).setMove();
+ enemy_arr.elementAt(i).setHitbox(Sonar);
+ enemy_arr.elementAt(i).render();
+
+ }
+ }
+ }
+ public void setX_move(float x_move){this.x_move=x_move;}
+ public void setY_move(float y_move){this.y_move=y_move;}
+
+ public boolean isDed() {
+ return !State;
+ }
+
+ public boolean isExecuted() {
+ if ((value<0)&&State){
+ State=false;
+ return true;
+ }
+ return false;
+ }
+
+ public void render() { // loop
+ batch.begin();
+ batch.draw(Assets.texture_enemy, (int)(x- (Assets.texture_enemy.getWidth()*scale/2)),(int)(y- (Assets.texture_enemy.getHeight()*scale/2)),Assets.texture_enemy.getWidth()*scale,Assets.texture_enemy.getHeight()*scale);
+ batch.end();
+ y += y_move;
+ x += x_move;
+ }
+
+ public static void fire(Vector enemy_arr, Vector bullet_arr){
+ for (int i=0; i enemy_arr, float x_c, float y_c, int id, int Wave) {
+ int EnemyGen = 0;
+ loop: while (EnemyGen == 0) {
+ // need change to replace DED value with ALIVE value in order for the vector not to be too long, waste of memory
+ for (int i = 0; i < enemy_arr.size(); i++) { //there exists at least an element in the array
+ if (enemy_arr.elementAt(i).isDed()) { // there is 1 dead enemy
+ enemy_arr.elementAt(i).Revive(x_c, y_c, id, Wave);//revive it as a new enemy
+ EnemyGen = 1;
+ continue loop;
+ }
+ }
+ // if the code get here, there is NO dead enemy in the array
+ enemy_arr.addElement(new Enemy(x_c, y_c, id, Wave));// create a new enemy
+ enemy_arr.lastElement().setParam();
+ enemy_arr.lastElement().create();
+ EnemyGen = 1;
+ }
+ }
+
+ public void Revive(float x_c,float y_c,int id, int Wave){
+ this.x_b=x_c;
+ this.y_b=y_c;
+ this.x=x_c;
+ this.y=y_c;
+ this.id=id;
+ this.moveId=id;
+ this.State=true;
+ this.Wave=Wave;
+ setPoint();
+ setValue();
+ setHitboxRadius();
+ t=t1=System.currentTimeMillis();
+ }
+
+ public static void checkCollision(Vector enemy_arr, Vector bullet_arr){
+ for (int i=0;i bullet_arr){
+ for (int i=0;i Aaar,Vector bulletarr){
+ loop: for(int i=0;i800)) x_move=-x_move;
+ if ((y+y_move<480)||(y+y_move>720)) y_move=-y_move;
+ if ((System.currentTimeMillis()-t1>10000)&&(x>640)) x_move=2;
+ if ((System.currentTimeMillis()-t1>10000)&&(x<640)) x_move=-2;
+ if ((x<0)||(x>1280)) State=false;
+ break;
+ case 2:
+ x_move=0;
+ y_move=-1;
+ if(System.currentTimeMillis()-t1>2000) y_move=0;
+ if(System.currentTimeMillis()-t1>7000) y_move=1;
+ if(System.currentTimeMillis()-t1>10000) State=false;
+ break;
+ case 3:
+ x_move=2;
+ y_move=0;
+ if(x>1280) State=false;
+ break;
+ }
+ }
+ //Furthermore edit enemy move here
+
+ public void Bullet_Call(Vector bullet_arr) { //Furthermore edit here
+ X = x - MyGdxGame.player.x;
+ Y = y - MyGdxGame.player.y;
+
+ D = Math.sqrt((double) X * (double) X + (double) Y * (double) Y);
+ switch (id) {
+ case 1:
+ if ((System.currentTimeMillis() - t) > 1000 - Wave * 10) {
+ Bullet.Bullet_Reallo(bullet_arr, x, y, -X / (float) D, -Y / (float) D, 1,-1);
+ Bullet.Bullet_Reallo(bullet_arr, x - 10, y, -X / (float) D, -Y / (float) D, 1,-1);
+ Bullet.Bullet_Reallo(bullet_arr, x + 10, y, -X / (float) D, -Y / (float) D, 1,-1);
+ t = System.currentTimeMillis();
+ }
+ break;
+ case 2:
+ case 3:
+ if ((System.currentTimeMillis() - t) > 1000) {
+ Bullet.Bullet_Reallo(bullet_arr, x, y, -X / (float) D, -Y / (float) D, 1,-1);
+ Bullet.Bullet_Reallo(bullet_arr, x - 20, y, -(X - 20) / (float) D, -Y / (float) D, 1,-1);
+ Bullet.Bullet_Reallo(bullet_arr, x + 20, y, -(X + 20) / (float) D, -Y / (float) D, 1,-1);
+ t=System.currentTimeMillis();
+ }
+ break;
+ }
+ }
+ //edit enemy shooting
+
+ public void setValue(){
+ switch (id) {
+ case 1:
+ value=10+Wave*2;
+ break;
+ case 2:
+ value=5+Wave;
+ break;
+ case 3:
+ value=10+Wave;
+ break;
+ }
+ }
+ //set enemy HP base on id
+
+ public void setPoint(){
+ switch (id){
+ case 1:
+ case 2:
+ case 3:
+ point=1;
+ break;
+ }
+ }
+ //set enemy point base on id
+
+ public void setHitboxRadius(){
+ switch (id){
+ case 1:
+ case 2:
+ case 3:
+ hitboxRadius=20;
+ break;
+ }
+ }
+ //set enemy hitbox base on id
+
+}
\ No newline at end of file
diff --git a/Huy/core/src/game/demo/GameObj.java b/Huy/core/src/game/demo/GameObj.java
new file mode 100644
index 0000000..71f86a1
--- /dev/null
+++ b/Huy/core/src/game/demo/GameObj.java
@@ -0,0 +1,92 @@
+package game.demo;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+
+import java.util.Vector;
+
+import static java.lang.Integer.max;
+
+public class GameObj {
+ protected float x;
+ protected float y;
+ private Background bg=new Background();
+ protected float x_b;
+ protected float y_b;
+ protected float x_move;
+ protected float y_move;
+ protected float X;
+ protected float Y;
+ protected double D;
+ public int S_width;
+ public int S_height;
+ protected float scale = 1f;
+ Texture art;
+ protected int id; //negative for player, positive for enemy
+ protected int moveId;
+ protected boolean State;
+ protected long value;
+ protected float scaleWidth;
+ protected float scaleHeight;
+ protected float hitboxRadius;
+ protected SpriteBatch batch;
+ protected int Texture_Width=9;
+ protected int Texture_Height=9;
+ public Vector Pixel=new Vector();
+
+ public void setParam(){
+ this.S_width=Gdx.graphics.getWidth();
+ this.S_height=Gdx.graphics.getHeight();
+
+ }
+ public void setScale(float scaleWidth, float scaleHeight){
+ this.scaleWidth = scaleWidth;
+ this.scaleHeight = scaleHeight;
+ }
+
+
+ public float getX() {
+ return x;
+ }
+
+ public float getY() {
+ return y;
+ }
+ public long getValue() { return value;}
+ public void dispose(){
+ art.dispose();
+
+ }
+ public double getSonarRange(){
+ return max(this.Texture_Width/2,this.Texture_Height/2);
+ }
+
+
+
+ public double distanceto(GameObj another){
+ return Math.sqrt(Math.pow(this.x+this.Texture_Width/2-another.x-another.Texture_Width/2,2) + Math.pow(this.x+this.Texture_Height/2-another.x-another.Texture_Height/2,2));
+ }
+ public double distanceto2(GameObj another){
+ return Math.sqrt(Math.pow(this.x-this.Texture_Width/2-another.x+another.Texture_Width/2,2) + Math.pow(this.x-this.Texture_Height/2-another.x+another.Texture_Height/2,2));
+ }
+
+ public void PixelClear(){
+ Pixel.clear();
+ }
+ public void setHitbox(Vector Sonar){
+ PixelClear();
+ for(int i=0;i it just save a variable __> different from c++.
+ // In later we have to player = new Player() in somewhere--> but not remove new Player()
+ public static int point = 0;
+ BitmapFont font_point;
+ static Player player = new Player();
+ Assets assets = new Assets();
+ Vector bullet_arr = new Vector<>();
+ Vector enemy_arr = new Vector<>();
+ Background background = new Background();
+ Label label_point = new Label("0",new Skin(Gdx.files.internal("skin/Textfield.json")));
+ Skin skin;
+ SpriteBatch batch;
+ static int Wave=0;
+ private Stage stage;
+
+
+ static Vector Sonar_Player=new Vector<>();//generic relative position
+ static Vector Sonar_Enemy=new Vector<>();//generic relative position
+ static Vector Bullet_Ally_Pixel=new Vector<>();//generic relative position
+ static Vector Bullet_Oppress_Pixel=new Vector<>();//generic relative position
+
+
+
+ boolean pauseGame = false;
+ MainClass mainClass;
+ int z1=0;
+
+ // Texture sprite_bullet;
+// //Input in; // interface class --> abstract class --> we cannot call obj of this class.
+ public MyGdxGame(MainClass mainClass){
+ stage = new Stage();
+ label_point.setText(point);
+ label_point.setFontScale(2f);
+ label_point.setPosition(0,Gdx.graphics.getHeight()-50);
+ stage.addActor(label_point);
+
+ this.mainClass = mainClass;
+ assets.load();
+ player.create(assets.texture_plane.getWidth(),assets.texture_plane.getHeight());
+ background.create();
+ background.resize(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
+
+
+
+ /*------------------------------------------------------------------------------------------------------------*/
+ /*--------------------------------newly added 23/10/2020------------------------------------------------------*/
+ Bullet_Oppress_Pixel.clear();
+ Bullet_Ally_Pixel.clear();
+ Sonar_Player.clear();
+ Sonar_Enemy.clear();
+ int z1=0;
+ String path = ((FileTextureData)assets.texture_plane.getTextureData()).getFileHandle().path();
+ String path2 = ((FileTextureData)assets.texture_bullet.getTextureData()).getFileHandle().path();
+ String path3 = ((FileTextureData)assets.texture_enemy.getTextureData()).getFileHandle().path();
+ Collision tor=new Collision();
+ int[][] Sonar_P=tor.Materialize(path,1,Assets.texture_plane.getWidth(),32);
+ int[][] Sonar_B=tor.Materialize(path2,2,Assets.texture_bullet.getWidth(),32);
+ int[][] Sonar_E=tor.Materialize(path3,3,Assets.texture_enemy.getWidth(),32);
+ //start collision model outline for generic relative position from drawing position\
+ for (int i=0;i rapidity) {
+ t = System.currentTimeMillis();
+ loaded = 1;
+ } else {
+ loaded = 0;
+ }
+ if (loaded==1) return true;
+ else return false;
+
+ }
+ else return false;
+ }
+
+ public void render_player () { // loop
+ if (State) {
+ batch.begin();
+ batch.draw(Assets.texture_plane, (x - (this.Texture_Width/2)), (y - (Texture_Height/2)));
+ batch.end();
+ }
+ input();
+
+ }
+ public void dispose () {
+ batch.dispose();
+ }
+
+ public static void checkCollision(Vector bullet_arr){
+ for (int i=0;i Hail,Vector Barr){
+ loop: for(int i=0;iGdx.graphics.getWidth()) x=Gdx.graphics.getWidth();
+ if (Gdx.input.isKeyPressed(Input.Keys.UP)) y+=varyDistance;
+ if (y>Gdx.graphics.getHeight()) y=Gdx.graphics.getHeight();
+ if (Gdx.input.isKeyPressed(Input.Keys.DOWN)) y-=varyDistance;
+ if (y<0) y=0;
+ }
+
+ public void Bullet_Call(Vector bullet_arr) { //Furthermore edit here
+ switch (Math.abs(id)) {
+ case 0:
+ {
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 0, 30, 0,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 0, -30, 0,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 30, 0, 0,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), -30, 0, 0,1);
+ break;
+ }
+ case 1:
+ /* bullet_arr.addElement(new Bullet(getX(), getY(), 0, 30, 1));*/
+ {
+ if (Gdx.input.isKeyPressed(Input.Keys.SHIFT_LEFT)) {
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 0, 30, -3,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), -5, 29, -3,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 5, 29, -3,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 0, 25, -3,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), -10, 28, -3,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 10, 28, -3,1);
+ }
+ else {
+ Bullet.Bullet_Reallo(bullet_arr,getX(), getY(), 0, 30, -1,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX()-3, getY(), -2, 29, -1,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX()+3, getY(), 2, 29, -1,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX()-5, getY(), -5, 28, -1,1);
+ Bullet.Bullet_Reallo(bullet_arr,getX()+5, getY(), 5, 28, -1,1);
+ }
+ }
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Huy/core/src/game/demo/Waves.java b/Huy/core/src/game/demo/Waves.java
new file mode 100644
index 0000000..7766143
--- /dev/null
+++ b/Huy/core/src/game/demo/Waves.java
@@ -0,0 +1,76 @@
+package game.demo;
+import com.badlogic.gdx.Gdx;
+
+import java.lang.Object;
+import java.util.Random;
+import java.util.Vector;
+import java.util.concurrent.TimeUnit;
+
+public class Waves {
+ private static Random waveid=new Random();
+ private static long wavetime=0;
+ private static long t=System.currentTimeMillis();
+ // private static long t1=System.currentTimeMillis();
+ private static boolean Loadwave;
+ private static int enemies=0;
+ private static int id;
+ private static boolean isAllEGone;
+ private static Object obj=new Object();
+
+ public static void Wave_Come(Vector enemy_arr) {
+ if (System.currentTimeMillis() - t > wavetime) {
+ t = System.currentTimeMillis();
+ Loadwave = true;
+ MyGdxGame.Wave++;
+ id=waveid.nextInt(3);
+ enemies=0;
+ }
+ if (System.currentTimeMillis() - t <= wavetime){
+ if (Loadwave) {
+ Wave_Call(enemy_arr, MyGdxGame.Wave);
+ }
+ /*if (!Loadwave){
+ isAllEGone=false;
+ for (int i=0;i enemy_arr, int Wave) {
+ switch (id){
+ case 1:
+ wavetime=20000;
+ for (int i=0; i<(Wave+1)/2; i++){
+ Enemy.Enemy_Reallo(enemy_arr,(float)(waveid.nextInt(320)+480), (float)(waveid.nextInt(160)+560), 1, Wave);//this is just an example
+ }
+ Loadwave=false;
+ break;
+ case 2:
+ wavetime=10000;
+ for (int i=0; i<8; i++){
+ Enemy.Enemy_Reallo(enemy_arr,(float)(80+160*i)*Gdx.graphics.getWidth()/1280,720* Gdx.graphics.getHeight()/720,2,Wave);
+ }
+ Loadwave=false;
+ break;
+ case 3:
+ wavetime=10000;
+ if (System.currentTimeMillis()-t>1000){
+ Enemy.Enemy_Reallo(enemy_arr, 0, (float) (waveid.nextInt(160) + 560), 3, Wave);
+ t=System.currentTimeMillis();
+ enemies++;
+ }
+ if (enemies==Wave) Loadwave=false;
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Huy/database.json b/Huy/database.json
new file mode 100644
index 0000000..0602fb3
--- /dev/null
+++ b/Huy/database.json
@@ -0,0 +1 @@
+Khoa
\ No newline at end of file
diff --git a/Huy/database.txt b/Huy/database.txt
new file mode 100644
index 0000000..30d74d2
--- /dev/null
+++ b/Huy/database.txt
@@ -0,0 +1 @@
+test
\ No newline at end of file
diff --git a/Huy/desktop/build.gradle b/Huy/desktop/build.gradle
new file mode 100644
index 0000000..c292c43
--- /dev/null
+++ b/Huy/desktop/build.gradle
@@ -0,0 +1,39 @@
+sourceCompatibility = 1.7
+sourceSets.main.java.srcDirs = [ "src/" ]
+sourceSets.main.resources.srcDirs = ["../core/assets"]
+
+project.ext.mainClassName = "game.demo.desktop.DesktopLauncher"
+project.ext.assetsDir = new File("../core/assets")
+
+task run(dependsOn: classes, type: JavaExec) {
+ main = project.mainClassName
+ classpath = sourceSets.main.runtimeClasspath
+ standardInput = System.in
+ workingDir = project.assetsDir
+ ignoreExitValue = true
+}
+
+task debug(dependsOn: classes, type: JavaExec) {
+ main = project.mainClassName
+ classpath = sourceSets.main.runtimeClasspath
+ standardInput = System.in
+ workingDir = project.assetsDir
+ ignoreExitValue = true
+ debug = true
+}
+
+task dist(type: Jar) {
+ manifest {
+ attributes 'Main-Class': project.mainClassName
+ }
+ dependsOn configurations.runtimeClasspath
+ from {
+ configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+ }
+ with jar
+}
+
+
+dist.dependsOn classes
+
+eclipse.project.name = appName + "-desktop"
diff --git a/Huy/desktop/build/classes/java/main/game/demo/desktop/DesktopLauncher.class b/Huy/desktop/build/classes/java/main/game/demo/desktop/DesktopLauncher.class
new file mode 100644
index 0000000..6d7a005
Binary files /dev/null and b/Huy/desktop/build/classes/java/main/game/demo/desktop/DesktopLauncher.class differ
diff --git a/Huy/desktop/build/resources/main/Audio/README.md b/Huy/desktop/build/resources/main/Audio/README.md
new file mode 100644
index 0000000..45d50c5
--- /dev/null
+++ b/Huy/desktop/build/resources/main/Audio/README.md
@@ -0,0 +1 @@
+# For sounds and stuff
diff --git a/Huy/desktop/build/resources/main/Audio/ZA-WARUDO.mp3 b/Huy/desktop/build/resources/main/Audio/ZA-WARUDO.mp3
new file mode 100644
index 0000000..79299cd
Binary files /dev/null and b/Huy/desktop/build/resources/main/Audio/ZA-WARUDO.mp3 differ
diff --git a/Huy/desktop/build/resources/main/Bullet_plane.png b/Huy/desktop/build/resources/main/Bullet_plane.png
new file mode 100644
index 0000000..d6fb36d
Binary files /dev/null and b/Huy/desktop/build/resources/main/Bullet_plane.png differ
diff --git a/Huy/desktop/build/resources/main/Enemy.png b/Huy/desktop/build/resources/main/Enemy.png
new file mode 100644
index 0000000..5f41564
Binary files /dev/null and b/Huy/desktop/build/resources/main/Enemy.png differ
diff --git a/Huy/desktop/build/resources/main/META-INF/MANIFEST.MF b/Huy/desktop/build/resources/main/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..788c1a2
--- /dev/null
+++ b/Huy/desktop/build/resources/main/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: game.demo.desktop.DesktopLauncher
+
diff --git a/Huy/desktop/build/resources/main/Plane.png b/Huy/desktop/build/resources/main/Plane.png
new file mode 100644
index 0000000..f4d0b59
Binary files /dev/null and b/Huy/desktop/build/resources/main/Plane.png differ
diff --git a/Huy/desktop/build/resources/main/Star0.png b/Huy/desktop/build/resources/main/Star0.png
new file mode 100644
index 0000000..8903a23
Binary files /dev/null and b/Huy/desktop/build/resources/main/Star0.png differ
diff --git a/Huy/desktop/build/resources/main/Star1.png b/Huy/desktop/build/resources/main/Star1.png
new file mode 100644
index 0000000..27618fe
Binary files /dev/null and b/Huy/desktop/build/resources/main/Star1.png differ
diff --git a/Huy/desktop/build/resources/main/Star2.png b/Huy/desktop/build/resources/main/Star2.png
new file mode 100644
index 0000000..a186f92
Binary files /dev/null and b/Huy/desktop/build/resources/main/Star2.png differ
diff --git a/Huy/desktop/build/resources/main/Star3.png b/Huy/desktop/build/resources/main/Star3.png
new file mode 100644
index 0000000..b4df82c
Binary files /dev/null and b/Huy/desktop/build/resources/main/Star3.png differ
diff --git a/Huy/desktop/build/resources/main/badlogic.jpg b/Huy/desktop/build/resources/main/badlogic.jpg
new file mode 100644
index 0000000..4390da6
Binary files /dev/null and b/Huy/desktop/build/resources/main/badlogic.jpg differ
diff --git a/Huy/desktop/build/resources/main/database.txt b/Huy/desktop/build/resources/main/database.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Huy/desktop/build/resources/main/skin/ArcadeClassic.fnt b/Huy/desktop/build/resources/main/skin/ArcadeClassic.fnt
new file mode 100644
index 0000000..ef5dcb1
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/ArcadeClassic.fnt
@@ -0,0 +1,71 @@
+info face="ArcadeClassic" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
+common lineHeight=33 base=26 scaleW=512 scaleH=512 pages=1 packed=0
+page id=0 file="ArcadeClassic.png"
+chars count=66
+char id=10 x=0 y=0 width=15 height=28 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=25 xadvance=4 page=0 chnl=0
+char id=33 x=146 y=28 width=13 height=18 xoffset=0 yoffset=7 xadvance=22 page=0 chnl=0
+char id=34 x=0 y=0 width=15 height=28 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=48 x=127 y=28 width=19 height=18 xoffset=-1 yoffset=7 xadvance=18 page=0 chnl=0
+char id=49 x=475 y=0 width=16 height=18 xoffset=1 yoffset=7 xadvance=18 page=0 chnl=0
+char id=50 x=491 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=51 x=0 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=52 x=18 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=53 x=36 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=54 x=54 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=55 x=72 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=56 x=90 y=28 width=19 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=57 x=109 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=65 x=15 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=66 x=33 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=67 x=51 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=68 x=69 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=69 x=87 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=70 x=105 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=71 x=123 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=72 x=141 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=73 x=159 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=74 x=175 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=75 x=193 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=76 x=211 y=0 width=16 height=18 xoffset=-2 yoffset=7 xadvance=18 page=0 chnl=0
+char id=77 x=227 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=78 x=245 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=79 x=263 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=80 x=281 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=81 x=299 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=82 x=317 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=83 x=335 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=84 x=353 y=0 width=16 height=18 xoffset=-3 yoffset=7 xadvance=17 page=0 chnl=0
+char id=85 x=369 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=86 x=387 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=87 x=405 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=88 x=423 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=89 x=441 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=90 x=457 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=97 x=15 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=98 x=33 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=99 x=51 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=100 x=69 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=101 x=87 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=102 x=105 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=103 x=123 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=104 x=141 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=105 x=159 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=106 x=175 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=107 x=193 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=108 x=211 y=0 width=16 height=18 xoffset=-2 yoffset=7 xadvance=18 page=0 chnl=0
+char id=109 x=227 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=110 x=245 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=111 x=263 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=112 x=281 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=113 x=299 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=114 x=317 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=115 x=335 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=116 x=353 y=0 width=16 height=18 xoffset=-3 yoffset=7 xadvance=17 page=0 chnl=0
+char id=117 x=369 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=118 x=387 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=119 x=405 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=120 x=423 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=121 x=441 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=122 x=457 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+kernings count=0
diff --git a/Huy/desktop/build/resources/main/skin/ArcadeClassic.png b/Huy/desktop/build/resources/main/skin/ArcadeClassic.png
new file mode 100644
index 0000000..475c9d6
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/ArcadeClassic.png differ
diff --git a/Huy/desktop/build/resources/main/skin/ButtonPack.atlas b/Huy/desktop/build/resources/main/skin/ButtonPack.atlas
new file mode 100644
index 0000000..d7e5f98
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/ButtonPack.atlas
@@ -0,0 +1,111 @@
+
+ButtonPack.png
+size: 2048,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+ExitButtonDown
+ rotate: false
+ xy: 1558, 274
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonHover
+ rotate: false
+ xy: 1108, 138
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonUp
+ rotate: false
+ xy: 658, 2
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+MainMenuButtonDown
+ rotate: false
+ xy: 2, 138
+ size: 448, 134
+ orig: 448, 134
+ offset: 0, 0
+ index: -1
+MainMenuButtonHover
+ rotate: false
+ xy: 452, 274
+ size: 448, 134
+ orig: 448, 134
+ offset: 0, 0
+ index: -1
+MainMenuButtonUp
+ rotate: false
+ xy: 2, 274
+ size: 448, 134
+ orig: 448, 134
+ offset: 0, 0
+ index: -1
+PlayButtonDown
+ rotate: false
+ xy: 1406, 138
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonHover
+ rotate: false
+ xy: 1254, 2
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonUp
+ rotate: false
+ xy: 956, 2
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ResumeButtonDown
+ rotate: false
+ xy: 1230, 274
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+ResumeButtonHover
+ rotate: false
+ xy: 780, 138
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+ResumeButtonUp
+ rotate: false
+ xy: 902, 274
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+RetryButtonDown
+ rotate: false
+ xy: 330, 2
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+RetryButtonHover
+ rotate: false
+ xy: 2, 2
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
+RetryButtonUp
+ rotate: false
+ xy: 452, 138
+ size: 326, 134
+ orig: 326, 134
+ offset: 0, 0
+ index: -1
diff --git a/Huy/desktop/build/resources/main/skin/ButtonPack.json b/Huy/desktop/build/resources/main/skin/ButtonPack.json
new file mode 100644
index 0000000..f19178f
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/ButtonPack.json
@@ -0,0 +1,34 @@
+{
+ com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ },
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ },
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+ Resume: {
+ up: ResumeButtonUp
+ down: ResumeButtonDown
+ over: ResumeButtonHover
+ },
+ Retry: {
+ up: RetryButtonUp
+ down: RetryButtonDown
+ over: RetryButtonHover
+ }
+ MainMenu: {
+ up: MainMenuButtonUp
+ down: MainMenuButtonDown
+ over: MainMenuButtonHover
+ }
+ }
+}
\ No newline at end of file
diff --git a/Huy/desktop/build/resources/main/skin/ButtonPack.png b/Huy/desktop/build/resources/main/skin/ButtonPack.png
new file mode 100644
index 0000000..8cf3d7f
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/ButtonPack.png differ
diff --git a/Huy/desktop/build/resources/main/skin/ButtonPackTestField.json b/Huy/desktop/build/resources/main/skin/ButtonPackTestField.json
new file mode 100644
index 0000000..884dc43
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/ButtonPackTestField.json
@@ -0,0 +1,24 @@
+{
+com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+}
+}
\ No newline at end of file
diff --git a/Huy/desktop/build/resources/main/skin/GAMEOVER.png b/Huy/desktop/build/resources/main/skin/GAMEOVER.png
new file mode 100644
index 0000000..524ca13
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/GAMEOVER.png differ
diff --git a/Huy/desktop/build/resources/main/skin/GameTitle.png b/Huy/desktop/build/resources/main/skin/GameTitle.png
new file mode 100644
index 0000000..62b55b6
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/GameTitle.png differ
diff --git a/Huy/desktop/build/resources/main/skin/Pause.png b/Huy/desktop/build/resources/main/skin/Pause.png
new file mode 100644
index 0000000..171044e
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/Pause.png differ
diff --git a/Huy/desktop/build/resources/main/skin/README.md b/Huy/desktop/build/resources/main/skin/README.md
new file mode 100644
index 0000000..7ed66f0
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/README.md
@@ -0,0 +1 @@
+# Skin stuff
diff --git a/Huy/desktop/build/resources/main/skin/Rectangle 1.png b/Huy/desktop/build/resources/main/skin/Rectangle 1.png
new file mode 100644
index 0000000..28f6afe
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/Rectangle 1.png differ
diff --git a/Huy/desktop/build/resources/main/skin/Textfield.atlas b/Huy/desktop/build/resources/main/skin/Textfield.atlas
new file mode 100644
index 0000000..a43181e
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/Textfield.atlas
@@ -0,0 +1,83 @@
+
+Textfield.png
+size: 2048,2048
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+Background_mainmenu
+ rotate: false
+ xy: 1, 1243
+ size: 1280, 720
+ orig: 1280, 720
+ offset: 0, 0
+ index: -1
+ExitButtonDown
+ rotate: false
+ xy: 1283, 1634
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonHover
+ rotate: false
+ xy: 1, 398
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonUp
+ rotate: false
+ xy: 1283, 1498
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+Group 1
+ rotate: false
+ xy: 1, 1048
+ size: 682, 193
+ orig: 682, 193
+ offset: 0, 0
+ index: -1
+PlayButtonDown
+ rotate: false
+ xy: 1581, 1634
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonHover
+ rotate: false
+ xy: 1, 262
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonUp
+ rotate: false
+ xy: 1283, 1362
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+Rectangle 1
+ rotate: false
+ xy: 685, 1151
+ size: 489, 90
+ orig: 489, 90
+ offset: 0, 0
+ index: -1
+clicked
+ rotate: false
+ xy: 1283, 1770
+ size: 682, 193
+ orig: 682, 193
+ offset: 0, 0
+ index: -1
+minecraft
+ rotate: false
+ xy: 1, 534
+ size: 512, 512
+ orig: 512, 512
+ offset: 0, 0
+ index: -1
diff --git a/Huy/desktop/build/resources/main/skin/Textfield.json b/Huy/desktop/build/resources/main/skin/Textfield.json
new file mode 100644
index 0000000..f8420ab
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/Textfield.json
@@ -0,0 +1,57 @@
+{
+com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+}
+com.badlogic.gdx.graphics.Color: {
+ RGBA_255_255_255_255: {
+ r: 1
+ g: 1
+ b: 1
+ a: 1
+ }
+}
+com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable: {
+ Group 1: {
+ region: Group 1
+ minWidth: 13
+ minHeight: 3
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ background: Rectangle 1
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: {
+ default: {
+ label: default
+ }
+}
+}
\ No newline at end of file
diff --git a/Huy/desktop/build/resources/main/skin/Textfield.png b/Huy/desktop/build/resources/main/skin/Textfield.png
new file mode 100644
index 0000000..d44f513
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/Textfield.png differ
diff --git a/Huy/desktop/build/resources/main/skin/minecraft.fnt b/Huy/desktop/build/resources/main/skin/minecraft.fnt
new file mode 100644
index 0000000..8070467
--- /dev/null
+++ b/Huy/desktop/build/resources/main/skin/minecraft.fnt
@@ -0,0 +1,102 @@
+info face="Minecraft" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
+common lineHeight=35 base=24 scaleW=512 scaleH=512 pages=1 packed=0
+page id=0 file="minecraft.png"
+chars count=97
+char id=0 x=194 y=60 width=10 height=23 xoffset=0 yoffset=2 xadvance=12 page=0 chnl=0
+char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=10 page=0 chnl=0
+char id=33 x=0 y=60 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=34 x=22 y=86 width=18 height=14 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=35 x=114 y=60 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=36 x=80 y=0 width=18 height=30 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=37 x=88 y=60 width=26 height=26 xoffset=1 yoffset=-1 xadvance=28 page=0 chnl=0
+char id=38 x=136 y=60 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=39 x=76 y=86 width=6 height=10 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=40 x=24 y=60 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=41 x=38 y=60 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=42 x=496 y=60 width=14 height=14 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=43 x=478 y=60 width=18 height=18 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
+char id=44 x=82 y=86 width=6 height=10 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=0
+char id=45 x=102 y=86 width=12 height=6 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0
+char id=46 x=96 y=86 width=6 height=6 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=0
+char id=47 x=52 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=48 x=492 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=49 x=326 y=34 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=50 x=340 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=51 x=358 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=52 x=376 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=53 x=396 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=54 x=418 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=55 x=438 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=56 x=456 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=57 x=474 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=58 x=420 y=60 width=6 height=20 xoffset=1 yoffset=5 xadvance=8 page=0 chnl=0
+char id=59 x=188 y=60 width=6 height=24 xoffset=1 yoffset=5 xadvance=8 page=0 chnl=0
+char id=60 x=450 y=60 width=14 height=18 xoffset=-1 yoffset=3 xadvance=14 page=0 chnl=0
+char id=61 x=58 y=86 width=18 height=14 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=62 x=464 y=60 width=14 height=18 xoffset=-1 yoffset=3 xadvance=14 page=0 chnl=0
+char id=63 x=6 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=64 x=50 y=0 width=30 height=32 xoffset=-1 yoffset=-1 xadvance=30 page=0 chnl=0
+char id=65 x=116 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=66 x=136 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=67 x=158 y=0 width=24 height=26 xoffset=-1 yoffset=-1 xadvance=24 page=0 chnl=0
+char id=68 x=182 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=69 x=204 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=70 x=226 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=71 x=246 y=0 width=24 height=26 xoffset=-1 yoffset=-1 xadvance=24 page=0 chnl=0
+char id=72 x=270 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=73 x=292 y=0 width=10 height=26 xoffset=1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=74 x=302 y=0 width=16 height=26 xoffset=-1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=75 x=318 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=76 x=338 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=77 x=358 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=78 x=380 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=79 x=402 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=80 x=428 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=81 x=450 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=82 x=476 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=83 x=0 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=84 x=20 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=85 x=42 y=34 width=20 height=26 xoffset=1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=86 x=62 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=87 x=84 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=88 x=106 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=89 x=128 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=90 x=150 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=91 x=30 y=0 width=10 height=32 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=92 x=70 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=93 x=40 y=0 width=10 height=32 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=94 x=40 y=86 width=18 height=14 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=95 x=136 y=86 width=20 height=4 xoffset=-1 yoffset=21 xadvance=20 page=0 chnl=0
+char id=96 x=88 y=86 width=8 height=8 xoffset=1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=97 x=260 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=98 x=172 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=99 x=280 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=100 x=194 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=101 x=300 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=102 x=212 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=103 x=98 y=0 width=18 height=28 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=104 x=230 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=105 x=502 y=0 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=106 x=248 y=34 width=16 height=26 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
+char id=107 x=264 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=108 x=282 y=34 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=109 x=318 y=60 width=30 height=20 xoffset=-1 yoffset=5 xadvance=30 page=0 chnl=0
+char id=110 x=348 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=111 x=368 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=112 x=288 y=34 width=20 height=26 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=113 x=308 y=34 width=18 height=26 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=114 x=386 y=60 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=0
+char id=115 x=204 y=60 width=16 height=22 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
+char id=116 x=158 y=60 width=12 height=24 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0
+char id=117 x=402 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=118 x=0 y=86 width=22 height=16 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=0
+char id=119 x=426 y=60 width=24 height=18 xoffset=-1 yoffset=7 xadvance=24 page=0 chnl=0
+char id=120 x=220 y=60 width=22 height=22 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
+char id=121 x=170 y=60 width=18 height=24 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=122 x=242 y=60 width=18 height=22 xoffset=-1 yoffset=3 xadvance=18 page=0 chnl=0
+char id=123 x=0 y=0 width=12 height=34 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=124 x=24 y=0 width=6 height=34 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=125 x=12 y=0 width=12 height=34 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=126 x=114 y=86 width=22 height=6 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=0
+kernings count=0
diff --git a/Huy/desktop/build/resources/main/skin/minecraft.png b/Huy/desktop/build/resources/main/skin/minecraft.png
new file mode 100644
index 0000000..128908f
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/minecraft.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/check-off.png b/Huy/desktop/build/resources/main/skin/test_data/check-off.png
new file mode 100644
index 0000000..1cc70c4
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/check-off.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/check-on.png b/Huy/desktop/build/resources/main/skin/test_data/check-on.png
new file mode 100644
index 0000000..57d6d0f
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/check-on.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/cursor.9.png b/Huy/desktop/build/resources/main/skin/test_data/cursor.9.png
new file mode 100644
index 0000000..6aa4fab
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/cursor.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-pane-noborder.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-pane-noborder.9.png
new file mode 100644
index 0000000..b308275
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-pane-noborder.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-pane.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-pane.9.png
new file mode 100644
index 0000000..655164f
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-pane.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-rect-down.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-rect-down.9.png
new file mode 100644
index 0000000..2ef326f
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-rect-down.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-rect-pad.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-rect-pad.9.png
new file mode 100644
index 0000000..655164f
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-rect-pad.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-rect.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-rect.9.png
new file mode 100644
index 0000000..6309ff0
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-rect.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-round-down.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-round-down.9.png
new file mode 100644
index 0000000..8311e06
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-round-down.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-round-large.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-round-large.9.png
new file mode 100644
index 0000000..4fcba07
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-round-large.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-round.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-round.9.png
new file mode 100644
index 0000000..08b7b93
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-round.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-scroll.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-scroll.9.png
new file mode 100644
index 0000000..09b5de9
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-scroll.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-select-selection.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-select-selection.9.png
new file mode 100644
index 0000000..12202e7
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-select-selection.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-select.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-select.9.png
new file mode 100644
index 0000000..b4aef8b
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-select.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-slider-knob.png b/Huy/desktop/build/resources/main/skin/test_data/default-slider-knob.png
new file mode 100644
index 0000000..2ba5b9d
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-slider-knob.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-slider.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-slider.9.png
new file mode 100644
index 0000000..7ef86d8
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-slider.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-splitpane-vertical.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-splitpane-vertical.9.png
new file mode 100644
index 0000000..13ffaa5
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-splitpane-vertical.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-splitpane.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-splitpane.9.png
new file mode 100644
index 0000000..070753d
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-splitpane.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default-window.9.png b/Huy/desktop/build/resources/main/skin/test_data/default-window.9.png
new file mode 100644
index 0000000..5204599
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default-window.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/default.png b/Huy/desktop/build/resources/main/skin/test_data/default.png
new file mode 100644
index 0000000..1bb19f6
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/default.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/selection.png b/Huy/desktop/build/resources/main/skin/test_data/selection.png
new file mode 100644
index 0000000..26cc9f1
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/selection.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/textfield.9.png b/Huy/desktop/build/resources/main/skin/test_data/textfield.9.png
new file mode 100644
index 0000000..df7bfb4
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/textfield.9.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/tree-minus.png b/Huy/desktop/build/resources/main/skin/test_data/tree-minus.png
new file mode 100644
index 0000000..99924c9
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/tree-minus.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/tree-plus.png b/Huy/desktop/build/resources/main/skin/test_data/tree-plus.png
new file mode 100644
index 0000000..a4a5876
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/tree-plus.png differ
diff --git a/Huy/desktop/build/resources/main/skin/test_data/white.png b/Huy/desktop/build/resources/main/skin/test_data/white.png
new file mode 100644
index 0000000..a5566c7
Binary files /dev/null and b/Huy/desktop/build/resources/main/skin/test_data/white.png differ
diff --git a/Huy/desktop/build/resources/main/test.png b/Huy/desktop/build/resources/main/test.png
new file mode 100644
index 0000000..d094b81
Binary files /dev/null and b/Huy/desktop/build/resources/main/test.png differ
diff --git a/Huy/desktop/src/game/demo/desktop/DesktopLauncher.java b/Huy/desktop/src/game/demo/desktop/DesktopLauncher.java
new file mode 100644
index 0000000..a6851c3
--- /dev/null
+++ b/Huy/desktop/src/game/demo/desktop/DesktopLauncher.java
@@ -0,0 +1,18 @@
+package game.demo.desktop;
+
+import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
+import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
+import UI.MainClass;
+
+public class DesktopLauncher {
+ public static void main (String[] arg) {
+ LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
+ config.resizable=true;
+ config.width=1280;
+ config.height=720;
+ config.maxNetThreads=16;
+ config.title="Noodle Rocket Launcher";
+ config.foregroundFPS=144;
+ new LwjglApplication(new MainClass(), config);
+ }
+}
diff --git a/Huy/gradle.properties b/Huy/gradle.properties
new file mode 100644
index 0000000..ff329ac
--- /dev/null
+++ b/Huy/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.daemon=true
+org.gradle.jvmargs=-Xms128m -Xmx1500m
+org.gradle.configureondemand=false
diff --git a/Huy/gradle/wrapper/gradle-wrapper.jar b/Huy/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5c2d1cf
Binary files /dev/null and b/Huy/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Huy/gradle/wrapper/gradle-wrapper.properties b/Huy/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..f4d7b2b
--- /dev/null
+++ b/Huy/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/Huy/gradlew b/Huy/gradlew
new file mode 100644
index 0000000..b0d6d0a
--- /dev/null
+++ b/Huy/gradlew
@@ -0,0 +1,188 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# 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.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/Huy/gradlew.bat b/Huy/gradlew.bat
new file mode 100644
index 0000000..9991c50
--- /dev/null
+++ b/Huy/gradlew.bat
@@ -0,0 +1,100 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Huy/settings.gradle b/Huy/settings.gradle
new file mode 100644
index 0000000..74fc652
--- /dev/null
+++ b/Huy/settings.gradle
@@ -0,0 +1 @@
+include 'desktop', 'core'
\ No newline at end of file
diff --git a/Project/.gradle/5.4.1/executionHistory/executionHistory.bin b/Project/.gradle/5.4.1/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..554150e
Binary files /dev/null and b/Project/.gradle/5.4.1/executionHistory/executionHistory.bin differ
diff --git a/Project/.gradle/5.4.1/executionHistory/executionHistory.lock b/Project/.gradle/5.4.1/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..56654ed
Binary files /dev/null and b/Project/.gradle/5.4.1/executionHistory/executionHistory.lock differ
diff --git a/Project/.gradle/5.4.1/fileChanges/last-build.bin b/Project/.gradle/5.4.1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/Project/.gradle/5.4.1/fileChanges/last-build.bin differ
diff --git a/Project/.gradle/5.4.1/fileContent/fileContent.lock b/Project/.gradle/5.4.1/fileContent/fileContent.lock
new file mode 100644
index 0000000..f3a19a6
Binary files /dev/null and b/Project/.gradle/5.4.1/fileContent/fileContent.lock differ
diff --git a/Project/.gradle/5.4.1/fileHashes/fileHashes.bin b/Project/.gradle/5.4.1/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..c4c89c3
Binary files /dev/null and b/Project/.gradle/5.4.1/fileHashes/fileHashes.bin differ
diff --git a/Project/.gradle/5.4.1/fileHashes/fileHashes.lock b/Project/.gradle/5.4.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..b99a2f7
Binary files /dev/null and b/Project/.gradle/5.4.1/fileHashes/fileHashes.lock differ
diff --git a/Project/.gradle/5.4.1/fileHashes/resourceHashesCache.bin b/Project/.gradle/5.4.1/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..8eaa0a4
Binary files /dev/null and b/Project/.gradle/5.4.1/fileHashes/resourceHashesCache.bin differ
diff --git a/Project/.gradle/5.4.1/gc.properties b/Project/.gradle/5.4.1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Project/.gradle/5.4.1/javaCompile/classAnalysis.bin b/Project/.gradle/5.4.1/javaCompile/classAnalysis.bin
new file mode 100644
index 0000000..0a47f10
Binary files /dev/null and b/Project/.gradle/5.4.1/javaCompile/classAnalysis.bin differ
diff --git a/Project/.gradle/5.4.1/javaCompile/jarAnalysis.bin b/Project/.gradle/5.4.1/javaCompile/jarAnalysis.bin
new file mode 100644
index 0000000..ddc3987
Binary files /dev/null and b/Project/.gradle/5.4.1/javaCompile/jarAnalysis.bin differ
diff --git a/Project/.gradle/5.4.1/javaCompile/javaCompile.lock b/Project/.gradle/5.4.1/javaCompile/javaCompile.lock
new file mode 100644
index 0000000..d0597ac
Binary files /dev/null and b/Project/.gradle/5.4.1/javaCompile/javaCompile.lock differ
diff --git a/Project/.gradle/5.4.1/javaCompile/taskHistory.bin b/Project/.gradle/5.4.1/javaCompile/taskHistory.bin
new file mode 100644
index 0000000..37e69cf
Binary files /dev/null and b/Project/.gradle/5.4.1/javaCompile/taskHistory.bin differ
diff --git a/Project/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/Project/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..039ddbe
Binary files /dev/null and b/Project/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/Project/.gradle/buildOutputCleanup/cache.properties b/Project/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..c176539
--- /dev/null
+++ b/Project/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Thu Oct 08 09:17:00 ICT 2020
+gradle.version=5.4.1
diff --git a/Project/.gradle/buildOutputCleanup/outputFiles.bin b/Project/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..48cc269
Binary files /dev/null and b/Project/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/Project/.gradle/vcs-1/gc.properties b/Project/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Project/.idea/.gitignore b/Project/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Project/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Project/.idea/Hao.iml b/Project/.idea/Hao.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/Project/.idea/Hao.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/Project/.idea/artifacts/Hao_desktop_main_jar.xml b/Project/.idea/artifacts/Hao_desktop_main_jar.xml
new file mode 100644
index 0000000..8f58d56
--- /dev/null
+++ b/Project/.idea/artifacts/Hao_desktop_main_jar.xml
@@ -0,0 +1,28 @@
+
+
+ $PROJECT_DIR$/out/artifacts/Hao_desktop_main_jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/artifacts/Project_desktop_test2_jar.xml b/Project/.idea/artifacts/Project_desktop_test2_jar.xml
new file mode 100644
index 0000000..a7b5796
--- /dev/null
+++ b/Project/.idea/artifacts/Project_desktop_test2_jar.xml
@@ -0,0 +1,37 @@
+
+
+ $PROJECT_DIR$/out/artifacts/Project_desktop_test2_jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/compiler.xml b/Project/.idea/compiler.xml
new file mode 100644
index 0000000..1c5ab05
--- /dev/null
+++ b/Project/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/gradle.xml b/Project/.idea/gradle.xml
new file mode 100644
index 0000000..8a8d7a9
--- /dev/null
+++ b/Project/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/jarRepositories.xml b/Project/.idea/jarRepositories.xml
new file mode 100644
index 0000000..352ac87
--- /dev/null
+++ b/Project/.idea/jarRepositories.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/misc.xml b/Project/.idea/misc.xml
new file mode 100644
index 0000000..3a394d1
--- /dev/null
+++ b/Project/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/uiDesigner.xml b/Project/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/Project/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/.idea/vcs.xml b/Project/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/Project/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/META-INF/MANIFEST.MF b/Project/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..788c1a2
--- /dev/null
+++ b/Project/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: game.demo.desktop.DesktopLauncher
+
diff --git a/Project/Project_desktop_test_jar/Animation/Plane.png b/Project/Project_desktop_test_jar/Animation/Plane.png
new file mode 100644
index 0000000..f4d2cf5
Binary files /dev/null and b/Project/Project_desktop_test_jar/Animation/Plane.png differ
diff --git a/Project/Project_desktop_test_jar/Animation/PlaneRight1.png b/Project/Project_desktop_test_jar/Animation/PlaneRight1.png
new file mode 100644
index 0000000..761c309
Binary files /dev/null and b/Project/Project_desktop_test_jar/Animation/PlaneRight1.png differ
diff --git a/Project/Project_desktop_test_jar/Animation/PlaneRight2.png b/Project/Project_desktop_test_jar/Animation/PlaneRight2.png
new file mode 100644
index 0000000..0a90cac
Binary files /dev/null and b/Project/Project_desktop_test_jar/Animation/PlaneRight2.png differ
diff --git a/Project/Project_desktop_test_jar/Audio/Astronomia.mp3 b/Project/Project_desktop_test_jar/Audio/Astronomia.mp3
new file mode 100644
index 0000000..0d84e9e
Binary files /dev/null and b/Project/Project_desktop_test_jar/Audio/Astronomia.mp3 differ
diff --git a/Project/Project_desktop_test_jar/Audio/GiornoTheme.mp3 b/Project/Project_desktop_test_jar/Audio/GiornoTheme.mp3
new file mode 100644
index 0000000..4d2e107
Binary files /dev/null and b/Project/Project_desktop_test_jar/Audio/GiornoTheme.mp3 differ
diff --git a/Project/Project_desktop_test_jar/Audio/README.md b/Project/Project_desktop_test_jar/Audio/README.md
new file mode 100644
index 0000000..45d50c5
--- /dev/null
+++ b/Project/Project_desktop_test_jar/Audio/README.md
@@ -0,0 +1 @@
+# For sounds and stuff
diff --git a/Project/Project_desktop_test_jar/Audio/ZA-WARUDO.mp3 b/Project/Project_desktop_test_jar/Audio/ZA-WARUDO.mp3
new file mode 100644
index 0000000..79299cd
Binary files /dev/null and b/Project/Project_desktop_test_jar/Audio/ZA-WARUDO.mp3 differ
diff --git a/Project/Project_desktop_test_jar/Audio/lasmic.sfk b/Project/Project_desktop_test_jar/Audio/lasmic.sfk
new file mode 100644
index 0000000..36b87b9
Binary files /dev/null and b/Project/Project_desktop_test_jar/Audio/lasmic.sfk differ
diff --git a/Project/Project_desktop_test_jar/Audio/lasmic.wav b/Project/Project_desktop_test_jar/Audio/lasmic.wav
new file mode 100644
index 0000000..4b11060
Binary files /dev/null and b/Project/Project_desktop_test_jar/Audio/lasmic.wav differ
diff --git a/Project/Project_desktop_test_jar/Bullet_plane.png b/Project/Project_desktop_test_jar/Bullet_plane.png
new file mode 100644
index 0000000..cd43043
Binary files /dev/null and b/Project/Project_desktop_test_jar/Bullet_plane.png differ
diff --git a/Project/Project_desktop_test_jar/Enemy.png b/Project/Project_desktop_test_jar/Enemy.png
new file mode 100644
index 0000000..ed209ef
Binary files /dev/null and b/Project/Project_desktop_test_jar/Enemy.png differ
diff --git a/Project/Project_desktop_test_jar/Gif/DancingEngi.gif b/Project/Project_desktop_test_jar/Gif/DancingEngi.gif
new file mode 100644
index 0000000..7835446
Binary files /dev/null and b/Project/Project_desktop_test_jar/Gif/DancingEngi.gif differ
diff --git a/Project/Project_desktop_test_jar/Gif/coffindance.gif b/Project/Project_desktop_test_jar/Gif/coffindance.gif
new file mode 100644
index 0000000..ed4a967
Binary files /dev/null and b/Project/Project_desktop_test_jar/Gif/coffindance.gif differ
diff --git a/Project/Project_desktop_test_jar/Plane.png b/Project/Project_desktop_test_jar/Plane.png
new file mode 100644
index 0000000..f4d2cf5
Binary files /dev/null and b/Project/Project_desktop_test_jar/Plane.png differ
diff --git a/Project/Project_desktop_test_jar/Plane2.png b/Project/Project_desktop_test_jar/Plane2.png
new file mode 100644
index 0000000..4e899e4
Binary files /dev/null and b/Project/Project_desktop_test_jar/Plane2.png differ
diff --git a/Project/Project_desktop_test_jar/PlaneLeft.psd b/Project/Project_desktop_test_jar/PlaneLeft.psd
new file mode 100644
index 0000000..950acac
Binary files /dev/null and b/Project/Project_desktop_test_jar/PlaneLeft.psd differ
diff --git a/Project/Project_desktop_test_jar/Project.desktop.test.jar b/Project/Project_desktop_test_jar/Project.desktop.test.jar
new file mode 100644
index 0000000..79bed66
Binary files /dev/null and b/Project/Project_desktop_test_jar/Project.desktop.test.jar differ
diff --git a/Project/Project_desktop_test_jar/Star0.png b/Project/Project_desktop_test_jar/Star0.png
new file mode 100644
index 0000000..8903a23
Binary files /dev/null and b/Project/Project_desktop_test_jar/Star0.png differ
diff --git a/Project/Project_desktop_test_jar/Star1.png b/Project/Project_desktop_test_jar/Star1.png
new file mode 100644
index 0000000..27618fe
Binary files /dev/null and b/Project/Project_desktop_test_jar/Star1.png differ
diff --git a/Project/Project_desktop_test_jar/Star2.png b/Project/Project_desktop_test_jar/Star2.png
new file mode 100644
index 0000000..a186f92
Binary files /dev/null and b/Project/Project_desktop_test_jar/Star2.png differ
diff --git a/Project/Project_desktop_test_jar/Star3.png b/Project/Project_desktop_test_jar/Star3.png
new file mode 100644
index 0000000..b4df82c
Binary files /dev/null and b/Project/Project_desktop_test_jar/Star3.png differ
diff --git a/Project/Project_desktop_test_jar/badlogic.jpg b/Project/Project_desktop_test_jar/badlogic.jpg
new file mode 100644
index 0000000..4390da6
Binary files /dev/null and b/Project/Project_desktop_test_jar/badlogic.jpg differ
diff --git a/Project/Project_desktop_test_jar/coffindance.gif b/Project/Project_desktop_test_jar/coffindance.gif
new file mode 100644
index 0000000..ed4a967
Binary files /dev/null and b/Project/Project_desktop_test_jar/coffindance.gif differ
diff --git a/Project/Project_desktop_test_jar/database.txt b/Project/Project_desktop_test_jar/database.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Project/Project_desktop_test_jar/lasmic.sfk b/Project/Project_desktop_test_jar/lasmic.sfk
new file mode 100644
index 0000000..2d7c921
Binary files /dev/null and b/Project/Project_desktop_test_jar/lasmic.sfk differ
diff --git a/Project/Project_desktop_test_jar/lasmic.wav b/Project/Project_desktop_test_jar/lasmic.wav
new file mode 100644
index 0000000..60b87a3
Binary files /dev/null and b/Project/Project_desktop_test_jar/lasmic.wav differ
diff --git a/Project/Project_desktop_test_jar/planenew.png b/Project/Project_desktop_test_jar/planenew.png
new file mode 100644
index 0000000..6923d18
Binary files /dev/null and b/Project/Project_desktop_test_jar/planenew.png differ
diff --git a/Project/Project_desktop_test_jar/skin/ArcadeClassic.fnt b/Project/Project_desktop_test_jar/skin/ArcadeClassic.fnt
new file mode 100644
index 0000000..ef5dcb1
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/ArcadeClassic.fnt
@@ -0,0 +1,71 @@
+info face="ArcadeClassic" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
+common lineHeight=33 base=26 scaleW=512 scaleH=512 pages=1 packed=0
+page id=0 file="ArcadeClassic.png"
+chars count=66
+char id=10 x=0 y=0 width=15 height=28 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=25 xadvance=4 page=0 chnl=0
+char id=33 x=146 y=28 width=13 height=18 xoffset=0 yoffset=7 xadvance=22 page=0 chnl=0
+char id=34 x=0 y=0 width=15 height=28 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=48 x=127 y=28 width=19 height=18 xoffset=-1 yoffset=7 xadvance=18 page=0 chnl=0
+char id=49 x=475 y=0 width=16 height=18 xoffset=1 yoffset=7 xadvance=18 page=0 chnl=0
+char id=50 x=491 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=51 x=0 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=52 x=18 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=53 x=36 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=54 x=54 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=55 x=72 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=56 x=90 y=28 width=19 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=57 x=109 y=28 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=65 x=15 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=66 x=33 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=67 x=51 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=68 x=69 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=69 x=87 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=70 x=105 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=71 x=123 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=72 x=141 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=73 x=159 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=74 x=175 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=75 x=193 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=76 x=211 y=0 width=16 height=18 xoffset=-2 yoffset=7 xadvance=18 page=0 chnl=0
+char id=77 x=227 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=78 x=245 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=79 x=263 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=80 x=281 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=81 x=299 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=82 x=317 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=83 x=335 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=84 x=353 y=0 width=16 height=18 xoffset=-3 yoffset=7 xadvance=17 page=0 chnl=0
+char id=85 x=369 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=86 x=387 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=87 x=405 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=88 x=423 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=89 x=441 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=90 x=457 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=97 x=15 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=98 x=33 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=99 x=51 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=100 x=69 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=101 x=87 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=102 x=105 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=103 x=123 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=104 x=141 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=105 x=159 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=106 x=175 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=107 x=193 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=108 x=211 y=0 width=16 height=18 xoffset=-2 yoffset=7 xadvance=18 page=0 chnl=0
+char id=109 x=227 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=110 x=245 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=111 x=263 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=112 x=281 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=113 x=299 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=114 x=317 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=115 x=335 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=116 x=353 y=0 width=16 height=18 xoffset=-3 yoffset=7 xadvance=17 page=0 chnl=0
+char id=117 x=369 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=118 x=387 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=0
+char id=119 x=405 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=120 x=423 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+char id=121 x=441 y=0 width=16 height=18 xoffset=0 yoffset=7 xadvance=17 page=0 chnl=0
+char id=122 x=457 y=0 width=18 height=18 xoffset=0 yoffset=7 xadvance=19 page=0 chnl=0
+kernings count=0
diff --git a/Project/Project_desktop_test_jar/skin/ArcadeClassic.png b/Project/Project_desktop_test_jar/skin/ArcadeClassic.png
new file mode 100644
index 0000000..475c9d6
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/ArcadeClassic.png differ
diff --git a/Project/Project_desktop_test_jar/skin/ButtonPack.atlas b/Project/Project_desktop_test_jar/skin/ButtonPack.atlas
new file mode 100644
index 0000000..6f6a940
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/ButtonPack.atlas
@@ -0,0 +1,196 @@
+
+ButtonPack.png
+size: 2048,512
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+BackButtonDown
+ rotate: false
+ xy: 1330, 269
+ size: 216, 50
+ orig: 216, 50
+ offset: 0, 0
+ index: -1
+BackButtonHover
+ rotate: false
+ xy: 270, 55
+ size: 216, 50
+ orig: 216, 50
+ offset: 0, 0
+ index: -1
+BackButtonUp
+ rotate: false
+ xy: 330, 107
+ size: 216, 50
+ orig: 216, 50
+ offset: 0, 0
+ index: -1
+ExitButtonDown
+ rotate: false
+ xy: 759, 217
+ size: 205, 50
+ orig: 205, 50
+ offset: 0, 0
+ index: -1
+ExitButtonHover
+ rotate: false
+ xy: 552, 217
+ size: 205, 50
+ orig: 205, 50
+ offset: 0, 0
+ index: -1
+ExitButtonUp
+ rotate: false
+ xy: 1548, 269
+ size: 205, 50
+ orig: 205, 50
+ offset: 0, 0
+ index: -1
+MainMenuButtonDown
+ rotate: false
+ xy: 1262, 373
+ size: 448, 50
+ orig: 448, 50
+ offset: 0, 0
+ index: -1
+MainMenuButtonHover
+ rotate: false
+ xy: 552, 269
+ size: 448, 50
+ orig: 448, 50
+ offset: 0, 0
+ index: -1
+MainMenuButtonUp
+ rotate: false
+ xy: 604, 321
+ size: 448, 50
+ orig: 448, 50
+ offset: 0, 0
+ index: -1
+MultiplayerButtonDown
+ rotate: false
+ xy: 1323, 425
+ size: 598, 50
+ orig: 598, 50
+ offset: 0, 0
+ index: -1
+MultiplayerButtonHover
+ rotate: false
+ xy: 661, 373
+ size: 599, 50
+ orig: 599, 50
+ offset: 0, 0
+ index: -1
+MultiplayerButtonUp
+ rotate: false
+ xy: 2, 321
+ size: 600, 50
+ orig: 600, 50
+ offset: 0, 0
+ index: -1
+PlayButtonDown
+ rotate: false
+ xy: 1712, 373
+ size: 212, 50
+ orig: 212, 50
+ offset: 0, 0
+ index: -1
+PlayButtonHover
+ rotate: false
+ xy: 1650, 321
+ size: 212, 50
+ orig: 212, 50
+ offset: 0, 0
+ index: -1
+PlayButtonUp
+ rotate: false
+ xy: 268, 3
+ size: 212, 50
+ orig: 212, 50
+ offset: 0, 0
+ index: -1
+ResumeButtonDown
+ rotate: false
+ xy: 1002, 269
+ size: 326, 50
+ orig: 326, 50
+ offset: 0, 0
+ index: -1
+ResumeButtonHover
+ rotate: false
+ xy: 1054, 321
+ size: 326, 50
+ orig: 326, 50
+ offset: 0, 0
+ index: -1
+ResumeButtonUp
+ rotate: false
+ xy: 2, 107
+ size: 326, 50
+ orig: 326, 50
+ offset: 0, 0
+ index: -1
+RetryButtonDown
+ rotate: false
+ xy: 1382, 321
+ size: 266, 50
+ orig: 266, 50
+ offset: 0, 0
+ index: -1
+RetryButtonHover
+ rotate: false
+ xy: 2, 2
+ size: 264, 51
+ orig: 264, 51
+ offset: 0, 0
+ index: -1
+RetryButtonUp
+ rotate: false
+ xy: 2, 55
+ size: 266, 50
+ orig: 266, 50
+ offset: 0, 0
+ index: -1
+ScoreboardButtonDown
+ rotate: false
+ xy: 2, 159
+ size: 544, 52
+ orig: 544, 52
+ offset: 0, 0
+ index: -1
+ScoreboardButtonHover
+ rotate: false
+ xy: 2, 213
+ size: 546, 52
+ orig: 546, 52
+ offset: 0, 0
+ index: -1
+ScoreboardButtonUp
+ rotate: false
+ xy: 2, 267
+ size: 548, 52
+ orig: 548, 52
+ offset: 0, 0
+ index: -1
+SingleplayerButtonDown
+ rotate: false
+ xy: 2, 425
+ size: 660, 50
+ orig: 660, 50
+ offset: 0, 0
+ index: -1
+SingleplayerButtonHover
+ rotate: false
+ xy: 664, 425
+ size: 657, 50
+ orig: 657, 50
+ offset: 0, 0
+ index: -1
+SingleplayerButtonUp
+ rotate: false
+ xy: 2, 373
+ size: 657, 50
+ orig: 657, 50
+ offset: 0, 0
+ index: -1
+
diff --git a/Project/Project_desktop_test_jar/skin/ButtonPack.json b/Project/Project_desktop_test_jar/skin/ButtonPack.json
new file mode 100644
index 0000000..6edaa37
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/ButtonPack.json
@@ -0,0 +1,55 @@
+{
+ com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ },
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ },
+ Singleplayer: {
+ up: SingleplayerButtonUp
+ down: SingleplayerButtonDown
+ over: SingleplayerButtonHover
+ },
+ Retry: {
+ up: RetryButtonUp
+ down: RetryButtonDown
+ over: RetryButtonHover
+ }
+ Multiplayer: {
+ up: MultiplayerButtonUp
+ down: MultiplayerButtonDown
+ over: MultiplayerButtonHover
+ },
+ ScoreBoard: {
+ up: ScoreboardButtonUp
+ down: ScoreboardButtonDown
+ over: ScoreboardButtonHover
+ },
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ },
+ Resume: {
+ up: ResumeButtonUp
+ down: ResumeButtonDown
+ over: ResumeButtonHover
+ }
+ MainMenu: {
+ up: MainMenuButtonUp
+ down: MainMenuButtonDown
+ over: MainMenuButtonHover
+ }
+ Back:
+ {
+ up: BackButtonUp
+ down: BackButtonDown
+ over: BackButtonHover
+ }
+ }
+}
\ No newline at end of file
diff --git a/Project/Project_desktop_test_jar/skin/ButtonPack.png b/Project/Project_desktop_test_jar/skin/ButtonPack.png
new file mode 100644
index 0000000..cf4125a
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/ButtonPack.png differ
diff --git a/Project/Project_desktop_test_jar/skin/ButtonPackTestField.json b/Project/Project_desktop_test_jar/skin/ButtonPackTestField.json
new file mode 100644
index 0000000..884dc43
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/ButtonPackTestField.json
@@ -0,0 +1,24 @@
+{
+com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+}
+}
\ No newline at end of file
diff --git a/Project/Project_desktop_test_jar/skin/GAMEOVER.png b/Project/Project_desktop_test_jar/skin/GAMEOVER.png
new file mode 100644
index 0000000..e97a906
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/GAMEOVER.png differ
diff --git a/Project/Project_desktop_test_jar/skin/GameTitle.png b/Project/Project_desktop_test_jar/skin/GameTitle.png
new file mode 100644
index 0000000..62b55b6
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/GameTitle.png differ
diff --git a/Project/Project_desktop_test_jar/skin/Pause.png b/Project/Project_desktop_test_jar/skin/Pause.png
new file mode 100644
index 0000000..171044e
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/Pause.png differ
diff --git a/Project/Project_desktop_test_jar/skin/README.md b/Project/Project_desktop_test_jar/skin/README.md
new file mode 100644
index 0000000..7ed66f0
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/README.md
@@ -0,0 +1 @@
+# Skin stuff
diff --git a/Project/Project_desktop_test_jar/skin/Rectangle 1.png b/Project/Project_desktop_test_jar/skin/Rectangle 1.png
new file mode 100644
index 0000000..28f6afe
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/Rectangle 1.png differ
diff --git a/Project/Project_desktop_test_jar/skin/Textfield.atlas b/Project/Project_desktop_test_jar/skin/Textfield.atlas
new file mode 100644
index 0000000..a43181e
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/Textfield.atlas
@@ -0,0 +1,83 @@
+
+Textfield.png
+size: 2048,2048
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+Background_mainmenu
+ rotate: false
+ xy: 1, 1243
+ size: 1280, 720
+ orig: 1280, 720
+ offset: 0, 0
+ index: -1
+ExitButtonDown
+ rotate: false
+ xy: 1283, 1634
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonHover
+ rotate: false
+ xy: 1, 398
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+ExitButtonUp
+ rotate: false
+ xy: 1283, 1498
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+Group 1
+ rotate: false
+ xy: 1, 1048
+ size: 682, 193
+ orig: 682, 193
+ offset: 0, 0
+ index: -1
+PlayButtonDown
+ rotate: false
+ xy: 1581, 1634
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonHover
+ rotate: false
+ xy: 1, 262
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+PlayButtonUp
+ rotate: false
+ xy: 1283, 1362
+ size: 296, 134
+ orig: 296, 134
+ offset: 0, 0
+ index: -1
+Rectangle 1
+ rotate: false
+ xy: 685, 1151
+ size: 489, 90
+ orig: 489, 90
+ offset: 0, 0
+ index: -1
+clicked
+ rotate: false
+ xy: 1283, 1770
+ size: 682, 193
+ orig: 682, 193
+ offset: 0, 0
+ index: -1
+minecraft
+ rotate: false
+ xy: 1, 534
+ size: 512, 512
+ orig: 512, 512
+ offset: 0, 0
+ index: -1
diff --git a/Project/Project_desktop_test_jar/skin/Textfield.json b/Project/Project_desktop_test_jar/skin/Textfield.json
new file mode 100644
index 0000000..f8420ab
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/Textfield.json
@@ -0,0 +1,57 @@
+{
+com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+}
+com.badlogic.gdx.graphics.Color: {
+ RGBA_255_255_255_255: {
+ r: 1
+ g: 1
+ b: 1
+ a: 1
+ }
+}
+com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable: {
+ Group 1: {
+ region: Group 1
+ minWidth: 13
+ minHeight: 3
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle: {
+ default: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Play: {
+ up: PlayButtonUp
+ down: PlayButtonDown
+ over: PlayButtonHover
+ }
+ Exit: {
+ up: ExitButtonUp
+ down: ExitButtonDown
+ over: ExitButtonHover
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ background: Rectangle 1
+ }
+}
+com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: {
+ default: {
+ label: default
+ }
+}
+}
\ No newline at end of file
diff --git a/Project/Project_desktop_test_jar/skin/Textfield.png b/Project/Project_desktop_test_jar/skin/Textfield.png
new file mode 100644
index 0000000..d44f513
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/Textfield.png differ
diff --git a/Project/Project_desktop_test_jar/skin/minecraft.fnt b/Project/Project_desktop_test_jar/skin/minecraft.fnt
new file mode 100644
index 0000000..39b93ce
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/minecraft.fnt
@@ -0,0 +1,102 @@
+info face="Minecraft" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
+common lineHeight=35 base=24 scaleW=512 scaleH=512 pages=1 packed=0
+page id=0 file="minecraft.png"
+chars count=97
+char id=0 x=194 y=60 width=10 height=23 xoffset=0 yoffset=2 xadvance=12 page=0 chnl=0
+char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
+char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=10 page=0 chnl=0
+char id=33 x=0 y=60 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=34 x=22 y=86 width=18 height=14 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=35 x=114 y=60 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=36 x=80 y=0 width=18 height=30 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=37 x=88 y=60 width=26 height=26 xoffset=1 yoffset=-1 xadvance=28 page=0 chnl=0
+char id=38 x=136 y=60 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=39 x=76 y=86 width=6 height=10 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=40 x=24 y=60 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=41 x=38 y=60 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=42 x=496 y=60 width=14 height=14 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=43 x=478 y=60 width=18 height=18 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
+char id=44 x=82 y=86 width=6 height=10 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=0
+char id=45 x=102 y=86 width=12 height=6 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0
+char id=46 x=96 y=86 width=6 height=6 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=0
+char id=47 x=52 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=48 x=492 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=49 x=326 y=34 width=14 height=26 xoffset=-1 yoffset=-1 xadvance=14 page=0 chnl=0
+char id=50 x=340 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=51 x=358 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=52 x=376 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=53 x=396 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=54 x=418 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=55 x=438 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=56 x=456 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=57 x=474 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=58 x=420 y=60 width=6 height=20 xoffset=1 yoffset=5 xadvance=8 page=0 chnl=0
+char id=59 x=188 y=60 width=6 height=24 xoffset=1 yoffset=5 xadvance=8 page=0 chnl=0
+char id=60 x=450 y=60 width=14 height=18 xoffset=-1 yoffset=3 xadvance=14 page=0 chnl=0
+char id=61 x=58 y=86 width=18 height=14 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=62 x=464 y=60 width=14 height=18 xoffset=-1 yoffset=3 xadvance=14 page=0 chnl=0
+char id=63 x=6 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=64 x=50 y=0 width=30 height=32 xoffset=-1 yoffset=-1 xadvance=30 page=0 chnl=0
+char id=65 x=116 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=66 x=136 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=67 x=158 y=0 width=24 height=26 xoffset=-1 yoffset=-1 xadvance=24 page=0 chnl=0
+char id=68 x=182 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=69 x=204 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=70 x=226 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=71 x=246 y=0 width=24 height=26 xoffset=-1 yoffset=-1 xadvance=24 page=0 chnl=0
+char id=72 x=270 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=73 x=292 y=0 width=10 height=26 xoffset=1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=74 x=302 y=0 width=16 height=26 xoffset=-1 yoffset=-1 xadvance=16 page=0 chnl=0
+char id=75 x=318 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=76 x=338 y=0 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=77 x=358 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=78 x=380 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=79 x=402 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=80 x=428 y=0 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=81 x=450 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=82 x=476 y=0 width=26 height=26 xoffset=-1 yoffset=-1 xadvance=26 page=0 chnl=0
+char id=83 x=0 y=34 width=20 height=26 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=0
+char id=84 x=20 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=85 x=42 y=34 width=20 height=26 xoffset=1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=86 x=62 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=87 x=84 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=88 x=106 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=89 x=128 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=90 x=150 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=91 x=30 y=0 width=10 height=32 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=92 x=70 y=60 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=93 x=40 y=0 width=10 height=32 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=94 x=40 y=86 width=18 height=14 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=95 x=136 y=86 width=20 height=4 xoffset=-1 yoffset=21 xadvance=20 page=0 chnl=0
+char id=96 x=88 y=86 width=8 height=8 xoffset=1 yoffset=-1 xadvance=10 page=0 chnl=0
+char id=97 x=260 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=98 x=172 y=34 width=22 height=26 xoffset=-1 yoffset=-1 xadvance=22 page=0 chnl=0
+char id=99 x=280 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=100 x=194 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=101 x=300 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=102 x=212 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=103 x=98 y=0 width=18 height=28 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=104 x=230 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=105 x=502 y=0 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=106 x=248 y=34 width=16 height=26 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
+char id=107 x=264 y=34 width=18 height=26 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=0
+char id=108 x=282 y=34 width=6 height=26 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=109 x=318 y=60 width=30 height=20 xoffset=-1 yoffset=5 xadvance=30 page=0 chnl=0
+char id=110 x=348 y=60 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=111 x=368 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=112 x=288 y=34 width=20 height=26 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=0
+char id=113 x=308 y=34 width=18 height=26 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=114 x=386 y=60 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=0
+char id=115 x=204 y=60 width=16 height=22 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
+char id=116 x=158 y=60 width=12 height=24 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0
+char id=117 x=402 y=60 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=118 x=0 y=86 width=22 height=16 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=0
+char id=119 x=426 y=60 width=24 height=18 xoffset=-1 yoffset=7 xadvance=24 page=0 chnl=0
+char id=120 x=220 y=60 width=22 height=22 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
+char id=121 x=170 y=60 width=18 height=24 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=0
+char id=122 x=242 y=60 width=18 height=22 xoffset=-1 yoffset=3 xadvance=18 page=0 chnl=0
+char id=123 x=0 y=0 width=12 height=34 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=124 x=24 y=0 width=6 height=34 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=0
+char id=125 x=12 y=0 width=12 height=34 xoffset=-1 yoffset=-1 xadvance=12 page=0 chnl=0
+char id=126 x=114 y=86 width=22 height=6 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=0
+kernings count=0
diff --git a/Project/Project_desktop_test_jar/skin/minecraft.png b/Project/Project_desktop_test_jar/skin/minecraft.png
new file mode 100644
index 0000000..128908f
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/minecraft.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/check-off.png b/Project/Project_desktop_test_jar/skin/test_data/check-off.png
new file mode 100644
index 0000000..1cc70c4
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/check-off.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/check-on.png b/Project/Project_desktop_test_jar/skin/test_data/check-on.png
new file mode 100644
index 0000000..57d6d0f
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/check-on.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/cursor.9.png b/Project/Project_desktop_test_jar/skin/test_data/cursor.9.png
new file mode 100644
index 0000000..6aa4fab
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/cursor.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-pane-noborder.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-pane-noborder.9.png
new file mode 100644
index 0000000..b308275
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-pane-noborder.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-pane.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-pane.9.png
new file mode 100644
index 0000000..655164f
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-pane.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-rect-down.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-rect-down.9.png
new file mode 100644
index 0000000..2ef326f
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-rect-down.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-rect-pad.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-rect-pad.9.png
new file mode 100644
index 0000000..655164f
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-rect-pad.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-rect.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-rect.9.png
new file mode 100644
index 0000000..6309ff0
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-rect.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-round-down.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-round-down.9.png
new file mode 100644
index 0000000..8311e06
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-round-down.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-round-large.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-round-large.9.png
new file mode 100644
index 0000000..4fcba07
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-round-large.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-round.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-round.9.png
new file mode 100644
index 0000000..08b7b93
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-round.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-scroll.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-scroll.9.png
new file mode 100644
index 0000000..09b5de9
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-scroll.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-select-selection.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-select-selection.9.png
new file mode 100644
index 0000000..12202e7
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-select-selection.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-select.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-select.9.png
new file mode 100644
index 0000000..b4aef8b
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-select.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-slider-knob.png b/Project/Project_desktop_test_jar/skin/test_data/default-slider-knob.png
new file mode 100644
index 0000000..2ba5b9d
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-slider-knob.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-slider.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-slider.9.png
new file mode 100644
index 0000000..7ef86d8
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-slider.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-splitpane-vertical.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-splitpane-vertical.9.png
new file mode 100644
index 0000000..13ffaa5
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-splitpane-vertical.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-splitpane.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-splitpane.9.png
new file mode 100644
index 0000000..070753d
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-splitpane.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default-window.9.png b/Project/Project_desktop_test_jar/skin/test_data/default-window.9.png
new file mode 100644
index 0000000..5204599
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default-window.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/default.png b/Project/Project_desktop_test_jar/skin/test_data/default.png
new file mode 100644
index 0000000..1bb19f6
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/default.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/selection.png b/Project/Project_desktop_test_jar/skin/test_data/selection.png
new file mode 100644
index 0000000..26cc9f1
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/selection.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/textfield.9.png b/Project/Project_desktop_test_jar/skin/test_data/textfield.9.png
new file mode 100644
index 0000000..df7bfb4
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/textfield.9.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/tree-minus.png b/Project/Project_desktop_test_jar/skin/test_data/tree-minus.png
new file mode 100644
index 0000000..99924c9
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/tree-minus.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/tree-plus.png b/Project/Project_desktop_test_jar/skin/test_data/tree-plus.png
new file mode 100644
index 0000000..a4a5876
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/tree-plus.png differ
diff --git a/Project/Project_desktop_test_jar/skin/test_data/white.png b/Project/Project_desktop_test_jar/skin/test_data/white.png
new file mode 100644
index 0000000..a5566c7
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/test_data/white.png differ
diff --git a/Project/Project_desktop_test_jar/skin/testingfont.atlas b/Project/Project_desktop_test_jar/skin/testingfont.atlas
new file mode 100644
index 0000000..cbaee08
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/testingfont.atlas
@@ -0,0 +1,14 @@
+
+
+testingfont.png
+size: 1024,1024
+format: RGBA8888
+filter: Nearest,Nearest
+repeat: none
+minecraft
+ rotate: false
+ xy: 2, 2
+ size: 512, 512
+ orig: 512, 512
+ offset: 0, 0
+ index: -1
\ No newline at end of file
diff --git a/Project/Project_desktop_test_jar/skin/testingfont.json b/Project/Project_desktop_test_jar/skin/testingfont.json
new file mode 100644
index 0000000..f3d27f9
--- /dev/null
+++ b/Project/Project_desktop_test_jar/skin/testingfont.json
@@ -0,0 +1,27 @@
+{
+ com.badlogic.gdx.graphics.g2d.BitmapFont: {
+ minecraft: {
+ file: minecraft.fnt
+ }
+ }
+ com.badlogic.gdx.graphics.Color: {
+ RGBA_255_255_255_255: {
+ r: 1
+ g: 1
+ b: 1
+ a: 1
+ }
+ }
+ com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
+ default: {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ }
+ },
+ "com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle": {
+ "default": {
+ font: minecraft
+ fontColor: RGBA_255_255_255_255
+ }
+ }
+}
\ No newline at end of file
diff --git a/Project/Project_desktop_test_jar/skin/testingfont.png b/Project/Project_desktop_test_jar/skin/testingfont.png
new file mode 100644
index 0000000..d903fb5
Binary files /dev/null and b/Project/Project_desktop_test_jar/skin/testingfont.png differ
diff --git a/Project/Project_desktop_test_jar/test.png b/Project/Project_desktop_test_jar/test.png
new file mode 100644
index 0000000..d094b81
Binary files /dev/null and b/Project/Project_desktop_test_jar/test.png differ
diff --git a/Project/Scores.json b/Project/Scores.json
new file mode 100644
index 0000000..4071c16
--- /dev/null
+++ b/Project/Scores.json
@@ -0,0 +1 @@
+[{score:134},{score:54},{score:40},{score:17},{name:---,score:10},{name:---,score:10},{name:---,score:10},{name:---,score:10},{name:---,score:10},{name:---,score:10}]
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/is-ci b/Project/Server/node_modules/.bin/is-ci
new file mode 100644
index 0000000..bc5605a
--- /dev/null
+++ b/Project/Server/node_modules/.bin/is-ci
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../is-ci/bin.js" "$@"
+ ret=$?
+else
+ node "$basedir/../is-ci/bin.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/is-ci.cmd b/Project/Server/node_modules/.bin/is-ci.cmd
new file mode 100644
index 0000000..a68da49
--- /dev/null
+++ b/Project/Server/node_modules/.bin/is-ci.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\is-ci\bin.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\is-ci\bin.js" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/mime b/Project/Server/node_modules/.bin/mime
new file mode 100644
index 0000000..0dbddf0
--- /dev/null
+++ b/Project/Server/node_modules/.bin/mime
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../mime/cli.js" "$@"
+ ret=$?
+else
+ node "$basedir/../mime/cli.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/mime.cmd b/Project/Server/node_modules/.bin/mime.cmd
new file mode 100644
index 0000000..8169562
--- /dev/null
+++ b/Project/Server/node_modules/.bin/mime.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\mime\cli.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\mime\cli.js" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/nodemon b/Project/Server/node_modules/.bin/nodemon
new file mode 100644
index 0000000..22d2f6a
--- /dev/null
+++ b/Project/Server/node_modules/.bin/nodemon
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../nodemon/bin/nodemon.js" "$@"
+ ret=$?
+else
+ node "$basedir/../nodemon/bin/nodemon.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/nodemon.cmd b/Project/Server/node_modules/.bin/nodemon.cmd
new file mode 100644
index 0000000..a7c5be1
--- /dev/null
+++ b/Project/Server/node_modules/.bin/nodemon.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\nodemon\bin\nodemon.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\nodemon\bin\nodemon.js" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/nodetouch b/Project/Server/node_modules/.bin/nodetouch
new file mode 100644
index 0000000..479e4f6
--- /dev/null
+++ b/Project/Server/node_modules/.bin/nodetouch
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../touch/bin/nodetouch.js" "$@"
+ ret=$?
+else
+ node "$basedir/../touch/bin/nodetouch.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/nodetouch.cmd b/Project/Server/node_modules/.bin/nodetouch.cmd
new file mode 100644
index 0000000..dba681b
--- /dev/null
+++ b/Project/Server/node_modules/.bin/nodetouch.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\touch\bin\nodetouch.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\touch\bin\nodetouch.js" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/nopt b/Project/Server/node_modules/.bin/nopt
new file mode 100644
index 0000000..714334e
--- /dev/null
+++ b/Project/Server/node_modules/.bin/nopt
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../nopt/bin/nopt.js" "$@"
+ ret=$?
+else
+ node "$basedir/../nopt/bin/nopt.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/nopt.cmd b/Project/Server/node_modules/.bin/nopt.cmd
new file mode 100644
index 0000000..1626454
--- /dev/null
+++ b/Project/Server/node_modules/.bin/nopt.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\nopt\bin\nopt.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\nopt\bin\nopt.js" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/rc b/Project/Server/node_modules/.bin/rc
new file mode 100644
index 0000000..eb55931
--- /dev/null
+++ b/Project/Server/node_modules/.bin/rc
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../rc/cli.js" "$@"
+ ret=$?
+else
+ node "$basedir/../rc/cli.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/rc.cmd b/Project/Server/node_modules/.bin/rc.cmd
new file mode 100644
index 0000000..b1c891e
--- /dev/null
+++ b/Project/Server/node_modules/.bin/rc.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\rc\cli.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\rc\cli.js" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/.bin/semver b/Project/Server/node_modules/.bin/semver
new file mode 100644
index 0000000..d592e69
--- /dev/null
+++ b/Project/Server/node_modules/.bin/semver
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../semver/bin/semver" "$@"
+ ret=$?
+else
+ node "$basedir/../semver/bin/semver" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/Project/Server/node_modules/.bin/semver.cmd b/Project/Server/node_modules/.bin/semver.cmd
new file mode 100644
index 0000000..37c00a4
--- /dev/null
+++ b/Project/Server/node_modules/.bin/semver.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\semver\bin\semver" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\semver\bin\semver" %*
+)
\ No newline at end of file
diff --git a/Project/Server/node_modules/@sindresorhus/is/dist/index.d.ts b/Project/Server/node_modules/@sindresorhus/is/dist/index.d.ts
new file mode 100644
index 0000000..e94d30b
--- /dev/null
+++ b/Project/Server/node_modules/@sindresorhus/is/dist/index.d.ts
@@ -0,0 +1,132 @@
+///
+///
+///
+///
+///
+declare type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
+declare type Primitive = null | undefined | string | number | boolean | Symbol;
+export interface ArrayLike {
+ length: number;
+}
+export interface Class {
+ new (...args: any[]): T;
+}
+declare type DomElement = object & {
+ nodeType: 1;
+ nodeName: string;
+};
+declare type NodeStream = object & {
+ pipe: Function;
+};
+export declare const enum TypeName {
+ null = "null",
+ boolean = "boolean",
+ undefined = "undefined",
+ string = "string",
+ number = "number",
+ symbol = "symbol",
+ Function = "Function",
+ GeneratorFunction = "GeneratorFunction",
+ AsyncFunction = "AsyncFunction",
+ Observable = "Observable",
+ Array = "Array",
+ Buffer = "Buffer",
+ Object = "Object",
+ RegExp = "RegExp",
+ Date = "Date",
+ Error = "Error",
+ Map = "Map",
+ Set = "Set",
+ WeakMap = "WeakMap",
+ WeakSet = "WeakSet",
+ Int8Array = "Int8Array",
+ Uint8Array = "Uint8Array",
+ Uint8ClampedArray = "Uint8ClampedArray",
+ Int16Array = "Int16Array",
+ Uint16Array = "Uint16Array",
+ Int32Array = "Int32Array",
+ Uint32Array = "Uint32Array",
+ Float32Array = "Float32Array",
+ Float64Array = "Float64Array",
+ ArrayBuffer = "ArrayBuffer",
+ SharedArrayBuffer = "SharedArrayBuffer",
+ DataView = "DataView",
+ Promise = "Promise",
+ URL = "URL"
+}
+declare function is(value: unknown): TypeName;
+declare namespace is {
+ const undefined: (value: unknown) => value is undefined;
+ const string: (value: unknown) => value is string;
+ const number: (value: unknown) => value is number;
+ const function_: (value: unknown) => value is Function;
+ const null_: (value: unknown) => value is null;
+ const class_: (value: unknown) => value is Class;
+ const boolean: (value: unknown) => value is boolean;
+ const symbol: (value: unknown) => value is Symbol;
+ const numericString: (value: unknown) => boolean;
+ const array: (arg: any) => arg is any[];
+ const buffer: (input: unknown) => input is Buffer;
+ const nullOrUndefined: (value: unknown) => value is null | undefined;
+ const object: (value: unknown) => value is object;
+ const iterable: (value: unknown) => value is IterableIterator;
+ const asyncIterable: (value: unknown) => value is AsyncIterableIterator;
+ const generator: (value: unknown) => value is Generator;
+ const nativePromise: (value: unknown) => value is Promise;
+ const promise: (value: unknown) => value is Promise;
+ const generatorFunction: (value: unknown) => value is GeneratorFunction;
+ const asyncFunction: (value: unknown) => value is Function;
+ const boundFunction: (value: unknown) => value is Function;
+ const regExp: (value: unknown) => value is RegExp;
+ const date: (value: unknown) => value is Date;
+ const error: (value: unknown) => value is Error;
+ const map: (value: unknown) => value is Map;
+ const set: (value: unknown) => value is Set;
+ const weakMap: (value: unknown) => value is WeakMap