From 180aad05decc7eefa87e4e45d6747c48f40e5361 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 17 Apr 2023 12:12:01 -0400 Subject: save --- .../tylermurphy/Minecraft/Scripts/GameScript.java | 99 ++++++++++++++++++++++ .../Minecraft/Scripts/PlayerScript.java | 44 ++++++++++ .../net/tylermurphy/Minecraft/Scripts/Script.java | 11 +++ .../tylermurphy/Minecraft/Scripts/UIScript.java | 62 ++++++++++++++ 4 files changed, 216 insertions(+) create mode 100755 src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java create mode 100755 src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java create mode 100755 src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java create mode 100755 src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java (limited to 'src/main/java/net/tylermurphy/Minecraft/Scripts') diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java new file mode 100755 index 0000000..f73ef9d --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java @@ -0,0 +1,99 @@ +package net.tylermurphy.Minecraft.Scripts; + +import java.util.Random; + +import net.tylermurphy.Minecraft.Audio.Sound; +import net.tylermurphy.Minecraft.Audio.SoundManager; +import net.tylermurphy.Minecraft.Chunk.Chunk; +import net.tylermurphy.Minecraft.Scene.Camera; +import net.tylermurphy.Minecraft.Scene.Objects.Transform; +import net.tylermurphy.Minecraft.Scene.Objects.WorldOrigin; +import net.tylermurphy.Minecraft.Scene.Player; +import net.tylermurphy.Minecraft.Scene.World; +import net.tylermurphy.Minecraft.Tick.TickManager; +import net.tylermurphy.Minecraft.Util.ChunkLoader; +import net.tylermurphy.Minecraft.Util.Constants; +import net.tylermurphy.Minecraft.Util.Data; +import net.tylermurphy.Minecraft.Util.ResourceManager; +import org.joml.Vector3f; + +public class GameScript extends Script { + + Sound sound; + String[] music = {"calm1","calm2","calm3","hal1","hal2","hal3","hal4","nuance1","nuance2","piano1","piano2","piano3"}; + + public void Init() { + createScene(); + loadNextSound(); + } + + public void Update() { + ChunkLoader.run(); + } + + public void Tick() { + if(!sound.isPlaying()) loadNextSound(); + for(Chunk c: World.getChunks()) { + if(c==null) continue; + if(c.isScheduled()) + c.updateMesh(); + } + TickManager.doTick(); + } + + public void loadNextSound() { + Random random = new Random(); + int i = random.nextInt(music.length); + sound = SoundManager.loadSound(music[i]); + sound.setLooping(false); + sound.play(); + } + + public void Stop() { + sound.stop(); + + ChunkLoader.save(); + + ResourceManager.saveObject("playerdata/", "temp.player", World.player); + ResourceManager.saveObject("playerdata/", "temp.camera", World.camera); + Data worldData = new Data(); + worldData.INTS.put("SEED", World.seed); + worldData.INTS.put("OriginX", World.world_origin.x()); + worldData.INTS.put("OriginZ", World.world_origin.z()); + ResourceManager.saveObject("", "world.dat", worldData); + } + + private static void createScene() { + + Camera camera = (Camera) ResourceManager.loadObject("playerdata/", "temp.camera"); + if(camera!=null) { + World.camera = camera; + } else{ + World.camera = new Camera(); + } + + Data worldData = (Data) ResourceManager.loadObject("", "world.dat"); + if(worldData == null) { + World.seed = new Random().nextInt(1000000000); + World.world_origin = new WorldOrigin(0,0); + } else { + World.seed = worldData.INTS.get("SEED"); + int wx = worldData.INTS.get("OriginX"); + int wz = worldData.INTS.get("OriginZ"); + World.world_origin = new WorldOrigin(wx,wz); + } + World.renderDistance = Constants.RENDER_DISTANCE; + Player player = (Player) ResourceManager.loadObject("playerdata/", "temp.player"); + if(player!=null) { + World.player = player; + } else{ + World.player = new Player( + new Transform() + .setPosition(new Vector3f(0, 160, 0)) + .setScale(.6f) + ); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java new file mode 100755 index 0000000..eb64b14 --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java @@ -0,0 +1,44 @@ +package net.tylermurphy.Minecraft.Scripts; + +import static net.tylermurphy.Minecraft.UI.UIMaster.bindUI; +import static net.tylermurphy.Minecraft.UI.UIMaster.getImage; +import static net.tylermurphy.Minecraft.UI.UIMaster.getText; +import static net.tylermurphy.Minecraft.UI.UIMaster.setEnabled; + +import net.tylermurphy.Minecraft.Main; +import net.tylermurphy.Minecraft.Scene.World; + +public class PlayerScript extends Script { + + int last_height = 0; + + public void Update() { + World.player.isFalling = World.player.isInAir && !World.player.isFlying && !World.player.isSwimming; + if(World.player.isSwimming || World.player.isFlying) last_height = (int) World.player.getTransform().getGlobalPosition().y; + + if(World.player.isFalling) { + if(!World.player.wasFalling) + last_height = (int) World.player.getTransform().getGlobalPosition().y; + World.player.wasFalling = true; + } else if(World.player.wasFalling) { + int current_height = (int) World.player.getTransform().getGlobalPosition().y; + float height_fell = last_height - current_height; + if(height_fell > 3) + World.player.health -= height_fell - 3; + World.player.health = Math.max(World.player.health,0); + World.player.wasFalling = false; + } + + if(World.player.health <= 0) { + World.player.isDead = true; + bindUI(1); + setEnabled(false); + bindUI(0); + getText("dead").setEnabled(true); + getImage("crosshair").setEnabled(false); + } + World.world_origin.recalculateOrigin(); + if(!World.player.isDead && Main.getTicks() % 80 == 0 && World.player.health < 20) World.player.health++; + } + +} diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java new file mode 100755 index 0000000..0ff5c8d --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java @@ -0,0 +1,11 @@ +package net.tylermurphy.Minecraft.Scripts; + +public class Script { + + public void Init() {} + public void Update() {} + public void Tick() {} + public void End() {} + public void Stop() {} + +} diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java new file mode 100755 index 0000000..2f7da5f --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java @@ -0,0 +1,62 @@ +package net.tylermurphy.Minecraft.Scripts; + +import static net.tylermurphy.Minecraft.UI.UIMaster.bindUI; +import static net.tylermurphy.Minecraft.UI.UIMaster.getImage; +import static net.tylermurphy.Minecraft.UI.UIMaster.getText; +import static net.tylermurphy.Minecraft.UI.UIMaster.setEnabled; + +import net.tylermurphy.Minecraft.Main; +import net.tylermurphy.Minecraft.Scene.World; +import net.tylermurphy.Minecraft.UI.UIImage; +import net.tylermurphy.Minecraft.UI.UIFactory.*; +import net.tylermurphy.Minecraft.Render.Data.Display; + +public class UIScript extends Script { + + public void Init() { + UIStore.InitalizeStoreData(); + CoreUI.initCoreUI(); + F3UI.initF3UI(); + SavingUI.initSavingUI(); + CommandUI.initCommandUI(); + } + + public void Update() { + bindUI(0); + for(int i=1;i<=10;i++) { + UIImage heart = getImage("heart" + i); + if(World.player.health >= i*2) { + heart.setTexture(UIStore.TEXTURES.get("heart_full_texture")); + } else if(World.player.health >= i*2-1) { + heart.setTexture(UIStore.TEXTURES.get("heart_half_texture")); + } else { + heart.setTexture(UIStore.TEXTURES.get("heart_empty_texture")); + } + } + } + + public void Tick() { + String position = "Position: "+(int)(World.player.getTransform().getGlobalPosition().x())+","+(int) World.player.getTransform().getGlobalPosition().y()+","+(int)(World.player.getTransform().getGlobalPosition().z()); + String rotation = "Rotation: "+(int) World.player.getTransform().getRotation().x+","+(int) World.player.getTransform().getRotation().y+","+(int) World.player.getTransform().getRotation().z; + bindUI(1); + getText("position").setText(position); + getText("rotation").setText(rotation); + getText("freemem").setText("Free memory (bytes): " + Runtime.getRuntime().freeMemory()); + if(Main.getTicks() % 20 == 0) { + getText("fps").setText("FPS: " + (int)(1/Display.getFrameTimeSeconds())); + getText("tps").setText("TPS: " + Main.getTPS()); + } + } + + public void End() { + bindUI(0); + setEnabled(false); + bindUI(1); + setEnabled(false); + bindUI(2); + setEnabled(true); + bindUI(3); + setEnabled(false); + } + +} -- cgit v1.2.3-freya