From 888e359f9c302a1b6f70044f95f5cdf4a7f4c7eb Mon Sep 17 00:00:00 2001 From: josua Date: Wed, 4 Sep 2019 17:06:27 +1000 Subject: [PATCH] Gave rendering access to the tilestate instead of the meta --- resources/texmap.png | Bin 74458 -> 87761 bytes resources/texmap.xcf | Bin 153715 -> 161217 bytes src/shootergame/Main.java | 4 + src/shootergame/display/DisplayRenderUI.java | 25 ++- .../transparent/ITransparentObject.java | 5 +- .../transparent/TransparentObject.java | 9 +- .../transparent/TransparentObjects.java | 8 +- src/shootergame/entity/Entity.java | 14 +- .../entity/EntityEventHandler.java | 4 + src/shootergame/entity/EntityExplosion.java | 115 +++++++++++ src/shootergame/entity/EntityItem.java | 2 +- src/shootergame/entity/EntityTnt.java | 84 +------- src/shootergame/entity/EntityZombie.java | 2 +- .../entity/EntityZombieBomber.java | 107 ++++++++++ .../entity/particle/ParticleSmoke.java | 15 +- .../entity/player/EntityPlayer.java | 15 +- src/shootergame/init/Textures.java | 11 ++ src/shootergame/input/JoystickCallback.java | 183 ++++++++++-------- src/shootergame/input/KeyCallback.java | 124 +++++++++--- src/shootergame/inventory/IInventory.java | 2 +- src/shootergame/inventory/Inventory.java | 2 +- src/shootergame/items/Item.java | 1 + src/shootergame/items/ItemAmmo.java | 1 + src/shootergame/items/ItemDefenceUpgrade.java | 12 +- src/shootergame/items/ItemEmpty.java | 1 + src/shootergame/items/ItemGunUpgrade.java | 14 ++ src/shootergame/items/ItemHealthPotion.java | 1 + src/shootergame/items/ItemTnt.java | 3 +- src/shootergame/menu/Menu.java | 8 + src/shootergame/menu/MenuNone.java | 12 ++ src/shootergame/menu/MenuPause.java | 31 +++ src/shootergame/tiles/Tile.java | 16 +- src/shootergame/tiles/TileChest.java | 11 +- src/shootergame/tiles/TileDirt.java | 7 +- src/shootergame/tiles/TileFlat.java | 5 +- src/shootergame/tiles/TileLadderUp.java | 7 +- src/shootergame/tiles/TileLava.java | 5 +- src/shootergame/tiles/TileLavaFlow.java | 5 +- src/shootergame/tiles/TilePortalDown.java | 10 +- src/shootergame/tiles/TileStone.java | 7 +- src/shootergame/tiles/TileVertical.java | 5 +- src/shootergame/tiles/TileWater.java | 9 +- src/shootergame/tiles/TileWaterFlow.java | 5 +- .../{items => util/math}/ItemStack.java | 3 +- src/shootergame/util/math/TileState.java | 28 ++- src/shootergame/world/World.java | 1 + src/shootergame/world/chunk/Chunk.java | 50 ++++- .../world/layer/layergen/LayerGen.java | 3 + .../world/layer/layergen/LayerGenCaves.java | 25 ++- .../world/layer/layergen/LayerGenEarth.java | 7 +- 50 files changed, 756 insertions(+), 268 deletions(-) create mode 100644 src/shootergame/entity/EntityExplosion.java create mode 100644 src/shootergame/entity/EntityZombieBomber.java create mode 100644 src/shootergame/menu/Menu.java create mode 100644 src/shootergame/menu/MenuNone.java create mode 100644 src/shootergame/menu/MenuPause.java rename src/shootergame/{items => util/math}/ItemStack.java (91%) diff --git a/resources/texmap.png b/resources/texmap.png index fbf33dfeb0ac41b9d5a6b42ef6e0bfaf69e68f45..aedcf1bede91dc648817ff5049c9add98566721f 100644 GIT binary patch literal 87761 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 Vde5`_GB7YOc)I$ztaD0e0sxjB(KY}8 literal 74458 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 R;Y}~FWpdqq)Rt+T6aa|;h{XT^ delta 8661 zcmX^3n)CApPNDS7+yaG)e}%244Bv`7^9l=_>wAhjO&PwGcXsx+_2uW6cbYQ%>j0_gXf+)#pQ0*XNrud~5E5sBZ2vW%yUv1~Rb?#OejHdQBO=Bb5oOd0<9TCsu%ka8=iaw}7YZ?66j)vo@gAk&~m{<8~UW%y?oV9M~# z(hH*6(#w?Lo2?r}wXK^e!#_)q11#N58UERWSoZFw4ByN>>LJR_Jxm$Cxp+gAyLg*2 z{4)a?X%>KN4XVqjILa9Qv#>GzXR&1X&&oZ&koR1;$v!+$0=hW|`3P38>W*cc%OvN4)5{AXoj_|Iy} zK%CXnC(LFPt*4WPxB`P0B{T-BlbDMc7&iyh)iW|0PjBR6)ZN_Oe6FVcU*Uij+4Zz+ z4G>Y+)T1;^sN5PLqA>uiu+iHwM7W$P4lk^yMyrPie?ls3OmEiHp}7Vs$Z*xE^+Z&v z)Go4-8w1b^+ny$^0U{h;4{AKvf*KDf?HI~y4^vPJhHx{c9(y~62$z%OaGZ?+XoWpM z%{5CqaD`2!<{CJilUVUuQdaYhR`rac>GWuQl%Uq#+gEWhT6K-~w#gkQpicb?t-SH| zwy8b9f$Z>+Q+eYkzU%2$O<}L4pp`e3if__~2?kMb8@Wvbsl2Jzq`?vUE?&c}@+Pj! zJJ7vty4U$`1S?ov9dpcn`G8c`+VdINc|!3FTO*h1B#c_uGZ}AJSj+f_8)P=ALxqrB zinHv3n$5|woqa#!e|8g+M{w$yjHjlyx$J1Rhx5$Mqw1wwN^q{Sz4bP|)* z>Y=e;&tw7`_orn&hdhuE&z<#D8py|4i9$xKadv>~?P)q;0rw{^Z`R|QYQfR=BiEm} zyjf43i5Y_aM484xQZ0{d8V8aX!DH`(b+ma9j>+c|Y)23^FF{xlIC?e*)cG?q*E5-b z2ivEAvSMYj)v0dAXW7Y3``23RSO{6 z5h9}jSz^FsbQ8k2ErrspPX5@6~Z diff --git a/src/shootergame/Main.java b/src/shootergame/Main.java index e5ba62b..0bde9e9 100644 --- a/src/shootergame/Main.java +++ b/src/shootergame/Main.java @@ -15,6 +15,8 @@ import shootergame.init.Sounds; import shootergame.init.Textures; import shootergame.input.JoystickCallback; import shootergame.mainloop.MainloopEventHandler; +import shootergame.menu.Menu; +import shootergame.menu.MenuNone; import shootergame.world.World; import shootergame.world.chunk.ChunkEventHandler; import shootergame.world.layer.layergen.LayerGenCaves; @@ -28,6 +30,8 @@ public class Main public static World world; public static AudioEngine audio; public static Random rand = new Random(); + public static Menu menu = new MenuNone(); + public static boolean game_paused = false; public static void main(String[] args) { diff --git a/src/shootergame/display/DisplayRenderUI.java b/src/shootergame/display/DisplayRenderUI.java index fd37aac..a5807ea 100644 --- a/src/shootergame/display/DisplayRenderUI.java +++ b/src/shootergame/display/DisplayRenderUI.java @@ -1,14 +1,13 @@ package shootergame.display; import shootergame.Main; -import shootergame.entity.EntityInventory; import shootergame.entity.player.EntityPlayer; import shootergame.init.Textures; import shootergame.inventory.Inventory; -import shootergame.items.ItemStack; import shootergame.text.Text; import shootergame.util.gl.GlHelpers; import shootergame.util.gl.texture.TextureReference; +import shootergame.util.math.ItemStack; import shootergame.util.math.vec.Vec2d; public class DisplayRenderUI @@ -55,9 +54,11 @@ public class DisplayRenderUI GlHelpers.end(); - // Display the amount of ammo left + // Display the amount of ammo left, and the defence and gun level GlHelpers.pushMatrix(); TextureReference ammo_tex = Textures.ITEM_AMMO_BOX; + TextureReference gunlevel_tex = Textures.UI_GUN_LEVEL; + TextureReference deflevel_tex = Textures.UI_DEFENCE_LEVEL; GlHelpers.begin(); ammo_tex.texCoord(0, 1); GlHelpers.vertex2(-9.5, -8.5); @@ -65,10 +66,25 @@ public class DisplayRenderUI ammo_tex.texCoord(1, 0); GlHelpers.vertex2(-8.5, -7.0); ammo_tex.texCoord(1, 1); GlHelpers.vertex2(-8.5, -8.5); + + gunlevel_tex.texCoord(0, 1); GlHelpers.vertex2(-9.5, -6.5); + gunlevel_tex.texCoord(0, 0); GlHelpers.vertex2(-9.5, -5.0); + gunlevel_tex.texCoord(1, 0); GlHelpers.vertex2(-8.5, -5.0); + gunlevel_tex.texCoord(1, 1); GlHelpers.vertex2(-8.5, -6.5); + + deflevel_tex.texCoord(0, 1); GlHelpers.vertex2(-9.5, -4.5); + deflevel_tex.texCoord(0, 0); GlHelpers.vertex2(-9.5, -3.0); + deflevel_tex.texCoord(1, 0); GlHelpers.vertex2(-8.5, -3.0); + deflevel_tex.texCoord(1, 1); GlHelpers.vertex2(-8.5, -4.5); + GlHelpers.end(); GlHelpers.translate(-8.5, -9, 0); Text.render(Integer.toString(player.ammo), text_size); + GlHelpers.translate(0, 2.5, 0); + Text.render(Integer.toString(player.gun_level), text_size); + GlHelpers.translate(0, 2, 0); + Text.render(Integer.toString(player.defence_level), text_size); GlHelpers.popMatrix(); // Display all the items in the players inventory @@ -121,5 +137,8 @@ public class DisplayRenderUI Text.render(item_active.item.getName(item_active.meta), text_size); GlHelpers.popMatrix(); } + + // Render the loaded menu + Main.menu.render(); } } diff --git a/src/shootergame/display/transparent/ITransparentObject.java b/src/shootergame/display/transparent/ITransparentObject.java index a514781..439f9f1 100644 --- a/src/shootergame/display/transparent/ITransparentObject.java +++ b/src/shootergame/display/transparent/ITransparentObject.java @@ -1,11 +1,12 @@ package shootergame.display.transparent; import shootergame.display.Camera; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public interface ITransparentObject { public boolean isOpaqueTile(); - public void render(Vec2d pos, Camera camera, short meta); - public Vec2d getRenderOffset(short meta); + public Vec2d getRenderOffset(TileState state); + public void render(Vec2d pos, Camera camera, TileState state); } diff --git a/src/shootergame/display/transparent/TransparentObject.java b/src/shootergame/display/transparent/TransparentObject.java index 1c61c58..c845dd2 100644 --- a/src/shootergame/display/transparent/TransparentObject.java +++ b/src/shootergame/display/transparent/TransparentObject.java @@ -1,6 +1,7 @@ package shootergame.display.transparent; import shootergame.display.Camera; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; import shootergame.util.math.vec.Vec3d; @@ -9,13 +10,13 @@ class TransparentObject double distance; ITransparentObject object; Vec2d pos; - short meta; + TileState state; - TransparentObject(ITransparentObject object, Camera camera, Vec2d pos, short meta) { - Vec2d offset = object.getRenderOffset(meta); + TransparentObject(ITransparentObject object, Camera camera, Vec2d pos, TileState state) { + Vec2d offset = object.getRenderOffset(state); this.distance = camera.pos.distance(new Vec3d(offset.x + pos.x, offset.y + pos.y, 0)); this.object = object; this.pos = pos; - this.meta = meta; + this.state = state; } } \ No newline at end of file diff --git a/src/shootergame/display/transparent/TransparentObjects.java b/src/shootergame/display/transparent/TransparentObjects.java index 17dc30c..e8ea311 100644 --- a/src/shootergame/display/transparent/TransparentObjects.java +++ b/src/shootergame/display/transparent/TransparentObjects.java @@ -1,6 +1,8 @@ package shootergame.display.transparent; import shootergame.display.Camera; +import shootergame.tiles.Tile; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TransparentObjects @@ -11,9 +13,9 @@ public class TransparentObjects objects = new TransparentObject[0]; } - public static void register(ITransparentObject object, Camera camera, Vec2d pos, short meta) + public static void register(ITransparentObject object, Camera camera, Vec2d pos, TileState state) { - TransparentObject r_to = new TransparentObject(object, camera, pos, meta); + TransparentObject r_to = new TransparentObject(object, camera, pos, state); TransparentObject[] objects_n = new TransparentObject[objects.length + 1]; boolean added = false; int upto = 0; @@ -49,7 +51,7 @@ public class TransparentObjects { // Loop over the objects and render all of them for(TransparentObject to : objects) { - to.object.render(to.pos, camera, to.meta); + to.object.render(to.pos, camera, to.state); } } } diff --git a/src/shootergame/entity/Entity.java b/src/shootergame/entity/Entity.java index b856a9e..28cc89f 100644 --- a/src/shootergame/entity/Entity.java +++ b/src/shootergame/entity/Entity.java @@ -68,14 +68,14 @@ public class Entity implements ITransparentObject } @Override - public void render(Vec2d pos, Camera camera, short meta) { + public void render(Vec2d pos, Camera camera, TileState state) { this.render(pos, camera); } public void doRender(Vec2d pos, Camera camera) { if(this.opaqueTile) { - TransparentObjects.register(this, camera, pos, (short)0); + TransparentObjects.register(this, camera, pos, null); } else { @@ -133,8 +133,8 @@ public class Entity implements ITransparentObject Vec2i tpos = new Vec2i(MathHelpers.floor(pos.x)+0, MathHelpers.floor(pos.y)+0); // Activate both tiles - tile_front.tile.onActivated(layer, tpos, this, tile_front.meta); - tile_back.tile.onActivated(layer, tpos, this, tile_back.meta); + tile_front.tile.onActivated(layer, tpos, this, tile_front); + tile_back.tile.onActivated(layer, tpos, this, tile_back); } public void activateSteppedOnTile() @@ -144,8 +144,8 @@ public class Entity implements ITransparentObject Vec2i tpos = new Vec2i(MathHelpers.floor(pos.x)+0, MathHelpers.floor(pos.y)+0); // Activate both tiles - tile_front.tile.onWalkedOn(chunk, layer, tpos, this, tile_front.meta); - tile_back.tile.onWalkedOn(chunk, layer, tpos, this, tile_back.meta); + tile_front.tile.onWalkedOn(chunk, layer, tpos, this, tile_front); + tile_back.tile.onWalkedOn(chunk, layer, tpos, this, tile_back); } @@ -211,7 +211,7 @@ public class Entity implements ITransparentObject } @Override - public Vec2d getRenderOffset(short meta) { + public Vec2d getRenderOffset(TileState state) { return new Vec2d(0, 0); } } diff --git a/src/shootergame/entity/EntityEventHandler.java b/src/shootergame/entity/EntityEventHandler.java index c44b2f8..94bbbbc 100644 --- a/src/shootergame/entity/EntityEventHandler.java +++ b/src/shootergame/entity/EntityEventHandler.java @@ -20,6 +20,10 @@ public class EntityEventHandler implements IMainloopTask @Override public void MainLoopUpdate() { + if(Main.game_paused) { + return; + } + // Update the world and spawn random entities Main.world.tickEntities(); Main.world.spawnRandomEntities(); diff --git a/src/shootergame/entity/EntityExplosion.java b/src/shootergame/entity/EntityExplosion.java new file mode 100644 index 0000000..77ef762 --- /dev/null +++ b/src/shootergame/entity/EntityExplosion.java @@ -0,0 +1,115 @@ +package shootergame.entity; + +import shootergame.Main; +import shootergame.entity.particle.ParticleBlood; +import shootergame.entity.particle.ParticleBreak; +import shootergame.entity.particle.ParticleSmoke; +import shootergame.init.Sounds; +import shootergame.init.Tiles; +import shootergame.util.math.MathHelpers; +import shootergame.util.math.TileState; +import shootergame.util.math.vec.Vec2d; +import shootergame.util.math.vec.Vec2i; +import shootergame.util.math.vec.Vec3d; +import shootergame.world.chunk.Chunk; +import shootergame.world.layer.Layer; + +public class EntityExplosion extends Entity +{ + private double damage; + private int radius; + + public EntityExplosion(Vec2d pos, int radius, double damage) + { + this.pos = pos; + this.damage = damage; + this.radius = radius; + } + + @Override + public void tick(Chunk chunk, Layer layer) { + super.tick(chunk, layer); + + boolean killed_entities = false; + + // Kill all the nearby entities + for(Entity e : layer.getNearbyEntities(pos, radius)) + { + // Is this entity alive + if(e instanceof EntityAlive) + { + EntityAlive ea = (EntityAlive)e; + + // Remove some health from the entity based on were the entity is + killed_entities = true; + double distance = e.pos.distance(pos); + + if(distance == 0) { + ea.removeHealth(damage); + } + + else { + ea.removeHealth(damage / distance); + } + } + } + + // Loop over the tiles around the tnt + for(int ex=-radius;ex blackened_gradient) blackened_gradient = bts.meta; + } + + // Set the tiles + if(!bts.tile.unbreakable) { + l.setBackTile(new TileState(ets.tile, blackened_gradient), tpos); + l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), bts)); + } + + if(!fts.tile.unbreakable) { + l.setFrontTile(Tiles.VOID.getDefaultState(), tpos); + l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), fts)); + } + + // Spawn some blood if entities were killed + if(killed_entities) + l.spawnEntity(new ParticleBlood(rand, new Vec2d(px, py), py)); + + // Spawn some smoke + l.spawnEntity(new ParticleSmoke(new Vec2d(px, py))); + } + } + } + + // Play the explosion sound + Sounds.EXPLOSION.play(new Vec3d(pos.x, pos.y, 0), 1); + + // Kill the explosion entity + kill(); + } +} diff --git a/src/shootergame/entity/EntityItem.java b/src/shootergame/entity/EntityItem.java index ac1cc42..fa874c2 100644 --- a/src/shootergame/entity/EntityItem.java +++ b/src/shootergame/entity/EntityItem.java @@ -1,9 +1,9 @@ package shootergame.entity; import shootergame.display.Camera; -import shootergame.items.ItemStack; import shootergame.util.gl.GlHelpers; import shootergame.util.gl.texture.TextureReference; +import shootergame.util.math.ItemStack; import shootergame.util.math.random.RandomHelpers; import shootergame.util.math.vec.Vec2d; import shootergame.world.chunk.Chunk; diff --git a/src/shootergame/entity/EntityTnt.java b/src/shootergame/entity/EntityTnt.java index 8d146a2..7178de6 100644 --- a/src/shootergame/entity/EntityTnt.java +++ b/src/shootergame/entity/EntityTnt.java @@ -1,20 +1,10 @@ package shootergame.entity; -import shootergame.Main; import shootergame.display.Camera; -import shootergame.entity.particle.ParticleBlood; -import shootergame.entity.particle.ParticleBreak; -import shootergame.entity.particle.ParticleSmoke; import shootergame.entity.particle.ParticleSpark; -import shootergame.init.Sounds; import shootergame.init.Textures; -import shootergame.init.Tiles; import shootergame.util.gl.GlHelpers; -import shootergame.util.math.MathHelpers; -import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; -import shootergame.util.math.vec.Vec2i; -import shootergame.util.math.vec.Vec3d; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -24,8 +14,9 @@ public class EntityTnt extends EntityVertical private double velocity_up; private int explode_time; private int explode_radius; + private double explode_damage; - public EntityTnt(Vec2d pos, double angle, int explode_radius) { + public EntityTnt(Vec2d pos, double angle, int explode_radius, double explode_damage) { super(Textures.ENTITY_TNT, new Vec2d(0.5, 0.5)); velocity_up = 0.01; @@ -34,6 +25,7 @@ public class EntityTnt extends EntityVertical this.explode_radius = explode_radius; this.crossUnWalkable = true; this.goThroughSolid = false; + this.explode_damage = explode_damage; // Set to 2.5 seconds this.explode_time = 250; @@ -60,74 +52,8 @@ public class EntityTnt extends EntityVertical explode_time -= 1; if(explode_time < 0) { - // Loop over the tiles around the tnt - for(int ex=-explode_radius;ex blackened_gradient) blackened_gradient = bts.meta; - } - - // Set the tiles - if(!bts.tile.unbreakable) { - l.setBackTile(new TileState(ets.tile, (short)blackened_gradient), tpos); - l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), bts)); - } - - if(!fts.tile.unbreakable) { - l.setFrontTile(Tiles.VOID.getDefaultState(), tpos); - l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), fts)); - } - - boolean killed_entities = false; - - // Kill all the nearby entities - for(Entity e : layer.getNearbyEntities(pos, explode_radius)) - { - // Is this entity alive - if(e instanceof EntityAlive) - { - // Add 1000 damage to the entity - killed_entities = true; - ((EntityAlive)e).removeHealth(10000); - } - } - - // Spawn some blood if entities were killed - if(killed_entities) - l.spawnEntity(new ParticleBlood(rand, new Vec2d(px, py), py)); - - // Spawn some smoke - l.spawnEntity(new ParticleSmoke(new Vec2d(px, py))); - } - } - } - - // Play the explosion sound - Sounds.EXPLOSION.play(new Vec3d(pos.x, pos.y, height), 1); + // Create an explosion + layer.spawnEntity(new EntityExplosion(pos, explode_radius, explode_damage)); // Delete the entity kill(); diff --git a/src/shootergame/entity/EntityZombie.java b/src/shootergame/entity/EntityZombie.java index 6087416..0c63b54 100644 --- a/src/shootergame/entity/EntityZombie.java +++ b/src/shootergame/entity/EntityZombie.java @@ -40,7 +40,7 @@ public class EntityZombie extends EntityVertical implements EntityAlive // Move forward towards the player this.angle = Math.toDegrees(angle) + 180; - this.angle += noise_movement.eval(time, 0)*60; + this.angle += noise_movement.eval(time, 0)*80; this.moveForward(); if(noise_gun_fire.eval(time, 0) > 0) diff --git a/src/shootergame/entity/EntityZombieBomber.java b/src/shootergame/entity/EntityZombieBomber.java new file mode 100644 index 0000000..745c8b3 --- /dev/null +++ b/src/shootergame/entity/EntityZombieBomber.java @@ -0,0 +1,107 @@ +package shootergame.entity; + +import shootergame.Main; +import shootergame.init.Textures; +import shootergame.util.math.random.OpenSimplexNoise; +import shootergame.util.math.vec.Vec2d; +import shootergame.world.chunk.Chunk; +import shootergame.world.layer.Layer; + +public class EntityZombieBomber extends EntityVertical implements EntityAlive +{ + private int time = 0; + private OpenSimplexNoise noise_movement; + private double health = 100; + private double max_health = 100; + + public EntityZombieBomber(Vec2d pos) { + super(Textures.ENTITY_ZOMBIE_BOMBER, new Vec2d(1, 1)); + + this.noise_movement = new OpenSimplexNoise(rand.nextLong()); + this.pos = pos; + + this.goThroughSolid = false; + this.crossUnWalkable = false; + this.isSolid = true; + } + + private void explode(Layer layer) + { + kill(); + layer.spawnEntity(new EntityExplosion(pos, 6, 5000)); + } + + @Override + public void moveBackward() { + super.moveBackward(0.06); + } + + @Override + public void moveForward() { + super.moveForward(0.06); + } + + @Override + public void tick(Chunk chunk, Layer layer) { + super.tick(chunk, layer); + + // Explode if the zombie is dead + if(health <= 0) { + this.explode(layer); + return; + } + + // Get the angle between the player and the zombie + double angle = Math.atan2(pos.x - Main.player.pos.x, pos.y - Main.player.pos.y); + + // Move forward towards the player + this.angle = Math.toDegrees(angle) + 180; + this.angle += noise_movement.eval(time, 0)*80; + this.moveForward(); + + // Explode if the zombie is in radius of the player + if(Main.player.pos.squareDistance(pos) < 3) { + this.explode(layer); + return; + } + + // Increase time + time += 0.001; + } + + @Override + public void addHealth(double amount) { + this.health += amount; + } + + @Override + public void removeHealth(double amount) { + this.health -= amount; + } + + @Override + public double getHealth() { + return health; + } + + @Override + public void resetHealth() { + this.health = max_health; + } + + @Override + public void clearHealth() { + this.health = 0; + } + + @Override + public double maxHealth() { + return max_health; + } + + @Override + public void setHealth(double health) { + this.health = health; + } + +} diff --git a/src/shootergame/entity/particle/ParticleSmoke.java b/src/shootergame/entity/particle/ParticleSmoke.java index dee573a..edcf4fd 100644 --- a/src/shootergame/entity/particle/ParticleSmoke.java +++ b/src/shootergame/entity/particle/ParticleSmoke.java @@ -5,6 +5,7 @@ import shootergame.display.Camera; import shootergame.entity.EntityVertical; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.random.RandomHelpers; import shootergame.util.math.vec.Vec2d; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -13,10 +14,18 @@ public class ParticleSmoke extends EntityVertical { double height = 0; double opacity = 1; + double height_speed; + double disappear_speed; public ParticleSmoke(Vec2d pos) { super(Textures.PARTICLE_SMOKE_RANDOM.getTexture(), new Vec2d(1, 1)); - this.pos = pos; + + this.pos = new Vec2d( + RandomHelpers.randrange(rand, 1000)/1000.0 - 0.5 + pos.x, + RandomHelpers.randrange(rand, 1000)/1000.0 - 0.5 + pos.y); + + height_speed = (rand.nextDouble() + 0.5) / 100; + disappear_speed = (rand.nextDouble() + 0.5) / 250; } @Override @@ -38,8 +47,8 @@ public class ParticleSmoke extends EntityVertical kill(); } - height += 0.001; - opacity -= 0.001; + height += height_speed; + opacity -= disappear_speed; } } diff --git a/src/shootergame/entity/player/EntityPlayer.java b/src/shootergame/entity/player/EntityPlayer.java index c04e59b..3d60183 100644 --- a/src/shootergame/entity/player/EntityPlayer.java +++ b/src/shootergame/entity/player/EntityPlayer.java @@ -9,11 +9,12 @@ import shootergame.entity.EntityBullet; import shootergame.entity.EntityInventory; import shootergame.entity.EntityItem; import shootergame.entity.EntityVertical; +import shootergame.init.Items; import shootergame.init.Textures; import shootergame.inventory.Inventory; -import shootergame.items.ItemStack; import shootergame.util.gl.GlHelpers; import shootergame.util.gl.texture.TextureReference; +import shootergame.util.math.ItemStack; import shootergame.util.math.MathHelpers; import shootergame.util.math.vec.Vec2d; import shootergame.world.chunk.Chunk; @@ -41,6 +42,9 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI public int ammo = 1000; + public int defence_level = 0; + public int gun_level = 0; + private static final Vec2d size = new Vec2d(1, 1); public EntityPlayer() { @@ -60,9 +64,8 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI @Override public void tick(Chunk chunk, Layer layer) { - - // Player deaths - if(health < 0) + // Handle player deaths + if(health <= 0) { if(Cheats.god_mode) { this.resetHealth(); @@ -162,7 +165,7 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI if(dead || in_animation) return; bullet_frequency += 1; - bullet_frequency %= 10; + bullet_frequency %= 10 - gun_level*2; // Is there enough ammo and are the bullets at the right frequency if(bullet_frequency == 0 && ammo > 0) @@ -193,8 +196,8 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI @Override public void removeHealth(double amount) { + amount = amount * amount / (amount + defence_level*2); health -= amount; - if(health < 0) health = -1; } @Override diff --git a/src/shootergame/init/Textures.java b/src/shootergame/init/Textures.java index 1417f7c..3a8f6a1 100644 --- a/src/shootergame/init/Textures.java +++ b/src/shootergame/init/Textures.java @@ -49,6 +49,9 @@ public class Textures public static final TextureReference UI_ITEM_SLOTS = texmap.getTextureReference(0, 12, 13, 15); public static final TextureReference UI_ACTIVE_SLOT = texmap.getTextureReference(12, 14, 13, 15); + public static final TextureReference UI_DEFENCE_LEVEL = texmap.getTextureReference(0, 1, 15, 16); + public static final TextureReference UI_GUN_LEVEL = texmap.getTextureReference(1, 2, 15, 16); + public static final TextureReference ITEM_HEALTH_POTION = texmap.getTextureReference(0, 1, 5, 6); public static final TextureReference ITEM_AMMO_BOX = texmap.getTextureReference(1, 2, 5, 6); public static final TextureReference ITEM_GUN_UPGRADE = texmap.getTextureReference(0, 1, 4, 5); @@ -79,6 +82,14 @@ public class Textures texmap.getTextureReference(3, 4, 3, 4) ); + // Zombie Bomber + public static final TextureReference ENTITY_ZOMBIE_BOMBER = new AnimationReference(10, + texmap.getTextureReference(2, 3, 15, 16), + texmap.getTextureReference(3, 4, 15, 16), + texmap.getTextureReference(4, 5, 15, 16), + texmap.getTextureReference(5, 6, 15, 16) + ); + // Water public static final TextureReference TILE_WATER = new AnimationReference(10, texmap.getTextureReference(0, 1, 8, 9), diff --git a/src/shootergame/input/JoystickCallback.java b/src/shootergame/input/JoystickCallback.java index 46910d7..e243ac2 100644 --- a/src/shootergame/input/JoystickCallback.java +++ b/src/shootergame/input/JoystickCallback.java @@ -9,6 +9,8 @@ import org.lwjgl.glfw.GLFWJoystickCallbackI; import mainloop.task.IMainloopTask; import shootergame.Main; +import shootergame.menu.MenuNone; +import shootergame.menu.MenuPause; import shootergame.util.math.MathHelpers; public class JoystickCallback implements GLFWJoystickCallbackI, IMainloopTask @@ -22,6 +24,8 @@ public class JoystickCallback implements GLFWJoystickCallbackI, IMainloopTask private static boolean hotbar_l = false; private static boolean hotbar_r = false; + + private static boolean startButton_last = false; @Override public void invoke(int jid, int event) @@ -146,91 +150,116 @@ public class JoystickCallback implements GLFWJoystickCallbackI, IMainloopTask dpad_down = buttons.get(14) == 1 || buttons.get(17) == 1 || dpad_down; } - // Is the left stick moved into a position (movement stick) - if(left_x > 0.3 || left_x < -0.3 || left_y > 0.3 || left_y < -0.3) + // Only check for these input commands if the game isn't paused + if(!Main.game_paused) { - // Get the the angle - double angle = Math.toDegrees(Math.atan2(left_y, left_x)) + 90; - - // Move the player in the left sticks angle - Main.player.moveTowards(angle); - - // Set the players moving to true - Main.player.moving = true; - } - - // Set the players moving to false - else Main.player.moving = false; - - // Is the right x axis stick moved into a position (camera stick) - if(right_x > 0.3 || right_x < -0.3) { - Main.player.angle += right_x; - } - - // Gun trigger - if(right_trigger > 0.3) { - Main.player.fireBullet(0); - } - - // Item trigger - if(left_trigger > 0.3) { - if(!activateItem_last) + // Is the left stick moved into a position (movement stick) + if(left_x > 0.3 || left_x < -0.3 || left_y > 0.3 || left_y < -0.3) { - activateItem_last = true; - Main.player.activateItem(); + // Get the the angle + double angle = Math.toDegrees(Math.atan2(left_y, left_x)) + 90; + + // Move the player in the left sticks angle + Main.player.moveTowards(angle); + + // Set the players moving to true + Main.player.moving = true; + } + + // Set the players moving to false + else Main.player.moving = false; + + // Is the right x axis stick moved into a position (camera stick) + if(right_x > 0.3 || right_x < -0.3) { + Main.player.angle += right_x; + } + + // Gun trigger + if(right_trigger > 0.3) { + Main.player.fireBullet(0); + } + + // Item trigger + if(left_trigger > 0.3) { + if(!activateItem_last) + { + activateItem_last = true; + Main.player.activateItem(); + } + } + + else { + activateItem_last = false; + } + + if(shoulder_left) { + if(!hotbar_l) { + hotbar_l = true; + Main.player.inventory_hand -= 1; + Main.player.inventory_hand = MathHelpers.mod(Main.player.inventory_hand, 6); + } + } + + else if(hotbar_l) { + hotbar_l = false; + } + + if(shoulder_right) { + if(!hotbar_r) { + hotbar_r = true; + Main.player.inventory_hand += 1; + Main.player.inventory_hand = MathHelpers.mod(Main.player.inventory_hand, 6); + } + } + + else if(hotbar_r) { + hotbar_r = false; + } + + // Activate tile + if(button_x) { + if(!activateTile_last) { + Main.player.activateTile(); + activateTile_last = true; + } + } + + else if(activateTile_last) { + activateTile_last = false; + } + + // Drop item + if(button_b) { + if(!dropItem_last) { + Main.player.dropItem(); + dropItem_last = true; + } + } + + else if(dropItem_last) { + dropItem_last = false; } } - else { - activateItem_last = false; - } - - if(shoulder_left) { - if(!hotbar_l) { - hotbar_l = true; - Main.player.inventory_hand -= 1; - Main.player.inventory_hand = MathHelpers.mod(Main.player.inventory_hand, 6); + // Pause and unpause the game + if(button_start) { + if(!startButton_last) { + startButton_last = true; + + if(Main.game_paused) { + Main.menu = new MenuNone(); + Main.game_paused = false; + } + + else { + Main.menu = new MenuPause(); + Main.game_paused = true; + } } } - else if(hotbar_l) { - hotbar_l = false; - } - - if(shoulder_right) { - if(!hotbar_r) { - hotbar_r = true; - Main.player.inventory_hand += 1; - Main.player.inventory_hand = MathHelpers.mod(Main.player.inventory_hand, 6); - } - } - - else if(hotbar_r) { - hotbar_r = false; - } - - // Activate tile - if(button_x) { - if(!activateTile_last) { - Main.player.activateTile(); - activateTile_last = true; - } - } - - else if(activateTile_last) { - activateTile_last = false; - } - - // Drop item - if(button_b) { - if(!dropItem_last) { - Main.player.dropItem(); - dropItem_last = true; - } - } - - else if(dropItem_last) { - dropItem_last = false; + else if(startButton_last) { + startButton_last = false; } } diff --git a/src/shootergame/input/KeyCallback.java b/src/shootergame/input/KeyCallback.java index 99b803a..f107585 100644 --- a/src/shootergame/input/KeyCallback.java +++ b/src/shootergame/input/KeyCallback.java @@ -1,18 +1,19 @@ package shootergame.input; -import static org.lwjgl.glfw.GLFW.GLFW_KEY_A; -import static org.lwjgl.glfw.GLFW.GLFW_KEY_D; -import static org.lwjgl.glfw.GLFW.GLFW_KEY_ENTER; -import static org.lwjgl.glfw.GLFW.GLFW_KEY_S; -import static org.lwjgl.glfw.GLFW.GLFW_KEY_W; -import static org.lwjgl.glfw.GLFW.GLFW_RELEASE; +import static org.lwjgl.glfw.GLFW.*; import org.lwjgl.glfw.GLFWKeyCallbackI; import shootergame.Main; +import shootergame.menu.MenuNone; +import shootergame.menu.MenuPause; public class KeyCallback implements GLFWKeyCallbackI { + private boolean itemUse_last = false; + private boolean itemDrop_last = false; + private boolean esc_last = false; + private boolean action_last = false; @Override public void invoke(long window, int key, int scancode, int action, int mods) @@ -20,24 +21,103 @@ public class KeyCallback implements GLFWKeyCallbackI boolean pressed = ! ( action == GLFW_RELEASE ); - if(key == GLFW_KEY_W) { - Main.player.MOVE_FORWARD = pressed; + if(!Main.game_paused && !Main.player.dead && !Main.player.in_animation) + { + if(key == GLFW_KEY_W) { + Main.player.MOVE_FORWARD = pressed; + } + + if(key == GLFW_KEY_S) { + Main.player.MOVE_BACKWARD = pressed; + } + + if(key == GLFW_KEY_A) { + Main.player.MOVE_LEFT = pressed; + } + + if(key == GLFW_KEY_D) { + Main.player.MOVE_RIGHT = pressed; + } + + if(key == GLFW_KEY_ENTER) { + Main.player.GUN = pressed; + } + + if(key == GLFW_KEY_1 && pressed) { + Main.player.inventory_hand = 0; + } + if(key == GLFW_KEY_2 && pressed) { + Main.player.inventory_hand = 1; + } + if(key == GLFW_KEY_3 && pressed) { + Main.player.inventory_hand = 2; + } + if(key == GLFW_KEY_4 && pressed) { + Main.player.inventory_hand = 3; + } + if(key == GLFW_KEY_5 && pressed) { + Main.player.inventory_hand = 4; + } + if(key == GLFW_KEY_6 && pressed) { + Main.player.inventory_hand = 5; + } + + if(key == GLFW_KEY_RIGHT_SHIFT) { + if(pressed) { + if(!itemUse_last) { + itemUse_last = true; + Main.player.activateItem(); + } + } + else if(itemUse_last) { + itemUse_last = false; + } + } + + if(key == GLFW_KEY_E) { + if(pressed) { + if(!action_last) { + action_last = true; + Main.player.activateTile(); + } + } + else if(action_last) { + action_last = false; + } + } + + if(key == GLFW_KEY_Q) { + if(pressed) { + if(!itemDrop_last) { + itemDrop_last = true; + Main.player.dropItem(); + } + } + else if(itemDrop_last) { + itemDrop_last = false; + } + } } - if(key == GLFW_KEY_S) { - Main.player.MOVE_BACKWARD = pressed; - } - - if(key == GLFW_KEY_A) { - Main.player.MOVE_LEFT = pressed; - } - - if(key == GLFW_KEY_D) { - Main.player.MOVE_RIGHT = pressed; - } - - if(key == GLFW_KEY_ENTER) { - Main.player.GUN = pressed; + if(key == GLFW_KEY_ESCAPE) { + if(pressed) { + if(!esc_last) { + esc_last = true; + + if(Main.game_paused) { + Main.game_paused = false; + Main.menu = new MenuNone(); + } + + else { + Main.game_paused = true; + Main.menu = new MenuPause(); + } + } + } + else if(esc_last) { + esc_last = false; + } } } diff --git a/src/shootergame/inventory/IInventory.java b/src/shootergame/inventory/IInventory.java index c8c7cae..fa7eb33 100644 --- a/src/shootergame/inventory/IInventory.java +++ b/src/shootergame/inventory/IInventory.java @@ -1,6 +1,6 @@ package shootergame.inventory; -import shootergame.items.ItemStack; +import shootergame.util.math.ItemStack; public interface IInventory { diff --git a/src/shootergame/inventory/Inventory.java b/src/shootergame/inventory/Inventory.java index 0b1c067..0e9c0c0 100644 --- a/src/shootergame/inventory/Inventory.java +++ b/src/shootergame/inventory/Inventory.java @@ -1,6 +1,6 @@ package shootergame.inventory; -import shootergame.items.ItemStack; +import shootergame.util.math.ItemStack; public class Inventory implements IInventory { diff --git a/src/shootergame/items/Item.java b/src/shootergame/items/Item.java index 3fe8912..6fe24ed 100644 --- a/src/shootergame/items/Item.java +++ b/src/shootergame/items/Item.java @@ -5,6 +5,7 @@ import shootergame.entity.EntityInventory; import shootergame.inventory.Inventory; import shootergame.util.gl.GlHelpers; import shootergame.util.gl.texture.TextureReference; +import shootergame.util.math.ItemStack; import shootergame.util.math.vec.Vec2d; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; diff --git a/src/shootergame/items/ItemAmmo.java b/src/shootergame/items/ItemAmmo.java index 93821ce..453c2bb 100644 --- a/src/shootergame/items/ItemAmmo.java +++ b/src/shootergame/items/ItemAmmo.java @@ -3,6 +3,7 @@ package shootergame.items; import shootergame.entity.Entity; import shootergame.entity.player.EntityPlayer; import shootergame.init.Textures; +import shootergame.util.math.ItemStack; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; diff --git a/src/shootergame/items/ItemDefenceUpgrade.java b/src/shootergame/items/ItemDefenceUpgrade.java index 003d048..4ac23bf 100644 --- a/src/shootergame/items/ItemDefenceUpgrade.java +++ b/src/shootergame/items/ItemDefenceUpgrade.java @@ -1,7 +1,9 @@ package shootergame.items; +import shootergame.Main; import shootergame.entity.Entity; import shootergame.init.Textures; +import shootergame.util.math.ItemStack; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -15,10 +17,12 @@ public class ItemDefenceUpgrade extends Item } @Override - public void onAction(ItemStack stack, Layer layer, Chunk chunk, Entity entity) { - super.onAction(stack, layer, chunk, entity); - - + public void onAction(ItemStack stack, Layer layer, Chunk chunk, Entity entity) + { + if(Main.player.defence_level < stack.meta) { + super.onAction(stack, layer, chunk, entity); + Main.player.defence_level = stack.meta; + } } @Override diff --git a/src/shootergame/items/ItemEmpty.java b/src/shootergame/items/ItemEmpty.java index f2ddb24..11790b1 100644 --- a/src/shootergame/items/ItemEmpty.java +++ b/src/shootergame/items/ItemEmpty.java @@ -1,6 +1,7 @@ package shootergame.items; import shootergame.entity.Entity; +import shootergame.util.math.ItemStack; import shootergame.util.math.vec.Vec2d; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; diff --git a/src/shootergame/items/ItemGunUpgrade.java b/src/shootergame/items/ItemGunUpgrade.java index 863e409..84d8808 100644 --- a/src/shootergame/items/ItemGunUpgrade.java +++ b/src/shootergame/items/ItemGunUpgrade.java @@ -1,6 +1,11 @@ package shootergame.items; +import shootergame.Main; +import shootergame.entity.Entity; import shootergame.init.Textures; +import shootergame.util.math.ItemStack; +import shootergame.world.chunk.Chunk; +import shootergame.world.layer.Layer; public class ItemGunUpgrade extends Item { @@ -11,6 +16,15 @@ public class ItemGunUpgrade extends Item this.texture = Textures.ITEM_GUN_UPGRADE; } + @Override + public void onAction(ItemStack stack, Layer layer, Chunk chunk, Entity entity) + { + if(Main.player.gun_level < stack.meta) { + super.onAction(stack, layer, chunk, entity); + Main.player.gun_level = stack.meta; + } + } + @Override public String getName(short meta) { return "Gun Upgrade level "+meta; diff --git a/src/shootergame/items/ItemHealthPotion.java b/src/shootergame/items/ItemHealthPotion.java index 7197dcf..9ada670 100644 --- a/src/shootergame/items/ItemHealthPotion.java +++ b/src/shootergame/items/ItemHealthPotion.java @@ -3,6 +3,7 @@ package shootergame.items; import shootergame.entity.Entity; import shootergame.entity.EntityAlive; import shootergame.init.Textures; +import shootergame.util.math.ItemStack; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; diff --git a/src/shootergame/items/ItemTnt.java b/src/shootergame/items/ItemTnt.java index 9513070..7d4cbf7 100644 --- a/src/shootergame/items/ItemTnt.java +++ b/src/shootergame/items/ItemTnt.java @@ -3,6 +3,7 @@ package shootergame.items; import shootergame.entity.Entity; import shootergame.entity.EntityTnt; import shootergame.init.Textures; +import shootergame.util.math.ItemStack; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -24,7 +25,7 @@ public class ItemTnt extends Item public void onAction(ItemStack stack, Layer layer, Chunk chunk, Entity entity) { super.onAction(stack, layer, chunk, entity); - layer.spawnEntity(new EntityTnt(entity.pos.copy(), entity.angle, stack.meta)); + layer.spawnEntity(new EntityTnt(entity.pos.copy(), entity.angle, stack.meta, 5000)); } } diff --git a/src/shootergame/menu/Menu.java b/src/shootergame/menu/Menu.java new file mode 100644 index 0000000..d04501d --- /dev/null +++ b/src/shootergame/menu/Menu.java @@ -0,0 +1,8 @@ +package shootergame.menu; + +public abstract class Menu +{ + public boolean doGameloop = false; + + public abstract void render(); +} diff --git a/src/shootergame/menu/MenuNone.java b/src/shootergame/menu/MenuNone.java new file mode 100644 index 0000000..1e464f0 --- /dev/null +++ b/src/shootergame/menu/MenuNone.java @@ -0,0 +1,12 @@ +package shootergame.menu; + +public class MenuNone extends Menu +{ + public MenuNone() { + this.doGameloop = true; + } + + @Override + public void render() { + } +} diff --git a/src/shootergame/menu/MenuPause.java b/src/shootergame/menu/MenuPause.java new file mode 100644 index 0000000..283aef8 --- /dev/null +++ b/src/shootergame/menu/MenuPause.java @@ -0,0 +1,31 @@ +package shootergame.menu; + +import shootergame.text.Text; +import shootergame.util.gl.GlHelpers; +import shootergame.util.math.vec.Vec2d; + +public class MenuPause extends Menu +{ + @Override + public void render() + { + // Render the screen darkening of the gameplay + GlHelpers.disableTexture2d(); + GlHelpers.color4(0, 0, 0, 0.5); + GlHelpers.begin(); + GlHelpers.vertex2(-10, -10); + GlHelpers.vertex2(-10, 10); + GlHelpers.vertex2(10, 10); + GlHelpers.vertex2(10, -10); + GlHelpers.end(); + GlHelpers.color4(1, 1, 1, 1); + GlHelpers.enableTexture2d(); + + // Render some text to say the game is paused + GlHelpers.pushMatrix(); + GlHelpers.translate(-2, 1, 0); + Text.render("Game Paused", new Vec2d(1, 0.4)); + GlHelpers.popMatrix(); + } + +} diff --git a/src/shootergame/tiles/Tile.java b/src/shootergame/tiles/Tile.java index 5022f80..8310bb2 100644 --- a/src/shootergame/tiles/Tile.java +++ b/src/shootergame/tiles/Tile.java @@ -29,17 +29,17 @@ public class Tile implements ITransparentObject } @Override - public void render(Vec2d pos, Camera camera, short meta) { + public void render(Vec2d pos, Camera camera, TileState state) { } - public void doRender(Vec2d pos, Camera camera, short meta) + public void doRender(Vec2d pos, Camera camera, TileState state) { if(this.opaqueTile) { - TransparentObjects.register(this, camera, pos, meta); + TransparentObjects.register(this, camera, pos, state); } else { - this.render(pos, camera, meta); + this.render(pos, camera, state); } } @@ -48,18 +48,18 @@ public class Tile implements ITransparentObject return this.opaqueTile; } - public void onWalkedOn(Chunk chunk, Layer layer, Vec2i pos, Entity entity, short meta) { + public void onWalkedOn(Chunk chunk, Layer layer, Vec2i pos, Entity entity, TileState state) { } @Override - public Vec2d getRenderOffset(short meta) { + public Vec2d getRenderOffset(TileState ts) { return new Vec2d(0.5, 0.5); } public TileState getDefaultState() { - return new TileState(this, (short)0); + return new TileState(this, 0); } - public void onActivated(Layer layer, Vec2i tpos, Entity entity, short meta) { + public void onActivated(Layer layer, Vec2i tpos, Entity entity, TileState state) { } } diff --git a/src/shootergame/tiles/TileChest.java b/src/shootergame/tiles/TileChest.java index d843a82..ea0916b 100644 --- a/src/shootergame/tiles/TileChest.java +++ b/src/shootergame/tiles/TileChest.java @@ -7,7 +7,8 @@ import shootergame.entity.Entity; import shootergame.entity.EntityItem; import shootergame.init.Items; import shootergame.init.Textures; -import shootergame.items.ItemStack; +import shootergame.util.math.ItemStack; +import shootergame.util.math.TileState; import shootergame.util.math.random.RandomHelpers; import shootergame.util.math.vec.Vec2d; import shootergame.util.math.vec.Vec2i; @@ -32,13 +33,13 @@ public class TileChest extends TileVertical } @Override - public void onActivated(Layer layer, Vec2i tpos, Entity entity, short meta) { - super.onActivated(layer, tpos, entity, meta); + public void onActivated(Layer layer, Vec2i tpos, Entity entity, TileState state) { + super.onActivated(layer, tpos, entity, state); Chunk chunk = layer.getChunk(tpos); Random rand = Main.rand; - if(meta == CHEST_CAVES) + if(state.meta == CHEST_CAVES) { // Ammo spawnItem(chunk, tpos, new ItemStack(Items.AMMO, RandomHelpers.randrange(rand, 100), (short)1)); @@ -47,7 +48,7 @@ public class TileChest extends TileVertical spawnItem(chunk, tpos, new ItemStack(Items.TNT, RandomHelpers.randrange(rand, 2), (short)10)); // Health potions - spawnItem(chunk, tpos, new ItemStack(Items.HEALTH_POTION, RandomHelpers.randrange(rand, 10), (short)20)); + spawnItem(chunk, tpos, new ItemStack(Items.HEALTH_POTION, RandomHelpers.randrange(rand, 4), (short)50)); // Gun upgrade if(RandomHelpers.randrange(rand, 5) == 0) { diff --git a/src/shootergame/tiles/TileDirt.java b/src/shootergame/tiles/TileDirt.java index 5ba579b..0689ef0 100644 --- a/src/shootergame/tiles/TileDirt.java +++ b/src/shootergame/tiles/TileDirt.java @@ -3,6 +3,7 @@ package shootergame.tiles; import shootergame.display.Camera; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileDirt extends TileFlat @@ -13,9 +14,9 @@ public class TileDirt extends TileFlat } @Override - public void render(Vec2d pos, Camera camera, short meta) { - GlHelpers.color4(1, 1, 1, (Short.MAX_VALUE - (double)meta) / Short.MAX_VALUE); - super.render(pos, camera, meta); + public void render(Vec2d pos, Camera camera, TileState state) { + GlHelpers.color4(1, 1, 1, (Byte.MAX_VALUE - (double)state.meta) / Byte.MAX_VALUE); + super.render(pos, camera, state); GlHelpers.color4(1, 1, 1, 1); } diff --git a/src/shootergame/tiles/TileFlat.java b/src/shootergame/tiles/TileFlat.java index c87448c..73df6e2 100644 --- a/src/shootergame/tiles/TileFlat.java +++ b/src/shootergame/tiles/TileFlat.java @@ -4,6 +4,7 @@ import shootergame.display.Camera; import shootergame.util.gl.GlHelpers; import shootergame.util.gl.texture.IHasTexture; import shootergame.util.gl.texture.TextureReference; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileFlat extends Tile implements IHasTexture @@ -16,10 +17,10 @@ public class TileFlat extends Tile implements IHasTexture } @Override - public void render(Vec2d pos, Camera camera, short meta) + public void render(Vec2d pos, Camera camera, TileState state) { // Call super - super.render(pos, camera, meta); + super.render(pos, camera, state); // Render the tile GlHelpers.begin(); diff --git a/src/shootergame/tiles/TileLadderUp.java b/src/shootergame/tiles/TileLadderUp.java index d503582..ced55a9 100644 --- a/src/shootergame/tiles/TileLadderUp.java +++ b/src/shootergame/tiles/TileLadderUp.java @@ -5,6 +5,7 @@ import shootergame.Main; import shootergame.entity.Entity; import shootergame.entity.player.EntityPlayer; import shootergame.init.Textures; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; import shootergame.util.math.vec.Vec2i; import shootergame.world.layer.Layer; @@ -21,10 +22,10 @@ public class TileLadderUp extends TileVertical } @Override - public void onActivated(Layer layer, Vec2i pos, Entity entity, short meta) + public void onActivated(Layer layer, Vec2i pos, Entity entity, TileState state) { // Call super - super.onActivated(layer, pos, entity, meta); + super.onActivated(layer, pos, entity, state); // Is the entity the player if(entity == Main.player) @@ -56,7 +57,7 @@ public class TileLadderUp extends TileVertical if(player.height >= 6 && movingPlayer == 0) { movingPlayer = 1; - Main.world.setLayerID(meta); + Main.world.setLayerID(state.meta); player.height = -1; } diff --git a/src/shootergame/tiles/TileLava.java b/src/shootergame/tiles/TileLava.java index 4033eb2..e24166a 100644 --- a/src/shootergame/tiles/TileLava.java +++ b/src/shootergame/tiles/TileLava.java @@ -3,6 +3,7 @@ package shootergame.tiles; import shootergame.display.Camera; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileLava extends TileFlat @@ -15,10 +16,10 @@ public class TileLava extends TileFlat } @Override - public void render(Vec2d pos, Camera camera, short meta) { + public void render(Vec2d pos, Camera camera, TileState state) { GlHelpers.pushMatrix(); GlHelpers.translate(0, 0, 0.001); - super.render(pos, camera, meta); + super.render(pos, camera, state); GlHelpers.popMatrix(); } diff --git a/src/shootergame/tiles/TileLavaFlow.java b/src/shootergame/tiles/TileLavaFlow.java index 1d936be..dc4ece5 100644 --- a/src/shootergame/tiles/TileLavaFlow.java +++ b/src/shootergame/tiles/TileLavaFlow.java @@ -3,6 +3,7 @@ package shootergame.tiles; import shootergame.display.Camera; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileLavaFlow extends TileFlat @@ -13,10 +14,10 @@ public class TileLavaFlow extends TileFlat } @Override - public void render(Vec2d pos, Camera camera, short meta) { + public void render(Vec2d pos, Camera camera, TileState state) { GlHelpers.pushMatrix(); GlHelpers.translate(0, 0, 0.001); - super.render(pos, camera, meta); + super.render(pos, camera, state); GlHelpers.popMatrix(); } diff --git a/src/shootergame/tiles/TilePortalDown.java b/src/shootergame/tiles/TilePortalDown.java index 160f035..3c25dad 100644 --- a/src/shootergame/tiles/TilePortalDown.java +++ b/src/shootergame/tiles/TilePortalDown.java @@ -20,10 +20,10 @@ public class TilePortalDown extends TileFlat } @Override - public void onActivated(Layer layer, Vec2i pos, Entity entity, short meta) + public void onActivated(Layer layer, Vec2i pos, Entity entity, TileState state) { // Call super - super.onActivated(layer, pos, entity, meta); + super.onActivated(layer, pos, entity, state); // Is the entity the player if(entity == Main.player) @@ -67,7 +67,7 @@ public class TilePortalDown extends TileFlat Layer layer = Main.world.getLayer(); TileState ets = layer.layergen.getTileDestroyed(); if(layer.getBackTile(pos).tile != ets.tile) { - layer.setBackTile(new TileState(ets.tile, (short)0), pos); + layer.setBackTile(ets, pos); } // Exit out of this function if there is an empty space under the player @@ -85,7 +85,7 @@ public class TilePortalDown extends TileFlat } else { - layer.setBackTile(new TileState(ets.tile, (short)0), check_pos); + layer.setBackTile(new TileState(ets.tile, 0), check_pos); } } } @@ -94,7 +94,7 @@ public class TilePortalDown extends TileFlat if(player.height < -1 && movingPlayer == 0) { movingPlayer = 1; - Main.world.setLayerID(meta); + Main.world.setLayerID(state.meta); player.height = 6; } diff --git a/src/shootergame/tiles/TileStone.java b/src/shootergame/tiles/TileStone.java index 62af1d0..e8bd00e 100644 --- a/src/shootergame/tiles/TileStone.java +++ b/src/shootergame/tiles/TileStone.java @@ -3,6 +3,7 @@ package shootergame.tiles; import shootergame.display.Camera; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileStone extends TileFlat @@ -13,9 +14,9 @@ public class TileStone extends TileFlat } @Override - public void render(Vec2d pos, Camera camera, short meta) { - GlHelpers.color4(1, 1, 1, (Short.MAX_VALUE - (double)meta) / Short.MAX_VALUE); - super.render(pos, camera, meta); + public void render(Vec2d pos, Camera camera, TileState state) { + GlHelpers.color4(1, 1, 1, (Byte.MAX_VALUE - (double)state.meta) / Byte.MAX_VALUE); + super.render(pos, camera, state); GlHelpers.color4(1, 1, 1, 1); } diff --git a/src/shootergame/tiles/TileVertical.java b/src/shootergame/tiles/TileVertical.java index 724fca3..7418510 100644 --- a/src/shootergame/tiles/TileVertical.java +++ b/src/shootergame/tiles/TileVertical.java @@ -4,6 +4,7 @@ import shootergame.display.Camera; import shootergame.util.gl.VerticalRender; import shootergame.util.gl.texture.IHasTexture; import shootergame.util.gl.texture.TextureReference; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileVertical extends Tile implements IHasTexture @@ -20,8 +21,8 @@ public class TileVertical extends Tile implements IHasTexture } @Override - public void render(Vec2d pos, Camera camera, short meta) { - super.render(pos, camera, meta); + public void render(Vec2d pos, Camera camera, TileState state) { + super.render(pos, camera, state); VerticalRender.render(pos, camera, tex, size); } diff --git a/src/shootergame/tiles/TileWater.java b/src/shootergame/tiles/TileWater.java index bed882e..29431b2 100644 --- a/src/shootergame/tiles/TileWater.java +++ b/src/shootergame/tiles/TileWater.java @@ -5,6 +5,7 @@ import shootergame.entity.Entity; import shootergame.entity.particle.ParticleWater; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; import shootergame.util.math.vec.Vec2i; import shootergame.world.chunk.Chunk; @@ -19,18 +20,18 @@ public class TileWater extends TileFlat } @Override - public void render(Vec2d pos, Camera camera, short meta) { + public void render(Vec2d pos, Camera camera, TileState state) { GlHelpers.pushMatrix(); GlHelpers.translate(0, 0, 0.001); - super.render(pos, camera, meta); + super.render(pos, camera, state); GlHelpers.popMatrix(); } @Override - public void onWalkedOn(Chunk chunk, Layer layer, Vec2i pos, Entity entity, short meta) + public void onWalkedOn(Chunk chunk, Layer layer, Vec2i pos, Entity entity, TileState state) { // Call super - super.onWalkedOn(chunk, layer, pos, entity, meta); + super.onWalkedOn(chunk, layer, pos, entity, state); // Spawn some water particles for(int i=0;i<4;i++) { diff --git a/src/shootergame/tiles/TileWaterFlow.java b/src/shootergame/tiles/TileWaterFlow.java index 3095abf..7eec674 100644 --- a/src/shootergame/tiles/TileWaterFlow.java +++ b/src/shootergame/tiles/TileWaterFlow.java @@ -3,6 +3,7 @@ package shootergame.tiles; import shootergame.display.Camera; import shootergame.init.Textures; import shootergame.util.gl.GlHelpers; +import shootergame.util.math.TileState; import shootergame.util.math.vec.Vec2d; public class TileWaterFlow extends TileFlat @@ -13,10 +14,10 @@ public class TileWaterFlow extends TileFlat } @Override - public void render(Vec2d pos, Camera camera, short meta) { + public void render(Vec2d pos, Camera camera, TileState state) { GlHelpers.pushMatrix(); GlHelpers.translate(0, 0, 0.001); - super.render(pos, camera, meta); + super.render(pos, camera, state); GlHelpers.popMatrix(); } diff --git a/src/shootergame/items/ItemStack.java b/src/shootergame/util/math/ItemStack.java similarity index 91% rename from src/shootergame/items/ItemStack.java rename to src/shootergame/util/math/ItemStack.java index 59b20ed..79658bd 100644 --- a/src/shootergame/items/ItemStack.java +++ b/src/shootergame/util/math/ItemStack.java @@ -1,6 +1,7 @@ -package shootergame.items; +package shootergame.util.math; import shootergame.init.Items; +import shootergame.items.Item; public class ItemStack { diff --git a/src/shootergame/util/math/TileState.java b/src/shootergame/util/math/TileState.java index 2206b71..b8333a9 100644 --- a/src/shootergame/util/math/TileState.java +++ b/src/shootergame/util/math/TileState.java @@ -2,20 +2,42 @@ package shootergame.util.math; import shootergame.init.Tiles; import shootergame.tiles.Tile; +import shootergame.util.math.vec.Vec3i; public class TileState { - public static final TileState EMPTY = new TileState(Tiles.VOID, (short)0); + public static final TileState EMPTY = new TileState(Tiles.VOID, 0); public Tile tile; - public short meta; + public byte meta; + public Vec3i light = new Vec3i(0, 0, 0); - public TileState(Tile tile, short meta) { + public TileState(Tile tile, byte meta) { this.tile = tile; this.meta = meta; } + public TileState(Tile tile, int meta) { + this(tile, (byte)meta); + } + + public TileState withLightLevel(Vec3i light) { + TileState ts = new TileState(tile, meta); + ts.light = light; + return ts; + } + + public TileState withLightLevel(int r, int g, int b) { + TileState ts = new TileState(tile, meta); + ts.light = new Vec3i(r, g, b); + return ts; + } + public TileState withMeta(short meta) { return new TileState(tile, meta); } + + public TileState withMeta(int meta) { + return this.withMeta((short)meta); + } } diff --git a/src/shootergame/world/World.java b/src/shootergame/world/World.java index eb85235..e5ee564 100644 --- a/src/shootergame/world/World.java +++ b/src/shootergame/world/World.java @@ -3,6 +3,7 @@ package shootergame.world; import java.util.ArrayList; import java.util.Random; +import shootergame.Main; import shootergame.display.Camera; import shootergame.world.chunk.ChunkEventHandler; import shootergame.world.layer.Layer; diff --git a/src/shootergame/world/chunk/Chunk.java b/src/shootergame/world/chunk/Chunk.java index 09da31c..2d29035 100644 --- a/src/shootergame/world/chunk/Chunk.java +++ b/src/shootergame/world/chunk/Chunk.java @@ -25,8 +25,11 @@ public class Chunk private Tile tiles_back[] = new Tile[CHUNK_INDEX]; private Tile tiles_front[] = new Tile[CHUNK_INDEX]; - private short tiles_front_meta[] = new short[CHUNK_INDEX]; - private short tiles_back_meta[] = new short[CHUNK_INDEX]; + private byte tiles_front_meta[] = new byte[CHUNK_INDEX]; + private byte tiles_back_meta[] = new byte[CHUNK_INDEX]; + private byte tiles_lighting_r[] = new byte[CHUNK_INDEX]; + private byte tiles_lighting_g[] = new byte[CHUNK_INDEX]; + private byte tiles_lighting_b[] = new byte[CHUNK_INDEX]; public ArrayList entities = new ArrayList(); private Layer layer; private Vec2i c_pos; @@ -43,6 +46,11 @@ public class Chunk // Make all these tiles void tiles_back[i] = Tiles.VOID; tiles_front[i] = Tiles.VOID; + tiles_back_meta[i] = 0; + tiles_front_meta[i] = 0; + tiles_lighting_b[i] = 0; + tiles_lighting_g[i] = 0; + tiles_lighting_r[i] = 0; } } @@ -55,8 +63,10 @@ public class Chunk Vec2i t_pos = Vec2i.fromId(CHUNK_SIZE, i); // Render the tiles - tiles_back[i].doRender(new Vec2d(t_pos.x + c_pos.x * 16, t_pos.y + c_pos.y * 16), camera, tiles_back_meta[i]); - tiles_front[i].doRender(new Vec2d(t_pos.x + c_pos.x * 16, t_pos.y + c_pos.y * 16), camera, tiles_front_meta[i]); + TileState tsb = getBackTile(i); + TileState tsf = getFrontTile(i); + tiles_back[i].doRender(new Vec2d(t_pos.x + c_pos.x * 16, t_pos.y + c_pos.y * 16), camera, tsb); + tiles_front[i].doRender(new Vec2d(t_pos.x + c_pos.x * 16, t_pos.y + c_pos.y * 16), camera, tsf); } // Render all the entities @@ -126,6 +136,11 @@ public class Chunk cpos.y = MathHelpers.mod(pos.y, CHUNK_SIZE.my); int id = cpos.getId(CHUNK_SIZE); + setBackTile(tile, id); + } + + public void setBackTile(TileState tile, int id) + { // Set the back tile this.tiles_back[id] = tile.tile; this.tiles_back_meta[id] = tile.meta; @@ -139,6 +154,11 @@ public class Chunk cpos.y = MathHelpers.mod(pos.y, CHUNK_SIZE.my); int id = cpos.getId(CHUNK_SIZE); + setFrontTile(tile, id); + } + + public void setFrontTile(TileState tile, int id) + { // Set the front tile this.tiles_front[id] = tile.tile; this.tiles_front_meta[id] = tile.meta; @@ -152,8 +172,17 @@ public class Chunk cpos.y = MathHelpers.mod(pos.y, CHUNK_SIZE.my); int id = cpos.getId(CHUNK_SIZE); + return getBackTile(id); + } + + public TileState getBackTile(int id) + { // Send back the back tile - return new TileState(this.tiles_back[id], this.tiles_back_meta[id]); + TileState ts = new TileState(this.tiles_back[id], this.tiles_back_meta[id]); + ts.light.x = this.tiles_lighting_r[id]; + ts.light.y = this.tiles_lighting_g[id]; + ts.light.z = this.tiles_lighting_b[id]; + return ts; } public TileState getFrontTile(Vec2i pos) @@ -164,8 +193,17 @@ public class Chunk cpos.y = MathHelpers.mod(pos.y, CHUNK_SIZE.my); int id = cpos.getId(CHUNK_SIZE); + return getFrontTile(id); + } + + public TileState getFrontTile(int id) + { // Send back the front tile - return new TileState(this.tiles_front[id], this.tiles_front_meta[id]); + TileState ts = new TileState(this.tiles_front[id], this.tiles_front_meta[id]); + ts.light.x = this.tiles_lighting_r[id]; + ts.light.y = this.tiles_lighting_g[id]; + ts.light.z = this.tiles_lighting_b[id]; + return ts; } public void breakBackTile(Vec2i pos) diff --git a/src/shootergame/world/layer/layergen/LayerGen.java b/src/shootergame/world/layer/layergen/LayerGen.java index 0a0dbcd..77a5900 100644 --- a/src/shootergame/world/layer/layergen/LayerGen.java +++ b/src/shootergame/world/layer/layergen/LayerGen.java @@ -5,6 +5,8 @@ import java.util.Random; import shootergame.util.math.TileState; import shootergame.util.math.map.IMap2D; import shootergame.util.math.vec.Vec2i; +import shootergame.util.math.vec.Vec3d; +import shootergame.util.math.vec.Vec3i; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -13,6 +15,7 @@ public abstract class LayerGen implements IMap2D public abstract void generateChunk(Chunk chunk, Layer layer, long seed, Random rand, Vec2i pos); public abstract void spawnEntities(Layer layer, Random rand); public abstract TileState getTileDestroyed(); + public abstract Vec3i getLightLevel(); @Override public Chunk getEmpty(Vec2i pos) { diff --git a/src/shootergame/world/layer/layergen/LayerGenCaves.java b/src/shootergame/world/layer/layergen/LayerGenCaves.java index 6dcfd47..713d332 100644 --- a/src/shootergame/world/layer/layergen/LayerGenCaves.java +++ b/src/shootergame/world/layer/layergen/LayerGenCaves.java @@ -5,12 +5,15 @@ import java.util.Random; import shootergame.Main; import shootergame.entity.Entity; import shootergame.entity.EntityZombie; +import shootergame.entity.EntityZombieBomber; import shootergame.init.Tiles; import shootergame.util.math.TileState; import shootergame.util.math.random.OpenSimplexNoise; import shootergame.util.math.random.RandomHelpers; import shootergame.util.math.vec.Vec2d; import shootergame.util.math.vec.Vec2i; +import shootergame.util.math.vec.Vec3d; +import shootergame.util.math.vec.Vec3i; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -60,7 +63,10 @@ public class LayerGenCaves extends LayerGen RandomHelpers.randrange(rand, Chunk.CHUNK_SIZE.mx), RandomHelpers.randrange(rand, Chunk.CHUNK_SIZE.my)); - chunk.setFrontTile(Tiles.TILE_CHEST.getDefaultState(), chest_pos); + // Only place a chest here if the tile is clear + if(chunk.getBackTile(chest_pos).tile == getTileDestroyed().tile) { + chunk.setFrontTile(Tiles.TILE_CHEST.getDefaultState(), chest_pos); + } } @Override @@ -78,11 +84,28 @@ public class LayerGenCaves extends LayerGen zombie.pos.squareDistance(Main.player.pos) > 32) layer.spawnEntity(zombie); } + + if(rand.nextDouble() > 0.98) + { + Entity zombie = new EntityZombieBomber(new Vec2d( + RandomHelpers.randrange(rand, (int)Main.player.pos.x - 128, (int)Main.player.pos.x + 128), + RandomHelpers.randrange(rand, (int)Main.player.pos.y - 128, (int)Main.player.pos.y + 128))); + + if(layer.getBackTile(new Vec2i((int)zombie.pos.x, + (int)zombie.pos.y)).tile == getTileDestroyed().tile && + zombie.pos.squareDistance(Main.player.pos) > 32) + layer.spawnEntity(zombie); + } } @Override public TileState getTileDestroyed() { return Tiles.STONE.getDefaultState(); } + + @Override + public Vec3i getLightLevel() { + return new Vec3i(0, 0, 0); + } } diff --git a/src/shootergame/world/layer/layergen/LayerGenEarth.java b/src/shootergame/world/layer/layergen/LayerGenEarth.java index 8c44e40..d622f75 100644 --- a/src/shootergame/world/layer/layergen/LayerGenEarth.java +++ b/src/shootergame/world/layer/layergen/LayerGenEarth.java @@ -11,6 +11,8 @@ import shootergame.util.math.random.OpenSimplexNoise; import shootergame.util.math.random.RandomHelpers; import shootergame.util.math.vec.Vec2d; import shootergame.util.math.vec.Vec2i; +import shootergame.util.math.vec.Vec3d; +import shootergame.util.math.vec.Vec3i; import shootergame.world.chunk.Chunk; import shootergame.world.layer.Layer; @@ -86,5 +88,8 @@ public class LayerGenEarth extends LayerGen return Tiles.DIRT.getDefaultState(); } - + @Override + public Vec3i getLightLevel() { + return new Vec3i(200, 200, 200); + } }