11package nl .hsleiden .joshuabloch ;
22
3- import com .almasb .fxgl .animation .Interpolators ;
43import com .almasb .fxgl .app .GameApplication ;
54import com .almasb .fxgl .app .GameSettings ;
65import com .almasb .fxgl .app .scene .Viewport ;
76import com .almasb .fxgl .core .serialization .Bundle ;
8- import com .almasb .fxgl .dsl .FXGL ;
97import com .almasb .fxgl .entity .Entity ;
108import com .almasb .fxgl .entity .level .Level ;
119import com .almasb .fxgl .input .UserAction ;
1210import com .almasb .fxgl .profile .DataFile ;
1311import com .almasb .fxgl .profile .SaveLoadHandler ;
14- import com .almasb .fxgl .ui .FontType ;
15- import javafx .geometry .Point2D ;
1612import javafx .scene .input .KeyCode ;
17- import javafx .scene .paint .Color ;
18- import javafx .scene .text .Font ;
19- import javafx .scene .text .Text ;
20- import javafx .util .Duration ;
2113import nl .hsleiden .joshuabloch .game .EntityManager ;
2214import nl .hsleiden .joshuabloch .game .EntityType ;
2315import nl .hsleiden .joshuabloch .game .PlayerComponent ;
3123public class Main extends GameApplication {
3224
3325 private Entity player ;
26+ private ScoreCounter scoreCounter ;
27+ private LevelManager levelManager ;
28+
29+ public static void main (String [] args ) {
30+ launch (args );
31+ }
3432
3533 @ Override
3634 protected void initSettings (GameSettings settings ) {
@@ -41,12 +39,16 @@ protected void initSettings(GameSettings settings) {
4139 settings .setVersion ("1.0" );
4240 settings .setMainMenuEnabled (true );
4341 settings .setSceneFactory (new MySceneFactory ());
44- //settings.setEnabledMenuItems(EnumSet.allOf(MenuItem.class));
4542 settings .setFullScreenAllowed (true );
46- //settings.setProfilingEnabled(true);
4743 settings .setDeveloperMenuEnabled (true );
4844 }
4945
46+ @ Override
47+ protected void onPreInit () {
48+ scoreCounter = new ScoreCounter ();
49+ levelManager = new LevelManager ();
50+ }
51+
5052 @ Override
5153 protected void initInput () {
5254 getInput ().addAction (new UserAction ("Left" ) {
@@ -79,135 +81,39 @@ protected void onActionBegin() {
7981 player .getComponent (PlayerComponent .class ).jump (250 );
8082 }
8183 }, KeyCode .W );
82-
8384 }
8485
8586 @ Override
8687 protected void initGameVars (Map <String , Object > vars ) {
87- HashMap <Integer , Integer > highscores = new HashMap <>();
88- //highscores.put("")
89- vars .put ("highscores" , new HashMap <Integer , Integer >());
90- vars .put ("progress" , 0 );
91- vars .put ("coin" , 0 );
88+ vars .put ("coin" , 100 );
9289 }
9390
94- @ Override
95- protected void onPreInit () {
96- getSaveLoadService ().addHandler (new SaveLoadHandler () {
97- @ Override
98- public void onSave (DataFile data ) {
99- // create a new bundle to store your data
100- Bundle bundle = new Bundle ("username" );
101-
102- // store some data
103- int progress = geti ("progress" );
104- bundle .put ("progress" , progress );
105-
106- // give the bundle to data file
107- data .putBundle (bundle );
108- }
109-
110- @ Override
111- public void onLoad (DataFile data ) {
112- // get your previously saved bundle
113- var bundle = data .getBundle ("username" );
114-
115- // retrieve some data
116- double time = bundle .get ("time" );
117-
118- // update your game with saved data
119- set ("time" , time );
120- }
121- });
122- }
123-
124-
12591 @ Override
12692 protected void initGame () {
127- getGameWorld (). addEntityFactory ( new EntityManager () );
128-
129- Level level = setLevelFromMap ( "tmx/level2.tmx" );
130-
131- System . out . println ( level . getProperties (). getString ( "menuName" ) );
132-
133- player = spawn ( "player" , 550 , 50 );
93+ levelManager . addHandler ( );
94+ levelManager . setName ( "jelle" );
95+ //TODO ask and set the player name
96+ levelManager . addHandler ();
97+ levelManager . start ( );
98+ levelManager . finished ( 10 );
99+ levelManager . writeSave ( );
134100
135- spawn ("background" );
101+ player = spawn ("player" , 50 , 50 );
136102
137103 Viewport viewport = getGameScene ().getViewport ();
138- viewport .setBounds (-1500 , 0 , 250 * 70 , getAppHeight ());
104+ viewport .setBounds (-1500 , 0 , 130 * 32 , getAppHeight ());
139105 viewport .bindToEntity (player , getAppWidth () / 2f , getAppHeight () /2f );
140106 viewport .setLazy (true );
141107 }
142108
143109 @ Override
144110 protected void initPhysics () {
145- onCollisionOneTimeOnly (EntityType .PLAYER , EntityType .COIN , (player , coin ) -> {
146- coin .removeFromWorld ();
147- inc ("coin" , 1 );
148- //TODO play coin pick up sound here
149- });
150-
151- onCollisionOneTimeOnly (EntityType .PLAYER , EntityType .SACK , (player , coin ) -> {
152- coin .removeFromWorld ();
153- inc ("coin" , 5 );
154- //TODO play sack pick up sound here
155- });
156-
157- onCollisionOneTimeOnly (EntityType .PLAYER , EntityType .SCALPER , (player , scalper ) -> {
158- System .out .println ("register" );
159- if (player .getComponent (PlayerComponent .class ).isInvincible ()) return ; //Don't register hits when the player has just respawned
160- System .out .println ("Hit" );
161- inc ("coin" , -2 );
162- if (geti ("coin" ) < 0 ) set ("coin" , 0 );
163- //TODO play scalper hit sound here
164- });
111+ new Physics (scoreCounter );
165112 }
166113
167114 @ Override
168115 protected void initUI () {
169- Font font = getUIFactoryService ().newFont (FontType .GAME , 28 );
170- Text moneyText = new Text ();
171- Text moneyDesc = new Text ();
172- moneyDesc .setFont (font );
173- moneyText .setFont (font );
174- moneyDesc .setTranslateY (100 );
175- moneyDesc .setTranslateX (30 );
176- moneyText .setTranslateX (100 );
177- moneyText .setTranslateY (100 );
178- moneyDesc .textProperty ().set ("Coins:" );
179- moneyText .textProperty ().bind (getWorldProperties ().intProperty ("coin" ).asString ());
180- getGameScene ().addUINode (moneyText );
181- getGameScene ().addUINode (moneyDesc );
182-
183-
184- getGameWorld ().getProperties ().addListener ("coin" , (old , value ) -> {
185- int change = (int )value - (int ) old ;
186- System .out .println (change );
187- Text changeText = getUIFactoryService ().newText ((change > 0 ? "+" : "" ) + change , change > 0 ? Color .GREEN : Color .RED , 28 );
188- changeText .setTranslateY (180 );
189- changeText .setTranslateX (30 );
190- getGameScene ().addUINode (changeText );
191- FXGL .animationBuilder ()
192- .interpolator (Interpolators .LINEAR .EASE_IN ())
193- .duration (Duration .seconds (3 ))
194- .autoReverse (true )
195- .translate (changeText )
196- .from (new Point2D (30 , 180 ))
197- .to (new Point2D (30 , 140 ))
198- .buildAndPlay ();
199- FXGL .animationBuilder ()
200- .interpolator (Interpolators .SMOOTH .EASE_IN_OUT ())
201- .delay (Duration .seconds (3 ))
202- .duration (Duration .seconds (2 ))
203- .onCycleFinished (() -> { getGameScene ().removeUINode (changeText ); })
204- .autoReverse (true )
205- .fadeOut (changeText )
206- .buildAndPlay ();
207- });
116+ scoreCounter .init ();
208117 }
209118
210- public static void main (String [] args ) {
211- launch (args );
212- }
213119}
0 commit comments