From 7c9d4c9a99efa854296d54c3bbbb82ba50846b93 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Wed, 12 Jul 2017 15:36:28 +0200 Subject: [PATCH] Add a new waterdrop effect --- android/assets/sound/effect_waterdrop.mp3 | Bin 0 -> 3181 bytes android/assets/ui/x0.75/cells/drop.png | Bin 0 -> 942 bytes android/assets/ui/x1.0/cells/drop.png | Bin 0 -> 1279 bytes android/assets/ui/x1.25/cells/drop.png | Bin 0 -> 1626 bytes android/assets/ui/x1.5/cells/drop.png | Bin 0 -> 2074 bytes android/assets/ui/x2.0/cells/drop.png | Bin 0 -> 2929 bytes android/assets/ui/x4.0/cells/drop.png | Bin 0 -> 6898 bytes .../io/github/lonamiwebs/klooni/Klooni.java | 12 ++- .../klooni/effects/WaterdropEffect.java | 69 ++++++++++++++++++ original-resources/buttons.svg | 57 ++++++++++++++- original-resources/gen-ui-png.py | 3 +- 11 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 android/assets/sound/effect_waterdrop.mp3 create mode 100644 android/assets/ui/x0.75/cells/drop.png create mode 100644 android/assets/ui/x1.0/cells/drop.png create mode 100644 android/assets/ui/x1.25/cells/drop.png create mode 100644 android/assets/ui/x1.5/cells/drop.png create mode 100644 android/assets/ui/x2.0/cells/drop.png create mode 100644 android/assets/ui/x4.0/cells/drop.png create mode 100644 core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java diff --git a/android/assets/sound/effect_waterdrop.mp3 b/android/assets/sound/effect_waterdrop.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2b7c8a86834d54abdb2e1a0ad54a4347e64c2c2a GIT binary patch literal 3181 zcmd^>S5(v47RLW1Atn?dp$q{Al0c|2QdMd~D1yL{Kv23!i4Xx54ONETi$SCY9D;xa zr6@2UFo+DJpn`}f1W`l~@B%{-l}R8sKKSCxeV_YV>#Xyz&st}H`#Wo&E#R?&fd7F< zXv9h35h>w<0)Rv~;QRyUex%|D`hH~LM+840yo=&w0$_vH0H73X;l2GjEo%eN&=o4bUcK+)VAb=r zmP3{oWTcXnRkK9E1? z`JR0WPGSmvh6*vF7MbAAcPZq+{`FE> zEH^}Qc8R6ldXNZklav+ovjc9Aq}@ERtozIpW!XLoUl_Lsc;%qe^ zd)oNkklUu;SZJ``V4DprrQ+H@)N>jGkG8v({0Dah#$r5sHPTksX`q&T=K550sK-VkZK0i4pB`jbB`h@iwv!KoS5N=#$TQhEH__#PIuJ zD96E+Id(<)D*8waz5FvM%Mx-Q_alGfX9(%v*!W8LoB`>?ZeywuP&g~3<~1q$n2 zl0RcB|4`EPCFfUrbiLha((PAa^qtSk0^U#D;yg^8B8j>C!5^q6v*2o}Inm9%WDMSD zJPlNO2IPIbjxYfZq&hI{dc!eeMHUoZ=YhA*uo)l2YGu8#Ya(f~EdBd#E&#vwaO=jAf zoNOR6Sj{=fdVwxbCti^*{LE$VWyg{Sv*`-x&*p zJ?=FCu5q9Vf&noC8Xi8A1W5PjS}oVfERF*6eE%eXLt|V?M^f&GW0Cp4j|c>b7ebyU>O7!I#pWoURX-IRo?BQOdGaDL{8?{SRhP`6kbG!*9SygL0G2`oqtE?c8%vhe1hMiJZCiMtxd@JuH3Zw(?0Fb z9L(=%)r>({XT6e+s(XY-;i50rt~R@E^%$%Y=zwNgQFUpm5_!JZF6r)&s+z)-_o5Ye zRUfTaFE+tCPg5ykbYDI%jsWr_ung^7``Iv~v<8)&O$F^gviGUR%I>FO{;>>AKRmbR4R^oDnIe-o$j6br+$)=9iPbl z+W?zu;g&!&C?at(g7g$j%+XO zmk!mzjBhate$hH$8Onta?%|hTKbK#emr*O2wMh5*)Q>YQPyV_MGuZcK*R1<;au^3L zD-yIaTPM@`$I$TYJ<)LLR1~$~^t$Fr+O?^^_QQ{l=f0gRWRS}* zl}lMmzTkjJb1i@6BnovjIe!c`fMs|Fw{vAGH(FXsx+(ejL=pyL=6jqpTDI5c8iHXI zOQGo?AncTuCPYC1rJdX=QMZJRb?U#tZ<&+6JW7-#T#?(;d4G2!u!sEe$gd$CK=en7IqJ|{NxOI*Gc z#Dla@h0osIxtr!FTcJAHWfl<(K14o{MGy^uurRFVQ9w~S2L2%Xh{SI~%{wS2o#Q4I zJ(WP77rU=St|+N(v_*k&D=3+0alQT3yk0%8`&N%))N}g=9FK?*e5~Iq=cn6`%Q&M@ zfE}W1NhNkE`9(YCT~w;YZ_=7XD;? z6!7l#ZVi9#a21tpK_|1$m3eABU8~&|@3N?B^3$A}mP%|=|EK6edvb_@Bt=Ku4tMdv z8EP@Id*K1CP)zpV6Snt7LO8fTR7a~1RHh(aYF~leD?$_qu1&|SW2FZ=vxA}87o)o< zBH8kQD4?sp2x~a66sS`ucUvN>=TW$M=`fochpdjbJNC_>IRM;29Og+F-t-6=jKHgv z@4fYwxU4sPvo0X8yWzJ!VU-d*Vp5}a)hWu literal 0 HcmV?d00001 diff --git a/android/assets/ui/x0.75/cells/drop.png b/android/assets/ui/x0.75/cells/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..707905f550840d16a884af1230a7deb46adffe15 GIT binary patch literal 942 zcmV;f15x~mP)8R#6dY31)2Z{- zxz$yjz$!FV9ah!Dt1(t}6=3>-i&QOi$7ymu7 zN8G1jQ?h0ADQ%!+>B^LB0vJw!SeVX0gTT3>CWT6-syl#N&bWi-iTH9=SSlAZmvUTH z--*bdR$fIDx=;4xgk=e3lc^f@0+)*zwM@tzn&+KK2h9oj6vA}uBCi8AU_@2-i^%6Z zzak0UWogzni7=UJL>}HxWX$bj?E$IkDA}Il4MH$mrVzx+CpZWkY75BC4V_;KC!GsWYll1Bb_O=6b$qZ_t!nG8F2yqar6QzJubvtl2GFuPk z)3N1=8DoChHl(VX3ImZHik%4)4_3|j{Z>tY17(0xFIfIC^?OUhT#JdE{_dDTYGWJ- z25uPD%zZTn=fAV}YvP($Um2i|2#DWx#eIgQr0V9LMnWNIv^uGh{fvOrfkmeUr$qO({$)gbT|*B_gwhfn0kC%qAeL z<`a-%={(p1@G@nZ1QL-Sz~jK!YA*Pkmy!j1B_e-QzOCLEACbMooM!o%Wp{16R`Rxm z55Vg@!(1Q{QB{550FEbs{KB?CF--waL`2DHxv!JHxxcG!0OK^5IR+GN5p%$E;8`n} z!axRW7jOkQ83Br=GzC0$>#07*qoM6N<$f^nLcTmS$7 literal 0 HcmV?d00001 diff --git a/android/assets/ui/x1.0/cells/drop.png b/android/assets/ui/x1.0/cells/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..951898b29e715fbefa463ff87a7df12cde16cedb GIT binary patch literal 1279 zcmVhjv*?JZj=yBhPa9nBS-=g z!B+%HBoIUwKGyyz?p(NaZ8oAC5y7~SaibxcAR<8$a1k`onYr`1sA{Kf-Ky%o{U|t8 zcXf50?>pyo)v0P2ut+*AX?;i?2W^ zl9qt?fIUoGK9ptPyrjjx^!Dk2H-R;#!KX+(47}Qx(q0HiIs%-;0ZxHl#7)^%eL~Wq zK6G~`AZZ17A6OzE`!R_{Tqy17s=p5pybCrK zUUs}J0F$6!)%TdB4Kv$li=j0ENqd10aMo->U?J*P^*Jl)ikaPRgQH6by@Oj}o5p=u zS26eGI57={4w zHn6t_V2(%(JO;mj%avXjgn*{1os0J{&cn7Cd?m*v-QPO_T&B5{0MsO8LVzjI z;Y>CLPWMW{CtjyWhe6X=4=o=rY?V}PMKU z>sIGF4?F|hTL54Q5^>g92eMR_fyYW6nh*#}3@WtZi1t8BrAVMI8-1$qEY3Q&eI2%w zxsKaP^`j+#Sr7PQk_QW*L+}$|%afR}yOD_rwUK>31D=lnu&)3*+-*%f@K9nBA(@?M zjNJGH^-2z8DTJ&5Is{)SvY^i-Ln0ohL?mp>mJ)%#GXN@p;qGc7xK=3+^3uO^ z6EL$|l5XMltRaAS9#?Q56W9*k3+p-w3EeTXf959O%Qf6OFu_fesn7}c!!T>@ZDu`^ z^F%7#Zj=Dltpgi1K;n;gi|G$}yYT)_;yxw6bs_Lg1JE(>cs5Gi&*OLVC!q(N8m}) zhgPWrtJH^_3$L8@f2SsVpn(U>Ou$FL9i}ZikJN#WiEIL&d)?g#coJ8Ej|&7gy|f{d zBJ!n~6{pXtG(HPMV{{aNMrG)GdI(7g6002ovPDHLkV1j2xIX?gZ literal 0 HcmV?d00001 diff --git a/android/assets/ui/x1.25/cells/drop.png b/android/assets/ui/x1.25/cells/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..e97b8a88d5a7b6ad048787081156cfebbc5d01d4 GIT binary patch literal 1626 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 Ef->>V!2kdN literal 0 HcmV?d00001 diff --git a/android/assets/ui/x2.0/cells/drop.png b/android/assets/ui/x2.0/cells/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..dbac0eaa40623e7f49f3fdc53aa419d0b4a59ff8 GIT binary patch literal 2929 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 literal 0 HcmV?d00001 diff --git a/core/src/io/github/lonamiwebs/klooni/Klooni.java b/core/src/io/github/lonamiwebs/klooni/Klooni.java index 766d004..e022678 100644 --- a/core/src/io/github/lonamiwebs/klooni/Klooni.java +++ b/core/src/io/github/lonamiwebs/klooni/Klooni.java @@ -30,6 +30,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Skin; import io.github.lonamiwebs.klooni.effects.EvaporateEffect; import io.github.lonamiwebs.klooni.effects.IEffect; import io.github.lonamiwebs.klooni.effects.VanishEffect; +import io.github.lonamiwebs.klooni.effects.WaterdropEffect; import io.github.lonamiwebs.klooni.game.Cell; import io.github.lonamiwebs.klooni.screens.MainMenuScreen; import io.github.lonamiwebs.klooni.screens.TransitionScreen; @@ -119,6 +120,8 @@ public class Klooni extends Game { // Effects used when clearing a row public static IEffect createEffect(final Cell deadCell, final Vector2 culprit) { + // TODO Every effect should probably return a string corresponding to their sound + // so there's only one switch around final IEffect effect; switch (usedEffect) { default: @@ -126,6 +129,9 @@ public class Klooni extends Game { effect = new VanishEffect(); break; case 1: + effect = new WaterdropEffect(); + break; + case 2: effect = new EvaporateEffect(); break; } @@ -235,6 +241,9 @@ public class Klooni extends Game { effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_vanish.mp3")); break; case 1: + effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_waterdrop.mp3")); + break; + case 2: effectSound = Gdx.audio.newSound(Gdx.files.internal("sound/effect_evaporate.mp3")); break; } @@ -245,7 +254,8 @@ public class Klooni extends Game { // and when creating instances of a lot of effects it's better if we can // save some processor cycles. if (name.equals("vanish")) return 0; - if (name.equals("evaporate")) return 1; + if (name.equals("waterdrop")) return 1; + if (name.equals("evaporate")) return 2; return -1; } diff --git a/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java b/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java new file mode 100644 index 0000000..33e04dc --- /dev/null +++ b/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java @@ -0,0 +1,69 @@ +package io.github.lonamiwebs.klooni.effects; + + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.math.MathUtils; +import com.badlogic.gdx.math.Vector2; + +import io.github.lonamiwebs.klooni.SkinLoader; +import io.github.lonamiwebs.klooni.game.Cell; + +public class WaterdropEffect implements IEffect { + private Vector2 pos; + + private Color cellColor; + private Color dropColor; + private float cellSize; + + private final float fallAcceleration; + private float fallSpeed; + + private static final float FALL_ACCELERATION = 500.0f; + private static final float FALL_VARIATION = 50.0f; + private static final float COLOR_SPEED = 7.5f; + + private static Texture dropTexture; + + static { + dropTexture = SkinLoader.loadPng("cells/drop.png"); + } + + public WaterdropEffect() { + fallAcceleration = FALL_ACCELERATION + MathUtils.random(-FALL_VARIATION, FALL_VARIATION); + } + + @Override + public void setInfo(Cell deadCell, Vector2 culprit) { + pos = deadCell.pos.cpy(); + cellSize = deadCell.size; + cellColor = deadCell.getColorCopy(); + dropColor = new Color(cellColor.r, cellColor.g, cellColor.b, 0.0f); + } + + @Override + public void draw(SpriteBatch batch) { + final float dt = Gdx.graphics.getDeltaTime(); + fallSpeed += fallAcceleration * dt; + pos.y -= fallSpeed * dt; + + cellColor.set( + cellColor.r, cellColor.g, cellColor.b, + Math.max(cellColor.a - COLOR_SPEED * dt, 0.0f) + ); + dropColor.set( + cellColor.r, cellColor.g, cellColor.b, + Math.min(dropColor.a + COLOR_SPEED * dt, 1.0f) + ); + + Cell.draw(cellColor, batch, pos.x, pos.y, cellSize); + Cell.draw(dropTexture, dropColor, batch, pos.x, pos.y, cellSize); + } + + @Override + public boolean isDone() { + return pos.y + dropTexture.getHeight() < 0; + } +} diff --git a/original-resources/buttons.svg b/original-resources/buttons.svg index 6be7e77..b1d3c29 100644 --- a/original-resources/buttons.svg +++ b/original-resources/buttons.svg @@ -19,6 +19,22 @@ sodipodi:docname="buttons.svg"> + + + + + @@ -117,6 +133,17 @@ r="6.9998441" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.43721182,3.7482347e-7,-3.6476786e-7,0.42548248,33.63808,466.20236)" /> + + + + + + + diff --git a/original-resources/gen-ui-png.py b/original-resources/gen-ui-png.py index cb3fa7d..106feb9 100755 --- a/original-resources/gen-ui-png.py +++ b/original-resources/gen-ui-png.py @@ -41,7 +41,8 @@ ids = [ cells = [ 'basic', 'bubble', - 'ghost' + 'ghost', + 'drop' ] inkscape_default_dpi = 90