From fbd68c2169aaea0edf7a04fcb120a8cb736519ea Mon Sep 17 00:00:00 2001 From: Ash Reynolds Date: Thu, 11 Feb 2016 18:35:15 +0000 Subject: [PATCH] Screen functionality Basic screen functionality, working loading screen with asset loader and manager --- core/assets/fonts/badaboom.TTF | Bin 0 -> 18980 bytes core/assets/spritesheets/default.fnt | 101 +++++++++ core/assets/spritesheets/uiskin.atlas | 199 ++++++++++++++++++ core/assets/spritesheets/uiskin.json | 19 ++ core/assets/spritesheets/uiskin.png | Bin 0 -> 28299 bytes core/src/com/game/App.java | 36 ++-- core/src/com/game/Managers/Assets.java | 7 - core/src/com/game/Misc/Vars.java | 1 + core/src/com/game/Screens/AbstractScreen.java | 85 ++++++++ core/src/com/game/Screens/Leaderboard.java | 7 + core/src/com/game/Screens/LevelSelect.java | 7 + core/src/com/game/Screens/Loading.java | 72 +++++++ core/src/com/game/Screens/Menu.java | 38 ++++ core/src/com/game/Screens/Play.java | 7 + core/src/com/game/Screens/Splash.java | 31 +++ core/src/com/game/States/Menu.java | 94 +++++++++ .../src/com/game/desktop/DesktopLauncher.java | 1 + 17 files changed, 683 insertions(+), 22 deletions(-) create mode 100644 core/assets/fonts/badaboom.TTF create mode 100644 core/assets/spritesheets/default.fnt create mode 100644 core/assets/spritesheets/uiskin.atlas create mode 100644 core/assets/spritesheets/uiskin.json create mode 100644 core/assets/spritesheets/uiskin.png delete mode 100644 core/src/com/game/Managers/Assets.java create mode 100644 core/src/com/game/Screens/AbstractScreen.java create mode 100644 core/src/com/game/Screens/Leaderboard.java create mode 100644 core/src/com/game/Screens/LevelSelect.java create mode 100644 core/src/com/game/Screens/Loading.java create mode 100644 core/src/com/game/Screens/Menu.java create mode 100644 core/src/com/game/Screens/Play.java create mode 100644 core/src/com/game/Screens/Splash.java diff --git a/core/assets/fonts/badaboom.TTF b/core/assets/fonts/badaboom.TTF new file mode 100644 index 0000000000000000000000000000000000000000..3ce455d3005b836819178185827c6a11bce055b7 GIT binary patch literal 18980 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 literal 0 HcmV?d00001 diff --git a/core/assets/spritesheets/default.fnt b/core/assets/spritesheets/default.fnt new file mode 100644 index 0000000..433f1e5 --- /dev/null +++ b/core/assets/spritesheets/default.fnt @@ -0,0 +1,101 @@ +info face="Droid Sans" size=17 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 +common lineHeight=20 base=18 scaleW=256 scaleH=128 pages=1 packed=0 +page id=0 file="default.png" +chars count=96 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=16 xadvance=4 page=0 chnl=0 +char id=124 x=0 y=0 width=6 height=20 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0 +char id=106 x=6 y=0 width=9 height=20 xoffset=-4 yoffset=3 xadvance=4 page=0 chnl=0 +char id=81 x=15 y=0 width=15 height=19 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=74 x=30 y=0 width=11 height=19 xoffset=-5 yoffset=3 xadvance=4 page=0 chnl=0 +char id=125 x=41 y=0 width=10 height=18 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=123 x=51 y=0 width=10 height=18 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=93 x=61 y=0 width=8 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=91 x=69 y=0 width=8 height=18 xoffset=-2 yoffset=3 xadvance=5 page=0 chnl=0 +char id=41 x=77 y=0 width=9 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=40 x=86 y=0 width=9 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=64 x=95 y=0 width=18 height=17 xoffset=-3 yoffset=3 xadvance=14 page=0 chnl=0 +char id=121 x=113 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=113 x=126 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=112 x=139 y=0 width=13 height=17 xoffset=-2 yoffset=6 xadvance=9 page=0 chnl=0 +char id=103 x=152 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=38 x=165 y=0 width=16 height=16 xoffset=-3 yoffset=3 xadvance=11 page=0 chnl=0 +char id=37 x=181 y=0 width=18 height=16 xoffset=-3 yoffset=3 xadvance=14 page=0 chnl=0 +char id=36 x=199 y=0 width=12 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=63 x=211 y=0 width=11 height=16 xoffset=-3 yoffset=3 xadvance=7 page=0 chnl=0 +char id=33 x=222 y=0 width=7 height=16 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 +char id=48 x=229 y=0 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=57 x=242 y=0 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=56 x=0 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=54 x=13 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=53 x=26 y=20 width=12 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=51 x=38 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=100 x=51 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=98 x=64 y=20 width=13 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=85 x=77 y=20 width=14 height=16 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=83 x=91 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 +char id=79 x=104 y=20 width=15 height=16 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=71 x=119 y=20 width=14 height=16 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=67 x=133 y=20 width=13 height=16 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=127 x=146 y=20 width=12 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=35 x=158 y=20 width=15 height=15 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=0 +char id=92 x=173 y=20 width=11 height=15 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=47 x=184 y=20 width=11 height=15 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=59 x=195 y=20 width=8 height=15 xoffset=-3 yoffset=6 xadvance=4 page=0 chnl=0 +char id=55 x=203 y=20 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=52 x=216 y=20 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=50 x=230 y=20 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=49 x=243 y=20 width=9 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=116 x=0 y=36 width=10 height=15 xoffset=-3 yoffset=4 xadvance=5 page=0 chnl=0 +char id=108 x=10 y=36 width=6 height=15 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 +char id=107 x=16 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=105 x=28 y=36 width=7 height=15 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 +char id=104 x=35 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=102 x=47 y=36 width=11 height=15 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=90 x=58 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=89 x=71 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 +char id=88 x=84 y=36 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=87 x=98 y=36 width=19 height=15 xoffset=-3 yoffset=3 xadvance=15 page=0 chnl=0 +char id=86 x=117 y=36 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=84 x=131 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 +char id=82 x=144 y=36 width=13 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=80 x=157 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=78 x=169 y=36 width=14 height=15 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=77 x=183 y=36 width=17 height=15 xoffset=-2 yoffset=3 xadvance=14 page=0 chnl=0 +char id=76 x=200 y=36 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=75 x=211 y=36 width=13 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=73 x=224 y=36 width=10 height=15 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=72 x=234 y=36 width=14 height=15 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=70 x=0 y=51 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=69 x=11 y=51 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=68 x=22 y=51 width=14 height=15 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=66 x=36 y=51 width=13 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=65 x=49 y=51 width=15 height=15 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=0 +char id=58 x=64 y=51 width=7 height=13 xoffset=-2 yoffset=6 xadvance=4 page=0 chnl=0 +char id=117 x=71 y=51 width=12 height=13 xoffset=-2 yoffset=6 xadvance=10 page=0 chnl=0 +char id=115 x=83 y=51 width=11 height=13 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 +char id=111 x=94 y=51 width=13 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=101 x=107 y=51 width=13 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=99 x=120 y=51 width=12 height=13 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 +char id=97 x=132 y=51 width=12 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=60 x=144 y=51 width=13 height=12 xoffset=-3 yoffset=5 xadvance=9 page=0 chnl=0 +char id=122 x=157 y=51 width=11 height=12 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 +char id=120 x=168 y=51 width=13 height=12 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=119 x=181 y=51 width=17 height=12 xoffset=-3 yoffset=6 xadvance=12 page=0 chnl=0 +char id=118 x=198 y=51 width=13 height=12 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=114 x=211 y=51 width=10 height=12 xoffset=-2 yoffset=6 xadvance=6 page=0 chnl=0 +char id=110 x=221 y=51 width=12 height=12 xoffset=-2 yoffset=6 xadvance=10 page=0 chnl=0 +char id=109 x=233 y=51 width=17 height=12 xoffset=-2 yoffset=6 xadvance=15 page=0 chnl=0 +char id=94 x=0 y=66 width=13 height=11 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=62 x=13 y=66 width=13 height=11 xoffset=-3 yoffset=5 xadvance=9 page=0 chnl=0 +char id=42 x=26 y=66 width=13 height=10 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=43 x=39 y=66 width=13 height=10 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=61 x=52 y=66 width=13 height=8 xoffset=-3 yoffset=7 xadvance=9 page=0 chnl=0 +char id=39 x=65 y=66 width=6 height=8 xoffset=-2 yoffset=3 xadvance=3 page=0 chnl=0 +char id=34 x=71 y=66 width=9 height=8 xoffset=-2 yoffset=3 xadvance=6 page=0 chnl=0 +char id=44 x=80 y=66 width=8 height=7 xoffset=-3 yoffset=14 xadvance=4 page=0 chnl=0 +char id=126 x=88 y=66 width=13 height=6 xoffset=-3 yoffset=8 xadvance=9 page=0 chnl=0 +char id=46 x=101 y=66 width=7 height=6 xoffset=-2 yoffset=13 xadvance=4 page=0 chnl=0 +char id=96 x=108 y=66 width=8 height=6 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=0 +char id=45 x=116 y=66 width=9 height=5 xoffset=-3 yoffset=10 xadvance=5 page=0 chnl=0 +char id=95 x=125 y=66 width=13 height=4 xoffset=-4 yoffset=17 xadvance=6 page=0 chnl=0 +kernings count=-1 \ No newline at end of file diff --git a/core/assets/spritesheets/uiskin.atlas b/core/assets/spritesheets/uiskin.atlas new file mode 100644 index 0000000..a51f7bf --- /dev/null +++ b/core/assets/spritesheets/uiskin.atlas @@ -0,0 +1,199 @@ +uiskin.png +size: 256,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +check-off + rotate: false + xy: 11, 5 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +textfield + rotate: false + xy: 11, 5 + size: 14, 14 + split: 3, 3, 3, 3 + orig: 14, 14 + offset: 0, 0 + index: -1 +check-on + rotate: false + xy: 125, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +cursor + rotate: false + xy: 23, 1 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default + rotate: false + xy: 1, 50 + size: 254, 77 + orig: 254, 77 + offset: 0, 0 + index: -1 +default-pane + rotate: false + xy: 11, 1 + size: 5, 3 + split: 1, 1, 1, 1 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-rect-pad + rotate: false + xy: 11, 1 + size: 5, 3 + split: 1, 1, 1, 1 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-pane-noborder + rotate: false + xy: 170, 44 + size: 1, 1 + split: 0, 0, 0, 0 + orig: 1, 1 + offset: 0, 0 + index: -1 +default-rect + rotate: false + xy: 38, 25 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-rect-down + rotate: false + xy: 170, 46 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-round + rotate: false + xy: 112, 29 + size: 12, 20 + split: 5, 5, 5, 4 + pad: 4, 4, 1, 1 + orig: 12, 20 + offset: 0, 0 + index: -1 +default-round-down + rotate: false + xy: 99, 29 + size: 12, 20 + split: 5, 5, 5, 4 + pad: 4, 4, 1, 1 + orig: 12, 20 + offset: 0, 0 + index: -1 +default-round-large + rotate: false + xy: 57, 29 + size: 20, 20 + split: 5, 5, 5, 4 + orig: 20, 20 + offset: 0, 0 + index: -1 +default-scroll + rotate: false + xy: 78, 29 + size: 20, 20 + split: 2, 2, 2, 2 + orig: 20, 20 + offset: 0, 0 + index: -1 +default-select + rotate: false + xy: 29, 29 + size: 27, 20 + split: 4, 14, 4, 4 + orig: 27, 20 + offset: 0, 0 + index: -1 +default-select-selection + rotate: false + xy: 26, 16 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-slider + rotate: false + xy: 29, 20 + size: 8, 8 + split: 2, 2, 2, 2 + orig: 8, 8 + offset: 0, 0 + index: -1 +default-slider-knob + rotate: false + xy: 1, 1 + size: 9, 18 + orig: 9, 18 + offset: 0, 0 + index: -1 +default-splitpane + rotate: false + xy: 17, 1 + size: 5, 3 + split: 0, 5, 0, 0 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-splitpane-vertical + rotate: false + xy: 125, 29 + size: 3, 5 + split: 0, 0, 0, 5 + orig: 3, 5 + offset: 0, 0 + index: -1 +default-window + rotate: false + xy: 1, 20 + size: 27, 29 + split: 4, 3, 20, 3 + orig: 27, 29 + offset: 0, 0 + index: -1 +selection + rotate: false + xy: 174, 48 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +tree-minus + rotate: false + xy: 140, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +tree-plus + rotate: false + xy: 155, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +white + rotate: false + xy: 129, 31 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 \ No newline at end of file diff --git a/core/assets/spritesheets/uiskin.json b/core/assets/spritesheets/uiskin.json new file mode 100644 index 0000000..18f1861 --- /dev/null +++ b/core/assets/spritesheets/uiskin.json @@ -0,0 +1,19 @@ +{ +com.badlogic.gdx.graphics.Color: { + green: { a: 1, b: 0, g: 1, r: 0 }, + white: { a: 1, b: 1, g: 1, r: 1 }, + red: { a: 1, b: 0, g: 0, r: 1 }, + black: { a: 1, b: 0, g: 0, r: 0 }, +}, +com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: { + default: { down: default-round-down, up: default-round, font: default-font, fontColor: white }, + toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red } +}, +com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: { + default-horizontal: { background: default-slider, knob: default-slider-knob }, + default-vertical: { background: default-slider, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { + default: { font: default-font, fontColor: white } +}, +} \ No newline at end of file diff --git a/core/assets/spritesheets/uiskin.png b/core/assets/spritesheets/uiskin.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e5f1a210e11a24ba2065e93e665839852b6aed GIT binary patch literal 28299 zcmXV1Wmp?cv`&IkDDLjX-HJPu0>$0ExH|+Z?(P()xVskDQk>%M!Ch{?d+#3}WSQ*F z&YbhwM0`_}K}9A+1^@u4aejyE zp#!2i+jT+cgoK2NY}l=Hw1LszPlb#fagpM@A_edT6toPbPVC;!`HhFhXZbE6l@IWk9)f9 zuGaB@|30w=6I@pIDfmV5B@%~`kfgWke*L87nh+C&8JK0?KI(`Bz5Bj9!!Ll5yK6O8 z!*1V~HIEIFjY@6K>FR(AmEtdg@p-F3HF|B%ed-^Zjh-E70FPIDoTUNK=ii2OUQc0r zI0J8RTHl^df-8ujLv2g|(KE8RtT8uQopz{mHhkP>knqioYvG_blZFX~4nzRTe+8)g zWd<6dH5+|ses>1_$rlTL_~+0g^z-^%R7m!JCngLL;07o^5(EABz#@`>cVIgWzzfnoe&F-CHz2h1--KRQd0uYkO7>EU1h8t?7f}FOR-L0Z3@S9L zsB`YIqhb^yU;b~*JO}Lti(6_C;o~xcX7y>uS@XY#9;a&sIl3#&8UrEW5-%4@-_GOz zyI6@9dff*+man_K>%Nl5e~aaZHLG;y9cnbHGTVN{O6-lN-AlQh;{V@jm`fE2@So+z zs2x#S&dWO*mC??%@49nEo3mM{w2seP{LoKF3sA^}#S>l%Iultt{5hPI!zBEU%d9gO z@{~xP{7IQo?%=kW6A!G}(qrhc=2n9D{ZDV&&M2KK^?O)oC>$>h^dBMLCA}#bm2A)h zJ$+*l3QBDbTt<=N!Dcn8!=1cJxq?4t|LAvrzzl@WaZknNF5MN@r7GrrR_fG2B6>XH zx1!n+NG1w52I7A&p(g@n6G{K4c<6)AdE0Q&?H9<@feL@PM@Bv+>+Yf?c`GAyodl>B zI>(iYygt1n@3!PT0!QHf6tdC4g6T)<&Byo06R5&iEvK?4Wbjujp+nx-yIxS3aJawM zPy>90HzYz7V*yJq!80>6`>Y9hlH~urt-oy%?jqgRvn2uaKqGrV_i)||1QU=Im>wVp z8{!CEzi|Hy#Q^DZJO7Q*O#@hNu)L=Ry~OrNNlK<~*qs5LLD&e;ae~fRDFHEr+)wgI zfV}DZ@ZZXfG@$lz4|A=Mfjz*>Bh8_`A9~r68K#O3pKZtM-M<)KQ(N0g=-bojKAx|5 z{-sexSbI%qFz(~Yns=$mTjNx}SgAehaZ=Ut^xwiWBYrz~8lFnDd-JY+6`=zN+P!}P z^&T*SjI_LMFpGSrdrn_oGi|En=8m$HiLd@C4i`eFgmCx3&|hYk0#u6?q1BPE)AW55 z6JYS$#w)HXZ`wp&$q??DDQeeXhniy%T0FLR1wID2ToVesqhW%LuBid2L_9D5Jr8TF zSU|-N#)c`zey-0s1tmW3o@gCP`?b#cZ=XjLOx%--&Ao}_mFheO-JW2UHe_WQD5G92r6edL!gYuG{#e0Y}ygy#p) z0LdB0?vq*cKlfdZ7&;}~9Q%^B0)G>FK-Pu)?@pIB=O0moqr4+-XaT;od6U^6qF~U$ zg8}3LL45Il+m`Eit^ZPEAYANcIlv={#siWc#)W{)z*>mBf)hr|wVH0dnOyzirBEY$ zJRB+aceR&^49=Qg*95+}*HlHkz)jA_Q{hqao;{E!bBZ^8P8Nv(PQ=sNY^joxIKaT~ zR=x0RG38|+0@)2JK3gwuz?<&|bP4#fc0Uxzm{J(d6VEzt92Q#_JyGMtvRS4bkN|TMkfn@-kT;&eNEdU$AVj^A4h&N#N?^&0x zMqd!zY!2We!}o3*8y(;-*O^$*c2tM;v+RNDGQYgmd_1)~&A@vUfxVC116uVk;}dLT z>WnWo`?_1!y~poI>GB?Oz4i%$lPm9K^*>@PNSXMsMzGfG8Bz*BO=%q66beQ0| zXnhRugUMhdfw?U?r`7Y_*^bD=CX9sR^F1VQA9=>?HF&-_SOe_&+P(V=xh-d;8(QC~ zyWCC|au;ntY+hHpu1D{Zp!m$XD7~D5-D4Ei_YI=!QK>6z9>+Agn+5341WGLX}a`;k7KzARh1%v)0MlL^JgFFE=oq%~%}zOG=>Zzum$mY*Oa8zU1=Jyj<6*N{|rR|p!pa1nrb9bojkFIWEuc;)tl5q8eqYv zw%-3gJLlVUTDn4d%cbDnzHx1X+b0AGvmNB{|6RZd<5d4+EEA+OtEQXi&#j`Qyf zlFuEBJOTH}KynI>1+Y=#lB;bZ7u6t~NKMJL&}#3ECs~e^%9SukP#d}nd^!9dF1G%+ zXvl+E^`V7!)UuQd7rgj4hqu_J!L*bNkigJ%iPt&2@Z+m|=%MKS3hto+ZK!dlB%7S= zXI@Igz<2{=rekY?il-7w%erqXxosH%2haGP{fK<<{U{`#x%`)EjjfM6)225YuJ$Lh z&SAmRoh^zvW-vjvsdwVP(+duwW%l#?akzK@a5iJlM@!rQjX(D~z| zAazkR_1FLXV9mcH8Qhy2vZpp*j=#d|A`{}JJM(M1s66%bKZZ@yaQw|E)bDT)IC(yN zFqyU5O1_?f<8Oiuy}vLJ-dVQHYmz_6Sei>4N;axYSHsv&7qcR7UgUdRdkwnD5pb0i zJrs4BH7#Wo;RBhfB#m@pt9#L66mz5`fUT?0na75?));LAKnUm`?fW${NSpor>b0Xg zIY^IuK(DEPEsOVa&V}gPXt@`QT~SKd`RVAHCYh#1-aC;{&(=Cxgc0v)dRCy`i5Mf^Lx$ZpY4kQB}YK(F>YqmRC++@_om_bpKM5n})lXnIo5pd_aw_R)JHh#&T9zWitz=I?Bce9IWdu-#y&~Q|g zuTGu_w4QYP3j2L{n4ML>eXhm*Oo#Iar2Bd5CFir-uZ+B|u$?BCEg@pM0H4i31WdcP zWO`K;C+eW1Z+bsqIGNJ7`d*)IIUhkHZx1^m&kq7^t@dl}85>?zXP=AGr;9yD`4e6( zTRA&WFYRVa6#9ki4_qF7*L90zF{rNpiL?9O^|rbARop{(*J4jL-rrh|>FMPjudz*u)AHm%e@kp54X?UWFe(+)+XfN))o5)_ovd*jPCI zLf3pnH{P?YhYwf6H*POZo4tYX<*t2-n24FyGh}<*zDP*n%&TIsu>X#ppH6DL^p(9x zYr1fR=DIy+3Z%OK+l)UaTK&Uz%Xhlk+7OAuh9T^STkbnDP+sEmuoZ^&H%Qgm%m!(R z-S2vmx097nNX4O6uqMAVNhmYJd5KS&z(aZdx6nB&!!*w|RZvIF<-Md}TQzxJ-!4(R zTr$^NOYY@Zx*PbIH8Xy_%$BXgphM**HuVutQ z<*p*XQ=nz-!#~d&!Jb1%&%3>drbLf+oZa6dIV6)LJ7S0onO_m4e81A+)5c)1_;RwB~Xs!F<(_r1f3A$7~d{0}p4nE8DVF9zdL~m@YDG_D=#$$js^xR(r?g})OEPnHS1Q`kX=MCDlQv5O(V~vFHZYM@PJXiXqy5!hr z@X@|ZvA@RJkZrU$;s_xhiH`_11m+@mnP^TJEc`{|bgx zApaeUemgpT>=r?A&(ksEM!VaIAQIfLFLX&9Yn{Y7zD^(C;>|3MTeO1*E~SB+<0Eb` zqh3gwiExziPQD(bkle6?C+TSXpN2$ZzfW2={Ija=QJ?vU7g-y9epXMuUQdg7Y|&Uw z=bpv(^pvqzfywDa&UK`u*HD3&)drtw4ZIGLzS>FS5Js0=@))9X} zTtIFs?J}?JlB38*u-_AL%Z1)19%Q24`}Wv-YIP|V9Upownaq*h26$!$aaMCh%Vt?j81z>+ApOfct` zd}iF($$e*iLs$xikppWZ2KECdVbpUBx!oQ>aufdMfM11aBunx;LY;b=_TOFp3$z z@R{(SZ!My2713F97*ee_8)XS{eSQ75JHgd%WV&e5St^Q%tj#`T4SS;}6G!Stu=tA7 z`_c)8h)Do&&F1sDQO@%=L6Tg+jG^;F{5{9_lF7j+yoeAPB;u=AH~i~w!NxsrPY(7e$JlS<+q3ANj8HaW&4N@ewnK^!FZ4NxuVCyCj_cWQtd3O#u{F2_69N95jj z_BTkxI$Rg)Q*wBCc%A3I6AKh9IevKhDmF0q-vSuL;@Jrjch~t8Qb4-=%{@+f{cH=` z&tAqKL}W?F;mm)o+73$Iz#j(B$bH)u>y=I%q&bLQhplH+x_^iv;#J%l!pxX|g`LF z)(xQ_sHu0kVsrFIH=7RymDTkZbHNN>!T}K_D_y5^g%otyxWk_PANSHAbqfc9FLSQV zGGssuY3 z7AmzHB<|>>7y9VR7jOF5!Y{f#AO@JR!iU$QjXa2$54F_>&xY7tFh)Dr`|rZSXuHM( zK43@c^_1EgdA1e_Wo2a=Gt|lS6ydO1eUxkBspnc&LosZA$K4SO%*rWGdtKi&97%n$ z&%9&nPT6a+#4{VKJpu28Sw6~D<8FthqD*(=gdw%-!MPGs+5Cp&WiSUC@HsOYC|*u6qB>q1l^b5&K16k7_hh8&=-uLM1|4Y86oSy z583wi7((I?KBfB%j7y)xIeDPUmFmwTtyLet)HKZNW&=bajS z(mH~ryumpL_Tt4T5H-OU5(P#hBHlntjT#qtZawJE|^gfIP(A)pebHBH+eSdN#swh?Y`F8}1P4`*}v}i!-wwknNdmV<&mGyvUUhNe+&D76sb708=|{ znETx@eq>8+PUu1ggDz;BAvp>{#9;TtaFUvtdKz1ix2y0YuV??GWvw?22?XsMEu0zjjbKS%zkRWy#_Fx7XR9iiZWSgve zw@}#G-j0-W#;$f#I-Pg!D_ucO3%7v*zxZ6PNmKL^nCHoC#;*sT#1(}Cl4%%&;RH-> zVUb6e(e)|Nm7fp$B1M1;Fw%?wi8lu5sg=P&G7Qi(R zAs!QOPJ_^w1b=eX*1$s@>lY#Gc_$O3mno|aXTw=*muI>oOx_zuz)2e`0bl2-tTkGP z|88Kr$(K8|HRg$k z(65c^N7>!8DFpy?y(ixOqPH1KD(5uYis?7O%jL9;rPrlp{u(}ZxU{sSo&3`Y!ZLAi z_)EP)cp{NzJcfFm9I<-6*O_NpJk}uANiY6B7bO3Tm=NDhsv0b zwSS_ERrm?0>D9{q2ykp-2$Fa@mj(hHB}hSxJP3$wFgy9Db5Z+@GNe-|35DE>p$ZRg zm;k$#G(-QR!b4|nSn!&Jlcg(Oe*vk}!jDqCJ;kdf)kd#jl$RHAoRh$|_J2L-^q*Ce4?xTdlQZp-`TEa4d%?=G6L5u6THx3<3H=5+(AN)j^qD zK0+kZ{M4T_zbVJ7$Hm4fHkM`rHo0_I2VMv$+sUnYqXWora`XZ+my&a-f@=p@jRZ?6 zuI&pkzugdGdly#apr zpOpPEyALABp3qdGNu^F;T?*qUf8s#Cx8J_^E)IVfqtn#K8w;#+*l^iTcCp!%ipi)E zoi&G2+9v~Q)CY_RkN88|+ZLs246W4fj<`}^@i>G+1233 z6=7Qu#TRlc)}bJ9s_$Jy`K@R&O_=CQP2VF53|(`A3BjV#U?k4Hwnj=U_f&T*6m~>p z<72T8pVWCME!Y zr9F~=RkiZ!bJ5WfL6A`^TrUA8AcFnjDPj4GiZ=q@Ux({i?MAdW?_mzrV9jb3HJnwh zZb)GziG>2*Ud*w>NPRE*cq4Au+1Z`QB{w$PHo~3l&~xjsUfB`O>m!3w#%83((^y43 zp=yyIvu-mnJt7a-=X})^ad@@O#d`7yiFhhlXEcLC0zRfzf5QhN%NGKyh;=)guY`_L*;RIXZG162P4);2C=GuekjPz^`X*H8nM=Zix&BtGaxn z&jcJ7;^eqzrD3u^DTv;2V8LD$h6md!+6Uj9oDo#%-vg1AXga3&`Q5dyg4Y63hyc-C z;vyelv!91K^h!L{@oZWWU;#T+?t*|XZ_H(Hpby`UCF^X>7X`hp(97RrE{UluH|aW9 zlnA~T?MJTnuEbdX5|Au_c0hO({EM7Zn#D5&8>^C2q`T(Cyrown=e;p*+7j~bbgz$&S#E2taR?VE{YJz){ieFJ3hhMvbRByy&NT;bK!?3rsk62A& z&`b~+%hLKen@topQY0$LgdK)Sg$gkw71zFD1p6o#VKesHMq+U#CDt;&qeq2%1jy-4RAFy! zn^{H3YkxXc#Yq2VG>xl`Dgf?{D*VN;zY-B&AroXrmO>@-aV1OhK@}uU$}{k?VpBsR ze_muYQ*aH{8wD~5U5FTe3Zd=^HGw}3D`oRJg^Y<(vM=U9aO}?tBmjK-PvnGZZ~A@h zEUB|K)#)UqV8pB52m~=bi4f&fdb`k3s`hkmsKb#ba}G02U3VxoOH2}ChUSx?^;dHn zYL5`E*Iy(LFNMJjAt+aZ=+TORTqNt9c!MYIyr^r(Kh+s}uYG6Bcj^BeMV-RHQPi&F^e|&Ht;%87mxl?3GSGLXQ_rC1K53HR=7zcOmXDb8?7<5up z@Fs9pdKF)`9sU@!mX=CYLT$SxnZnbkn3yy2MPd2^ZBn1VGcgNwqavnyaEmp0bdj?@ zu=W;{>FmMVTjrRu!zEKmrwWxP#uVsl&36AZFc9S5p@JhZb`IuZ3bDqTdWA+t)2(PT zvDxpVuQz8c8y~Se&nJ@7AXQNF8YUcJXON&2c`Y3WQ$q;qgit3uV-ZfqlY^+u*ylW~ zT5K_h>|tj-4T-~kC7sy)Ypz;cNh{=^{e1N4QSj?m{~BnGIx%%BvXO+SF(^uP`px$X zhs*X$5Ww_X&Je-`Jp-P;lfv(2BJx&8-OXcyCknn&f~SPtPnQ@l;NEVG2a({5@I_6O zp}K>Jtp)~$v`d9qGc{~)in=7NtsQqh7tCk-DwaPqT0o{NEZI*i7q8_s0JE*O1QciG ztT}u&H>{fA({)cM19;-HkRA_QYj^Y6@Qzu&RTm|s8DWF%mDyV#oXq0&==-74U0l-9 zT?tu(Zn-n0w)Q&oHAyC#VB0cS7$2PoL~#Hdz+Zt8ML#-8u13LZoZezmkFx#ig$$sw z&0%LKhId@ZOX!8#wL+XFVHM@<54aF{8(rP*c&^-as14j?_z3mw(hG_rvxq;6x1;gaHW3Kl3DnD_f+FjIOu? z#s&0u*XS2qP9o@X|M&y+h{VqrH@}yJ>nUKZdW-d<4QxAQG<%?V{pHICb35ekUcx{f z`0q@%mFwfljlVJhY}LI{0Klgjb>qK*g#161)qkmFgt@KQ1GVp-1P2QkDQ@U1XBxMvCDKn{3l}dhn%c~>{`d6)=L9Hly`S5a&Y^)KFBm9 z+|s@Y7EDnzhUHlI$w(u-xh4HGDrY3jw1D%|{Y88eRS26RprciCfNCdd@{fL)c_l4) zm6eI9(g(8M6&9qgFUriq7ksZ#V?aWe8}bvAYxh_hv1}S}NNc=NvdxLd??9+(mB7&* zjn!@lH7OY)tc-EKRXI|k{U&YhbbT$7yULDd zhC3lFK%B258n~aOI<%^H{^1%wE#~*uDp~xj@LXUX%2j2i$@&?SfuFirB>{0o5KX4X zh_?`h#V(QA$6R6^Oi=#v_uM5Tr>tOfrXmE~PY+>GDA$Gbd}~F~|92k`3tzj`%SclL z3Bxm_*>R7n&!%Rvl4Pl(38g!~1v@2ls(@#$!E#zN9;Ri}btlf4$23M}oH>fS6skg~ zf>#CQAZkpw0dd9BB-pPge6g?Oj`~t{7KniO1DI^*;c^lSY|4ED?KKCz{5o8Lk0hTZ zziWLPL~6ZrcnXQ@6-eFY_mhQ9DHeq}Ms;5K!z86)mY?mqCJAFO03uBo)V}Wz!q2|8 zt4H`*?VH|@OC>ASJN}a|lPO5{*6!ltHLE8&HLJNEhFD}O$51LLI|Y`2^NGL)o}$QW z&owHcY3x%^=;-^Fe>_K_9@hR#uGl_S5(s0cexX>Z95-dcmzi|e8GFuPfTlwa4|lVj zEpQR!Y`2dc?gAGgF`0-`_vI^qeCN=LoyAs;yqAX`i4`o+I!x;*TVjsE6M8y+aeK0O z52!UO4FEGde%1(;RYEBxP&*UL&4~ed-H9JJI0FtbDTC zGB%Nhq+&7O_v1b6a13q!27m~TvrEWpp^bHj$&3khi|V|6zUgzbo+vYaTiIOX-S3Y& zy%DKy<)4z@X!-k0Dmw`Pqs}AyVRSGPqfK8yy$P`s>B@K99q?KQb9ajzBdyNJM*E4D zp%2hl)QYTjrbPAeGSminy1BHJCM@0x0671)8X=;gn}(fe`o4=|}K zsbtfq6VMt)=(WUiQ&vAOZK4O98bLEh0Y&B*McWa067F%<;n@H5brn|yVC7J@kG=}6 z3=Dzchw}uY$W=9>mX2>es8;6C5tUTJ<}$ab=>=Fem|lJ%+vk~*uOSfHtTb%v!8V1) zm9D+-*OQBAG(8W4#cKpxLmL6fXBk2fk=WUS05@u`AAM=33=%sUEa zf?Z}sh{pFE%S7r6$+qH%_1>eHfzI(>z~my)s}J~uTch-BtOog`x@NM~${KEv;;v-p zjzyQ0RAD*O`iZ%H@7d|Xh1BLp(Q9YskI=|ogY~issw)bmF**8g3)O4Irz%c=FeSyB z!t0u)LdBc&D%_Y)sqUBa144v$7MjV8*T7sm{Yh0$nSg7vYKbU>(HN0p{>*Eq-Y2ucGD*xUgyq@%5jSONZ2I@I3xlH_{ z-JpiG^yB1@{gTO}4ZmsdGAHYBGgcQ&4Lwq~FQ8KlNSxlg%>Kr=9IP20iXUxu zxjklq|E!$@%)pj1$X_Kpd@9!UxkS-!!!cy7T+>Q6f=^9DMRznGaLS!uQZB`9iB7}{ zl!gnTU}U*7F(Gh4NGyTN^J24p>98i}#q>ty`**|rPqiaBY?L;gcOObC_>!o8xyos@ zVY@)R4ZJR72@Xp#mjd=7UB*HD>9YjW82%}fSG(?4g9&eqt%rD2ISoX`kEM4|$W{1QKjb2tD^{|wsYioHoAP#pMYkwJJps+^RHg?#P~>vU;!7NE{^ ztenh8FQ$!cz~h6b!)^o?9cf8Noy?SUcLVa`x|21xDYHSRr~N4eKMP)-+k*CcjUcsM zY{w*uz1X|BTV}A*Qqxs1{w~Ld&366PAI?@R#L|5XGRHCx^ z2RxYH3$6+ojWl5_I)20JBev9C{ZfDa(a2?c5r*IT`VEJP>P(+XK9z|dAIRu3a99jeS?f~)_C$)4vBV_>kuEyn!5-ru?J6>kJ#BvVvM}h80mYVdtM&MGY(C3b>J44H#x&WOOB5Cl1=%fb?|Mg%Lm34R zgN13vEXMWEX&-p0IYc}UV-!|dNrTc|4%m)t?)`Q6#oS>n3%+TdFHRE?ZzMe?6U;|( z1(hOm>fFJy1eRNAT~G?*Fe7mbg}8!(tl%Z-q#cuc4tk5J>^9QPAfWP%_3|d2yv7fa zIXkcOK0dT+?S_5RXdgXU*^!Fg6j;#SRyrOqd;1z~C*uHa{~w)P-T^w``^!I$N}S{q zFmxk2thSEwjc%kSH9Q>6mfmifKtZIW`xA%aA2*X8f63D>uOqZ-Cgg?Wd%^2o_BN34 zeY_$tL;9xD%q28P+mckcCeG7Yh$5ECh2r^N^ru0@Z!6Z}_TAKilr1XBZB5V!a}fg) zX~5VdUxY_ic9EQleg(RvxZOAcneT-@QIf*L-{zqW5o5o?;+en zVmh|9*U0GuPkdo(PPh`@1~f?hl4=@hZu;Xg0fEvU*Yl9cV!ql$Cq~8pLXB2rctRPS27-5jEFj`B zNLbZqGuV#NJgVoFK4-Vl{rZ)Xc3<`&xEbZZVu18j@l)6bjMzlWSj$E_KQ0w9z(eja zl$7(H?~2|$DGA*spU6rOB-2{w8nlJKB$^E|3^`ym*rUyd1>tjok1a8!yTeSxKhRsepL$;AAG(_sqxWxKT-E)YivWwV7 zHmLUJ9Kj!XrJQU*3U5+D&v-ecyU};4z3xvoSQ;}5%Yz}Biq)gc0B+2Y*J6c>5iD7A z74}o5YP~k(z!m1jOQH#pVL?YI*Rg2pE19@WJJvBbR7lK>mLtFhmhE5?Ndc@BPr+`S z83w)OtCTJcw1ZZ|nElh{_+E4rtq$Xv*ys%=s7|<$lT*^LbM9&tT>`q_0$YYt{ ziqaBuFBDVQLTm!az!~d#X%xDc<53a(P2thpai)aD<@faDeQDH1H<*od0*g@@)^*5Tx zspVgkw`ocy25)w~g+mQ?fsQwlg_)B0Aj9gxuK(gbEXU+5sHfhaS(aX^$rsGY7qP?E z@OoS9(syV@V9A4feWm&WZD0-LUU2`gBKQd<=!C*z(SCjVU0YlG_;`I_xW}76Ndd?{ z1=MQ94o5ZGyTE#2L=nXfBVYDKdtx%+>fv%HI#6UPS+zCxXRn#UlQM=0_stg= z#b0lfoJHTHsZVH+8Z%~STAGl{zHOl_?8xgSJ_d|JLmzCo&y?WMKB5f#m_Y?KfI6st zkw|&b@$j9^|Y65UTXdfw@W39(o{N^@phD-;ZI)p^0&(hCW)Y8}w$S_saEe?48nEF`>- z)Q${DYh2^+d>P3}4F}ZvOClozwmzl4-QN5f=V{9O~n+23);g3V@^g~oWn9BXMH$*^Li=0vn zmU%8@T5YibEJ#FMq`Fm+N>9ky#>e3h<}v*9mV{Z;ydsBaSsYsI&n{2I6i;Qbb<@! z0y@gaz+L>ahTnDzpGiSalW(vkJfUaUPEp_7Kga&jNH;>uJ71=3N=W)b#B($ePa)Ag zfI3XG-j0fc`rXk?LgsH=F6-f+pD-!(uFoVN+>deO6okep0E1HQMGN8QEjM(zU@YIn z5Z2s=NNIDV&61Qs$qZL#`lX87_&j`Ncch(cQ<&&E_=In_#gtgveY!!LW=HK|KYp;> z%K+ffNMB-#47)WI6=~~yNk*C#OWPF@KA9ja5~f=jlZ=WSga&*knvo@E=3 zSZ#V*K&*dopiq_AAMJi+&E8ZDIAU1Z|NFN!nhB_* zoDVJy*+%;dYHXAUuqS88+Ii_-=F9hblC@BhH51iv#^#t(Lvw!MXoDcrms(zRdp}cJ z71~-h3ZCc{$~jKm->>bvh1rsfS7yhi zZZJIaO(G!C!PGCXi6Ma6^_&L&#nDmAZB%>?6mlH~m+z2WZ-_OPuTemz6Bb3LbpQ(G z(kJvVQx$jlnnAS^8aynOGRU+ochT6~A!p$w!3|twuQ}$lQc1#-)PeWSrZBV&;mdGV z+Tgw1VHjD|R4#L9(Dv(1v$ep=XKtNjkOI|`BLqy&N)UPZ*C-PaFfouEm~@+&l#UtE zc?}x%V#ZL74{|@a;M4gihj!!ne@Dab!d*IjlN>P}j#X|Tm`ci{8EjQSbvZb3tD z2S*e5NH0= zGWPK$2l?`>FhrA?c}GSk5V~1XBQ&ioOutxLtKqU0-^O_^PFefm9gJGGgW0^$y8F~N= zGU6+vW2P2!!jVg8brXZ!CtEc9-@&kkQ$zDQ@%RTWte~fEneDjf0@$pReeXHj=Cd!u zNjjijw@MUPqQ`knLp$o{X~B@q3k?p*tTyV4H@nI(Q5Oa!^Ay`b5I>H+6ZrRhLCxiX zmDw@vh@2mVOf0b!jAQ~&UpG6~E4D-~6527?scm1&(J~}w<6on->T(*FWLmoRM_6A) zUyc}Is`Q$2i?g2yBR$ZRY+Yha!b~aeqncy-Ez?&$Dn4vqqt2{8IM4#H-tV*cQ%o5G;Jek%ib zDQZ8TQd?AM8!BqoSXFVc5H+DCxM>Mb-o7zYRO(!`TJNhC8BkR%4K7d*k)=8@sTk!# z2+UMsgj=wS=SvX*#jfpxR^~CooaOWsB0P#68iPx|bUbJv!~J=Vx@>CE_g) zC7j~=-9&4!o4NChZ2O}(dM-TFcJOO3{{5r!{(&c{`)^1zdq9le8?e?BpN0Jh|D`|8wny|LjMVN94L^A(m>oyw9-d2 zI}w}tF)9F~4a`7evV^xm8}S+Wk*Zr~BGm*9)^Xf&k+?TYbVnN- zz$|!c+Qi4;V$pspjsqo_Lr;(7WE?8<)xwXhW-1SqT=K3u!i)zd031cmhlpEAW7vD* z9)u_2=&L{cGOGTB(X=o6!;m5*b5vS)CIvgB8i#Qrev%GIj#o$=Xj?tJ>{+c(L<);K zxT_JyP4Eeqp+6xU;21L~Hb@3U#Hv7yyPau$+x;mKmOimN13h?1^buLIqpr4HS^)v z^mtCxFsKjrY^>(1%W7^|6TI3olJ-)cS?UzvDw4PQ7u`7f{V{MT2BVF-+yW& zLCOx~vpLBnm;A=W9Ka*Y{Q`-tAQ&e_lU&x>JaP4FxslruaVGNpyw)~S?ekT+L~+ms zQ};jGuo2@Km<%02K$*P1_4by%9+2ajoIXe{$ZdFcG-+c2No7csfE+u}-W24@wbPt`Hk zTC5P1Yba`b#%&$hMJGBpcOxz!L%<|C%s)`p5JCcOzIhkzDD48J&hYFCcbpHVgc5PA z{LzGbE6gx%Dnm@j~(bE`W`NB2 zYPjrU3V*~0CAtzPj<{~cUpASU1sQ?Eqy0$=f~3|g*%RU@zQX#w$`+- zPRkz04)qBmd=Pq8mfw@GC4`9g%A@BF9Kwj9aHQTy6Zo^WV}c}9&+9V8r5yZILYYRX ziGB*QGkc$qxDi%0*0l$PISEXPburj^RX;LSVNTMjkVal*+VrSYTAG#9%0gId@Qx`+ z&2fbkMNVc$+%#d=RnZ({tiu0|{b<4)VA{K$l1`Gt?Fsx^5=^ejpXbppnPr$CBiK{X zS&@1OT1{41e0ZC1SdcsS`qIt#>vW~MGfjVj$!-8`6A0|q-QA6KHEXolYgqw>Ks)#7 z7~`Z5yqA)cmp=l*230}$L}4p|J_EBjb{QH{>0fsvS^ufvWVTz ze`p%|sZTf6-(;WjtqG#?{8W9s#(V4DN$|nGsS1RX&;thWe4J zYr9qUe34CDzPBXh&Z1@1TTe;&z-(T|G17F`aw<$W&&@kk=-LP;n#H+A=%x8FV&F^q z2Z#&u&!xY+aAu0^97?L9{p+SKxLSih>kD=QzE+3GCvNn)lUR?aD(?(PtvxE3oE zcMtAT+^xl>=zD+vcP2BL$(PLBbMLwPti9H=op|V?<@Y~*7xjnA#jG!GyS8}V7acqz zJZ76Zk&jJ%g(bL&HLXSa*ISQ2ymQn({<}xY>1=+l#V z+2}`T{XG9O(ig3z#{8*{m{sdUh=$jGYNu#E!ukWUX)g0x4DoREu*irCWc@4DeNTZxoM>EU&o*#eQy3p%^K zMq4|6fGK_<>8I{YTg9F=_a1jyWfq5jw+2P^cDCg}JK(k$6sA%(-}I2khc2A1G+*L1 z@A)V71+9FhsT3eGK%+eUSas<7)m|5WMKfKx!Fu5@aRo&Kgko00;zGwLu63#Ftr+Ch zs30zd;8{&fw|2K;^LVb(jBZ=RAB@XdKg0dG=kVzgH6v`z)kr{yA zb4Bc~-BR5yz6Jfj))eJ!8gOtSB!VkwHPXlLYDT<&!|dO?uK{F5IEW)}jePK#cePdi zy>wVtH5ZpOK~?bu^r|#{+AQBJWJK^E?5hF9iyu%gRP-j@lc$?PjtmY%(M;^>@Df9@ zC6AASCV(GRu}DQffY(Ln+KEatW2Ut_=0oFf91^X}^?$fPDE8KzjE+QqRv;n0v0nsr=EjbguvXPFu6i ztO?(jX0wVo46xTg^i%r%2uA z&UZX$i?ksVsyo^X8Ign3oNqk9pv&KY+fq!)B6{t4RGdkMIoq}L93c#mzMS+eGIhjf zHcEBibYG-fEN9t0^7D$wzk+CSGcXcF$EA;6)Oc9YBN7-A9^IJ2raRpvmjiLOKvbDK zA{Ve5wZBG&*BLdm)g%2Dv>RxOvz{%*Q`UY#b@(_!#jYpCK1DV0e7#`UnUn<406#j~ zoZ;T(bYOWpbnfxiMUj|O1Vt78r6kJU?bC2I?+eG<$@|HPsa(XzSc4N474@J4`t^(2 zMjy1zkg+Z_;EyG-N%8*Y-}jW^a%xuiM2M3Wz{=WVZDy9j6UbU2;9U9!)y>Sd4;jO; zSqcSib^NouJPr(0CD%g##szoP*tHnAS$Zr?M10LD#T-vIK_o_gKY~=8cUP@0n2pBx z<(_(qOx~1a-Lgr82=s9sEi2M31coubNaOwe;)l;1H|;8HgB>6YR8RuksmFxEneBat z-hZ>~J0Qo5VL=h)ea6=j%CDsiQ5lPAjA6n`HrO4faUV=^@hm4hqQk?RhFK(261k%& zs(egMOsraB*8vv+XZJfF%G-vt7AC#k7ZueV3Q!Ox345Dd4xhGy$jp~Oe-F(iYV2aFAcMBY%^+zS^a zUKIzKH&N-cC^ecf24%u}-ThOTNn^blS>5+6i`QH2RCwunFVJgtOX=y9vM}{ zc*D|XSqcuVP4kfK(Kj5*ysqxR7CL}{t zt1;@n{Sk+xbKJ;nF)A3^Fy2QqwBtaqtIJ<2jXRtrP@U%uczyjos??r%mzdh$aGS10 z&%|`BXoq5x_3#ZHEy6B`mz6B_g!WwgcVV>>vcpdJf*QX_7oJuAjHLsezgUc#wFf)TR?Tq7m4$0O^j6t-LRU+UZ7NmjJ|I`jR;4uWd1UHF%rd4Fj8P?gIo&#K8q>JrNMh*bASqqbV+-jQY~dmZSfqXo=DHQNiWHzzSU{g5>JUfv5^n*BEj}+S%&o|JXk+?aJLU zgX{yG8yk129t?V)sS%BmGqLafOV6h2NS9MM#7$-4KGeMm8x1>zg0zN>hroYXN%uvy zF0SdvJW?u;s|b9)#Croi$90C1LgjY|a)B%GeX$~Bqh>l(`rp1}Q2(kff&0XHu1i?y z^H?#LkoVo0m9F>2*XkvIN)|!rZ%P(;+`Lit8j-XPhv9Uh)-!P%JJS_Aiyw7e-~FRD zIsBc0$Bg6A8$9AaSnIh(eTa^vt~LLnZ#yNsWY!U?n4;yy4(m4)9s{}_mx0Xk*tbO1 z?uJM2BD3MdSy^nf8eb*xlDD`!S~B_u!NNYTRMmH5GnI8boY<8Pf5pK2fF^L#>eH(( zdBntwH3t=pU;fBls--NOCj9+OB;fzN_PE`sNu}mm0RpHNnf$gb^CRd;J+*jS{jMw{ zG0iy&^3FQ~whH!{j-&b#Tc{=kY1jyyWVzjZZLE2{gh)f!J{x}fFzk#T(Gm}t@#)eTqkDT z2UZ|ztXB`{!W@Uarw?yk?&vH0x*{O2FGWyrjtFQ;-%e>P@sUG$@nMnY34_Bf)z_?+ z+)Bqm8_3m#DIm4=GxDgi#H7Bv4E=k2bOvQ?NPv|*xF3F{B)AMD@=*jg*GE!V7j&k= zWy>V)fpMVsP*w8+DrbcJd2Mys$0Xptvl~o(>}z(lM7z|BcsX@r*}ZPh?{;QA8S~XFuxRlnU9f5ZBtLh;32f zj%ALxc+$wE?*?|a%UOzq_ zsPgHR zXEcs|@+KTVz{ z*c!CKAdt&3aAQ_9cC|eD!Z}5@Ks*Mnq1j zO3-Jh*)f`%SDhf5tt*8)egp{6-N~4`Y)8y2&xCZ}0kYCa!)*5`%A|clyBKg=g?kM7 zkoLBD>xlInqyUle)oRE@G8lC9!v)T{=|bSxOa04-4s4nE;gj0}d-pIND7JUFJo`H` z;jZEG4-gIlCkC~U>rwrOQQPyLqa$P#Ukv}bNl6vI5D*~b^dD~3bB`cgbcTTLBD@%k zh^&ALyn?p)Je;@52InQv8;!XBI$;IGb%?VDXW4+LCraWmtgQ=+!&hP(BTSp1s! zF#`{tajLNNZ$T-Ki7iMyW`IVo5G5TH0QIrOk;-8+@^hYYl&6=OyELyE-atS?jbD9k z?5kREb=oXR2YkuOom!x&ZngJfDHmn_)0c2Z#t8g)-?s>vBnapU4IU`L7O#{G>!=1{ zgpL@<{*m$+cduXB88_2^jAMNW+k|7Q|B|pnrrLIViuxDKgu(}i z@lY^@0;Dk};ZBJQOaGkcB1 zUMRA-&JHxZ*6a4~e13B-#?ttnji0!>*@U3EU*|A#5*VcENYCduA*^rm;|q&F>zR1m z-4PwKzvCZYLC_Jwr|FYH1x4;>wS>(u8Cls0BHGs3Z4r!d=J>IU?U%^DC|S8!&!ljA zpqXQc{=IVZr)T2B6uYzG`%T>)k1F(s-0XAmVJ1%CZ;paBs6xa67s4GP_-y?`$`ZHRgB1k>!h2t~mcRVgij^0# z2+R-p(Lzw(hi)LKq%+mVFY-F~9L`#8m2Xjp|L{CSt|n32pTI4%$6^$kacpDvK2`Hl zjx}34`D?QCU}UM~K*7S0D)DNTS%(>k5)KNp)uDl*R@GaZWa6gqcnEgNX>$S@Wja~q zt&-U9B>^uVj@Fkg(QFCfjc_ZMK+^77hf~7QHM-jduwee^<@d@r#`WoedEMWtj>w3g z(FLx?(wWYbVF}XDQNY+FS(~c=kI^Uuj*49B=>ddwW<88+etfj{9*5u zW9&y>=?E>^R^*pdWm0Ef&&|uvpi_V&df1UMEy0;Q1xc!d1=o|~Uw&fZg%d@R7x&nU zY$v;ZkAGHPGv3a(zSnsC+3DqCRVYg#`Tg$5s{t2*xmvQ6?sAp}hN;6d6snEa7xSSw z7Ys?TPg#%Ak4~_T{TMbD0%r9^fKZ+XUbZXW&@NZZ*7M{%=F`y@4UMh4utTh4YJ#Qc zyM`Dq`K(Qhy9=~T?3$}G!H_4PcNu8=l(ZE7`XkG36DyYQA1tb?i*F6r-Y{^^L*G}I z`HV2$>Mo+E%p?k=5$H5@f4J^}7nMvvGm$H_YK<Zn4w83e58h6I?QU^^ zyU(NlOT~vNp}%=nPS$wIz(`D-P@=t(@Nq1M#9;wI*LAV3gQdL9Db|1>T2PpSPh zFn6yR+dP%iS+tQZ0unT}10k|miDtMMZrD+vs&-AbL#QrFisEn>V)R+kUi`{SERiDn zDIcs-LYXpcx`_b(9gTN!pr9`hTUF_sNO$IAPDgR&ULr1IH}o*^dta_jB}Zt1Gp!@I zxMiF3Rsz*~wE%XLq(Oy$H-|yl43PNtMr}{^UW(^(0RP9z^&*diyvHCRwWxa(ub46m$-TP6(9&pZE*;rbaN|VJ(Q*%yd5toBW zpI=7hF*!T19U{Y_JQ*Ekf9q01q3?*Pqf{>dDGOt>Au?*j^ZC(}e0(ikw~Poa9_<#p zWM&^A)I8LT$wwUDQ;B@jh~q$09;U6nb&@PA^55|#K(~~odB#%a4Hf~liw`=i>sSlO7-W)9b+$YZxur~+}Sz`|J z8y$#b#gu=4I>L{ga?3^NBKn&6mRuiYK~Phyq0K51cQJpo1X#hsyL-L1M zHk~KH#X1|xm_|4QPLaGdemlRs#fZ6tJra{t$U`&$C{OuG%?2l}VK->J+GXi*Dk{p*7;G54yN?$K4hd(tk2lane%_z`?mr>&rf- z9ErkX21ulReC61g?=jkqBFDz58_N_@!TwVodh#dnVvDW)pR38u;g3`&M7CG~fd)WWB53LL56 zY*cTLD}a2OHBLUBE!ABLcBi=OISu9Rw{Fl zeVx!XL|_cQR3-|&4`e#92)NFoA+V4p=kO8}c;Tm>6o|HY1n$AI1QD|&lRFxaKxADc zyxB>?Sbi|eZQd)EDjabIc_>Y1NfWf9JgSCv@>_Ch7XNNJ$~?Hvs&Lxv|;@2pTIrK);MYD`#{yq!@$ML@{0k#CsiljHg#5 zUS4gD_=vYVz*)lP#o#FKJ9=wrC&xlziIgDlIbXIDHhQN`V060 z_ow;DyzZ3@9$e$g?v@O#s@SWI7$k>Wl&zC8omvxhP4GO!lUX~){AWQ7yYb|u9@v3n zW|Sv*IJ4sXBmbKyzDG>cC$0EWBCNi^?|$!!8Xzw$fFzsC!AFtPFH!U)Di^?jq@qjn z&oHn{L+A#~$bH`y%zSGdd+7;Qb`}IIp%?GeQJtrkzRr~w;iiTGc~~30-|i=i=XqUd zw`a3PGbCd!H z8&(?R)xx(B?^Lk(_wU!J#6}4qYZBc3m?akMhIA$yp^(tf4vw4O5SJ27@?vFvRa58j z?O?&^8Q0X9AGm4)>}gC|U;p7V#weNi5<(yVWvuK$1hnS~(yDXqG_Fh%uw8bk0BM#c z{<-tB*3#L-pzGtyWx5*(C#qP8SMjf<% z-|1WBdN~H596fb;GFP-ClVV1$!MBaWa8#klF08*@NrOJR{_b}$2%XN6(hwd*#9x)8-{O+@ z<{L!<@+}(%HL4k*5w^2G?>l7bpWsCG&CSi3ZX9;JUrSx-;{=SyXWTnZIhM)+@gq+z`507O}2v~Zm zL`ns|t<=-)wA%Cn8-!u3&;xkj2SlGYlM~*6c~r^W;B&ZjcqHSLBMk-{`%D)egod&6 z4o^Ox&p${c#8OUx6z_5cYhC+;Ki=3cWj-r7>r`( zewYUdD(#@Zm(&h2SaeP)!H2%EMeMHoB7mUX4=Yt6|Iw&lBQUKBlcrq(op;FgEfmBRnsEpl>sebDSWjH=Sp+oW`(DQ?8 zJ3Yx?nqiCdG$2|;QbcjxWh63gboyf2;6Zr`kewjND-Rj5zw9s$5C0Uv4+9`MQqxX~u7qH#_l~$L zt>1KdFJ~1u=-$x%I*beO_Id=jXN81h2V7@{cy$t;+Y$0D2=3zZPLH=LMGAr|SE=;| zf#kc_&x@?d!!l}4y+`#?qgwr)&r8Q^nd7QEnwsa>(MX(ate^q z2ORY+^gv6VCx0ls6e?a5K%l}Ik+&yV#I~vM-C;8*iodK3cMn8laI0J`SR8V;y*vSLznXdKCF&gRT8g9}Z%cJn z?YtRwe{z`)tf2n0K_~u}@L6D7pOA|@G-{Xw55fPWQOl`q4s6bp5-O$Z_8W-|pSQn5 z49gGSQ)enH#b}`dN}@Niz&WmJ<7o|P7|wJLS%hNsRs(G=4=TP1HDl!ru~X8V29gpb zechizfhYgGBcht(>B+~sXsHD4s1w6_YEJkT^h}-D{;qfWWeDPPRsTByQHcA}2)n>( zQoL~<M^j&Qe}{uABk(+aVMV8B)@%FKg|Z6;>IHhZM?ya(JBm+# ziNln~&Gmk;soQw#&|@bCsKo-L4~|{?ypC|P0pvQuEJ0P_pGgjxe?=3s$it+99lVF@ zUh3_1p&A%w_%ylJ^cXvuEHHC%#EtV6;M9D^_y@U*wgJZUwm&7wMh_4}{xmRV$M;!6 zm++YJEQay?zp_;UrB_n(2*t~vMzg#Z`fX0QlpV|rb@}+t+nJR3IN36KL}l8TJQ?0j(r&zXk%gUb^=s$dUbZA zSI;sqkrDGL#0LJgi|&`%JL?*DnjHHT$$I75V?OKGT z@G+PUzf${mgLR{xQt0f6hLH);qfa=dlyoxsRqY0+VDX!&Mk8SephWu)=7@OxI)=>1 zcHtG!N_S3*Cu__;T=lNBA}yr~qD2@#Nqql(E>dYf)DlS%6?Tddw*%L~V!2`m(ps6r z)C@+?Jm!Wu4G-lXGNZ^}mcF32=2aQb} zZDh60@cv+P%=1KN3dF9NGEx3Bp7TN9oCpa`#BgN1jmLkNJpGE13Y1ioA03|3_$^^| z`dP5AcYlxSuoo&6gy!VJ*|C!!(hsl;<0RSGJA`KmoHWT5Y6{yf0A%l;HeD1avS$O z5;Fsn5a(B&NC$Lf zHRsMFQu3r?DIlVFKEuow4EVHjtw0I$IrwLRPJBoUYprn8kb?S_E%l3PPaRK`ZFG{m#NDMLDA-!Xsk3wc8y<+pfSEGLkJA5if<-99N1o@Ht^)aru zEFNv84HDbmbT>*i1LjR+BD-}C1Jy1ccQO%HBS$Iwzw>f8f-6PtK^SMcf5MT zq**>2d~jeTTH()AJSr*fg++2LbW92~?{D~qT7y0G*ExcyIq+>$+$CU4PDN zPztkJXOP~k$5i}hclV<(i^#*q{FDU|ct}|IZ+=_<({Sci?2TJoFVkYBDluhRLmx2% znEaLk-5&k$({s)-QN`vd*|V_x6Kw;5CB@mNdfDu?NmgF`@No@erJ_|d!c!?@dcWhT z0yNcPHjU!a#Vce)>V7Iadc}6Y>Ywu~nBS}=fMt4^t~L14hUuxsxc3w5rI{{{8i{I;qO76yo9g*yQHVs|SD9Rq2(^HU>t@b~?=`>!VPfbirSy-&= zpPIT~=b!L6t1ztRvr+{MI%AOZwJTm>;ldyOPC4S&iPDDz)pR@%ca)4s6XE12lnRf@3wbSnf&#y8IC#HTJrzMjMe2yLOiMG>ekl*B-!mM}l&j7as|DYgF)I{hwAD$O# zvzp|=j+J`yHp^1~gY*jZhKf#y_dgcn1ZzPXF9wNUFgG5JcL=S<^9I?n@yts8i>$Xs zrB->iPrbrUwxMP!Bcuq6u#UoJ!uHJ1X_JPMul%;*L>nS`bqxQ^AMrZGteHZAz_?#I zQ38Q+jXAkXfP!q4Rkc3TNueewPNH1#ql(oIZ!^D&&d~Xm>uvau2?nTCXFjVB*3fq= zyGXxO?byS9b6z&R{Z)ywAG?2DGJB@F=J7dFZD17YOKfwsV1qD_%x^8DBwvtj#yZHb z;4(Ea%ikeIq^LZVK7Em6^l)mg-XoNl4KEp?@dAUq{vdVqe#@OZ-?sEkr|*oFmb!7>^S35G#o=rI6M>ZixE*%I@Ihqf^7x3W>A1IrdJ>54 zBlR4A>NKqc#AzqoC$zSIrgy^4_A{e|@t$e5Leo`Y!S)dFpyT&n9*ZQ_7`i{3!ycpg zcN(fY$B#dn$YB0@$tF$!besGSBIYr<$Qd^pV;m7;>opiq+gn*ekI0Bys@=&}--kbq zezk}=?K5{c6?u)BiYyB{z52|iU+Ww&stU4~Emu=L6`1jQf{|VT`e-!b<66NCwj21C zBy}c6$lv=vvapdWvdNF{JrSCo?$ZH-zQsAcy(ArKP$+WB_q4N>+b?-)^T?Mt%bDj{ zDzZ0ZIWzbBxqcl8e(&?w->&ItghGLy=Iz*S%Xw^pipGE740-xhTerAbdE1IH6}Pb< zpaaND5oe&9*}bBY>xZZD0%eSg z>zi{c-hKUO7E5y$y3ty4d$KgcLPuBlp1{nY#U&y=IRN4PW6W(dDHknX3AMQO$u)Mr znXAbkguR+_h;*=r`XQ5xp9(Zkt*E-`za8jp-|hEk9dxE1VbAleetU5jt)&T%(+`8L z8JFdl^WMLZMMb3M4Kn7H?$`xkB)6yQFL;;#;s9rma89#CN}(uv@DH}zbO&`Ae7L=$ z#*V%WnRXU{IBKV*?|9=3OJG7>McIOcHskBsW^~*X$i%edd>KrB5mI(m4gWj%=dnWv zbJXX5LwZUftx5e1{}I8a0KE!&JBIrR2Eh;Ot!EUgy#R0^8Ex|i827*z$?xE#2@d-p zQ!7;DbHP_;w2kLM6dEPNubAT4X;roK-lGO@=?funEd~$clHy0J6dv!UUsp2k805Mi zRmy=dsV%LQsy=^R9#3uGKeQ%dC2A#~=YYYo#Z}Lb{_J4=XD2bs#IC9zB#Kj;m-R z=(hY#c07Z}614Z+VLBI1?1QEppUm8XE-@-iP*RSZtUq5CE6c&rSu(IfV)N1;!#Ls! z7f`ODZ($CMy3xQ87MjcHS2i18e{W(Q!+bstC;52}~Q#hG+=k z@hDx)*hGz*jWfZXU_Yz~G-AAZvV?>P$Pk$v7_+vPajlscILe7_XY-^l4Jdz#xPDFR zirPblQtXY?r1fvtlU_POzLodS(-mHm{yeuvOzyZmF5DHO+5hI@z3rB*bnT}}$4AGC zM`HY{p~VNy@lGQw{#?;lncPtrI*Xq9uBWf;{6$X)gcohz*%K4I^3i6{2Gvdexe=h= z1EX;<-(KdDNEq#j%e*)O)2m8!RU+w=rKF@@an5{+9 z?NR%eIsZ2^Mf-r|_y#~LDBqtCzG)4bn_x$#)?lN~K7ZKm5c_jbh-lkY=id91sykm4EI4V3-6sP@-Wg-$wBfZX{fE=qTxX36t+5ilZ&GG3b%mj^G!LdV6Op096!iN^zYk4A6Q`>RlzZqr?F>-3y+^djVs6c*^I#qGK?NfOFCv^GWI5w(P@N~=a~fjm zY&b~le4s_LOuHqiE2*w~XdN5KN~?3S2PUKiz9+Tmc1xiEafx>%oCF{{N4k$AcJeo6+yry$= Vars.STEP) { accum -= Vars.STEP; sm.handleInput(); sm.update(Vars.STEP); sm.render(); - } + }*/ if(Gdx.input.isKeyPressed(Input.Keys.ESCAPE)) { Gdx.app.exit(); } } @Override public void dispose () { - sm.dispose(); - sb.dispose(); - sr.dispose(); + super.dispose(); + + //sm.dispose(); + //sb.dispose(); + //sr.dispose(); } public SpriteBatch getSpriteBatch() { return sb; } public ShapeRenderer getSr() { return sr; } - public StateManager getSm() { return sm; } + //public StateManager getSm() { return sm; } public OrthographicCamera getCam() { return cam; } public OrthographicCamera getHudCam() { return hudCam; } + public AssetManager getAssetManager() { return assetManager; } } diff --git a/core/src/com/game/Managers/Assets.java b/core/src/com/game/Managers/Assets.java deleted file mode 100644 index f4fe990..0000000 --- a/core/src/com/game/Managers/Assets.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.game.Managers; - -/** - * Created by Ash on 10/02/2016. - */ -public class Assets { -} diff --git a/core/src/com/game/Misc/Vars.java b/core/src/com/game/Misc/Vars.java index 910b08b..60de396 100644 --- a/core/src/com/game/Misc/Vars.java +++ b/core/src/com/game/Misc/Vars.java @@ -11,6 +11,7 @@ public class Vars { public static final int SCREEN_WIDTH = 1280; public static final int SCREEN_HEIGHT = 720; public static final boolean RESIZABLE = false; + public static final boolean VSYNC = true; public static final float FRAMERATE = 60; // Physics related diff --git a/core/src/com/game/Screens/AbstractScreen.java b/core/src/com/game/Screens/AbstractScreen.java new file mode 100644 index 0000000..09fcb88 --- /dev/null +++ b/core/src/com/game/Screens/AbstractScreen.java @@ -0,0 +1,85 @@ +package com.game.Screens; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Screen; +import com.badlogic.gdx.assets.AssetManager; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; +import com.badlogic.gdx.scenes.scene2d.Stage; +import com.game.App; + +/** + * Created by Ash on 11/02/2016. + */ +public abstract class AbstractScreen implements Screen { + + // App reference + protected App app; + + // Batches + protected SpriteBatch sb; + protected ShapeRenderer sr; + + // Cameras + protected OrthographicCamera cam; + protected OrthographicCamera hudCam; + + // Managers + protected AssetManager assets; + + // Stage + protected Stage stage; + + public AbstractScreen(final App app) + { + this.app = app; + sb = app.getSpriteBatch(); + sr = app.getSr(); + cam = app.getCam(); + hudCam = app.getHudCam(); + assets = app.getAssetManager(); + stage = new Stage(); + } + + + @Override + public void show() { + + } + + public abstract void update(float dt); + + @Override + public void render(float dt) { + update(dt); + Gdx.gl.glClearColor(0, 0, 0, 1f); + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + } + + @Override + public void resize(int width, int height) { + + } + + @Override + public void pause() { + + } + + @Override + public void resume() { + + } + + @Override + public void hide() { + + } + + @Override + public void dispose() { + stage.dispose(); + } +} diff --git a/core/src/com/game/Screens/Leaderboard.java b/core/src/com/game/Screens/Leaderboard.java new file mode 100644 index 0000000..b102ecd --- /dev/null +++ b/core/src/com/game/Screens/Leaderboard.java @@ -0,0 +1,7 @@ +package com.game.Screens; + +/** + * Created by Ash on 11/02/2016. + */ +public class Leaderboard { +} diff --git a/core/src/com/game/Screens/LevelSelect.java b/core/src/com/game/Screens/LevelSelect.java new file mode 100644 index 0000000..80a5d82 --- /dev/null +++ b/core/src/com/game/Screens/LevelSelect.java @@ -0,0 +1,7 @@ +package com.game.Screens; + +/** + * Created by Ash on 11/02/2016. + */ +public class LevelSelect { +} diff --git a/core/src/com/game/Screens/Loading.java b/core/src/com/game/Screens/Loading.java new file mode 100644 index 0000000..48b6a0c --- /dev/null +++ b/core/src/com/game/Screens/Loading.java @@ -0,0 +1,72 @@ +package com.game.Screens; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.scenes.scene2d.ui.Image; +import com.game.App; + +/** + * Created by Ash on 11/02/2016. + */ +public class Loading extends AbstractScreen { + + private Image logo; + private float percent; + + private Rectangle loadingRect; + + public Loading(App app) { + super(app); + } + + @Override + public void show() { + assets.load("textures/player.png", Texture.class); + assets.finishLoading(); + + logo = new Image(assets.get("textures/player.png", Texture.class)); + logo.setPosition((stage.getWidth() / 2) - logo.getWidth() / 2, (stage.getHeight() / 1.5f) - logo.getHeight() / 2); + // 853.3333 + loadingRect = new Rectangle(stage.getWidth() / 6f, (stage.getHeight() / 2f), 0, 25); + + + assets.load("textures/badlogic.jpg", Texture.class); + assets.load("textures/position0.png", Texture.class); + assets.load("textures/position1.png", Texture.class); + assets.load("textures/position2.png", Texture.class); + } + + @Override + public void update(float dt) { + percent = Interpolation.linear.apply(percent, assets.getProgress(), 0.1f); + + loadingRect.width = 0 + 853.3333f * percent; + + if (assets.update()) { + if (Gdx.input.isTouched()) { + app.setScreen(new Menu(app)); + } + } + } + + @Override + public void render(float dt) { + super.render(dt); + sr.begin(ShapeRenderer.ShapeType.Filled); + sr.setColor(1, 0, 0, 1); + sr.rect(loadingRect.x, loadingRect.y, loadingRect.width, loadingRect.height); // Red loading bar + sr.end(); + + sb.begin(); + logo.draw(sb, 1f); + sb.end(); + } + + @Override + public void dispose() { + super.dispose(); + } +} diff --git a/core/src/com/game/Screens/Menu.java b/core/src/com/game/Screens/Menu.java new file mode 100644 index 0000000..cda1ddd --- /dev/null +++ b/core/src/com/game/Screens/Menu.java @@ -0,0 +1,38 @@ +package com.game.Screens; + +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.scenes.scene2d.ui.Skin; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.game.App; + +/** + * Created by Ash on 11/02/2016. + */ +public class Menu extends AbstractScreen { + + private TextureAtlas atlas; + private Skin skin; + + // Buttons + private TextButton butPlay, butExit, butLeaderboard; + + // Font + + + + public Menu(App app) { + super(app); + } + + @Override + public void update(float dt) { + + } + + @Override + public void render(float dt) + { + super.render(dt); + } + +} diff --git a/core/src/com/game/Screens/Play.java b/core/src/com/game/Screens/Play.java new file mode 100644 index 0000000..1ef44d4 --- /dev/null +++ b/core/src/com/game/Screens/Play.java @@ -0,0 +1,7 @@ +package com.game.Screens; + +/** + * Created by Ash on 11/02/2016. + */ +public class Play { +} diff --git a/core/src/com/game/Screens/Splash.java b/core/src/com/game/Screens/Splash.java new file mode 100644 index 0000000..0fbf3c5 --- /dev/null +++ b/core/src/com/game/Screens/Splash.java @@ -0,0 +1,31 @@ +package com.game.Screens; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL20; +import com.game.App; + +/** + * Created by Ash on 11/02/2016. + */ +public class Splash extends AbstractScreen { + + public Splash(App app) { + super(app); + } + + @Override + public void update(float dt) { + + stage.act(dt); + } + + @Override + public void render(float dt) + { + super.render(dt); + + stage.draw(); + } + + +} diff --git a/core/src/com/game/States/Menu.java b/core/src/com/game/States/Menu.java index dfb817f..9a1f978 100644 --- a/core/src/com/game/States/Menu.java +++ b/core/src/com/game/States/Menu.java @@ -2,31 +2,96 @@ package com.game.States; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.scenes.scene2d.ui.*; +import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.game.Managers.StateManager; +import java.awt.event.InputEvent; +import java.util.Random; + +import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*; + /** * Created by Ash on 08/02/2016. */ public class Menu extends State { + Random rand = new Random(); + int threshhold = 200; + long lastChanged = 0; + + private Image tempImage; + + private TextureAtlas atlas; + + private Skin skin; + private Table table; + + private TextButton butPlay, butExit, butLeaderboard; + public BitmapFont font64; + public FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/badaboom.TTF")); + public FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); + private Label heading; + public Menu(StateManager sm) { super(sm); + Gdx.input.setInputProcessor(stage); } @Override public void init() { + atlas = new TextureAtlas("spritesheets/uiskin.atlas"); + skin = new Skin(atlas); + + parameter.size = 64; + parameter.borderWidth = 2f; + parameter.borderColor = Color.WHITE; + parameter.color = Color.BLACK; + font64 = generator.generateFont(parameter); + + skin.add("default-font", font64); + skin.load(Gdx.files.internal("spritesheets/uiskin.json")); + + initButtons(); } @Override public void update(float dt) { + stage.act(dt); + //genRandColour(); } + private void genRandColour() + { + if(System.currentTimeMillis() - lastChanged < threshhold) { return; } + font64.setColor(new Color( + rand.nextFloat() / 2f + 0.5f, + rand.nextFloat() / 2f + 0.5f, + rand.nextFloat() / 2f + 0.5f, + 1f + )); + lastChanged = System.currentTimeMillis(); + } + @Override public void render() { + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + Gdx.gl.glClearColor(.25f, .25f, .25f, 1f); + stage.draw(); + + sb.begin(); + //font12.draw(sb, "Main menu", 200, 200); + sb.end(); } @Override @@ -39,6 +104,35 @@ public class Menu extends State { @Override public void dispose() { + stage.dispose(); + } + private void initButtons() + { + butPlay = new TextButton("Play", skin, "default"); + butPlay.setPosition(500, 260); + butPlay.setSize(128, 40); + butPlay.addListener(new ClickListener() { + @Override + public void clicked (com.badlogic.gdx.scenes.scene2d.InputEvent event, float x, float y) { + sm.setState(StateManager.States.PLAY); + } + }); + + butExit = new TextButton("Exit", skin, "default"); + butExit.setPosition(500, 110); + butExit.setSize(128, 40); + butExit.addListener(new ClickListener() { + @Override + public void clicked(com.badlogic.gdx.scenes.scene2d.InputEvent event, float x, float y) { + Gdx.app.exit(); + } + }); + + butPlay.addAction(parallel(alpha(0), moveTo(stage.getWidth() / 2, stage.getHeight() / 2, 5f, Interpolation.pow5), sequence(alpha(0f), fadeIn(1.5f, Interpolation.pow2)))); + butExit.addAction(sequence(alpha(0f), fadeIn(2f, Interpolation.pow2))); + + stage.addActor(butPlay); + stage.addActor(butExit); } } diff --git a/desktop/src/com/game/desktop/DesktopLauncher.java b/desktop/src/com/game/desktop/DesktopLauncher.java index 581f411..816feca 100644 --- a/desktop/src/com/game/desktop/DesktopLauncher.java +++ b/desktop/src/com/game/desktop/DesktopLauncher.java @@ -14,6 +14,7 @@ public class DesktopLauncher { config.width = Vars.SCREEN_WIDTH; config.height = Vars.SCREEN_HEIGHT; config.resizable = Vars.RESIZABLE; + config.vSyncEnabled = Vars.VSYNC; config.addIcon("spritesheets/icon.jpg", Files.FileType.Internal); config.foregroundFPS = (int)Vars.FRAMERATE; config.backgroundFPS = (int)Vars.FRAMERATE;