summaryrefslogtreecommitdiff
path: root/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java
blob: f73ef9d8bf2ba1bc55cb61c10c3cffed95a9468f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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)
			);
		}

	}
	
}