From 70d7faaf983ee0c65a9a30d3085ed81f98b9d731 Mon Sep 17 00:00:00 2001 From: jsrobson10 Date: Tue, 25 Aug 2020 12:11:15 +1000 Subject: [PATCH] Started adding timers and torches --- .../display/DisplayLighting.java | 2 +- .../entity/player/EntityPlayer.java | 3 + src/projectzombie/init/ItemModifiers.java | 2 + src/projectzombie/init/Items.java | 3 + src/projectzombie/init/Models.java | 2 + src/projectzombie/items/Item.java | 4 + src/projectzombie/items/ItemTorch.java | 79 +++ .../items/modifier/ItemModifierTimer.java | 60 +++ src/projectzombie/tiles/TileBlastFurnace.java | 2 +- src/projectzombie/util/math/ItemStack.java | 2 +- src/resources/texture/item/torch_lit.png | Bin 0 -> 1105 bytes src/resources/texture/item/torch_unlit.png | Bin 0 -> 774 bytes src/resources/texture/list.txt | 448 +++++++++--------- 13 files changed, 381 insertions(+), 226 deletions(-) create mode 100644 src/projectzombie/items/ItemTorch.java create mode 100644 src/projectzombie/items/modifier/ItemModifierTimer.java create mode 100644 src/resources/texture/item/torch_lit.png create mode 100644 src/resources/texture/item/torch_unlit.png diff --git a/src/projectzombie/display/DisplayLighting.java b/src/projectzombie/display/DisplayLighting.java index 02089e6..8299c77 100755 --- a/src/projectzombie/display/DisplayLighting.java +++ b/src/projectzombie/display/DisplayLighting.java @@ -324,7 +324,7 @@ public class DisplayLighting float[] pixels = new float[width*height*3]; for(int i=0;i 1) { hydration = 1; } + + inventory.addItem(new ItemStack(Items.TORCH, 1)); } public int getAmmo() { diff --git a/src/projectzombie/init/ItemModifiers.java b/src/projectzombie/init/ItemModifiers.java index b2c1ce0..0448604 100644 --- a/src/projectzombie/init/ItemModifiers.java +++ b/src/projectzombie/init/ItemModifiers.java @@ -7,6 +7,7 @@ import projectzombie.items.modifier.ItemModifier; import projectzombie.items.modifier.ItemModifierDamage; import projectzombie.items.modifier.ItemModifierFluidStorage; import projectzombie.items.modifier.ItemModifierMeta; +import projectzombie.items.modifier.ItemModifierTimer; import projectzombie.items.modifier.ItemModifierWater; public class ItemModifiers @@ -31,5 +32,6 @@ public class ItemModifiers register(ItemModifierDamage.class); register(ItemModifierFluidStorage.class); register(ItemModifierWater.class); + register(ItemModifierTimer.class); } } diff --git a/src/projectzombie/init/Items.java b/src/projectzombie/init/Items.java index d19b439..2d02448 100755 --- a/src/projectzombie/init/Items.java +++ b/src/projectzombie/init/Items.java @@ -29,6 +29,7 @@ import projectzombie.items.ItemStoneHatchet; import projectzombie.items.ItemStonePick; import projectzombie.items.ItemStoneShovel; import projectzombie.items.ItemTnt; +import projectzombie.items.ItemTorch; import projectzombie.items.ItemWorkbench; import projectzombie.items.spawner.ItemSpawnDummy; import projectzombie.items.spawner.ItemSpawnZombie; @@ -74,6 +75,7 @@ public class Items register(BLAST_FURNACE); register(CLAY_POT); register(CLAY_POT_WET); + register(TORCH); } public static final Item AMMO = new ItemAmmo(); @@ -105,4 +107,5 @@ public class Items public static final Item BLAST_FURNACE = new ItemBlastFurnace(); public static final Item CLAY_POT = new ItemClayPot(); public static final Item CLAY_POT_WET = new ItemClayPotWet(); + public static final Item TORCH = new ItemTorch(); } diff --git a/src/projectzombie/init/Models.java b/src/projectzombie/init/Models.java index c1beef6..c9c4a98 100755 --- a/src/projectzombie/init/Models.java +++ b/src/projectzombie/init/Models.java @@ -153,6 +153,8 @@ public class Models public static final ModelItem ITEM_TNT = new ModelItem(Resources.ATLAS.get("/entity/tnt.png")); public static final ModelItem ITEM_FLARE = new ModelItem(Resources.ATLAS.get("/entity/flare.png")); public static final ModelItem ITEM_LANTERN = new ModelItem(Resources.ATLAS.get("/tile/lantern.png"), 4, 5); + public static final ModelItem ITEM_TORCH_LIT = new ModelItem(Resources.ATLAS.get("/item/torch_lit.png"), 4, 50); + public static final ModelItem ITEM_TORCH_UNLIT = new ModelItem(Resources.ATLAS.get("/item/torch_unlit.png")); public static final ModelItem ITEM_CLAY_POT_WET = new ModelItem(Resources.ATLAS.get("/item/clay_pot_wet.png")); public static final ModelItem ITEM_CLAY_POT_EMPTY = new ModelItem(Resources.ATLAS.get("/item/clay_pot_empty.png")); diff --git a/src/projectzombie/items/Item.java b/src/projectzombie/items/Item.java index b1a93c5..c9ecb90 100755 --- a/src/projectzombie/items/Item.java +++ b/src/projectzombie/items/Item.java @@ -69,4 +69,8 @@ public abstract class Item return (double)damage_modifier.getDamage() / (double)damage_modifier.getMaxDamage(); } + + public boolean isEmpty(ItemStack stack) { + return false; + } } diff --git a/src/projectzombie/items/ItemTorch.java b/src/projectzombie/items/ItemTorch.java new file mode 100644 index 0000000..16d97ae --- /dev/null +++ b/src/projectzombie/items/ItemTorch.java @@ -0,0 +1,79 @@ +package projectzombie.items; + +import gl_engine.vec.Vec2d; +import projectzombie.entity.player.EntityPlayer; +import projectzombie.init.Models; +import projectzombie.items.modifier.ItemModifier; +import projectzombie.items.modifier.ItemModifierDamage; +import projectzombie.items.modifier.ItemModifierMeta; +import projectzombie.items.modifier.ItemModifierTimer; +import projectzombie.model.ModelItem; +import projectzombie.util.math.ItemStack; +import projectzombie.world.layer.Layer; + +public class ItemTorch extends Item +{ + + @Override + public ModelItem getModel(ItemStack stack) + { + if(ItemModifierMeta.getStackMeta(stack) == 1) { + return Models.ITEM_TORCH_LIT; + } + + else { + return Models.ITEM_TORCH_UNLIT; + } + } + + @Override + public double getDamage(ItemStack stack) + { + ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class); + + if(timer == null) { + return 0; + } + + return timer.getDamage(); + } + + @Override + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) + { + if(ItemModifierMeta.getStackMeta(stack) == 1) { + return false; + } + + stack.modifiers = new ItemModifier[] { + new ItemModifierMeta(1), + new ItemModifierTimer(1000), + }; + + return true; + } + + @Override + public boolean isEmpty(ItemStack stack) + { + if(ItemModifierMeta.getStackMeta(stack) != 1) { + return false; + } + + ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class); + + if(timer == null) { + return false; + } + + System.out.println(timer.getDamage()); + + return timer.getDamage() <= 0; + } + + @Override + public String getName(ItemStack stack) { + return "Torch"; + } + +} diff --git a/src/projectzombie/items/modifier/ItemModifierTimer.java b/src/projectzombie/items/modifier/ItemModifierTimer.java new file mode 100644 index 0000000..1a242f3 --- /dev/null +++ b/src/projectzombie/items/modifier/ItemModifierTimer.java @@ -0,0 +1,60 @@ +package projectzombie.items.modifier; + +import bdf.types.BdfNamedList; +import bdf.types.BdfObject; +import gl_engine.MathHelpers; +import projectzombie.time.GameTimer; + +public class ItemModifierTimer extends ItemModifier +{ + private long end; + private long start; + + public long getLeft() { + return GameTimer.getTime() - timer; + } + + public double getDamage() { + return 1 - (double)(timer - GameTimer.getTime()) / (double)timer; + } + + public ItemModifierTimer(long time) { + start = GameTimer.getTime(); + end = start + time; + } + + public ItemModifierTimer(BdfObject bdf) { + BdfClassLoad(bdf); + } + + @Override + public void BdfClassLoad(BdfObject bdf) + { + BdfNamedList nl = bdf.getNamedList(); + start = nl.get("start").getLong(); + end = nl.get("end").getLong(); + } + + @Override + public void BdfClassSave(BdfObject bdf) + { + BdfNamedList nl = bdf.getNamedList(); + nl.set("start", bdf.newObject().setLong(start)); + nl.set("end", bdf.newObject().setLong(end)); + } + + @Override + public boolean isEqual(ItemModifier other) { + return ((ItemModifierTimer)other).start == start && + ((ItemModifierTimer)other).end == end; + } + + @Override + public ItemModifier copy() { + ItemModifierTimer timer = new ItemModifierTimer(0); + timer.start = this.start; + timer.end = this.end; + return timer; + } + +} diff --git a/src/projectzombie/tiles/TileBlastFurnace.java b/src/projectzombie/tiles/TileBlastFurnace.java index 054d1f4..0d042bc 100644 --- a/src/projectzombie/tiles/TileBlastFurnace.java +++ b/src/projectzombie/tiles/TileBlastFurnace.java @@ -30,7 +30,7 @@ public class TileBlastFurnace extends Tile @Override public double getLightLevel(TileState state, Vec2i pos) { - return 1 - MathHelpers.squared(1 - state.meta / 16.0); + return (1 - MathHelpers.squared(1 - state.meta / 16.0)) / 2.0; } @Override diff --git a/src/projectzombie/util/math/ItemStack.java b/src/projectzombie/util/math/ItemStack.java index 88b38e6..8772e04 100755 --- a/src/projectzombie/util/math/ItemStack.java +++ b/src/projectzombie/util/math/ItemStack.java @@ -52,7 +52,7 @@ public class ItemStack implements IBdfClassManager if(count < 1) return true; if(item == null) return true; if(item == Items.EMPTY) return true; - return false; + return item.isEmpty(this); } public boolean hasModifier(Class modifier) { diff --git a/src/resources/texture/item/torch_lit.png b/src/resources/texture/item/torch_lit.png new file mode 100644 index 0000000000000000000000000000000000000000..3a48601880c6985c56a1868cf289c187eb3868f8 GIT binary patch literal 1105 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU~u4IV_;wquKhlZfq}6#)7d$|)7e>}peR2r zGbfdSL1SX=L|c!;0V1vb(My+x$h=vgG-IJvq=0DQ6)lm4PAf#CN)0Ms%9~_*1jWd( zUT)|Kc)>#qH5|ziNz3fiyEH4VUAHX_x_h*8TKWC?R~J9=W&6SMC~}#!*hjXH zUzRN`zNg-|Y0?sb`NI8@C615W*PYheU#MsG=K0J(<;nBZ`-HfU@=ddzF_mX(MVH00 z6;e-sZ`RYEv)y9#RH^K{llL1;x*j%dr(ZUQr%n>563dAd3wyY9j$~fu zg^%4&CY=mrQ$EhLDnQY)?t}dg+vv>(mJiijg&e+j=hpWy9E@EMx&7_?VqjokOY(MiVE}`l z&b#Xw7#KJUJR*x381$4un6YB1eHjA-1AB?5uPgf#4oOA@_AsaFYYYqwk|nMYCC>S| zxv6<249-QVi6yBi3gww484B*6z5(HleBulYOd6gpjv*0;-%j71C+sNFw%<68$5A?; zM@_JAOWz8o)Xvk~AGmCobXir^B0Lxw`44C_gnkm(!lGC#$jhs#(Wqf)wk@5%)x2Ws zbsZ-r*7-$c&*mGapZlK~w#~C`Ti{DY*JK7h%a5nrWg90Rx+*tGEooC({q{D!kOf%_ zv_9;bI?vI`q3VRU{8}jqb_1Sel0G73HCqB0mRa-ZusAGu;PK5cIQv5d;~Tphc6YuW zXj2mQJva3&&(qnZ;rUniDmJh`Gnw<@!OeE%D-Wh`TKS>mLE&yTZD#Y*!gUVGE899A zR^C6m`{f(Eh*-HveG>u`G$Nn6N|LQ(&W{> za-}w=&94{cnk(5PT~jZjiCX&c0)n0i2Z+Lc3i|Uau>QUZJyas#?`6rKj(Tzphy>KF#*+kBrUl zvNDbT7RuH9J6}ffF z{HxSXHe1&jF?(9yo}Hg)-X@#rq|IGmnfCnW?}T&B$%mTfzct!y?IInz29y##UHx3v IIVCg!02db9EC2ui literal 0 HcmV?d00001 diff --git a/src/resources/texture/item/torch_unlit.png b/src/resources/texture/item/torch_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..45cc4317727374c8e2bae9b12b7142b1ecda46b6 GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7TQi-V13aCb6$*;-(=u~X z85lGs)=sqbI2<6->L0yyX^7051xhm(T15(o7GBX3S?IJvG^*5~@};~a|B-b4$m^Lyv3cl%IdN_cufR;zJ>uvtuz5RuHR&Soq3{;*xPrXlw`zYTu>lssdrdD)WEL$P< z^!H{x?K#^mR!^16zB_rp!KCY9({}o0b9m|`aVoK#Sh28&OXo=Dbq~Xd%RaZX*I)S9 z{bbU~P&Vb`OsfJEE$cqm|FDhTY+(6N%~i`o#*64rY(P3nLgCH-JinzE3fgxEbHyp zEdAsgc+P5-GRw#?Ep|N>_r0QgMRDH$Z(E*yXI5QP)Nx_&LM8?V2DT(`cNd1W4EhWV zPEQ}UGB7Z37I;J!Gcf2WgD_*oQu{In1_t&LPhVH|CmfQDGBWG0oIc9Hz#v)T8d2h$ zpPQSSSHj?2l$uzQnxasiS(2gP?&%v4-pD7;z`$_V)5S5w;`G)@wtj~l1X}lR?_+9p zW|DAsXkOuTI?#f%{UOi7)2SK@9`Gb+s<5bUc6QyqF+zFStozH&^WC`rr8Td6B>SU( zKf}_hL-}pNh3W_PJqxk>ATK3z=D@TB?GMYO6;3|*$a?j)P`-n(hTek@YPwJEiHdNo zdu@2{z?aP_|K?P-W)-!F?6A`P{rBM0FFo5IGW@@_!KnQ^|0W5S_Rp_cs$zm<`#-s` zWZdR`vrR$q{l+GhJ7qK6b<*a2d|38uabn}_jeU>)y$p?H2y$SF+FUpPh2n-gQi6#W dtr_<*{;hUPQM>K&pMima!PC{xWt~$(69B