diff --git a/src/projectzombie/display/DisplayLighting.java b/src/projectzombie/display/DisplayLighting.java index bd8a585..2ade1ec 100755 --- a/src/projectzombie/display/DisplayLighting.java +++ b/src/projectzombie/display/DisplayLighting.java @@ -28,13 +28,14 @@ public class DisplayLighting int x, y; private int getID(int x, int y) { - return (x + y * w) * 3 + 1; + return (x + y * w) * 4 + 1; } } private static int lighting_last_x = 0; private static int lighting_last_y = 0; private static boolean lighting_dirty = false; + private static boolean lighting_new = false; public static int lightmap; private static Lighting lighting; @@ -49,6 +50,7 @@ public class DisplayLighting private synchronized static void setLighting(Lighting lighting) { DisplayLighting.lighting = lighting; + lighting_new = true; } public DisplayLighting() { @@ -255,6 +257,23 @@ public class DisplayLighting } } + if(lighting_new) + { + for(int i=0;i public abstract void generateChunk(Chunk chunk, Layer layer, Random rand, Vec2i pos); public abstract double getTemperatureStatic(Layer layer, Vec2d pos); public abstract double getTemperatureDynamic(Layer layer, Vec2d pos); + public abstract double getHumidity(Layer layer, Vec2d pos); public abstract void spawnEntities(Layer layer, Random rand); public abstract TileState getTileDestroyed(); public abstract ColorRange getLightLevel(); diff --git a/src/projectzombie/world/layer/layergen/LayerGenBossArena.java b/src/projectzombie/world/layer/layergen/LayerGenBossArena.java index 9bd11fa..3f41126 100755 --- a/src/projectzombie/world/layer/layergen/LayerGenBossArena.java +++ b/src/projectzombie/world/layer/layergen/LayerGenBossArena.java @@ -124,5 +124,10 @@ public class LayerGenBossArena extends LayerGen implements LayerGenRememberPlaye public double getTemperatureDynamic(Layer layer, Vec2d pos) { return 0.8; } + + @Override + public double getHumidity(Layer layer, Vec2d pos) { + return 0; + } } diff --git a/src/projectzombie/world/layer/layergen/LayerGenCaves.java b/src/projectzombie/world/layer/layergen/LayerGenCaves.java index ac7cb9d..40f8600 100755 --- a/src/projectzombie/world/layer/layergen/LayerGenCaves.java +++ b/src/projectzombie/world/layer/layergen/LayerGenCaves.java @@ -20,6 +20,39 @@ import projectzombie.world.layer.Layer; public class LayerGenCaves extends LayerGen { + @Override + public double getTemperatureStatic(Layer layer, Vec2d pos) + { + // Get the noise generator + OpenSimplexNoise terrain_noise = layer.noise_gens[0]; + return MathHelpers.map(terrain_noise.eval(pos.x/64.0, pos.y/64.0), -1, 1, 0, 0.6); + } + + @Override + public double getTemperatureDynamic(Layer layer, Vec2d pos) { + return getTemperatureStatic(layer, pos); + } + + @Override + public double getHumidity(Layer layer, Vec2d pos) + { + // Get the noise generator + OpenSimplexNoise terrain_noise = layer.noise_gens[1]; + return MathHelpers.map(terrain_noise.eval(pos.x/64.0, pos.y/64.0), -1, 1, 0.3, 0.8); + } + + @Override + public void init(Layer layer) { + super.init(layer); + + Random rand = new Random(layer.seed); + + layer.noise_gens = new OpenSimplexNoise[] { + new OpenSimplexNoise(rand.nextLong()), + new OpenSimplexNoise(rand.nextLong()) + }; + } + @Override public void generateChunk(Chunk chunk, Layer layer, Random rand, Vec2i c_pos) { @@ -79,6 +112,18 @@ public class LayerGenCaves extends LayerGen if(chunk.getBackTile(chest_pos).tile == getTileDestroyed().tile) { chunk.setFrontTile(new TileState(Tiles.CHEST, 1), chest_pos); } + + // Spawn entities + Entity zombie = new EntityZombie(new Vec2d( + chunk.c_pos.x * 16 + RandomHelpers.randrange(rand, 0, 16), + chunk.c_pos.y * 16 + RandomHelpers.randrange(rand, 0, 16))); + + if( + chunk.getBackTile(new Vec2i((int)zombie.pos.x, + (int)zombie.pos.y)).tile == getTileDestroyed().tile + ) { + chunk.spawnEntity(zombie); + } } @Override @@ -119,14 +164,6 @@ public class LayerGenCaves extends LayerGen return new ColorRange(new Vec3d(0, 0, 0), new Vec3d(0, 0, 0)); } - @Override - public double getTemperatureStatic(Layer layer, Vec2d pos) { - return 0.5; - } - @Override - public double getTemperatureDynamic(Layer layer, Vec2d pos) { - return 0.5; - } } diff --git a/src/projectzombie/world/layer/layergen/LayerGenEarth.java b/src/projectzombie/world/layer/layergen/LayerGenEarth.java index e78e88f..3812d26 100755 --- a/src/projectzombie/world/layer/layergen/LayerGenEarth.java +++ b/src/projectzombie/world/layer/layergen/LayerGenEarth.java @@ -38,14 +38,23 @@ public class LayerGenEarth extends LayerGen return MathHelpers.map(terrain_noise.eval(pos.x/64.0, pos.y/64.0), -1, 1, light, 0.5 + light); } + @Override + public double getHumidity(Layer layer, Vec2d pos) + { + // Get the noise generator + OpenSimplexNoise terrain_noise = layer.noise_gens[1]; + return MathHelpers.map(terrain_noise.eval(pos.x/64.0, pos.y/64.0), -1, 1, 0, 1); + } + @Override public void init(Layer layer) { super.init(layer); - Random rand = new Random(layer.lseed); + Random rand = new Random(layer.seed); layer.noise_gens = new OpenSimplexNoise[] { new OpenSimplexNoise(rand.nextLong()), + new OpenSimplexNoise(rand.nextLong()) }; } diff --git a/src/projectzombie/world/layer/layergen/LayerGenLavaCaves.java b/src/projectzombie/world/layer/layergen/LayerGenLavaCaves.java index 248594b..48c09ab 100755 --- a/src/projectzombie/world/layer/layergen/LayerGenLavaCaves.java +++ b/src/projectzombie/world/layer/layergen/LayerGenLavaCaves.java @@ -170,5 +170,10 @@ public class LayerGenLavaCaves extends LayerGen public double getTemperatureDynamic(Layer layer, Vec2d pos) { return 0.7; } + + @Override + public double getHumidity(Layer layer, Vec2d pos) { + return 0; + } } diff --git a/src/resources/shader/environmentRenderer.fsh b/src/resources/shader/environmentRenderer.fsh index 739f50a..6e03785 100644 --- a/src/resources/shader/environmentRenderer.fsh +++ b/src/resources/shader/environmentRenderer.fsh @@ -20,8 +20,10 @@ uniform vec2 lightmap_size; uniform vec2 tex_cut; uniform vec4 color; -vec3 color_grass_min = vec3(0.05, 0.8, 0); -vec3 color_grass_max = vec3(1, 0.6, 0); +vec3 color_grass_hot_wet = vec3(0.05, 0.8, 0); +vec3 color_grass_hot_dry = vec3(1, 0.6, 0); +vec3 color_grass_cold_wet = vec3(0.075, 0.533, 0.047); +vec3 color_grass_cold_dry = vec3(0.812, 0.761, 0); float map(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; @@ -45,6 +47,14 @@ float smoothStep(float a) { return a * a * (3 - 2 * a); } +float interpolate2(float x, float y, float v00, float v01, float v10, float v11) { + return (v00 * x + v10 * (1 - x)) * y + (v01 * x + v11 * (1 - x)) * (1 - y); +} + +vec3 interpolate2RGB(float x, float y, vec3 v00, vec3 v01, vec3 v10, vec3 v11) { + return (v00 * x + v10 * (1 - x)) * y + (v01 * x + v11 * (1 - x)) * (1 - y); +} + void main() { vec4 light = texture(lightmap, vec2( @@ -54,10 +64,12 @@ void main() vec3 light_day = mapVec(scaleLight(light.r), 0, 1, lighting_day_low, lighting_day_high); vec3 light_src = vec3(1, 1, 1) * (scaleLight(light.g) - abs(pLightMapPos.y) * 0.1); - vec4 color_white = vec4(1, 1, 1, 1); - vec4 color_grass = vec4(mapVec(smoothStep(light.b), 0, 1, color_grass_min, color_grass_max), 1); + vec4 color_grass = vec4(interpolate2RGB( + smoothStep(light.b), smoothStep(light.a), + color_grass_cold_dry, color_grass_hot_dry, + color_grass_cold_wet, color_grass_hot_wet), 1); - FragColor = texture(atlas, pTexture) * (mod(int(pFlags / 4), 2) == 1 ? color_grass : color_white) * + FragColor = texture(atlas, pTexture) * (mod(int(pFlags / 4), 2) == 1 ? color_grass : vec4(1,1,1,1)) * color * vec4(biggest(light_day, light_src), 1); discard(FragColor.a == 0 || (pPos.x > tex_cut.y && tex_cut.x > 0.5)); diff --git a/src/resources/texture/gui/temperature.png b/src/resources/texture/gui/temperature.png new file mode 100644 index 0000000..1005b71 Binary files /dev/null and b/src/resources/texture/gui/temperature.png differ diff --git a/src/resources/texture/gui/water.png b/src/resources/texture/gui/water.png new file mode 100644 index 0000000..1a359bf Binary files /dev/null and b/src/resources/texture/gui/water.png differ diff --git a/src/resources/texture/list.txt b/src/resources/texture/list.txt index 7ce9d58..342fc21 100644 --- a/src/resources/texture/list.txt +++ b/src/resources/texture/list.txt @@ -1,157 +1,159 @@ -./text/char_question.png -./text/char_l_a.png -./text/char_u_j.png -./text/char_l_u.png -./text/char_u_s.png -./text/char_l_s.png -./text/char_plus.png -./text/char_l_e.png -./text/char_7.png -./text/char_minus.png -./text/char_u_r.png -./text/char_u_l.png -./text/char_obracket.png -./text/char_u_m.png -./text/char_l_t.png -./text/char_percent.png -./text/char_l_y.png -./text/char_0.png -./text/char_4.png -./text/char_l_r.png -./text/char_l_m.png -./text/char_cbracket.png -./text/char_u_g.png -./text/char_u_q.png -./text/char_u_i.png -./text/char_l_w.png -./text/char_l_v.png -./text/char_fslash.png -./text/char_u_p.png -./text/char_gthan.png -./text/char_8.png -./text/char_unknown.png -./text/char_u_n.png -./text/char_l_i.png -./text/char_u_y.png -./text/char_l_p.png -./text/char_lthan.png -./text/char_l_g.png -./text/char_bslash.png -./text/char_1.png -./text/char_u_z.png -./text/char_l_f.png -./text/char_u_w.png -./text/char_9.png -./text/char_l_x.png -./text/char_l_o.png -./text/char_equals.png -./text/char_l_d.png -./text/char_dollar.png -./text/char_hashtag.png -./text/char_l_q.png -./text/char_u_o.png -./text/char_6.png -./text/char_u_d.png -./text/char_u_e.png -./text/char_exclamation.png -./text/char_vertical.png -./text/char_u_k.png -./text/char_u_c.png -./text/char_l_n.png -./text/char_u_b.png -./text/char_u_f.png -./text/char_l_h.png -./text/char_l_k.png -./text/char_u_t.png -./text/char_3.png -./text/char_u_v.png -./text/char_u_h.png -./text/char_u_a.png -./text/char_l_b.png -./text/char_underscore.png -./text/char_u_x.png -./text/char_comma.png -./text/char_l_l.png -./text/char_5.png -./text/char_colon.png -./text/char_l_z.png -./text/char_space.png -./text/char_2.png -./text/char_l_j.png -./text/char_fullstop.png -./text/char_l_c.png -./text/char_u_u.png +./tile/rock.png +./tile/ladder.png +./tile/water.png +./tile/ladder_up.png +./tile/cactus4.png +./tile/cactus2.png +./tile/dirt.png +./tile/wall.png +./tile/tree_base.png +./tile/cactus1.png +./tile/tunnel_down.png +./tile/stone.png +./tile/snow.png +./tile/boss_portal.png +./tile/sand.png +./tile/lantern.png +./tile/chest.png +./tile/cactus3.png +./tile/lava.png +./tile/tree_leaves.png +./tile/lava_flow.png +./tile/snow_pile.png +./tile/grass.png +./tile/rock_sandstone.png ./list.txt -./player/player_white_front_moving.png -./player/player_white_back_moving.png -./player/player_black_back_moving.png -./player/player_black_back_still.png +./item/rock.png +./item/ammo_box.png +./item/shield_upgrade.png +./item/grappling_hook.png +./item/health_potion.png +./item/gun_upgrade.png ./player/player_white_back_still.png ./player/player_white_front_still.png ./player/player_black_front_moving.png ./player/player_black_front_still.png -./particle/smoke_trail.png -./particle/water.png -./particle/smoke_0.png -./particle/smoke_1.png -./particle/blood.png -./particle/lava.png -./particle/bullet.png -./particle/smoke_2.png -./particle/smoke_4.png -./particle/smoke_3.png -./particle/smoke_5.png -./gui/health_empty.png -./gui/button_hover.png -./gui/button_normal.png -./gui/hotbar.png -./gui/health_full.png -./gui/hotbar_selected.png -./gui/shield.png +./player/player_black_back_moving.png +./player/player_black_back_still.png +./player/player_white_back_moving.png +./player/player_white_front_moving.png +./gui/water.png ./gui/gun.png -./tile/cactus4.png -./tile/dirt.png -./tile/lantern.png -./tile/wall.png -./tile/cactus2.png -./tile/rock.png -./tile/water.png -./tile/stone.png -./tile/tree_leaves.png -./tile/ladder_up.png -./tile/lava_flow.png -./tile/grass.png -./tile/chest.png -./tile/lava.png -./tile/snow.png -./tile/rock_sandstone.png -./tile/cactus1.png -./tile/tunnel_down.png -./tile/snow_pile.png -./tile/boss_portal.png -./tile/ladder.png -./tile/sand.png -./tile/tree_base.png -./tile/cactus3.png -./entity/flare.png -./entity/grappling_hook.png -./entity/zombie_back_moving.png -./entity/tnt.png +./gui/health_empty.png +./gui/hotbar_selected.png +./gui/health_full.png +./gui/temperature.png +./gui/hotbar.png +./gui/button_normal.png +./gui/shield.png +./gui/button_hover.png +./text/char_bslash.png +./text/char_dollar.png +./text/char_l_w.png +./text/char_u_d.png +./text/char_u_t.png +./text/char_space.png +./text/char_l_x.png +./text/char_l_k.png +./text/char_6.png +./text/char_unknown.png +./text/char_comma.png +./text/char_obracket.png +./text/char_u_w.png +./text/char_7.png +./text/char_l_f.png +./text/char_vertical.png +./text/char_plus.png +./text/char_u_a.png +./text/char_9.png +./text/char_u_k.png +./text/char_u_n.png +./text/char_percent.png +./text/char_u_m.png +./text/char_exclamation.png +./text/char_1.png +./text/char_l_q.png +./text/char_l_z.png +./text/char_l_h.png +./text/char_u_c.png +./text/char_l_g.png +./text/char_l_s.png +./text/char_fullstop.png +./text/char_u_j.png +./text/char_l_m.png +./text/char_l_t.png +./text/char_u_v.png +./text/char_colon.png +./text/char_l_i.png +./text/char_l_y.png +./text/char_u_l.png +./text/char_u_e.png +./text/char_5.png +./text/char_2.png +./text/char_3.png +./text/char_l_p.png +./text/char_fslash.png +./text/char_l_u.png +./text/char_u_f.png +./text/char_u_u.png +./text/char_l_e.png +./text/char_l_l.png +./text/char_u_g.png +./text/char_u_q.png +./text/char_u_b.png +./text/char_l_o.png +./text/char_minus.png +./text/char_l_v.png +./text/char_lthan.png +./text/char_u_s.png +./text/char_equals.png +./text/char_8.png +./text/char_underscore.png +./text/char_u_x.png +./text/char_0.png +./text/char_l_d.png +./text/char_l_c.png +./text/char_l_j.png +./text/char_u_z.png +./text/char_u_h.png +./text/char_hashtag.png +./text/char_gthan.png +./text/char_cbracket.png +./text/char_u_i.png +./text/char_question.png +./text/char_u_o.png +./text/char_u_y.png +./text/char_l_r.png +./text/char_l_b.png +./text/char_l_a.png +./text/char_l_n.png +./text/char_u_p.png +./text/char_u_r.png +./text/char_4.png ./entity/armored_zombie_back_moving.png -./entity/armored_zombie_front_moving.png -./entity/dummy.png -./entity/armored_zombie_front_still.png -./entity/armored_zombie_back_still.png -./entity/zombie_front_moving.png -./entity/boss1/boss_walking_firing.png +./entity/zombie_front_still.png +./entity/tnt.png +./entity/flare.png +./entity/boss1/boss_walking.png ./entity/boss1/boss_firing.png ./entity/boss1/boss_still.png -./entity/boss1/boss_walking.png +./entity/boss1/boss_walking_firing.png +./entity/armored_zombie_back_still.png +./entity/armored_zombie_front_moving.png +./entity/grappling_hook.png ./entity/zombie_back_still.png -./entity/zombie_front_still.png -./item/grappling_hook.png -./item/gun_upgrade.png -./item/shield_upgrade.png -./item/rock.png -./item/ammo_box.png -./item/health_potion.png +./entity/dummy.png +./entity/zombie_back_moving.png +./entity/armored_zombie_front_still.png +./entity/zombie_front_moving.png +./particle/smoke_1.png +./particle/water.png +./particle/blood.png +./particle/smoke_3.png +./particle/smoke_4.png +./particle/smoke_2.png +./particle/smoke_0.png +./particle/bullet.png +./particle/lava.png +./particle/smoke_trail.png +./particle/smoke_5.png