From 4a2ff247520baefbd2ba5895bd1bc41acff03b5c Mon Sep 17 00:00:00 2001 From: Vladimir Slav Date: Fri, 9 Sep 2016 18:59:55 +0300 Subject: [PATCH] Introducing the warning (sign that is used on the base before attack) --- android/assets/packed/game.atlas | 9 ++- android/assets/packed/game.png | Bin 950 -> 1063 bytes assets/warning.png | Bin 0 -> 243 bytes .../com/coldwild/dodginghero/Resources.java | 2 + .../dodginghero/graph/effects/Effect.java | 45 +++++++++++ .../graph/effects/EffectEngine.java | 58 ++++++++++++++ .../graph/effects/WarningEffect.java | 74 ++++++++++++++++++ .../coldwild/dodginghero/logic/GameLogic.java | 13 +++ .../dodginghero/screens/GameScreen.java | 4 + 9 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 assets/warning.png create mode 100644 core/src/com/coldwild/dodginghero/graph/effects/Effect.java create mode 100644 core/src/com/coldwild/dodginghero/graph/effects/EffectEngine.java create mode 100644 core/src/com/coldwild/dodginghero/graph/effects/WarningEffect.java diff --git a/android/assets/packed/game.atlas b/android/assets/packed/game.atlas index bfcf74c..a4ce464 100644 --- a/android/assets/packed/game.atlas +++ b/android/assets/packed/game.atlas @@ -1,6 +1,6 @@ game.png -size: 64,32 +size: 128,32 format: RGBA8888 filter: Nearest,Nearest repeat: none @@ -32,3 +32,10 @@ wall orig: 16, 16 offset: 0, 0 index: -1 +warning + rotate: false + xy: 56, 6 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 diff --git a/android/assets/packed/game.png b/android/assets/packed/game.png index aea2a57556ac294f0298da3a9474f78cebba6053..4d3522e7bbcb84e1b6dd36dc9832fdb1b8a48df1 100644 GIT binary patch literal 1063 zcmV+?1laqDP)B=uV@HBD9uBa!pAHAu%#5M_qFh|ArD76(nY2QLqSw7hyj{*GqW3!`@ZlnXXgC5d4BWGJ7-3SUAD-oIR3L> z02lyAc7|dAHbe#}{3S%*knKwt%NgMRj`K}Psh(I;#H&YPejqhejfyU7Omx?c$#vAo z-?Yt_)EG`al)8TRu^4*rOe7vn%OkZ1XBS1^+YeG`Q@`5R`~H(Fg#A67aw1j|#jf65 zh`I`LKGjp=uA!P=kheXp`7}lc0D`F`I)}+*E&*Wbg9hf7LYtp65PZDi0$@YK^`$no z1D?xu?A3BWHMXK~2adK$PM&Ga10kT+`jF14AI`0FdE0LKuHI zQobe&r~nMz9FZbp!w7S+#`3FLGXTOvxe7qo8bAdhT?T;ZXp{MLt^;r_aaqdijyIWY z>H`2vFKZZppfy0q0#McfUI4&s$_5bH1c45~rHf}^eo6rRJQf&$3~GQdFqkp`6@g^> z&)?sq)N7Ia$eJSXTu+A-nX6a)>UFO%1i-uLLkvLJ8X(o%fTb1t~q^T>*gXCfX>!tshAZrKHt^rUSl9UMi!n{FaVj<0H(JAllfj5U{6`AG`~IZ zdEL6WhCXME3qVUe4)Zex09j;ivW(vX{&fuiqf5(sHL^T66H(K&l4o3$DBLL`A$6{`GXUn=GFw7$W zYrIJA<{BWt*TB%5Kza?}yvMtDvHIRm8$r0H+_7>z=C;S1*3|%}yB+JK$_7?tjd*fv zCj$@!fS}vKdJVAH7c~Mv5UA2ja{=gxHHcQL&Yf#AIvoJ$J6d``+#ZPV$Dl9(1T`P$ z_$Oept3(Gt_}IG_Dgg1yYH`xC1Z9g1BnFy`_;YZOA3{t&eWdHBA3|0k5aVro<(e7* zzJ)lxzY6AOP5eVh002-B(pv$JN`YwXhmiJh=fiwJKoQ1#L^jQb5NtjN2L}fS2L}fS h2L}fS2M31`e*lb|TmI{jghK!T002ovPDHLkV1m3&(98e; literal 950 zcmV;n14;aeP)M2j+Ybc>Xfo3M!3!LoDi-?2*CA%n$x+o)p zC<=@s=%OwnB)aILzCmAM^Z#(3;c=XGclMkJYX|0WeCMGWyZ1;pW?RZW5_zUSk8rxaC0kv;a zc1+L3S^>a^7L54Z=4+{-v2(L8)abL<;Q-zZmGOy^8EMcF2Ek+i(!9Bj*GdRB03$<3 zwK>@~WgA08T$p(h4uHehH0~M+*aI*n0BN4tkF95K|#i_e)5fEg~ zc6uf-25ACd!>A$5-&<0(C<-Kiv1`{!Y%Gqj7JFQ}aVr{txH&+A2#WxiMw`v^wF%&S zW|S0k;x@CkF$U?J17apX$^k(DV3wl+LYpC&08XDe2J_1Th;my*24KqpabVaYfRiAb z{_*P@N%oZ#mMltw$NM@-Y|hO1vOj1J1IUbDjh_RSdm7ksf|&z~)|66xz-uH3^N*(& z34PfywRUx>2GG^kLP~il>-{bJgXTbV8=W1_EeF`11~&6S5wLk{8=3FOd|t9I`Y@KA zqXD$0(=eYi07TKr{@%Zz17NhWYJh4f?lW_MjDTFkx6)tD0UY`aLQ0NF0KGl!ItN5K z>7Y500YrHZh;l7+KvnrRGIV%%oqi4evTr|SeF$yt&(5JW`38W!{>Xm;TY{7k&~nhD zM;YoY3@ZSP$+=kD)782p3C6hvut!I_+3DY4?3W-j2V|e)`V{4JpI?N~Cr*s!V=aEP znFDO6jeVAj2CuqKrS{aj0dRdCHgmw-V7V0lLy$6lvd0gY0!2RwD6M%~F?ye+&bakyd;(3arB?qaxP21f*h}b@QgpKnDkp&3qcKa6E z(*O`zD2H~`z0#LT=By}Z;C1rt33 zJwt=FTwDi$ijqBD978Pp-}X5QH7M{f|NPJW(^vJ%q9m0wCng>iYg4mUG2VUR>5PZh zGR38iNNu=#b9FP@A{~_(`Ht~?zvk@EV-#fwW!v{tpdnDwqtS`0?ytfr<<9&t4hHUy iPr(ck6E0d! effects; + public EffectEngine() + { + effects = new ArrayList(); + } + + public void add(Effect effect) + { + effects.add(effect); + } + + public void update(float delta) + { + int i = 0; + while (i < effects.size()) + { + effects.get(i).update(delta); + if (effects.get(i).isAlive()) + { + i++; + } + else + { + effects.get(i).release(); + effects.remove(i); + } + } + } + + public void draw(SpriteBatch batch) + { + for (int i = 0; i < effects.size(); i++) + { + effects.get(i).draw(batch); + } + } + + public void clear() + { + while (effects.size() > 0) + { + effects.get(0).release(); + effects.remove(0); + } + } +} diff --git a/core/src/com/coldwild/dodginghero/graph/effects/WarningEffect.java b/core/src/com/coldwild/dodginghero/graph/effects/WarningEffect.java new file mode 100644 index 0000000..7600f15 --- /dev/null +++ b/core/src/com/coldwild/dodginghero/graph/effects/WarningEffect.java @@ -0,0 +1,74 @@ +package com.coldwild.dodginghero.graph.effects; + +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.utils.Pool; +import com.coldwild.dodginghero.Resources; +import com.coldwild.dodginghero.graph.SizeEvaluator; + +/** + * Created by comrad_gremlin on 9/9/2016. + */ +public class WarningEffect extends Effect { + + private static final float WARNING_TIME = 2.0f; + private int fieldX; + private int fieldY; + private SizeEvaluator sizeEvaluator; + private Resources resources; + + public static WarningEffect Create(int fx, + int fy, + EffectEngine engine, + SizeEvaluator sz, + Resources res) + { + WarningEffect effect = warningPool.obtain(); + effect.init(fx, fy, engine, sz, res); + return effect; + } + + public WarningEffect() + { + + } + + public void init(int fx, int fy, EffectEngine parent, SizeEvaluator sz, Resources res) + { + fieldX = fx; + fieldY = fy; + sizeEvaluator = sz; + resources = res; + super.init(parent); + } + + @Override + public void draw(SpriteBatch batch) { + batch.begin(); + batch.draw(resources.warning, + sizeEvaluator.getBaseScreenX(fieldX), + sizeEvaluator.getBaseScreenY(fieldY)); + batch.end(); + } + + @Override + public void update(float delta) + { + super.update(delta); + if (timeAlive > WARNING_TIME) + { + isAlive = false; + } + } + + @Override + public void release() { + warningPool.free(this); + } + + static Pool warningPool = new Pool() { + @Override + protected WarningEffect newObject() { + return new WarningEffect(); + } + }; +} diff --git a/core/src/com/coldwild/dodginghero/logic/GameLogic.java b/core/src/com/coldwild/dodginghero/logic/GameLogic.java index e91d4c9..feccda6 100644 --- a/core/src/com/coldwild/dodginghero/logic/GameLogic.java +++ b/core/src/com/coldwild/dodginghero/logic/GameLogic.java @@ -1,6 +1,7 @@ package com.coldwild.dodginghero.logic; import com.badlogic.gdx.math.MathUtils; +import com.coldwild.dodginghero.graph.effects.EffectEngine; import com.coldwild.dodginghero.logic.objects.Player; /** @@ -12,12 +13,14 @@ public class GameLogic { public static final int MAX_BASE_Y = 3; Player player; + EffectEngine effectEngine; public GameLogic() { player = new Player( MathUtils.random(MAX_BASE_X), MathUtils.random(MAX_BASE_Y) ); // 0..3 + effectEngine = new EffectEngine(); } public Player getPlayer() @@ -25,6 +28,11 @@ public Player getPlayer() return player; } + public void update(float delta) + { + effectEngine.update(delta); + } + public boolean CanMove(int fx, int fy) { return (fx >= 0 && fx <= MAX_BASE_X) && @@ -36,4 +44,9 @@ public void AssignPlayerPosition(int fx, int fy) player.setFieldX(fx); player.setFieldY(fy); } + + public EffectEngine getEffectEngine() + { + return effectEngine; + } } diff --git a/core/src/com/coldwild/dodginghero/screens/GameScreen.java b/core/src/com/coldwild/dodginghero/screens/GameScreen.java index 4aacbcf..108d4bd 100644 --- a/core/src/com/coldwild/dodginghero/screens/GameScreen.java +++ b/core/src/com/coldwild/dodginghero/screens/GameScreen.java @@ -11,6 +11,7 @@ import com.coldwild.dodginghero.Resources; import com.coldwild.dodginghero.graph.Background; import com.coldwild.dodginghero.graph.SizeEvaluator; +import com.coldwild.dodginghero.graph.effects.WarningEffect; import com.coldwild.dodginghero.logic.GameLogic; import com.coldwild.dodginghero.logic.objects.Player; @@ -52,11 +53,13 @@ public GameScreen(DodgingHero _game) { RefreshPlayer(); Gdx.input.setInputProcessor(this); + WarningEffect.Create(0, 0, logic.getEffectEngine(), sizeEvaluator, game.res); } public void update(float delta) { gameStage.act(delta); + logic.update(delta); } public void drawBases() @@ -87,6 +90,7 @@ public void render(float delta) bg.draw(gameStage, game.res); drawBases(); + logic.getEffectEngine().draw(batch); batch.begin(); player.draw(batch);