Added project
17
.gitattributes
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
|
||||
# Custom for Visual Studio
|
||||
*.cs diff=csharp
|
||||
|
||||
# Standard to msysgit
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
114
.gitignore
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
## Java
|
||||
|
||||
*.class
|
||||
*.war
|
||||
*.ear
|
||||
hs_err_pid*
|
||||
|
||||
## Robovm
|
||||
/ios/robovm-build/
|
||||
|
||||
## GWT
|
||||
/html/war/
|
||||
/html/gwt-unitCache/
|
||||
.apt_generated/
|
||||
.gwt/
|
||||
gwt-unitCache/
|
||||
www-test/
|
||||
.gwt-tmp/
|
||||
|
||||
## Android Studio and Intellij and Android in general
|
||||
/android/libs/armeabi/
|
||||
/android/libs/armeabi-v7a/
|
||||
/android/libs/arm64-v8a/
|
||||
/android/libs/x86/
|
||||
/android/libs/x86_64/
|
||||
/android/gen/
|
||||
.idea/
|
||||
*.ipr
|
||||
*.iws
|
||||
*.iml
|
||||
/android/out/
|
||||
com_crashlytics_export_strings.xml
|
||||
|
||||
## Eclipse
|
||||
|
||||
.classpath
|
||||
.project
|
||||
.metadata/
|
||||
/android/bin/
|
||||
/core/bin/
|
||||
/desktop/bin/
|
||||
/html/bin/
|
||||
/ios/bin/
|
||||
/ios-moe/bin/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
.settings/
|
||||
.loadpath
|
||||
.externalToolBuilders/
|
||||
*.launch
|
||||
|
||||
## NetBeans
|
||||
|
||||
/nbproject/private/
|
||||
/android/nbproject/private/
|
||||
/core/nbproject/private/
|
||||
/desktop/nbproject/private/
|
||||
/html/nbproject/private/
|
||||
/ios/nbproject/private/
|
||||
/ios-moe/nbproject/private/
|
||||
|
||||
/build/
|
||||
/android/build/
|
||||
/core/build/
|
||||
/desktop/build/
|
||||
/html/build/
|
||||
/ios/build/
|
||||
/ios-moe/build/
|
||||
|
||||
/nbbuild/
|
||||
/android/nbbuild/
|
||||
/core/nbbuild/
|
||||
/desktop/nbbuild/
|
||||
/html/nbbuild/
|
||||
/ios/nbbuild/
|
||||
/ios-moe/nbbuild/
|
||||
|
||||
/dist/
|
||||
/android/dist/
|
||||
/core/dist/
|
||||
/desktop/dist/
|
||||
/html/dist/
|
||||
/ios/dist/
|
||||
/ios-moe/dist/
|
||||
|
||||
/nbdist/
|
||||
/android/nbdist/
|
||||
/core/nbdist/
|
||||
/desktop/nbdist/
|
||||
/html/nbdist/
|
||||
/ios/nbdist/
|
||||
/ios-moe/nbdist/
|
||||
|
||||
nbactions.xml
|
||||
nb-configuration.xml
|
||||
|
||||
## Gradle
|
||||
|
||||
/local.properties
|
||||
.gradle/
|
||||
gradle-app.setting
|
||||
/build/
|
||||
/android/build/
|
||||
/core/build/
|
||||
/desktop/build/
|
||||
/html/build/
|
||||
/ios/build/
|
||||
/ios-moe/build/
|
||||
|
||||
## OS Specific
|
||||
.DS_Store
|
||||
Thumbs.db
|
BIN
.nb-gradle/private/cache/DodgeGame-d41d8cd98f00b204e9800998ecf8427e
vendored
Normal file
BIN
.nb-gradle/private/cache/core-fb83b73eb3c879b18d343675f32aca61
vendored
Normal file
BIN
.nb-gradle/private/cache/desktop-9bccb601584b92d9c041663102aef73f
vendored
Normal file
16
.nb-gradle/profiles/private/aux-config
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<gradle-project-properties>
|
||||
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
|
||||
<auxiliary>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group/>
|
||||
</open-files>
|
||||
<editor-bookmarks lastBookmarkId="0" xmlns="http://www.netbeans.org/ns/editor-bookmarks/2"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group>
|
||||
<file>file:/C:/Users/jalen/Programming/Netbeans%20Workspace/Summer%202017/DodgeGame/desktop/src/com/jalenwinslow/game/desktop/DesktopLauncher.java</file>
|
||||
</group>
|
||||
</open-files>
|
||||
</auxiliary>
|
||||
</gradle-project-properties>
|
15
HELP.txt
Normal file
@ -0,0 +1,15 @@
|
||||
Dodge Game
|
||||
|
||||
A 2d black-and-white pixel art game, in which you dodge arrows, while collecting wood to build small
|
||||
wood walls to help you survive longer.
|
||||
|
||||
Controls
|
||||
--------
|
||||
W, A, S, D = Up, Left, Down, Right
|
||||
E -> Hold down to destroy wood or build walls. (In menu, you use it to select choices.)
|
||||
Space -> When you have 7 pieces of wood you can create a wall.
|
||||
--------
|
||||
|
||||
There are executables in "/desktop/build/libs/". Latest build DodgeGame_1.2.jar.
|
||||
|
||||
Created using libgdx.
|
61
build.gradle
Normal file
@ -0,0 +1,61 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
apply plugin: "eclipse"
|
||||
apply plugin: "idea"
|
||||
|
||||
version = '1.0'
|
||||
ext {
|
||||
appName = "DodgeGame"
|
||||
gdxVersion = '1.9.6'
|
||||
roboVMVersion = '2.3.1'
|
||||
box2DLightsVersion = '1.4'
|
||||
ashleyVersion = '1.7.0'
|
||||
aiVersion = '1.8.0'
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
|
||||
}
|
||||
}
|
||||
|
||||
project(":desktop") {
|
||||
apply plugin: "java"
|
||||
|
||||
|
||||
dependencies {
|
||||
compile project(":core")
|
||||
compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.badlogicgames.gdx:gdx-controllers-desktop:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-controllers-platform:$gdxVersion:natives-desktop"
|
||||
}
|
||||
}
|
||||
|
||||
project(":core") {
|
||||
apply plugin: "java"
|
||||
|
||||
|
||||
dependencies {
|
||||
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-controllers:$gdxVersion"
|
||||
}
|
||||
}
|
||||
|
||||
tasks.eclipse.doLast {
|
||||
delete ".project"
|
||||
}
|
BIN
core/assets/DodgeGame_boundsMask.png
Normal file
After Width: | Height: | Size: 116 B |
BIN
core/assets/b&w_DodgeGame_GameOver.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
core/assets/b&w_DodgeGame_arrow.png
Normal file
After Width: | Height: | Size: 238 B |
BIN
core/assets/b&w_DodgeGame_background1.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
core/assets/b&w_DodgeGame_background2.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
core/assets/b&w_DodgeGame_block.png
Normal file
After Width: | Height: | Size: 450 B |
BIN
core/assets/b&w_DodgeGame_buttons1.png
Normal file
After Width: | Height: | Size: 531 B |
BIN
core/assets/b&w_DodgeGame_font1.fnt
Normal file
After Width: | Height: | Size: 704 B |
BIN
core/assets/b&w_DodgeGame_font1.png
Normal file
After Width: | Height: | Size: 704 B |
BIN
core/assets/b&w_DodgeGame_gamePaused.png
Normal file
After Width: | Height: | Size: 104 B |
BIN
core/assets/b&w_DodgeGame_health1.png
Normal file
After Width: | Height: | Size: 90 B |
BIN
core/assets/b&w_DodgeGame_man1.png
Normal file
After Width: | Height: | Size: 1008 B |
BIN
core/assets/b&w_DodgeGame_manTest.png
Normal file
After Width: | Height: | Size: 163 B |
BIN
core/assets/b&w_DodgeGame_originalGameOver.png
Normal file
After Width: | Height: | Size: 383 B |
BIN
core/assets/b&w_DodgeGame_playButton.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
core/assets/b&w_DodgeGame_scoreBoard.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
core/assets/b&w_DodgeGame_tallWall1.png
Normal file
After Width: | Height: | Size: 371 B |
BIN
core/assets/b&w_DodgeGame_timerCase.png
Normal file
After Width: | Height: | Size: 112 B |
BIN
core/assets/b&w_DodgeGame_wall1.png
Normal file
After Width: | Height: | Size: 741 B |
BIN
core/assets/b&w_DodgeGame_wood1.png
Normal file
After Width: | Height: | Size: 453 B |
BIN
core/assets/badlogic.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
57
core/assets/customFont1.fnt
Normal file
@ -0,0 +1,57 @@
|
||||
info face="Arial" size=12 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,1,1,1 spacing=2,2 outline=0
|
||||
common lineHeight=12 base=9 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=0 redChnl=3 greenChnl=3 blueChnl=3
|
||||
page id=0 file="customFont1_0.png"
|
||||
chars count=37
|
||||
char id=48 x=40 y=11 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=49 x=48 y=11 width=4 height=9 xoffset=0 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=50 x=191 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=51 x=199 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=52 x=83 y=0 width=7 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=53 x=207 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=54 x=215 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=55 x=223 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=56 x=231 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=57 x=239 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=58 x=60 y=11 width=3 height=7 xoffset=0 yoffset=3 xadvance=3 page=0 chnl=15
|
||||
char id=65 x=24 y=0 width=9 height=9 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=66 x=16 y=11 width=6 height=9 xoffset=1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=67 x=137 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=68 x=146 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=69 x=155 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=70 x=247 y=0 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=71 x=164 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=72 x=173 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=73 x=54 y=11 width=6 height=9 xoffset=-1 yoffset=1 xadvance=3 page=0 chnl=15
|
||||
char id=74 x=8 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=75 x=182 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=76 x=32 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=77 x=13 y=0 width=9 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=78 x=55 y=0 width=8 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=79 x=65 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=80 x=24 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=81 x=74 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=82 x=92 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=83 x=0 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=84 x=101 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=85 x=110 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=86 x=35 y=0 width=9 height=9 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=87 x=0 y=0 width=11 height=9 xoffset=0 yoffset=1 xadvance=9 page=0 chnl=15
|
||||
char id=88 x=119 y=0 width=7 height=9 xoffset=1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=89 x=128 y=0 width=7 height=9 xoffset=2 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=90 x=46 y=0 width=8 height=9 xoffset=1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
kernings count=15
|
||||
kerning first=89 second=65 amount=-1
|
||||
kerning first=89 second=58 amount=-1
|
||||
kerning first=86 second=65 amount=-1
|
||||
kerning first=84 second=65 amount=-1
|
||||
kerning first=84 second=58 amount=-1
|
||||
kerning first=80 second=65 amount=-1
|
||||
kerning first=76 second=89 amount=-1
|
||||
kerning first=76 second=87 amount=-1
|
||||
kerning first=76 second=86 amount=-1
|
||||
kerning first=76 second=84 amount=-1
|
||||
kerning first=49 second=49 amount=-1
|
||||
kerning first=70 second=65 amount=-1
|
||||
kerning first=65 second=84 amount=-1
|
||||
kerning first=65 second=86 amount=-1
|
||||
kerning first=65 second=89 amount=-1
|
BIN
core/assets/customFont1_0.png
Normal file
After Width: | Height: | Size: 535 B |
57
core/assets/customFont2.fnt
Normal file
@ -0,0 +1,57 @@
|
||||
info face="Arial" size=12 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,1,1,1 spacing=2,2 outline=0
|
||||
common lineHeight=12 base=9 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
|
||||
page id=0 file="customFont2_0.png"
|
||||
chars count=37
|
||||
char id=48 x=40 y=11 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=49 x=48 y=11 width=4 height=9 xoffset=0 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=50 x=191 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=51 x=199 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=52 x=83 y=0 width=7 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=53 x=207 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=54 x=215 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=55 x=223 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=56 x=231 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=57 x=239 y=0 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=58 x=59 y=11 width=3 height=7 xoffset=0 yoffset=3 xadvance=3 page=0 chnl=15
|
||||
char id=65 x=24 y=0 width=9 height=9 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=66 x=16 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=67 x=137 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=68 x=146 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=69 x=155 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=70 x=247 y=0 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=71 x=164 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=72 x=173 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=73 x=54 y=11 width=3 height=9 xoffset=0 yoffset=1 xadvance=3 page=0 chnl=15
|
||||
char id=74 x=8 y=11 width=6 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=75 x=182 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=76 x=32 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=77 x=13 y=0 width=9 height=9 xoffset=-1 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=78 x=56 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=79 x=65 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=80 x=24 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=81 x=74 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=82 x=92 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=83 x=0 y=11 width=6 height=9 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=84 x=101 y=0 width=7 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=85 x=110 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=86 x=35 y=0 width=9 height=9 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
char id=87 x=0 y=0 width=11 height=9 xoffset=-1 yoffset=1 xadvance=9 page=0 chnl=15
|
||||
char id=88 x=119 y=0 width=7 height=9 xoffset=-1 yoffset=1 xadvance=5 page=0 chnl=15
|
||||
char id=89 x=128 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
|
||||
char id=90 x=46 y=0 width=8 height=9 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
|
||||
kernings count=15
|
||||
kerning first=89 second=65 amount=-1
|
||||
kerning first=89 second=58 amount=-1
|
||||
kerning first=86 second=65 amount=-1
|
||||
kerning first=84 second=65 amount=-1
|
||||
kerning first=84 second=58 amount=-1
|
||||
kerning first=80 second=65 amount=-1
|
||||
kerning first=76 second=89 amount=-1
|
||||
kerning first=76 second=87 amount=-1
|
||||
kerning first=76 second=86 amount=-1
|
||||
kerning first=76 second=84 amount=-1
|
||||
kerning first=49 second=49 amount=-1
|
||||
kerning first=70 second=65 amount=-1
|
||||
kerning first=65 second=84 amount=-1
|
||||
kerning first=65 second=86 amount=-1
|
||||
kerning first=65 second=89 amount=-1
|
BIN
core/assets/customFont2_0.png
Normal file
After Width: | Height: | Size: 527 B |
42
core/assets/customFont3.fnt
Normal file
@ -0,0 +1,42 @@
|
||||
info face="Arial" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,1,1,1 spacing=2,2 outline=0
|
||||
common lineHeight=10 base=8 scaleW=256 scaleH=32 pages=1 packed=0 alphaChnl=0 redChnl=0 greenChnl=0 blueChnl=0
|
||||
page id=0 file="customFont3_0.png"
|
||||
chars count=26
|
||||
char id=65 x=11 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=66 x=180 y=0 width=7 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=67 x=20 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=68 x=129 y=0 width=7 height=12 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=69 x=138 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=70 x=189 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=71 x=29 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=72 x=146 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=73 x=221 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=74 x=197 y=0 width=6 height=12 xoffset=-1 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=75 x=38 y=0 width=7 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=76 x=205 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=4 page=0 chnl=15
|
||||
char id=77 x=47 y=0 width=8 height=12 xoffset=0 yoffset=-1 xadvance=7 page=0 chnl=15
|
||||
char id=78 x=154 y=0 width=7 height=12 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=79 x=57 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=80 x=213 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=81 x=66 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=82 x=163 y=0 width=6 height=12 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=83 x=75 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=84 x=84 y=0 width=7 height=12 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=85 x=171 y=0 width=7 height=12 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=15
|
||||
char id=86 x=93 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=87 x=0 y=0 width=9 height=12 xoffset=-1 yoffset=-1 xadvance=7 page=0 chnl=15
|
||||
char id=88 x=102 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=89 x=111 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=90 x=120 y=0 width=7 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
kernings count=11
|
||||
kerning first=89 second=65 amount=-1
|
||||
kerning first=86 second=65 amount=-1
|
||||
kerning first=84 second=65 amount=-1
|
||||
kerning first=80 second=65 amount=-1
|
||||
kerning first=76 second=89 amount=-1
|
||||
kerning first=76 second=87 amount=-1
|
||||
kerning first=76 second=86 amount=-1
|
||||
kerning first=76 second=84 amount=-1
|
||||
kerning first=65 second=89 amount=-1
|
||||
kerning first=65 second=86 amount=-1
|
||||
kerning first=65 second=84 amount=-1
|
BIN
core/assets/customFont3_0.png
Normal file
After Width: | Height: | Size: 457 B |
66
core/assets/customFont4.fnt
Normal file
@ -0,0 +1,66 @@
|
||||
info face="MS Gothic" size=-10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,2,1,2 spacing=2,2 outline=0
|
||||
common lineHeight=10 base=9 scaleW=256 scaleH=64 pages=1 packed=0 alphaChnl=0 redChnl=0 greenChnl=0 blueChnl=0
|
||||
page id=0 file="customFont4_0.png"
|
||||
chars count=62
|
||||
char id=48 x=200 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=49 x=79 y=28 width=6 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=50 x=40 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=51 x=77 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=52 x=44 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=53 x=87 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=54 x=97 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=55 x=107 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=56 x=117 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=57 x=127 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=65 x=137 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=66 x=147 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=67 x=157 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=68 x=167 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=69 x=177 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=70 x=187 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=71 x=197 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=72 x=207 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=73 x=87 y=28 width=5 height=12 xoffset=-1 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=74 x=217 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=75 x=227 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=76 x=237 y=0 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=77 x=0 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=78 x=0 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=79 x=70 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=80 x=10 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=81 x=20 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=82 x=30 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=83 x=40 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=84 x=50 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=85 x=60 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=86 x=33 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=87 x=22 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=88 x=80 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=89 x=11 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=90 x=90 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=97 x=100 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=98 x=110 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=99 x=120 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=100 x=130 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=101 x=140 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=102 x=150 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=103 x=160 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=104 x=170 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=105 x=94 y=28 width=5 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=106 x=70 y=28 width=7 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=107 x=180 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=108 x=101 y=28 width=5 height=12 xoffset=0 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=109 x=55 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=110 x=210 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=111 x=220 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=112 x=230 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=113 x=240 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=114 x=247 y=0 width=7 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=115 x=190 y=14 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=116 x=10 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=117 x=20 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=118 x=30 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=119 x=66 y=0 width=9 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=120 x=50 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=121 x=60 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
||||
char id=122 x=0 y=28 width=8 height=12 xoffset=-2 yoffset=-1 xadvance=5 page=0 chnl=15
|
BIN
core/assets/customFont4_0.png
Normal file
After Width: | Height: | Size: 879 B |
11
core/assets/scores.txt
Normal file
@ -0,0 +1,11 @@
|
||||
19
|
||||
209
|
||||
314
|
||||
11
|
||||
8
|
||||
3
|
||||
6
|
||||
2
|
||||
2
|
||||
0
|
||||
4
|
0
core/assets/testScores.txt
Normal file
11
core/build.gradle
Normal file
@ -0,0 +1,11 @@
|
||||
apply plugin: "java"
|
||||
|
||||
sourceCompatibility = 1.6
|
||||
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||
|
||||
sourceSets.main.java.srcDirs = [ "src/" ]
|
||||
|
||||
|
||||
eclipse.project {
|
||||
name = appName + "-core"
|
||||
}
|
112
core/src/com/jalenwinslow/game/Handler.java
Normal file
@ -0,0 +1,112 @@
|
||||
package com.jalenwinslow.game;
|
||||
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.jalenwinslow.game.gameobjects.GameObjectHandler;
|
||||
import com.jalenwinslow.game.states.*;
|
||||
import com.jalenwinslow.game.utils.Score;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class Handler {
|
||||
|
||||
//--- Propreties
|
||||
private FileHandle scoreFile;
|
||||
private Score score;
|
||||
|
||||
private State menuState, gameState, gameOverState, pauseState, exitState;
|
||||
private GameObjectHandler gameObjectHandler;
|
||||
|
||||
private BitmapFont font;
|
||||
private String message = "";
|
||||
|
||||
//--- Constructor
|
||||
public Handler() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
public void init() {
|
||||
score = new Score(this);
|
||||
|
||||
menuState = new MenuState(this);
|
||||
gameState = new GameState(this);
|
||||
gameOverState = new GameOverState(this);
|
||||
pauseState = new PauseState(this);
|
||||
exitState = new ExitState(this);
|
||||
|
||||
gameObjectHandler = new GameObjectHandler(this);
|
||||
|
||||
font = new BitmapFont();
|
||||
font.setColor(Color.RED);
|
||||
|
||||
createScoreFile();
|
||||
|
||||
State.setCurrenState(menuState);
|
||||
State.getCurrentState().init();
|
||||
|
||||
}
|
||||
|
||||
public void update(float dt) {
|
||||
if (State.getCurrentState() != null) {
|
||||
State.getCurrentState().update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
public void render(SpriteBatch batch) {
|
||||
if (State.getCurrentState() != null) {
|
||||
State.getCurrentState().render(batch);
|
||||
}
|
||||
font.draw(batch, message, 32, 32);
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
gameState.dispose();
|
||||
menuState.dispose();
|
||||
gameOverState.dispose();
|
||||
gameObjectHandler.dispose();
|
||||
|
||||
font.dispose();
|
||||
}
|
||||
|
||||
private void createScoreFile() {
|
||||
File file = new File("scores.txt");
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
scoreFile = new FileHandle(file);
|
||||
if (scoreFile.readString().equals("")) {
|
||||
String scoreString = "0\n"+
|
||||
"0\n" +
|
||||
"0\n"
|
||||
+ "0\n"
|
||||
+ "0\n"
|
||||
+ "0\n"
|
||||
+ "0\n"
|
||||
+ "0\n"
|
||||
+ "0\n"
|
||||
+ "0\n"
|
||||
+ "0";
|
||||
scoreFile.writeString(scoreString, false);
|
||||
}
|
||||
score.getScoresFromFile();
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public GameState getGameState() {return (GameState)gameState;}
|
||||
public MenuState getMenuState() {return (MenuState)menuState;}
|
||||
public State getGameOverState() {return gameOverState;}
|
||||
public PauseState getPauseState() {return (PauseState)pauseState;}
|
||||
public ExitState getExitState() {return (ExitState)exitState;}
|
||||
public GameObjectHandler getGameObjectHandler() {return gameObjectHandler;}
|
||||
public FileHandle getScoreFile() {return scoreFile;}
|
||||
public Score getScore() {return score;}
|
||||
|
||||
public String getMessage() {return message;}
|
||||
public void setMessage(String message) {this.message = message;}
|
||||
}
|
48
core/src/com/jalenwinslow/game/Main.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.jalenwinslow.game;
|
||||
|
||||
import com.badlogic.gdx.ApplicationAdapter;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
|
||||
public class Main extends ApplicationAdapter {
|
||||
public static final int WIDTH = 640, HEIGHT = 640;
|
||||
|
||||
SpriteBatch batch;
|
||||
Handler handler;
|
||||
//BitmapFont bf;
|
||||
|
||||
@Override
|
||||
public void create () {
|
||||
batch = new SpriteBatch();
|
||||
handler = new Handler();
|
||||
handler.init();
|
||||
//bf = new BitmapFont(Gdx.files.internal("b&w_DodgeGame_font1.fnt"), new TextureRegion(new Texture("b&w_DodgeGame_font1.png")));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render () {
|
||||
//Update
|
||||
handler.update(Gdx.graphics.getDeltaTime());
|
||||
|
||||
|
||||
//Render
|
||||
batch.begin();
|
||||
|
||||
handler.render(batch);
|
||||
//bf.draw(batch, "Hello", 32, 32);
|
||||
//bf.draw(batch, str, WIDTH, WIDTH, WIDTH, HEIGHT, true)
|
||||
batch.end();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose () {
|
||||
batch.dispose();
|
||||
handler.dispose();
|
||||
}
|
||||
}
|
109
core/src/com/jalenwinslow/game/gameobjects/Arrow.java
Normal file
@ -0,0 +1,109 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.states.State;
|
||||
|
||||
public class Arrow extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
public static final double MAX_SPEED = 4;
|
||||
public static final double MIN_SPEED = 2.5; //normal -> maxSpeed: 4 && minSpeed: 2.5
|
||||
|
||||
private int dir;
|
||||
private double speed;
|
||||
private double vecX, vecY;
|
||||
//private static Texture boundsTexture = new Texture("DodgeGame_boundsMask.png");
|
||||
|
||||
//--- Constructor
|
||||
public Arrow(Handler handler, double x, double y, TextureRegion image, int dir) {
|
||||
super(handler, x, y, image);
|
||||
this.dir = dir;
|
||||
speed = MIN_SPEED;
|
||||
vecX = 0;
|
||||
vecY = 0;
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/40, Main.HEIGHT/40);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
isArrowVisible();
|
||||
updateSpeed();
|
||||
if (dir == 0) vecX = speed;
|
||||
if (dir == 1) vecY = speed;
|
||||
if (dir == 2) vecX = -speed;
|
||||
if (dir == 3) vecY = -speed;
|
||||
x += vecX;
|
||||
y += vecY;
|
||||
if (y < 96) depth = 0;
|
||||
else depth = (int)y + Main.HEIGHT/20;
|
||||
setBoundsPosition();
|
||||
checkCollision();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(image, (int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
//batch.draw(boundsTexture, bounds.x, bounds.y, bounds.width, bounds.height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
|
||||
private void isArrowVisible() {
|
||||
if (x < -128 || x > Main.WIDTH + Main.WIDTH/5 ||
|
||||
y < -128 || y > Main.HEIGHT + Main.HEIGHT/5) {
|
||||
//handler.getGameState().getArrowGen().getArrows().removeValue(this, false);
|
||||
handler.getGameState().getArrowGen().getArrows().removeValue(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSpeed() {
|
||||
int modifier = handler.getGameState().getTimer().getTime() / 60;
|
||||
speed = MIN_SPEED + (0.05 * modifier);
|
||||
if (speed >= MAX_SPEED) speed = MAX_SPEED;
|
||||
}
|
||||
|
||||
private void setBoundsPosition() {
|
||||
switch (dir) {
|
||||
case 0: bounds.setPosition((float)x + 48, (float)y + 26); break;
|
||||
case 1: bounds.setPosition((float) x + 26, (float)y + 48); break;
|
||||
case 2: bounds.setPosition((float)x, (float)y + 26); break;
|
||||
case 3: bounds.setPosition((float)x + 26, (float)y);break;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkCollision() {
|
||||
if (bounds.overlaps(handler.getGameState().getPlayer().getBounds())) {
|
||||
handler.getGameState().getTimer().stop();
|
||||
State.setCurrenState(handler.getGameOverState());
|
||||
State.getCurrentState().init();
|
||||
handler.getGameObjectHandler().dispose();
|
||||
handler.getGameState().dispose();
|
||||
}
|
||||
for (int i = 0; i < handler.getGameObjectHandler().getGameObjects().size; i++) {
|
||||
if (handler.getGameObjectHandler().getGameObjects().get(i).toString().equalsIgnoreCase("TallWall")) {
|
||||
TallWall wall = (TallWall)handler.getGameObjectHandler().getGameObjects().get(i);
|
||||
if (bounds.overlaps(wall.getNoArrowBounds())) {
|
||||
wall.setHitPoints(wall.getHitPoints() - 6);
|
||||
handler.getGameState().getArrowGen().getArrows().removeValue(this, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "Arrow";}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
120
core/src/com/jalenwinslow/game/gameobjects/ArrowGenerator.java
Normal file
@ -0,0 +1,120 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import java.util.Random;
|
||||
|
||||
public class ArrowGenerator extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private static final int MAX_ARROW_LIMIT = 40, MIN_ARROW_LIMIT = 5; // max: 40, min: 5
|
||||
private static final double ARROW_DEPLOY_END_TIME = 0.07, ARROW_DEPLOY_START_TIME = 0.5; // endTime: 0.07, startTime: 0.5
|
||||
|
||||
private int currentArrowLimit;
|
||||
private double currentDeployTime;
|
||||
private int highestAmountOfArrowsAtOnce;
|
||||
private int amountOfArrowsCreated;
|
||||
|
||||
private Random rand;
|
||||
private TextureRegion[][] arrowTextures;
|
||||
private Array<Arrow> arrows;
|
||||
private float elapsedTime;
|
||||
//private BitmapFont font;
|
||||
|
||||
//--- Constructor
|
||||
public ArrowGenerator(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
|
||||
currentArrowLimit = MIN_ARROW_LIMIT;
|
||||
currentDeployTime = ARROW_DEPLOY_START_TIME;
|
||||
highestAmountOfArrowsAtOnce = 0;
|
||||
amountOfArrowsCreated = 0;
|
||||
|
||||
rand = new Random();
|
||||
arrowTextures = image.split(16, 16);
|
||||
arrows = new Array<Arrow>();
|
||||
elapsedTime = -3;
|
||||
//font = new BitmapFont();
|
||||
//font.setColor(Color.RED);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
elapsedTime += dt;
|
||||
updateArrows();
|
||||
if (arrows.size < currentArrowLimit && elapsedTime >= currentDeployTime) {
|
||||
addArrow();
|
||||
amountOfArrowsCreated++;
|
||||
if (arrows.size > highestAmountOfArrowsAtOnce) highestAmountOfArrowsAtOnce = arrows.size;
|
||||
}
|
||||
for (Arrow arrow : arrows) arrow.update(dt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
for (Arrow arrow : arrows) {
|
||||
arrow.render(batch);
|
||||
}
|
||||
//font.draw(batch, "Current amount of arrows: " + String.valueOf(arrows.size), 64, 64);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
//font.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "ArrowGenerator";}
|
||||
|
||||
private void updateArrows() {
|
||||
int modifier = handler.getGameState().getTimer().getTime() / 30;
|
||||
currentArrowLimit = MIN_ARROW_LIMIT + (1 * modifier);
|
||||
if (currentArrowLimit > MAX_ARROW_LIMIT) currentArrowLimit = MAX_ARROW_LIMIT;
|
||||
if (currentArrowLimit > 10 && handler.getGameState().getTimer().getTime() % 40 == 0) {
|
||||
currentDeployTime -= 0.1;
|
||||
if (currentDeployTime < ARROW_DEPLOY_END_TIME) currentDeployTime = ARROW_DEPLOY_END_TIME;
|
||||
}
|
||||
}
|
||||
|
||||
private void addArrow() {
|
||||
int dir = rand.nextInt(4);
|
||||
TextureRegion texture = arrowTextures[0][dir];
|
||||
int xx = Main.WIDTH, yy = Main.HEIGHT;
|
||||
if (dir == 0 || dir == 2) {
|
||||
if (dir == 0) {
|
||||
xx = -96;
|
||||
}
|
||||
if (dir == 2) {
|
||||
xx = Main.WIDTH + 32;
|
||||
}
|
||||
yy = rand.nextInt(Main.HEIGHT - 160) + 64;
|
||||
}
|
||||
else {
|
||||
|
||||
if (dir == 1) {
|
||||
yy = -96;
|
||||
}
|
||||
if (dir == 3) {
|
||||
yy = Main.HEIGHT + 32;
|
||||
}
|
||||
xx = rand.nextInt(Main.WIDTH - 160) + 64;
|
||||
}
|
||||
|
||||
//handler.getGameObjectHandler().add(new Arrow(handler, xx, yy, texture, dir));
|
||||
arrows.add(new Arrow(handler, xx, yy, texture, dir));
|
||||
elapsedTime = 0;
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public Array<Arrow> getArrows() {return arrows;}
|
||||
public int getAmountOfArrowsCreated() {return amountOfArrowsCreated;}
|
||||
public int getHighestAmountOfArrowsAtOnce() {return highestAmountOfArrowsAtOnce;}
|
||||
|
||||
}
|
105
core/src/com/jalenwinslow/game/gameobjects/Button.java
Normal file
@ -0,0 +1,105 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Input.Keys;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.states.State;
|
||||
|
||||
public class Button extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private TextureRegion[][] images;
|
||||
private BitmapFont font;
|
||||
private String message;
|
||||
private int imageIndex;
|
||||
private boolean drawHealth;
|
||||
private HealthBar health;
|
||||
private int hitPoints;
|
||||
|
||||
//--- Constructor
|
||||
public Button(Handler handler, double x, double y, TextureRegion image, String message, int scale) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/4+32, Main.HEIGHT/8);
|
||||
images = image.split(112, 48);
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(scale);
|
||||
font.setColor(Color.BLACK);
|
||||
this.message = message;
|
||||
imageIndex = 0;
|
||||
drawHealth = false;
|
||||
hitPoints = 60;
|
||||
health = new HealthBar(handler, x, y, new TextureRegion(handler.getMenuState().getHealthTexture()), hitPoints);
|
||||
health.setHealth(0);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
//checkIfMouseWithin();
|
||||
checkPlayerCollision();
|
||||
if (hitPoints < 0) {hitPoints = 0;}
|
||||
health.setHealth(hitPoints);
|
||||
if (hitPoints >= 60) {
|
||||
buttonAction();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(images[imageIndex][0], bounds.x, bounds.y, bounds.width, bounds.height);
|
||||
font.draw(batch, message, bounds.x+bounds.width/2, bounds.y+bounds.height, 0, Align.center, false);
|
||||
if (drawHealth) health.render(batch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
font.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "Button";}
|
||||
|
||||
private void buttonAction() {
|
||||
if (message.equalsIgnoreCase("play")) {
|
||||
State.setCurrenState(handler.getGameState());
|
||||
handler.getGameObjectHandler().dispose();
|
||||
handler.getGameState().init();
|
||||
handler.getMenuState().dispose();
|
||||
} else if (message.equalsIgnoreCase("Stats")) {
|
||||
handler.getMenuState().setSubState(1);
|
||||
} else if (message.equalsIgnoreCase("Exit")) {
|
||||
State.setCurrenState(handler.getExitState());
|
||||
handler.getGameObjectHandler().dispose();
|
||||
State.getCurrentState().init();
|
||||
handler.getMenuState().dispose();
|
||||
} else if (message.equalsIgnoreCase("back")) {
|
||||
handler.getMenuState().setSubState(0);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkPlayerCollision() {
|
||||
if (bounds.overlaps(handler.getMenuState().getPlayer().getBounds())) {
|
||||
drawHealth = true;
|
||||
imageIndex = 1;
|
||||
if (Gdx.input.isKeyPressed(Keys.E)) {
|
||||
hitPoints++;
|
||||
} else {hitPoints--;}
|
||||
} else {
|
||||
drawHealth = false;
|
||||
imageIndex = 0;
|
||||
hitPoints--;
|
||||
}
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
48
core/src/com/jalenwinslow/game/gameobjects/GameObject.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
|
||||
public abstract class GameObject {
|
||||
|
||||
//--- Propreties
|
||||
protected Handler handler;
|
||||
protected double x, y;
|
||||
protected int depth;
|
||||
protected TextureRegion image;
|
||||
protected Rectangle bounds;
|
||||
|
||||
//--- Constructor
|
||||
public GameObject(Handler handler, double x, double y, TextureRegion image) {
|
||||
this.handler = handler;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.depth = 0;
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
public abstract void update(float dt);
|
||||
|
||||
public abstract void render(SpriteBatch batch);
|
||||
|
||||
public abstract void dispose();
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
|
||||
public boolean getCollision(double x, double y) {
|
||||
return (x <= bounds.x + bounds.width && x >= bounds.x && y >= bounds.y && y <= bounds.y + bounds.height);
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public double getX() {return x;}
|
||||
public double getY() {return y;}
|
||||
public int getDepth() {return depth;}
|
||||
public Rectangle getBounds() {return bounds;}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
|
||||
public class GameObjectHandler {
|
||||
|
||||
//--- Propreties
|
||||
private Handler handler;
|
||||
private Array<GameObject> gameObjects;
|
||||
private int numberOfShortWalls;
|
||||
private int numberOfTallWalls;
|
||||
private int highestNumberOfShortWallsAtOnce;
|
||||
private int highestNumberOfTallWallsAtOnce;
|
||||
|
||||
//--- Constructor
|
||||
public GameObjectHandler(Handler handler) {
|
||||
this.handler = handler;
|
||||
this.gameObjects = new Array<GameObject>();
|
||||
numberOfShortWalls = 0;
|
||||
numberOfTallWalls = 0;
|
||||
highestNumberOfShortWallsAtOnce = 0;
|
||||
highestNumberOfTallWallsAtOnce = 0;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
public void update(float dt) {
|
||||
sort();
|
||||
numberOfShortWalls = 0;
|
||||
numberOfTallWalls = 0;
|
||||
for (int i = 0; i < gameObjects.size; i++) {
|
||||
//System.out.println(gameObjects.get(i).getClass().toString());
|
||||
//if (gameObjects.get(i).toString().equalsIgnoreCase("TallWall")) {handler.setMessage("Its here");}
|
||||
if (gameObjects.get(i).toString().equalsIgnoreCase("ShortWall")) {numberOfShortWalls++;}
|
||||
if (gameObjects.get(i).toString().equalsIgnoreCase("TallWall")) numberOfTallWalls++;
|
||||
gameObjects.get(i).update(dt);
|
||||
}
|
||||
numberOfShortWalls -= 10;
|
||||
if (numberOfShortWalls > highestNumberOfShortWallsAtOnce) highestNumberOfShortWallsAtOnce = numberOfShortWalls;
|
||||
if (numberOfTallWalls > highestNumberOfTallWallsAtOnce) highestNumberOfTallWallsAtOnce = numberOfTallWalls;
|
||||
//handler.setMessage("number of short walls: " + numberOfShortWalls);
|
||||
}
|
||||
|
||||
public void render(SpriteBatch batch) {
|
||||
|
||||
for (GameObject gameObj : gameObjects) {
|
||||
gameObj.render(batch);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
gameObjects.clear();
|
||||
}
|
||||
|
||||
public void sort() {
|
||||
for (int i = 0; i < gameObjects.size - 1; i++) {
|
||||
if (gameObjects.get(i).depth <= gameObjects.get(i+1).depth) {
|
||||
gameObjects.swap(i, i+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void add(GameObject gameObject) {
|
||||
gameObjects.add(gameObject);
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public Array getGameObjects() {return gameObjects;}
|
||||
public int getNumberOfShortWalls() {return numberOfShortWalls;}
|
||||
public int getHighestNumberOfShortWallsAtOnce() {return highestNumberOfShortWallsAtOnce;}
|
||||
public int getHighestNumberOfTallWallsAtOnce() {return highestNumberOfTallWallsAtOnce;}
|
||||
|
||||
public void setGameObjects(Array array) {this.gameObjects = array;}
|
||||
|
||||
}
|
57
core/src/com/jalenwinslow/game/gameobjects/HealthBar.java
Normal file
@ -0,0 +1,57 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class HealthBar extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private TextureRegion backHealth;
|
||||
private TextureRegion healthArea;
|
||||
|
||||
private float health;
|
||||
private float totalHealth;
|
||||
|
||||
//--- Constructor
|
||||
public HealthBar(Handler handler, double x, double y, TextureRegion image, int totalHealth) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/40);
|
||||
TextureRegion[][] images = image.split(16, 4);
|
||||
backHealth = images[0][0];
|
||||
healthArea = images[1][0];
|
||||
this.totalHealth = totalHealth;
|
||||
this.health = this.totalHealth;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(backHealth, bounds.x, bounds.y, bounds.width, bounds.height);
|
||||
batch.draw(healthArea, bounds.x + 4, bounds.y + 4, (bounds.width - 8) * (health/totalHealth), bounds.height - 8);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "HealthBar";}
|
||||
|
||||
//--- Getters and Setters
|
||||
public float getHealth() {return health;}
|
||||
public float getTotalHealth() {return totalHealth;}
|
||||
|
||||
public void setHealth(float health) {this.health = health;}
|
||||
public void setTotalHealth(float totalHealth) {this.totalHealth = totalHealth;}
|
||||
|
||||
}
|
68
core/src/com/jalenwinslow/game/gameobjects/PlayButton.java
Normal file
@ -0,0 +1,68 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.states.State;
|
||||
|
||||
public class PlayButton extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
TextureRegion[][] btnImages;
|
||||
TextureRegion currentTexture;
|
||||
|
||||
//--- Constructor
|
||||
public PlayButton(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
btnImages = image.split(image.getRegionWidth(), 48);//image.getRegionHeight()/3);
|
||||
currentTexture = btnImages[0][0];
|
||||
bounds = new Rectangle((int)x - Main.WIDTH/8, (int)y - Main.HEIGHT/16, Main.WIDTH/4, Main.HEIGHT/8);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
handleAnimation();
|
||||
if (Gdx.input.justTouched() && Gdx.input.getX() < bounds.x + bounds.width && Gdx.input.getX() > bounds.x &&
|
||||
Gdx.input.getY() < bounds.y + bounds.height && Gdx.input.getY() > bounds.y) {
|
||||
State.setCurrenState(handler.getGameState());
|
||||
handler.getGameState().init();
|
||||
handler.getMenuState().dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(currentTexture, (int)bounds.x, (int)bounds.y, Main.WIDTH/4, Main.HEIGHT/8);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "PlayButton";}
|
||||
|
||||
public void handleAnimation() {
|
||||
if (Gdx.input.getX() < bounds.x + bounds.width && Gdx.input.getX() > bounds.x &&
|
||||
Gdx.input.getY() < bounds.y + bounds.height && Gdx.input.getY() > bounds.y) {
|
||||
if (Gdx.input.isTouched()) {
|
||||
currentTexture = btnImages[2][0];
|
||||
} else {
|
||||
currentTexture = btnImages[1][0];
|
||||
}
|
||||
} else {
|
||||
currentTexture = btnImages[0][0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
258
core/src/com/jalenwinslow/game/gameobjects/Player.java
Normal file
@ -0,0 +1,258 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Input.Keys;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.Animation;
|
||||
import com.badlogic.gdx.graphics.g2d.Animation.PlayMode;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.gameobjects.TallWall.TallWallStates;
|
||||
|
||||
public class Player extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
public static final double SPEED = 3.0;
|
||||
|
||||
private int dir;
|
||||
private double vecX, vecY;
|
||||
private int wood;
|
||||
private int highestNumberOfTallWallsCreated;
|
||||
private int highestNumberOfTallWallsDestroyed;
|
||||
private int numberOfWoodPickedUp;
|
||||
|
||||
private Animation<TextureRegion> animDown, animUp, animRight;
|
||||
private TextureRegion texture;
|
||||
private float elapsedTime = 0;
|
||||
private Rectangle boundsFeet;
|
||||
|
||||
//private Texture boundsTexture = new Texture("DodgeGame_boundsMask.png");
|
||||
|
||||
//--- Constructor
|
||||
public Player(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
|
||||
dir = 3;
|
||||
vecX = 0;
|
||||
vecY = 0;
|
||||
wood = 0;
|
||||
highestNumberOfTallWallsCreated = 0;
|
||||
highestNumberOfTallWallsDestroyed = 0;
|
||||
numberOfWoodPickedUp = 0;
|
||||
createAnimation();
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/10 - 40, Main.HEIGHT/10 - 24);
|
||||
boundsFeet = new Rectangle((int)x, (int)y, Main.WIDTH/10-40, Main.HEIGHT/10 -48);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
elapsedTime += dt;
|
||||
handleInput();
|
||||
handleCollision();
|
||||
handleAnimation();
|
||||
x += vecX;
|
||||
y += vecY;
|
||||
depth = (int)y + Main.HEIGHT/20;
|
||||
bounds.setPosition((float)x + 20, (float)y + 8);
|
||||
boundsFeet.setPosition((float)x + 20, (float)y);
|
||||
checks();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(texture, (int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
//batch.draw(boundsTexture, bounds.x, bounds.y, bounds.width, bounds.height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
//image.dispose();
|
||||
//boundsTexture.dispose();
|
||||
}
|
||||
|
||||
private void createAnimation() {
|
||||
TextureRegion[][] splitTexture = image.split(16, 16);
|
||||
Array<TextureRegion> array = new Array(splitTexture.length * splitTexture[0].length);
|
||||
for (int i = 0; i < splitTexture[0].length; i++) {
|
||||
array.add(splitTexture[0][i]);
|
||||
}
|
||||
animDown = new Animation(0.1f, array, PlayMode.LOOP);
|
||||
array.clear();
|
||||
|
||||
for (TextureRegion t : splitTexture[1]) {
|
||||
array.add(t);
|
||||
}
|
||||
animUp = new Animation(0.1f, array, PlayMode.LOOP);
|
||||
array.clear();
|
||||
|
||||
for (TextureRegion t : splitTexture[2]) {
|
||||
array.add(t);
|
||||
}
|
||||
animRight = new Animation(0.1f, array, PlayMode.LOOP);
|
||||
array.clear();
|
||||
texture = animDown.getKeyFrame(elapsedTime);
|
||||
}
|
||||
|
||||
private void handleInput() {
|
||||
if ( (Gdx.input.isKeyPressed(Keys.W) && Gdx.input.isKeyPressed(Keys.S)) ||
|
||||
(!Gdx.input.isKeyPressed(Keys.W) && !Gdx.input.isKeyPressed(Keys.S)) ) {
|
||||
vecY = 0;
|
||||
} else if (Gdx.input.isKeyPressed(Keys.W)) {
|
||||
vecY = SPEED;
|
||||
dir = 1;
|
||||
} else if (Gdx.input.isKeyPressed(Keys.S)) {
|
||||
vecY = -SPEED;
|
||||
dir = 3;
|
||||
}
|
||||
|
||||
if ( (Gdx.input.isKeyPressed(Keys.A) && Gdx.input.isKeyPressed(Keys.D)) ||
|
||||
(!Gdx.input.isKeyPressed(Keys.A) && !Gdx.input.isKeyPressed(Keys.D)) ) {
|
||||
vecX = 0;
|
||||
} else if (Gdx.input.isKeyPressed(Keys.A)) {
|
||||
vecX = -SPEED;
|
||||
dir = 2;
|
||||
} else if (Gdx.input.isKeyPressed(Keys.D)) {
|
||||
vecX = SPEED;
|
||||
dir = 0;
|
||||
}
|
||||
|
||||
if ( (Gdx.input.isKeyJustPressed(Keys.SPACE)) && wood >= 7) {
|
||||
int arrayX = ((int)(boundsFeet.x + (boundsFeet.width/2))/64);
|
||||
int arrayY = ((int)(boundsFeet.y + (boundsFeet.height/2))/64);
|
||||
handler.getGameState().getGrid().setFree(false, arrayX, arrayY);
|
||||
handler.getGameObjectHandler().add(new TallWall(handler, arrayX * 64, arrayY *64, new TextureRegion(handler.getGameState().getTallWallTexture())) );
|
||||
wood -= 7;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void handleCollision() {
|
||||
if (boundsFeet.x + boundsFeet.width + vecX >= Main.WIDTH-64) {vecX = 0;}
|
||||
if (boundsFeet.x + vecX <= 64) vecX = 0;
|
||||
if (boundsFeet.y + boundsFeet.height + vecY >= Main.HEIGHT-64) vecY = 0;
|
||||
if (boundsFeet.y + vecY <= 0) {vecY = 0;}
|
||||
|
||||
handleWallCollision();
|
||||
}
|
||||
|
||||
private void handleWallCollision() {// Also breaking walls
|
||||
|
||||
for (int i = 0; i < handler.getGameObjectHandler().getGameObjects().size; i++) {
|
||||
if (handler.getGameObjectHandler().getGameObjects().get(i).toString().equalsIgnoreCase("ShortWall")) {
|
||||
ShortWall wall = (ShortWall)handler.getGameObjectHandler().getGameObjects().get(i);
|
||||
if (wall.getShowHealthBounds() != null && boundsFeet.overlaps(wall.getShowHealthBounds()) && Gdx.input.isKeyPressed(Keys.E)) {
|
||||
if (wall.getHitPoints() > 0) {
|
||||
wall.setHitPoints(wall.getHitPoints() - 1);
|
||||
}
|
||||
}
|
||||
if (vecX < 0) {
|
||||
if (wall.getCollision(boundsFeet.x + vecX, boundsFeet.y) ||
|
||||
wall.getCollision(boundsFeet.x + vecX, boundsFeet.y + boundsFeet.height)) {
|
||||
vecX = 0;
|
||||
}
|
||||
} else if (vecX > 0) {
|
||||
if (wall.getCollision(boundsFeet.x + boundsFeet.width + vecX, boundsFeet.y) ||
|
||||
wall.getCollision(boundsFeet.x + boundsFeet.width + vecX, boundsFeet.y + boundsFeet.height)) {
|
||||
vecX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (vecY < 0) {
|
||||
if (wall.getCollision(boundsFeet.x, boundsFeet.y + vecY) ||
|
||||
wall.getCollision(boundsFeet.x + boundsFeet.width, boundsFeet.y + vecY)) {
|
||||
vecY = 0;
|
||||
}
|
||||
} else if (vecY > 0) {
|
||||
if (wall.getCollision(boundsFeet.x, boundsFeet.y + boundsFeet.height + vecY) ||
|
||||
wall.getCollision(boundsFeet.x + boundsFeet.width, boundsFeet.y + boundsFeet.height + vecY)) {
|
||||
vecY = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (handler.getGameObjectHandler().getGameObjects().get(i).toString().equalsIgnoreCase("TallWall")) {
|
||||
TallWall wall = (TallWall)handler.getGameObjectHandler().getGameObjects().get(i);
|
||||
if (wall.getState() == TallWallStates.startCreation) {
|
||||
if (wall.getShowHealthBounds() != null && boundsFeet.overlaps(wall.getShowHealthBounds()) && Gdx.input.isKeyPressed(Keys.E)) {
|
||||
if (wall.getHitPoints() < wall.getTotalHitPoints()) {
|
||||
wall.setHitPoints(wall.getHitPoints() + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vecX < 0) {
|
||||
if (wall.getCollision(boundsFeet.x + vecX, boundsFeet.y) ||
|
||||
wall.getCollision(boundsFeet.x + vecX, boundsFeet.y + boundsFeet.height)) {
|
||||
vecX = 0;
|
||||
}
|
||||
} else if (vecX > 0) {
|
||||
if (wall.getCollision(boundsFeet.x + boundsFeet.width + vecX, boundsFeet.y) ||
|
||||
wall.getCollision(boundsFeet.x + boundsFeet.width + vecX, boundsFeet.y + boundsFeet.height)) {
|
||||
vecX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (vecY < 0) {
|
||||
if (wall.getCollision(boundsFeet.x, boundsFeet.y + vecY) ||
|
||||
wall.getCollision(boundsFeet.x + boundsFeet.width, boundsFeet.y + vecY)) {
|
||||
vecY = 0;
|
||||
}
|
||||
} else if (vecY > 0) {
|
||||
if (wall.getCollision(boundsFeet.x, boundsFeet.y + boundsFeet.height + vecY) ||
|
||||
wall.getCollision(boundsFeet.x + boundsFeet.width, boundsFeet.y + boundsFeet.height + vecY)) {
|
||||
vecY = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleAnimation() {
|
||||
Animation<TextureRegion> currentAnimation;
|
||||
if (vecY > 0) dir = 1;
|
||||
else if (vecY < 0) dir = 3;
|
||||
else if (vecX > 0) dir = 0;
|
||||
else if (vecX < 0) dir = 2;
|
||||
|
||||
switch (dir) {
|
||||
case 0: currentAnimation = animRight; break;
|
||||
case 1: currentAnimation = animUp; break;
|
||||
case 2: currentAnimation = animRight; break;
|
||||
case 3: currentAnimation = animDown; break;
|
||||
default: currentAnimation = animDown; break;
|
||||
}
|
||||
|
||||
if (vecX != 0 || vecY != 0)
|
||||
texture = currentAnimation.getKeyFrame(elapsedTime);
|
||||
else texture = currentAnimation.getKeyFrame(0);
|
||||
|
||||
if (texture.isFlipX()) texture.flip(true, false);
|
||||
if (dir == 2 && !texture.isFlipX()) texture.flip(true, false);
|
||||
}
|
||||
|
||||
private void checks() {
|
||||
if (wood < 0) wood = 0;
|
||||
if (wood > 20) wood = 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "Player";}
|
||||
|
||||
//--- Getters and Setters
|
||||
public Rectangle getBoundsFeet() {return boundsFeet;}
|
||||
public int getWood() {return wood;}
|
||||
public int getHighestNumberOfTallWallsCreated() {return highestNumberOfTallWallsCreated;}
|
||||
public int getHighestNumberOfTallWallsDestroyed() {return highestNumberOfTallWallsDestroyed;}
|
||||
public int getNumberOfWoodPickedUp() {return numberOfWoodPickedUp;}
|
||||
|
||||
public void setWood(int wood) {this.wood = wood;}
|
||||
public void setHighestNumberOfTallWallsCreated(int tallWalls) {this.highestNumberOfTallWallsCreated = tallWalls;}
|
||||
public void setHighestNumberOfTallWallsDestroyed(int tallWalls) {this.highestNumberOfTallWallsDestroyed = tallWalls;}
|
||||
public void setNumberOfWoodPickedUp(int wood) {this.numberOfWoodPickedUp = wood;}
|
||||
|
||||
}
|
78
core/src/com/jalenwinslow/game/gameobjects/ScoreBoard.java
Normal file
@ -0,0 +1,78 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class ScoreBoard extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private BitmapFont font;
|
||||
private String message1;
|
||||
private String messageOfScores;
|
||||
|
||||
//--- Constructor
|
||||
public ScoreBoard(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH*3/4, Main.HEIGHT/2 );
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(2f);
|
||||
font.getData().down = -20.0f;
|
||||
font.setColor(Color.BLACK);
|
||||
message1 = "Seconds survived in last round\n"
|
||||
+ "Longest survived in game\n\n"
|
||||
+ "Highest amount of\n"
|
||||
+ " arrows created\n"
|
||||
+ " arrows shot at once\n"
|
||||
+ " Short Walls created\n"
|
||||
+ " Short Walls at once\n"
|
||||
+ " Short Walls destroyed\n"
|
||||
+ " Tall Walls created\n"
|
||||
+ " Tall Walls at once\n"
|
||||
+ " Tall Walls destroyed\n"
|
||||
+ " wood picked up\n";
|
||||
messageOfScores = "" + handler.getScore().currentSecSurvived + "\n"
|
||||
+ handler.getScore().highestSecSurvived + "\n\n\n"
|
||||
+ handler.getScore().highestNumberOfArrowsCreated + "\n"
|
||||
+ handler.getScore().highestNumberOfArrowsShotAtOnce + "\n"
|
||||
+ handler.getScore().highestNumberOfShortWallsCreated + "\n"
|
||||
+ handler.getScore().highestNumberOfShortWallsAtOnce + "\n"
|
||||
+ handler.getScore().highestNumberOfShortWallsDestroyed + "\n"
|
||||
+ handler.getScore().highestNumberOfTallWallsCreated + "\n"
|
||||
+ handler.getScore().highestNumberOfTallWallsAtOnce + "\n"
|
||||
+ handler.getScore().highestNumberOfTallWallsDestroyed + "\n"
|
||||
+ handler.getScore().highestNumberOfWoodPickedUp;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(image, bounds.x, bounds.y, bounds.width, bounds.height);
|
||||
font.draw(batch, message1, bounds.x+bounds.width/20, bounds.y+bounds.height-8, 0, Align.topLeft, false);
|
||||
font.draw(batch, messageOfScores, bounds.x + bounds.width - bounds.width/20, bounds.y+bounds.height-8, 0, Align.right,false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
font.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "ScoreBoard";}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
170
core/src/com/jalenwinslow/game/gameobjects/ShortWall.java
Normal file
@ -0,0 +1,170 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.states.State;
|
||||
import java.util.Random;
|
||||
|
||||
public class ShortWall extends Wall {
|
||||
|
||||
//--- Propreties
|
||||
enum ShortWallStates {
|
||||
creation,
|
||||
normal,
|
||||
standard
|
||||
}
|
||||
|
||||
private Random rand;
|
||||
private ShortWallStates state;
|
||||
private TextureRegion texture;
|
||||
private Rectangle deathBounds;
|
||||
private Rectangle showHealthBounds;
|
||||
private Rectangle noPlayerBounds;
|
||||
|
||||
private int hitPoints;
|
||||
private HealthBar health;
|
||||
private boolean breakable;
|
||||
private boolean drawHealth;
|
||||
private float timer;
|
||||
private float elapsedTime;
|
||||
private float alpha;
|
||||
//Texture boundsTexture = new Texture("DodgeGame_boundsMask.png");
|
||||
|
||||
//--- Constructor
|
||||
public ShortWall(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
rand = new Random();
|
||||
chooseImage();
|
||||
depth = (int)y + Main.HEIGHT/20;
|
||||
hitPoints = 1;
|
||||
this.breakable = false;
|
||||
drawHealth = false;
|
||||
timer = 0;
|
||||
elapsedTime = 0;
|
||||
alpha = 1;
|
||||
state = ShortWallStates.standard;
|
||||
}
|
||||
|
||||
public ShortWall(Handler handler, double x, double y, TextureRegion image, boolean breakable) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle();
|
||||
noPlayerBounds = new Rectangle((int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
rand = new Random();
|
||||
deathBounds = new Rectangle();
|
||||
showHealthBounds = new Rectangle();
|
||||
chooseImage();
|
||||
depth = (int) y + Main.HEIGHT/20;
|
||||
hitPoints = 900;
|
||||
health = new HealthBar(handler, x, y, new TextureRegion(handler.getGameState().getHealthTexture()), hitPoints);
|
||||
this.breakable = breakable;
|
||||
drawHealth = false;
|
||||
timer = 0;
|
||||
elapsedTime = 0;
|
||||
alpha = 0;
|
||||
state = ShortWallStates.creation;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
|
||||
switch (state) {
|
||||
case creation:
|
||||
elapsedTime += dt;
|
||||
if (!noPlayerBounds.overlaps(handler.getGameState().getPlayer().getBoundsFeet())) {
|
||||
bounds = new Rectangle(noPlayerBounds);
|
||||
}
|
||||
if (elapsedTime >= 0.25 && timer <= 2) {
|
||||
timer += 0.25;
|
||||
elapsedTime -= 0.25;
|
||||
if (alpha == 0) alpha = 1;
|
||||
else alpha = 0;
|
||||
}
|
||||
if (timer > 2) {
|
||||
alpha = 1;
|
||||
if (bounds == null) {
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
}
|
||||
deathBounds = new Rectangle((int)x+8, (int)y+8, Main.WIDTH/10-16, Main.HEIGHT/10-16);
|
||||
showHealthBounds = new Rectangle((int)x-8, (int)y-8, Main.WIDTH/10+16, Main.HEIGHT/10+16);
|
||||
health.bounds.x = bounds.x;
|
||||
health.bounds.y = bounds.y + bounds.height + (Main.HEIGHT/40) + 4;
|
||||
state = ShortWallStates.normal;
|
||||
}
|
||||
break;
|
||||
case normal:
|
||||
boundCollisions();
|
||||
health.setHealth(hitPoints);
|
||||
if (hitPoints <= 0) {
|
||||
for (int i = 0; i < handler.getGameObjectHandler().getGameObjects().size; i++) {
|
||||
if (handler.getGameObjectHandler().getGameObjects().get(i).equals(this)) {
|
||||
handler.getGameState().getPlayer().setWood(handler.getGameState().getPlayer().getWood()+2);
|
||||
handler.getGameState().getGrid().setFree(true, (int)(x / handler.getGameState().getGrid().getAreaWidth()), (int)(y / handler.getGameState().getGrid().getAreaHeight()));
|
||||
handler.getGameState().getWallGen().setHighestNumberOfShortWallsDestroyed(handler.getGameState().getWallGen().getHighestNumberOfShortWallsDestroyed() + 1);
|
||||
handler.getGameObjectHandler().getGameObjects().removeValue(this, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case standard:
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.setColor(1, 1, 1, alpha);
|
||||
batch.draw(texture, (int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10+(Main.HEIGHT/40));
|
||||
batch.setColor(1, 1, 1, 1);
|
||||
|
||||
if (drawHealth) {
|
||||
health.render(batch);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
//boundsTexture.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "ShortWall";}
|
||||
|
||||
private void chooseImage() {
|
||||
TextureRegion[][] images = image.split(16, 20);
|
||||
texture = images[0][rand.nextInt(images[0].length)];
|
||||
}
|
||||
|
||||
private void boundCollisions() {
|
||||
if (deathBounds.overlaps(handler.getGameState().getPlayer().getBoundsFeet())) {
|
||||
handler.getGameState().getTimer().stop();
|
||||
State.setCurrenState(handler.getGameOverState());
|
||||
State.getCurrentState().init();
|
||||
handler.getGameObjectHandler().dispose();
|
||||
handler.getGameState().dispose();
|
||||
}
|
||||
drawHealth = (showHealthBounds.overlaps(handler.getGameState().getPlayer().getBoundsFeet()));
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public boolean isBreakable() {return breakable;}
|
||||
public int getHitPoints() {return hitPoints;}
|
||||
public Rectangle getDeathBounds() {return deathBounds;}
|
||||
public Rectangle getShowHealthBounds() {return showHealthBounds;}
|
||||
|
||||
public void setBreakable(boolean breakable) {this.breakable = breakable;}
|
||||
public void setHitPoints(int hitPoints) {this.hitPoints = hitPoints;}
|
||||
|
||||
}
|
128
core/src/com/jalenwinslow/game/gameobjects/TallWall.java
Normal file
@ -0,0 +1,128 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class TallWall extends Wall {
|
||||
|
||||
//--- Propreties
|
||||
enum TallWallStates{
|
||||
waitingCreation,
|
||||
startCreation,
|
||||
normal
|
||||
}
|
||||
|
||||
private TextureRegion[][] texture;
|
||||
private TallWallStates state;
|
||||
private int imageIndex;
|
||||
private int hitPoints;
|
||||
private int totalHitPoints;
|
||||
private boolean drawHealth;
|
||||
private HealthBar health;
|
||||
|
||||
private Rectangle showHealthBounds;
|
||||
private Rectangle noPlayerBounds;
|
||||
private Rectangle noArrowBounds;
|
||||
|
||||
//private Texture boundsTexture = new Texture("DodgeGame_boundsMask.png");
|
||||
|
||||
//--- Constructor
|
||||
public TallWall(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle();
|
||||
depth = (int)y + Main.HEIGHT/20;
|
||||
texture = image.split(16, 24);
|
||||
state = TallWallStates.waitingCreation;
|
||||
imageIndex = 2;
|
||||
hitPoints = 0;
|
||||
totalHitPoints = 600;
|
||||
drawHealth = false;
|
||||
health = new HealthBar(handler, x, y, new TextureRegion(handler.getGameState().getHealthTexture()), totalHitPoints);
|
||||
health.setHealth(hitPoints);
|
||||
showHealthBounds = new Rectangle();
|
||||
noPlayerBounds = new Rectangle((int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
noArrowBounds = new Rectangle();
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
switch (state) {
|
||||
case waitingCreation:
|
||||
if (!noPlayerBounds.overlaps(handler.getGameState().getPlayer().getBoundsFeet())) {
|
||||
state = TallWallStates.startCreation;
|
||||
bounds = new Rectangle(noPlayerBounds);
|
||||
showHealthBounds = new Rectangle((int)x-8, (int)y-8, bounds.width+16, bounds.height+16);
|
||||
health.bounds.y = bounds.y+bounds.height+(Main.HEIGHT/20)+4;
|
||||
imageIndex = 1;
|
||||
}
|
||||
break;
|
||||
case startCreation:
|
||||
boundCollisions();
|
||||
health.setHealth(hitPoints);
|
||||
if (hitPoints >= totalHitPoints) {
|
||||
state = TallWallStates.normal;
|
||||
noArrowBounds = new Rectangle(bounds);
|
||||
noArrowBounds.width += 8;
|
||||
noArrowBounds.y += 16;
|
||||
imageIndex = 0;
|
||||
handler.getGameState().getPlayer().setHighestNumberOfTallWallsCreated(handler.getGameState().getPlayer().getHighestNumberOfTallWallsCreated() + 1);
|
||||
}
|
||||
break;
|
||||
case normal:
|
||||
boundCollisions();
|
||||
health.setHealth(hitPoints);
|
||||
if (hitPoints <= 0) {
|
||||
for (int i = 0; i < handler.getGameObjectHandler().getGameObjects().size; i++) {
|
||||
if (handler.getGameObjectHandler().getGameObjects().get(i).equals(this)) {
|
||||
handler.getGameState().getGrid().setFree(true, (int)(x / handler.getGameState().getGrid().getAreaWidth()), (int)(y / handler.getGameState().getGrid().getAreaHeight()));
|
||||
handler.getGameState().getPlayer().setHighestNumberOfTallWallsDestroyed(handler.getGameState().getPlayer().getHighestNumberOfTallWallsDestroyed()+1);
|
||||
handler.getGameObjectHandler().getGameObjects().removeValue(this, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(texture[0][imageIndex], noPlayerBounds.x, noPlayerBounds.y, noPlayerBounds.width, noPlayerBounds.height + (noPlayerBounds.height/2));
|
||||
//batch.draw(boundsTexture, noArrowBounds.x, noArrowBounds.y, noArrowBounds.width, noArrowBounds.height);
|
||||
if (drawHealth) {
|
||||
health.render(batch);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
//boundsTexture.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "TallWall";}
|
||||
|
||||
public void boundCollisions() {
|
||||
drawHealth = (showHealthBounds.overlaps(handler.getGameState().getPlayer().getBoundsFeet()));
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public int getHitPoints() {return hitPoints;}
|
||||
public int getTotalHitPoints() {return totalHitPoints;}
|
||||
public Rectangle getShowHealthBounds() {return showHealthBounds;}
|
||||
public Rectangle getNoPlayerBounds() {return noPlayerBounds;}
|
||||
public Rectangle getNoArrowBounds() {return noArrowBounds;}
|
||||
public TallWallStates getState() {return state;}
|
||||
|
||||
public void setHitPoints(int hitPoints) {this.hitPoints = hitPoints;}
|
||||
public void setState(TallWallStates state) {this.state = state;}
|
||||
|
||||
}
|
77
core/src/com/jalenwinslow/game/gameobjects/Timer.java
Normal file
@ -0,0 +1,77 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class Timer extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private int time;
|
||||
private float elapsedTime;
|
||||
private BitmapFont font;
|
||||
//private Label label;
|
||||
private boolean playing;
|
||||
private Texture timerCaseTexture;
|
||||
|
||||
//--- Constructor
|
||||
public Timer(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
time = 0;
|
||||
elapsedTime = 0;
|
||||
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(3, 3);
|
||||
font.setColor(Color.BLACK);
|
||||
|
||||
playing = true;
|
||||
timerCaseTexture = new Texture("b&w_DodgeGame_timerCase.png");
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
if (playing) {
|
||||
elapsedTime += dt;
|
||||
if (elapsedTime >= 1) {
|
||||
time++;
|
||||
elapsedTime = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(timerCaseTexture, Main.WIDTH/2-(Main.WIDTH/12), Main.HEIGHT-Main.HEIGHT/20, Main.WIDTH/6, Main.HEIGHT/20);
|
||||
font.draw(batch, String.valueOf(time), Main.WIDTH/2, Main.HEIGHT+4, 0, Align.center, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
timerCaseTexture.dispose();
|
||||
font.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "Timer";}
|
||||
|
||||
public void stop() {
|
||||
playing = false;
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public int getTime() {return time;}
|
||||
public boolean isPlaying() {return playing;}
|
||||
|
||||
public void setTime(int time) {this.time = time;}
|
||||
public void setPlaying(boolean playing) {this.playing = playing;}
|
||||
|
||||
}
|
25
core/src/com/jalenwinslow/game/gameobjects/Wall.java
Normal file
@ -0,0 +1,25 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
|
||||
public abstract class Wall extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
|
||||
|
||||
//--- Constructor
|
||||
public Wall(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
public boolean hasCollided(double x, double y) {
|
||||
return (x >= bounds.x && y >= bounds.y && x <= bounds.x + bounds.width && y <= bounds.y + bounds.height);
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
116
core/src/com/jalenwinslow/game/gameobjects/WallGenerator.java
Normal file
@ -0,0 +1,116 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import java.util.Random;
|
||||
|
||||
public class WallGenerator extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
public static final byte MIN_WALL_COUNT = 5, MAX_WALL_COUNT = 30;
|
||||
public static final int END_DEPLOY_TIME = 15, START_DEPLOY_TIME = 30;
|
||||
|
||||
private Random rand;
|
||||
|
||||
private int wallLimit;
|
||||
private int baseTimeCount;
|
||||
private int timeCount;
|
||||
private int timer;
|
||||
private float elapsedTime;
|
||||
private int highestNumberOfShortWallsCreated;
|
||||
private int highestNumberOfShortWallsDestroyed;
|
||||
|
||||
//--- Constructor
|
||||
public WallGenerator(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
|
||||
rand = new Random();
|
||||
|
||||
wallLimit = MAX_WALL_COUNT;
|
||||
baseTimeCount = START_DEPLOY_TIME;
|
||||
timeCount = baseTimeCount + (rand.nextInt(7) - 3);
|
||||
timer = 0;
|
||||
elapsedTime = 0;
|
||||
highestNumberOfShortWallsCreated = 0;
|
||||
highestNumberOfShortWallsDestroyed = 0;
|
||||
|
||||
for (int i = 0; i < 3; i++) {addWall();}
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
elapsedTime += dt;
|
||||
if (elapsedTime >= 1) {
|
||||
timer++;
|
||||
elapsedTime--;
|
||||
}
|
||||
if (timer >= timeCount && (handler.getGameObjectHandler().getNumberOfShortWalls() - 10) < wallLimit) {
|
||||
if (rand.nextInt(100)+1 <= 75) {
|
||||
addWall();
|
||||
}
|
||||
timer = 0;
|
||||
if (baseTimeCount > END_DEPLOY_TIME) baseTimeCount--;
|
||||
timeCount = baseTimeCount + (rand.nextInt(7)-3);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "WallGenerator";}
|
||||
|
||||
public void updateWallStats() {
|
||||
|
||||
}
|
||||
|
||||
private void addWall() {
|
||||
int arrayX = rand.nextInt(8)+1;
|
||||
int arrayY = rand.nextInt(8)+1;
|
||||
while (true) {
|
||||
if (handler.getGameState().getGrid().isFree()[arrayY][arrayX] == true) {
|
||||
break;
|
||||
} else {
|
||||
if (arrayX < 8) arrayX++;
|
||||
else {
|
||||
if (arrayY < 8) {
|
||||
arrayY++;
|
||||
arrayX = 1;
|
||||
} else {
|
||||
arrayY = 1;
|
||||
arrayX = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
handler.getGameState().getGrid().setFree(false, arrayX, arrayY);
|
||||
|
||||
int xx = handler.getGameState().getGrid().getAreaWidth() * (arrayX);
|
||||
int yy = handler.getGameState().getGrid().getAreaHeight() * (arrayY);
|
||||
|
||||
handler.getGameObjectHandler().add(new ShortWall(handler, xx, yy, image, true));
|
||||
|
||||
highestNumberOfShortWallsCreated++;
|
||||
}
|
||||
|
||||
|
||||
//--- Getters and Setters
|
||||
public int getHighestNumberOfShortWallsCreated() {return highestNumberOfShortWallsCreated;}
|
||||
public int getHighestNumberOfShortWallsDestroyed() {return highestNumberOfShortWallsDestroyed;}
|
||||
|
||||
public void setHighestNumberOfShortWallsDestroyed(int number) {this.highestNumberOfShortWallsDestroyed = number;}
|
||||
|
||||
}
|
76
core/src/com/jalenwinslow/game/gameobjects/Wood.java
Normal file
@ -0,0 +1,76 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import java.util.Random;
|
||||
|
||||
public class Wood extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private float timer;
|
||||
private float elapsedTime;
|
||||
private float alpha;
|
||||
|
||||
//--- Constructor
|
||||
public Wood(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle((int)x+16, (int)y+16, Main.WIDTH/20, Main.HEIGHT/20);
|
||||
depth = (int)bounds.y + (int)bounds.width/2;
|
||||
timer = 0;
|
||||
elapsedTime = 0;
|
||||
alpha = 1;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
elapsedTime += dt;
|
||||
boundCollision();
|
||||
if (timer >= 10) {
|
||||
if (elapsedTime >= 0.25) {
|
||||
if (alpha == 1) alpha = 0;
|
||||
else alpha = 1;
|
||||
}
|
||||
if (timer >= 13) {
|
||||
handler.getGameObjectHandler().getGameObjects().removeValue(this, false);
|
||||
}
|
||||
}
|
||||
if (elapsedTime >= 0.25) {
|
||||
timer += 0.25;
|
||||
elapsedTime -= 0.25;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.setColor(1, 1, 1, alpha);
|
||||
batch.draw(image, (int)x, (int)y, Main.WIDTH/10, Main.HEIGHT/10);
|
||||
batch.setColor(1, 1, 1, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "Wood";}
|
||||
|
||||
public void boundCollision() {
|
||||
if (bounds.overlaps(handler.getGameState().getPlayer().getBounds())) {
|
||||
handler.getGameState().getPlayer().setWood(handler.getGameState().getPlayer().getWood() + 1);
|
||||
handler.getGameState().getPlayer().setNumberOfWoodPickedUp(handler.getGameState().getPlayer().getNumberOfWoodPickedUp() + 1);
|
||||
handler.getGameObjectHandler().getGameObjects().removeValue(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
60
core/src/com/jalenwinslow/game/gameobjects/WoodGUI.java
Normal file
@ -0,0 +1,60 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class WoodGUI extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private BitmapFont font;
|
||||
private TextureRegion[][] texture;
|
||||
private TextureRegion backTexture;
|
||||
|
||||
private Texture boundsTexture = new Texture("DodgeGame_boundsMask.png");
|
||||
|
||||
//--- Constructor
|
||||
public WoodGUI(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
bounds = new Rectangle((int)x, (int)y, Main.WIDTH/5, Main.HEIGHT/20);
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(3, 3);
|
||||
font.setColor(Color.WHITE);
|
||||
backTexture = new TextureRegion(handler.getGameState().getHealthTexture()).split(16, 4)[0][0];
|
||||
texture = image.split(16, 16);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(backTexture, bounds.x-bounds.width, bounds.y, bounds.width, bounds.height);
|
||||
font.draw(batch, "x " + handler.getGameState().getPlayer().getWood(), bounds.x-64, bounds.y+Main.HEIGHT/20, 0, Align.left, false);
|
||||
batch.draw(texture[0][0], bounds.x-bounds.width+16, bounds.y-4, Main.WIDTH/16, Main.HEIGHT/16);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
font.dispose();
|
||||
boundsTexture.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "WoodGUI";}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package com.jalenwinslow.game.gameobjects;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import java.util.Random;
|
||||
|
||||
public class WoodGenerator extends GameObject {
|
||||
|
||||
//--- Propreties
|
||||
private Random rand;
|
||||
private int timer;
|
||||
private float elapsedTime;
|
||||
private int baseTime;
|
||||
private int countDown;
|
||||
private int numberOfWoodCreated;
|
||||
private TextureRegion[][] images;
|
||||
|
||||
//--- Constructor
|
||||
public WoodGenerator(Handler handler, double x, double y, TextureRegion image) {
|
||||
super(handler, x, y, image);
|
||||
rand = new Random();
|
||||
timer = 0;
|
||||
elapsedTime = 0;
|
||||
baseTime = 20;
|
||||
countDown = baseTime + rand.nextInt(11);
|
||||
numberOfWoodCreated = 0;
|
||||
images = image.split(16, 16);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
elapsedTime += dt;
|
||||
if (elapsedTime >= 1) {
|
||||
timer++;
|
||||
elapsedTime--;
|
||||
}
|
||||
if (timer >= countDown) {
|
||||
if (rand.nextInt(10)+1 <= 6) {
|
||||
int arrayX = rand.nextInt(8)+1;
|
||||
int arrayY = rand.nextInt(8)+1;
|
||||
|
||||
while (true) {
|
||||
if (handler.getGameState().getGrid().isFree()[arrayY][arrayX]) {
|
||||
break;
|
||||
} else {
|
||||
if (arrayX < 8) arrayX++;
|
||||
else {
|
||||
if (arrayY < 8) {
|
||||
arrayY++;
|
||||
arrayX = 1;
|
||||
}
|
||||
else {
|
||||
arrayX = 1;
|
||||
arrayY = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
handler.getGameState().getGrid().setFree(false, arrayX, arrayY);
|
||||
|
||||
int xx = handler.getGameState().getGrid().getAreaWidth() * arrayX;
|
||||
int yy = handler.getGameState().getGrid().getAreaHeight() * arrayY;
|
||||
|
||||
handler.getGameObjectHandler().add(new Wood(handler, xx, yy, images[0][rand.nextInt(8)]));
|
||||
numberOfWoodCreated = 0;
|
||||
}
|
||||
timer = 0;
|
||||
countDown = 20 + rand.nextInt(11);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {return "WoodGenerator";}
|
||||
|
||||
//--- Getters and Setters
|
||||
public int getNumberOfWoodCreated() {return numberOfWoodCreated;}
|
||||
|
||||
}
|
66
core/src/com/jalenwinslow/game/states/ExitState.java
Normal file
@ -0,0 +1,66 @@
|
||||
package com.jalenwinslow.game.states;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class ExitState extends State {
|
||||
|
||||
//--- Propreties
|
||||
BitmapFont font;
|
||||
Texture texture;
|
||||
float elapsedTime;
|
||||
float timer;
|
||||
String dots;
|
||||
|
||||
//--- Constructor
|
||||
public ExitState(Handler handler) {
|
||||
super(handler);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void init() {
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(6);
|
||||
font.setColor(Color.WHITE);
|
||||
texture = new Texture("b&w_DodgeGame_gamePaused.png");
|
||||
elapsedTime = 0;
|
||||
timer = 0;
|
||||
dots = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
elapsedTime += dt;
|
||||
if (elapsedTime >= 1) {
|
||||
timer++;
|
||||
elapsedTime--;
|
||||
}
|
||||
if (timer >= 2) {
|
||||
Gdx.app.exit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(texture, 0, 0, Main.WIDTH, Main.HEIGHT);
|
||||
font.draw(batch, "Exiting", Main.WIDTH/2, Main.HEIGHT/2, 0, Align.center, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
font.dispose();
|
||||
texture.dispose();
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
62
core/src/com/jalenwinslow/game/states/GameOverState.java
Normal file
@ -0,0 +1,62 @@
|
||||
package com.jalenwinslow.game.states;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class GameOverState extends State {
|
||||
|
||||
//--- Propreties
|
||||
private Texture gameOverTexture;
|
||||
private BitmapFont font;
|
||||
|
||||
//--- Constructor
|
||||
public GameOverState(Handler handler) {
|
||||
super(handler);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void init() {
|
||||
handler.getScore().updateScores();
|
||||
handler.getScore().updateScoreFile();
|
||||
handler.getGameObjectHandler().dispose();
|
||||
handler.getGameState().dispose();
|
||||
gameOverTexture = new Texture("b&w_DodgeGame_GameOver.png");
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(3, 3);
|
||||
font.setColor(Color.WHITE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
if (Gdx.input.justTouched()) {
|
||||
State.setCurrenState(handler.getMenuState());
|
||||
State.getCurrentState().init();
|
||||
dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(gameOverTexture, 0, 0, Main.WIDTH, Main.HEIGHT);
|
||||
font.draw(batch, "CLICK LEFT TO CONTINUE", 16, Main.HEIGHT-16);
|
||||
font.draw(batch, "SURVIVED FOR " + String.valueOf(handler.getGameState().getTimer().getTime()) + " SEC", Main.WIDTH/2, Main.HEIGHT/2 - 64, 0, Align.center, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
if (gameOverTexture != null) gameOverTexture.dispose();
|
||||
if (font != null) font.dispose();
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
117
core/src/com/jalenwinslow/game/states/GameState.java
Normal file
@ -0,0 +1,117 @@
|
||||
package com.jalenwinslow.game.states;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Input.Keys;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.gameobjects.*;
|
||||
import com.jalenwinslow.game.utils.Grid;
|
||||
import java.util.Random;
|
||||
|
||||
public class GameState extends State{
|
||||
|
||||
//--- Propreties
|
||||
Texture background;
|
||||
Texture playerTexture;
|
||||
Texture woodTexture;
|
||||
Texture arrowTexture;
|
||||
Texture wallTexture;
|
||||
Texture tallWallTexture;
|
||||
Texture healthTexture;
|
||||
|
||||
private Player player;
|
||||
private WoodGUI woodGui;
|
||||
private Grid grid;
|
||||
private ArrowGenerator arrowGen;
|
||||
private WallGenerator wallGen;
|
||||
private WoodGenerator woodGen;
|
||||
private Wall[] bottomWalls;
|
||||
private Timer timer;
|
||||
private Random rand;
|
||||
|
||||
//--- Constructor
|
||||
public GameState(Handler handler) {
|
||||
super(handler);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void init() {
|
||||
background = new Texture("b&w_DodgeGame_background2.png");
|
||||
playerTexture = new Texture("b&w_DodgeGame_man1.png");
|
||||
woodTexture = new Texture("b&w_DodgeGame_wood1.png");
|
||||
arrowTexture = new Texture("b&w_DodgeGame_arrow.png");
|
||||
wallTexture = new Texture("b&w_DodgeGame_wall1.png");
|
||||
tallWallTexture = new Texture("b&w_DodgeGame_tallWall1.png");
|
||||
healthTexture = new Texture("b&w_DodgeGame_health1.png");
|
||||
player = new Player(handler, Main.WIDTH/2, Main.HEIGHT/2, new TextureRegion(playerTexture));
|
||||
woodGui = new WoodGUI(handler, Main.WIDTH, 0, new TextureRegion(woodTexture));
|
||||
grid = new Grid(handler);
|
||||
arrowGen = new ArrowGenerator(handler, 0, 0, new TextureRegion(arrowTexture));
|
||||
wallGen = new WallGenerator(handler, 0, 0, new TextureRegion(wallTexture));
|
||||
woodGen = new WoodGenerator(handler, 0, 0, new TextureRegion(woodTexture));
|
||||
bottomWalls = new Wall[Main.WIDTH/64];
|
||||
for (int i = 0; i < Main.WIDTH/64; i++) {
|
||||
bottomWalls[i] = new ShortWall(handler, 64*i, 0, new TextureRegion(wallTexture));
|
||||
}
|
||||
timer = new Timer(handler, Main.WIDTH/2, Main.HEIGHT-(Main.HEIGHT/10+32), null);
|
||||
|
||||
handler.getGameObjectHandler().add(player);
|
||||
handler.getGameObjectHandler().getGameObjects().addAll(bottomWalls, 0, bottomWalls.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
handler.getGameObjectHandler().update(dt);
|
||||
arrowGen.update(dt);
|
||||
wallGen.update(dt);
|
||||
woodGen.update(dt);
|
||||
timer.update(dt);
|
||||
woodGui.update(dt);
|
||||
if (Gdx.input.isKeyJustPressed(Keys.P)) {
|
||||
State.setCurrenState(handler.getPauseState());
|
||||
State.getCurrentState().init();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(background, 0, 0, Main.WIDTH, Main.HEIGHT);
|
||||
handler.getGameObjectHandler().render(batch);
|
||||
arrowGen.render(batch);
|
||||
wallGen.render(batch);
|
||||
woodGen.render(batch);
|
||||
timer.render(batch);
|
||||
woodGui.render(batch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
if (background != null) background.dispose();
|
||||
if (playerTexture != null) playerTexture.dispose();
|
||||
if (arrowTexture != null) arrowTexture.dispose();
|
||||
if (wallTexture != null) wallTexture.dispose();
|
||||
if (woodTexture != null) woodTexture.dispose();
|
||||
if (tallWallTexture != null) tallWallTexture.dispose();
|
||||
if (healthTexture != null) healthTexture.dispose();
|
||||
if (timer != null) timer.dispose();
|
||||
if (woodGui != null) woodGui.dispose();
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public Texture getHealthTexture() {return healthTexture;}
|
||||
public Texture getTallWallTexture() {return tallWallTexture;}
|
||||
|
||||
public Player getPlayer() {return player;}
|
||||
public Grid getGrid() {return grid;}
|
||||
public ArrowGenerator getArrowGen() {return arrowGen;}
|
||||
public WallGenerator getWallGen() {return wallGen;}
|
||||
public WoodGenerator getWoodGen() {return woodGen;}
|
||||
public Wall[] getBottomWalls() {return bottomWalls;}
|
||||
public Timer getTimer() {return timer;}
|
||||
|
||||
}
|
131
core/src/com/jalenwinslow/game/states/MenuState.java
Normal file
@ -0,0 +1,131 @@
|
||||
package com.jalenwinslow.game.states;
|
||||
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
import com.jalenwinslow.game.gameobjects.Button;
|
||||
import com.jalenwinslow.game.gameobjects.Player;
|
||||
import com.jalenwinslow.game.gameobjects.ScoreBoard;
|
||||
import com.jalenwinslow.game.gameobjects.ShortWall;
|
||||
import com.jalenwinslow.game.gameobjects.Wall;
|
||||
|
||||
public class MenuState extends State{
|
||||
|
||||
//--- Propreties
|
||||
private int subState;
|
||||
|
||||
Texture menuBg;
|
||||
//Texture playButtonTexture;
|
||||
Texture buttonTexture;
|
||||
Texture playerTexture;
|
||||
Texture wallTexture;
|
||||
Texture healthTexture;
|
||||
Texture scoreBoardTexture;
|
||||
|
||||
private Button[] buttons;
|
||||
private Button backButton;
|
||||
private Player player;
|
||||
private Wall[] bottomWalls;
|
||||
private ScoreBoard scoreBoard;
|
||||
//private PlayButton playBtn;
|
||||
|
||||
//--- Constructor
|
||||
public MenuState(Handler handler) {
|
||||
super(handler);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void init() {
|
||||
subState = 0;
|
||||
|
||||
menuBg = new Texture("b&w_DodgeGame_background2.png");
|
||||
//playButtonTexture = new Texture("b&w_DodgeGame_playButton.png");
|
||||
buttonTexture = new Texture("b&w_DodgeGame_buttons1.png");
|
||||
playerTexture = new Texture("b&w_DodgeGame_man1.png");
|
||||
wallTexture = new Texture("b&w_DodgeGame_wall1.png");
|
||||
healthTexture = new Texture("b&w_DodgeGame_health1.png");
|
||||
scoreBoardTexture = new Texture("b&w_DodgeGame_scoreBoard.png");
|
||||
buttons = new Button[3];
|
||||
buttons[0] = new Button(handler, Main.WIDTH/4-64, Main.HEIGHT*3/4-96, new TextureRegion(buttonTexture), "PLAY", 6);
|
||||
buttons[1] = new Button(handler, Main.WIDTH*3/4-(64*2), Main.HEIGHT*3/4-96, new TextureRegion(buttonTexture), "STATS", 6);
|
||||
buttons[2] = new Button(handler, Main.WIDTH/4-64, Main.HEIGHT/4+32, new TextureRegion(buttonTexture), "EXIT", 6 );
|
||||
player = new Player(handler, Main.WIDTH/2, Main.HEIGHT/2, new TextureRegion(playerTexture));
|
||||
backButton = new Button(handler, Main.WIDTH/2-96, Main.HEIGHT/4-64, new TextureRegion(buttonTexture), "BACK", 6);
|
||||
bottomWalls = new Wall[Main.WIDTH/64];
|
||||
for (int i = 0; i < bottomWalls.length; i++) {
|
||||
bottomWalls[i] = new ShortWall(handler, 64*i, 0, new TextureRegion(wallTexture));
|
||||
}
|
||||
scoreBoard = new ScoreBoard(handler, Main.WIDTH/8, Main.HEIGHT*3/8, new TextureRegion(scoreBoardTexture));
|
||||
handler.getGameObjectHandler().add(player);
|
||||
handler.getGameObjectHandler().getGameObjects().addAll(bottomWalls, 0, bottomWalls.length);
|
||||
//playBtn = new PlayButton(handler, Main.WIDTH/2, Main.HEIGHT/2, new TextureRegion(playButtonTexture));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
switch (subState) {
|
||||
case 0:
|
||||
for (Button button : buttons) {
|
||||
if (button != null) button.update(dt);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
backButton.update(dt);
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
handler.getGameObjectHandler().update(dt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.draw(menuBg, 0, 0, Main.WIDTH, Main.HEIGHT);
|
||||
switch (subState) {
|
||||
case 0:
|
||||
for (Button button : buttons) {
|
||||
if (button != null) button.render(batch);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
scoreBoard.render(batch);
|
||||
backButton.render(batch);
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
handler.getGameObjectHandler().render(batch);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
menuBg.dispose();
|
||||
buttonTexture.dispose();
|
||||
playerTexture.dispose();
|
||||
wallTexture.dispose();
|
||||
healthTexture.dispose();
|
||||
scoreBoardTexture.dispose();
|
||||
scoreBoard.dispose();
|
||||
for (Button button: buttons) {button.dispose();}
|
||||
backButton.dispose();
|
||||
//playButtonTexture.dispose();
|
||||
//player = null;
|
||||
//buttons = null;
|
||||
//bottomWalls = null;
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
public Player getPlayer() {return player;}
|
||||
public Texture getHealthTexture() {return healthTexture;}
|
||||
public int getSubState() {return subState;}
|
||||
|
||||
public void setSubState(int subState) {this.subState = subState;}
|
||||
|
||||
}
|
57
core/src/com/jalenwinslow/game/states/PauseState.java
Normal file
@ -0,0 +1,57 @@
|
||||
package com.jalenwinslow.game.states;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Input.Keys;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class PauseState extends State {
|
||||
|
||||
//--- Propreties
|
||||
Texture background;
|
||||
BitmapFont font;
|
||||
|
||||
//--- Constructor
|
||||
public PauseState(Handler handler) {
|
||||
super(handler);
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
@Override
|
||||
public void init() {
|
||||
background = new Texture("b&w_DodgeGame_gamePaused.png");
|
||||
font = new BitmapFont(Gdx.files.internal("customFont4.fnt"));
|
||||
font.getData().setScale(6);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
if (Gdx.input.isKeyJustPressed(Keys.P)) {
|
||||
State.setCurrenState(handler.getGameState());
|
||||
dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(SpriteBatch batch) {
|
||||
batch.setColor(1, 1, 1, 0.2f);
|
||||
batch.draw(background, 0, 0, Main.WIDTH, Main.HEIGHT);
|
||||
batch.setColor(1, 1, 1, 1);
|
||||
font.draw(batch, "Game Paused", Main.WIDTH/2, Main.HEIGHT/2, 0, Align.center, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
background.dispose();
|
||||
font.dispose();
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
32
core/src/com/jalenwinslow/game/states/State.java
Normal file
@ -0,0 +1,32 @@
|
||||
package com.jalenwinslow.game.states;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
|
||||
public abstract class State {
|
||||
|
||||
//--- Propreties
|
||||
protected static State currentState = null;
|
||||
protected Handler handler;
|
||||
|
||||
//--- Constructor
|
||||
public State(Handler handler) {
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
public abstract void init();
|
||||
|
||||
public abstract void update(float dt);
|
||||
|
||||
public abstract void render(SpriteBatch batch);
|
||||
|
||||
public abstract void dispose();
|
||||
|
||||
//--- Getters and Setters
|
||||
public static State getCurrentState() {return State.currentState;}
|
||||
|
||||
public static void setCurrenState(State state) {currentState = state;}
|
||||
|
||||
}
|
59
core/src/com/jalenwinslow/game/utils/Grid.java
Normal file
@ -0,0 +1,59 @@
|
||||
package com.jalenwinslow.game.utils;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.jalenwinslow.game.Handler;
|
||||
import com.jalenwinslow.game.gameobjects.GameObject;
|
||||
|
||||
public class Grid {
|
||||
|
||||
//--- Propreties
|
||||
private Handler handler;
|
||||
private int width, height;
|
||||
private int areaWidth;
|
||||
private int areaHeight;
|
||||
private boolean[][] free;
|
||||
|
||||
//--- Constructor
|
||||
public Grid(Handler handler) {
|
||||
this.handler = handler;
|
||||
this.width = Gdx.graphics.getWidth();
|
||||
this.height = Gdx.graphics.getHeight();
|
||||
this.areaWidth = width/10;
|
||||
this.areaHeight = width/10;
|
||||
this.free = new boolean[width/areaWidth][height/areaHeight];
|
||||
for (int j = 0; j < free.length; j++) {
|
||||
for (int i = 0; i < free[j].length; i++) {
|
||||
free[j][i] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
public Grid(Handler handler, int width, int height, int areaWidth, int areaHeight) {
|
||||
this(handler);
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.areaWidth = areaWidth;
|
||||
this.areaHeight = areaHeight;
|
||||
this.free = new boolean[width/areaWidth][height/areaHeight];
|
||||
for (int j = 0; j < free.length; j++) {
|
||||
for (int i = 0; i < free[j].length; i++) {
|
||||
free[j][i] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
|
||||
|
||||
//--- Getters and Setters
|
||||
public int getWidth() {return width;}
|
||||
public int getHeight() {return height;}
|
||||
public int getAreaWidth() {return areaWidth;}
|
||||
public int getAreaHeight() {return areaHeight;}
|
||||
public boolean[][] isFree() {return free;}
|
||||
|
||||
public void setFree(boolean free, int i, int j) {
|
||||
this.free[j][i] = free;
|
||||
}
|
||||
|
||||
}
|
83
core/src/com/jalenwinslow/game/utils/Score.java
Normal file
@ -0,0 +1,83 @@
|
||||
package com.jalenwinslow.game.utils;
|
||||
|
||||
import com.jalenwinslow.game.Handler;
|
||||
|
||||
public class Score {
|
||||
|
||||
//--- Propreties
|
||||
private Handler handler;
|
||||
|
||||
public int currentSecSurvived;
|
||||
public int highestSecSurvived;
|
||||
public int highestNumberOfArrowsCreated, highestNumberOfArrowsShotAtOnce;
|
||||
public int highestNumberOfShortWallsCreated, highestNumberOfShortWallsAtOnce, highestNumberOfShortWallsDestroyed;
|
||||
public int highestNumberOfTallWallsCreated, highestNumberOfTallWallsAtOnce, highestNumberOfTallWallsDestroyed;
|
||||
public int highestNumberOfWoodPickedUp;
|
||||
|
||||
|
||||
//--- Constructor
|
||||
public Score(Handler handler) {
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
|
||||
//--- Methods
|
||||
public void updateScores() {
|
||||
currentSecSurvived = handler.getGameState().getTimer().getTime();
|
||||
if (currentSecSurvived > highestSecSurvived) highestSecSurvived = currentSecSurvived;
|
||||
|
||||
if (handler.getGameState().getArrowGen().getAmountOfArrowsCreated() > highestNumberOfArrowsCreated)
|
||||
highestNumberOfArrowsCreated = handler.getGameState().getArrowGen().getAmountOfArrowsCreated();
|
||||
if (handler.getGameState().getArrowGen().getHighestAmountOfArrowsAtOnce() > highestNumberOfArrowsShotAtOnce)
|
||||
highestNumberOfArrowsShotAtOnce = handler.getGameState().getArrowGen().getHighestAmountOfArrowsAtOnce();
|
||||
|
||||
if (handler.getGameState().getWallGen().getHighestNumberOfShortWallsCreated() > highestNumberOfShortWallsCreated)
|
||||
highestNumberOfShortWallsCreated = handler.getGameState().getWallGen().getHighestNumberOfShortWallsCreated();
|
||||
if (handler.getGameObjectHandler().getHighestNumberOfShortWallsAtOnce() > highestNumberOfShortWallsAtOnce)
|
||||
highestNumberOfShortWallsAtOnce = handler.getGameObjectHandler().getHighestNumberOfShortWallsAtOnce();
|
||||
if (handler.getGameState().getWallGen().getHighestNumberOfShortWallsDestroyed() > highestNumberOfShortWallsDestroyed)
|
||||
highestNumberOfShortWallsDestroyed = handler.getGameState().getWallGen().getHighestNumberOfShortWallsDestroyed();
|
||||
|
||||
if (handler.getGameState().getPlayer().getHighestNumberOfTallWallsCreated() > highestNumberOfTallWallsCreated)
|
||||
highestNumberOfTallWallsCreated = handler.getGameState().getPlayer().getHighestNumberOfTallWallsCreated();
|
||||
if (handler.getGameObjectHandler().getHighestNumberOfTallWallsAtOnce() > highestNumberOfTallWallsAtOnce)
|
||||
highestNumberOfTallWallsAtOnce = handler.getGameObjectHandler().getHighestNumberOfTallWallsAtOnce();
|
||||
if (handler.getGameState().getPlayer().getHighestNumberOfTallWallsDestroyed() > highestNumberOfTallWallsDestroyed)
|
||||
highestNumberOfTallWallsDestroyed = handler.getGameState().getPlayer().getHighestNumberOfTallWallsDestroyed();
|
||||
|
||||
if (handler.getGameState().getPlayer().getNumberOfWoodPickedUp() > highestNumberOfWoodPickedUp)
|
||||
highestNumberOfWoodPickedUp = handler.getGameState().getPlayer().getNumberOfWoodPickedUp();
|
||||
}
|
||||
|
||||
public void getScoresFromFile() {
|
||||
String[] strings = handler.getScoreFile().readString().split("\n");
|
||||
currentSecSurvived = Integer.valueOf(strings[0]);
|
||||
highestSecSurvived = Integer.valueOf(strings[1]);
|
||||
|
||||
highestNumberOfArrowsCreated = Integer.valueOf(strings[2]);
|
||||
highestNumberOfArrowsShotAtOnce = Integer.valueOf(strings[3]);
|
||||
|
||||
highestNumberOfShortWallsCreated = Integer.valueOf(strings[4]);
|
||||
highestNumberOfShortWallsAtOnce = Integer.valueOf(strings[5]);
|
||||
highestNumberOfShortWallsDestroyed = Integer.valueOf(strings[6]);
|
||||
|
||||
highestNumberOfTallWallsCreated = Integer.valueOf(strings[7]);
|
||||
highestNumberOfTallWallsAtOnce = Integer.valueOf(strings[8]);
|
||||
highestNumberOfTallWallsDestroyed = Integer.valueOf(strings[9]);
|
||||
|
||||
highestNumberOfWoodPickedUp = Integer.valueOf(strings[10]);
|
||||
}
|
||||
|
||||
public void updateScoreFile() {
|
||||
String message = currentSecSurvived + "\n" + highestSecSurvived + "\n"
|
||||
+ highestNumberOfArrowsCreated + "\n" + highestNumberOfArrowsShotAtOnce + "\n"
|
||||
+ highestNumberOfShortWallsCreated + "\n" + highestNumberOfShortWallsAtOnce + "\n" + highestNumberOfShortWallsDestroyed + "\n"
|
||||
+ highestNumberOfTallWallsCreated + "\n" + highestNumberOfTallWallsAtOnce + "\n" + highestNumberOfTallWallsDestroyed + "\n"
|
||||
+ highestNumberOfWoodPickedUp;
|
||||
handler.getScoreFile().writeString(message, false);
|
||||
}
|
||||
|
||||
//--- Getters and Setters
|
||||
|
||||
|
||||
}
|
55
desktop/build.gradle
Normal file
@ -0,0 +1,55 @@
|
||||
apply plugin: "java"
|
||||
|
||||
sourceCompatibility = 1.6
|
||||
sourceSets.main.java.srcDirs = [ "src/" ]
|
||||
|
||||
project.ext.mainClassName = "com.jalenwinslow.game.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) {
|
||||
from files(sourceSets.main.output.classesDir)
|
||||
from files(sourceSets.main.output.resourcesDir)
|
||||
from {configurations.compile.collect {zipTree(it)}}
|
||||
from files(project.assetsDir);
|
||||
|
||||
manifest {
|
||||
attributes 'Main-Class': project.mainClassName
|
||||
}
|
||||
}
|
||||
|
||||
dist.dependsOn classes
|
||||
|
||||
eclipse {
|
||||
project {
|
||||
name = appName + "-desktop"
|
||||
linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/core/assets'
|
||||
}
|
||||
}
|
||||
|
||||
task afterEclipseImport(description: "Post processing after project generation", group: "IDE") {
|
||||
doLast {
|
||||
def classpath = new XmlParser().parse(file(".classpath"))
|
||||
new Node(classpath, "classpathentry", [ kind: 'src', path: 'assets' ]);
|
||||
def writer = new FileWriter(file(".classpath"))
|
||||
def printer = new XmlNodePrinter(new PrintWriter(writer))
|
||||
printer.setPreserveWhitespace(true)
|
||||
printer.print(classpath)
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package com.jalenwinslow.game.desktop;
|
||||
|
||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
|
||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
|
||||
import com.jalenwinslow.game.Main;
|
||||
|
||||
public class DesktopLauncher {
|
||||
public static void main (String[] arg) {
|
||||
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
|
||||
config.width = Main.WIDTH;
|
||||
config.height = Main.HEIGHT;
|
||||
config.resizable = false;
|
||||
new LwjglApplication(new Main(), config);
|
||||
}
|
||||
}
|
3
gradle.properties
Normal file
@ -0,0 +1,3 @@
|
||||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms128m -Xmx1500m
|
||||
org.gradle.configureondemand=true
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
6
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#Fri Jun 09 23:06:52 EDT 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip
|
172
gradlew
vendored
Normal file
@ -0,0 +1,172 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## 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=""
|
||||
|
||||
# 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" "$@"
|
84
gradlew.bat
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
@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=
|
||||
|
||||
@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
|
1
settings.gradle
Normal file
@ -0,0 +1 @@
|
||||
include 'desktop', 'core'
|