diff --git a/engine-pi.log.1 b/engine-pi.log.1 new file mode 100644 index 0000000..e69de29 diff --git a/engine-pi.log.lck b/engine-pi.log.lck new file mode 100644 index 0000000..e69de29 diff --git a/kebab.properties b/kebab.properties new file mode 100644 index 0000000..2d9b49b --- /dev/null +++ b/kebab.properties @@ -0,0 +1,7 @@ +kebabPrice=5 +kebabSold=28 +money=123 +totalEarned=0 +upgradeLevel=0 +waitingCustomers=0 +workers=0 diff --git a/pom.xml b/pom.xml index 032994a..659cda7 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ de.pirckheimer-gymnasium engine-pi - 0.50.0 + 0.52.0 diff --git a/src/main/java/project/Main.java b/src/main/java/project/Main.java index 288e120..87463b0 100644 --- a/src/main/java/project/Main.java +++ b/src/main/java/project/Main.java @@ -1,7 +1,9 @@ package project; -import project.scenes.LoadingScene; +import project.scenes.GameScene; +import project.utils.Statistics; import pi.Controller; +import pi.config.ConfigLoader; import java.awt.Cursor; import java.awt.Point; @@ -9,10 +11,18 @@ import java.awt.Toolkit; public class Main { + public static ConfigLoader config; + + static { + config = new ConfigLoader("kebab.properties", new Statistics()); + config.load(); + } + public static void main(String[] args) { Controller.instantMode(false); - Controller.start(new LoadingScene(), 1000, 600); + //Controller.start(new LoadingScene(), 1000, 600); + Controller.start(new GameScene(), 1000, 600); try { Cursor customCursor = Toolkit.getDefaultToolkit().createCustomCursor( diff --git a/src/main/java/project/scenes/GameScene.java b/src/main/java/project/scenes/GameScene.java index 429d387..305e5d0 100644 --- a/src/main/java/project/scenes/GameScene.java +++ b/src/main/java/project/scenes/GameScene.java @@ -7,18 +7,26 @@ import pi.Text; import pi.actor.Actor; import pi.actor.Animation; import pi.actor.Image; +import pi.config.ConfigLoader; import pi.event.FrameListener; +import pi.event.MouseButton; +import pi.event.MouseClickListener; import pi.graphics.geom.Vector; +import project.Main; +import project.utils.Statistics; import static pi.Controller.fonts; import java.awt.Font; -public class GameScene extends Scene implements FrameListener +public class GameScene extends Scene implements FrameListener, MouseClickListener { Rectangle bg; + Image tatli; Text[] texts; + Image[] ingredients; Actor[] customers; + public static ConfigLoader loader; public GameScene() { // the background music, color, stats (some meta information) @@ -31,26 +39,62 @@ public class GameScene extends Scene implements FrameListener texts = createTexts(this); camera().meter(10); + tatli = new Image("images/kebab-pack/tatli-ekmek-256x256.png"); + tatli.size(2.56*13, 2.56*13); + tatli.center(-33, -23); + // create customers - customers = new Actor[1]; - customers[0] = Animation.createFromAnimatedGif("images/kebab-pack/customer-mr-eggman.gif", 1.48*25, 1.25*25); + customers = new Actor[2]; + customers[0] = Animation.createFromAnimatedGif("images/kebab-pack/customer-sonic-on-white.gif", 1.48*25, 1.25*25); customers[0].center(-60,0); customers[0].applyImpulse(new Vector(1, 0).multiply(100000)); - + customers[1] = Animation.createFromAnimatedGif("images/kebab-pack/customer-mr-eggman.gif", 1.48*20, 1.48*20); + customers[1].center(-180,0); + customers[1].applyImpulse(new Vector(1, 0).multiply(100000)); + + ingredients = createIngredients(); + // add all actors add(bg); add(customers); + add(ingredients); + add(tatli); } @Override public void onFrame(double pastTime) { - if(visibleArea().xRight() < customers[0].anchor().add(new Vector(-20, 0)).x()) { - customers[0].center(-60,0); - } + for(Actor c : customers) { + if(visibleArea().xRight() < c.anchor().add(new Vector(-20, 0)).x()) { + c.center(-60,0); + Statistics s = Main.config.getGroup(Statistics.class);; + s.kebabSold(s.kebabSold()+1); + Main.config.save(); + + setKebabSold(texts, s.kebabSold()); + } + } + } + + @Override + public void onMouseDown(Vector position, MouseButton button) + { + } // Static helper methods + public static Image[] createIngredients() { + Image[] ingredients = new Image[5]; + + ingredients[0] = new Image("images/kebab-pack/onion-256x256.png"); + ingredients[1] = new Image("images/kebab-pack/meat-256x256.png"); + ingredients[2] = new Image("images/kebab-pack/bread-256x256.png"); + ingredients[3] = new Image("images/kebab-pack/lettuce-96x96.png"); + ingredients[4] = new Image("images/kebab-pack/kebab-128x128.png"); + + return ingredients; + } + public static void addStatsCollectionOutline(Scene scene) { Image moneyButton = new Image("images/pixui-pack/Buttons/Button_White_Outline (9).png"); moneyButton.center(-10, 25); @@ -77,20 +121,22 @@ public class GameScene extends Scene implements FrameListener public static Text[] createTexts(Scene scene) { Text[] texts = new Text[10]; Font font = fonts.get("fonts/BitcountGridDouble-Regular.ttf"); + + Statistics s = Main.config.getGroup(Statistics.class); - Text money = new Text("0"); + Text money = new Text(s.money()); money.color("#000000"); money.font(font); money.height(2.5); money.center(-9, 25); texts[0] = money; - Text kebabSold = new Text("0"); + Text kebabSold = new Text(s.kebabSold()); kebabSold.color("#000000"); kebabSold.font(font); kebabSold.height(2.5); kebabSold.center(1, 25); texts[1] = kebabSold; - Text waitingCustomers = new Text("0"); + Text waitingCustomers = new Text(s.waitingCustomers()); waitingCustomers.color("#000000"); waitingCustomers.font(font); waitingCustomers.height(2.5); diff --git a/src/main/java/project/utils/Statistics.java b/src/main/java/project/utils/Statistics.java new file mode 100644 index 0000000..5c18f96 --- /dev/null +++ b/src/main/java/project/utils/Statistics.java @@ -0,0 +1,92 @@ +package project.utils; + +import pi.config.ConfigGroup; + +public class Statistics extends ConfigGroup { + private int money = 0; + private int kebabPrice = 5; + private int upgradeLevel = 0; + private int kebabSold = 0; + private int workers = 0; + private int waitingCustomers = 0; + private int totalEarned = 0; + + public Statistics() { + money(0); + kebabPrice(5); + upgradeLevel(0); + kebabSold(0); + workers(0); + waitingCustomers(0); + totalEarned(0); + } + + // --- money --- + public int money(){ + return money; + } + public Statistics money(int money) { + set("money", money); + return this; + } + + // --- kebabPrice --- + public int kebabPrice() { + return kebabPrice; + } + + public Statistics kebabPrice(int kebabPrice) { + set("kebabPrice", kebabPrice); + return this; + } + + // --- upgradeLevel --- + public int upgradeLevel() { + return upgradeLevel; + } + + public Statistics upgradeLevel(int upgradeLevel) { + set("upgradeLevel", upgradeLevel); + return this; + } + + // --- kebabSold --- + public int kebabSold() { + return kebabSold; + } + + public Statistics kebabSold(int kebabSold) { + set("kebabSold", kebabSold); + return this; + } + + // --- workers --- + public int workers() { + return workers; + } + + public Statistics workers(int workers) { + set("workers", workers); + return this; + } + + // --- waitingCustomers --- + public int waitingCustomers() { + return waitingCustomers; + } + + public Statistics waitingCustomers(int waitingCustomers) { + set("waitingCustomers", waitingCustomers); + return this; + } + + // --- totalEarned --- + public int totalEarned() { + return totalEarned; + } + + public Statistics totalEarned(int totalEarned) { + set("totalEarned", totalEarned); + return this; + } +} \ No newline at end of file