From 18d1aa497732c18f27c2b54a7b87d8fc05430914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Thu, 17 Sep 2015 21:02:27 +0200 Subject: [PATCH] Added flying bullets --- android/assets/cannon_barrel.png | Bin 16160 -> 31752 bytes .../src/de/samdev/cannonshooter/Textures.java | 2 +- .../samdev/cannonshooter/entities/Cannon.java | 14 ++-- .../cannonshooter/entities/CannonBarrel.java | 63 ++++++++++++++- .../cannonshooter/entities/CannonBullet.java | 72 +++++++++++++++--- .../cannonshooter/entities/CannonHearth.java | 8 +- .../cannonshooter/level/StandardLevel.java | 1 - .../de/samdev/cannonshooter/teams/Team.java | 2 +- data/CreateSpriteSheet_Barrel.linq | 8 +- data/cannon_sketch.pdn | Bin 43253 -> 43929 bytes 10 files changed, 144 insertions(+), 26 deletions(-) diff --git a/android/assets/cannon_barrel.png b/android/assets/cannon_barrel.png index 6137cf4cec921da326126b1791d8c0b153761691..cf2b289c371b4112f9977468535dcc9b67908022 100644 GIT binary patch literal 31752 zcmeHw2Ut_t*7iCHMWl@)9p$P+M?nN+P{EEwYN#SY)QJjMKw)$oG{>PtLy|H zFE{nU27>`W-F@~9I=~?G-$5`)3B4T6tF}ci*lN1lG$_4k)QAQOOQw2G1vrwd+POdx zja8y&&s`0maY6DAyRtI>TYw+Z-DgboUmN!7&VyYI!TZMCelK=?WLCXk(DD0zgXhnV z48Od#aFmJiDo;#DtcgBD{*X)HOOgOSvh$W}#~~n0TaDpEwitNEUCOw6yE4ElH!;R= z?a+izw^?wvvO)~PAh9moozh;1#{N1&parMJZuaP__J6(P{v}zGo_mk}*)Vc)zA?956;QMWrrEV4ZWl zzV-^>oSOD+9p=E>K2+>utOz>3PmG(gffz;WoW6b-1kX%j(ZVq>4Z44*DhTkaoDX@e z+Q3-F?Xp;}2&wazv)scK!8D*MyebI8-8ro(tpUKGn{=71*M`&pPu4t^5~R-7m;LHF zX33BngF%y{Zd$t&n)le9|2j<_T;2kl+z2ttqf3l?~)1B*RKr|LLF2VG?> z^i%u;r4&1n4x^w9fq=6S#6zP3sOqGrQ&7w`rR2*w6d!l)Y43WK*1g z2~z0iC~3n$R2XZUX{vzN)ed#M{R)Kz0IuNk|90N3hLswIY;ZsvAh1?Fk)_~gDan! z7!d|S@25XrbufcTc^i0{8z`_We;9A0sWNnh2WwFY8}5&a_7>1N|21QJmjc}Nv0zX= zHK3z{XR3sU(-c*g(n0vk{c~G8RDhRBCzR5Rpp~`2Qw=KEgLNu%pn1)SP3mo0z?ja( z)$PB57vl42da%Jl+d9J?6TFR7KG3uTh{b$3u=G1{4AKeqA5SHc?9Po!(}od6hRX^M zVQ|2Lx-9D+b~kh`!}o?7OyDadE)9gW#VdFP8C=L)3o9E4UVEt?RALG_TX(_tcYJ}Qj&kMT-5T5>;M1T$*{=`h^;it zaOoV~sc9>Kuw=)yEt&2tJEnCD<%1x>u`Zrh_vBD@>K;OK z_9R~FGeunNKQ=XVHHBE+r2H8Gmw|(ph8~6bn7|=!v#0$;IAEn}UAP|;%-YY8)^2Ie z=l_VlLEKF$4kO{$(tSK$t`hD_Q&5cvfwH1+ZI9$C;CY;{Osis{`E1(xtTcUC!B)|^ zT@1}W_ZajWgTTgOv`5xGQkf}ANj03KVOp~pnvc@YE2OD`i(gRijAImHI&+h|!)W+5 zXQyq#Vk(}@)>f+Zfarq;?@x-At+B6mckwfd4 z(_sm=MQI}TSqgZR9(Uy)2H0!$+Pl#Th~H_S{5l4M?JxI5vaE_339S5N3KZqPlVy@@ zVYmO%p$EJ@&f+vp?T#VduLyLbtPb?5i1A1ANG@ut1^+EeT92`(>NUNAc%XVq~Q(e|fY46kMzoz1rZft|^A)wp#a z{5kESAWaoCe8coS-UDI5R}a5q1knjC7cM!wLcH7Lg%nREFt!>aYYBBlGfCrTG;_;T z2Q4rvyl%UFF^2nbhM&#R2SG^O_5}Ok@M}qqEiadXUtsGgRoO#y+MWx#4vG+(r!;Q= zGb(UPn7MRp=VRPD75Ee*Fow64r zuFzDek)yyVv|s^vQs8;fWNDfrzWBIphACPB$3Us_YluF3|F2EXNgD!T^jWDhj$wow zf3URppBGLf%}^8OW_No-h|eju&0kExr*rg`Zd*fiY54{DWVyiP7m57FAi?0jhhZeg zO83$WU5ybV`Kp^DMu5}I)4yFyqe7`KE7jvYM$F@@Y>FBSPBXq=V0(iKdFB)1QM`$8 zXwuY*aE7(>+!ruB6=9pjIJKMz5ZIe+vxyuGWnStFhu%Oc!@^3fa6brqm|LgXtHQy; zSIs6j0O|^-e@10Uc;)_pU0!uT*B*n=!#d++X_8!pm`pECsQ24Ta@LuAwM|QPz$xI~ zZ*$Tx7#py)Z1xgm{B41|EG5>fN7vMvkPuyX^g@a~6+#QuVs_uufbf8QPVP&T@R*wX zQ*BECPhh{3`MSU6T_4)r-@OkjKex8E4{0A7(TCH&SNmb$2*78;2Qr*StxcR{hYpC%0DN=I6tuf{^6fX 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 H`0@V$r#7ji literal 16160 zcmeHO3se(l+I}X1C=furA}UlZXov-*#tSY|E}}+62;m|s#9CU2C`iFlR?JkY7LoOq zDBe~;0)&f1D}uJjRJ^S5=n4W_DVl2O4?$a~U;!cdC#+rFmeZc|@9DoiXOnX>Gv9nO z-{t+jd9Tl#9^k*o+|tAC`mrddquXrD@sL}t4t8s_&XcwQ^P-8~+_ z%hGNwliIHBWvcB4mP5pBiKHK$`pR)yx6XS9$jdUVSU!n`u_4bqlB^LH_NA_V4Mb5%I?n=-3uXPoj?v8q|6rGBiZJ0d$t?~< z!93j&eey8PRqwyFl^9AhCw`2BIsT2Nl9{-9Jg!WJKr6zwKp#(BED zdnQEoN!mrJqY>tlt_!p?#@N7zlKMpixlr0;*BuDa7@jutyb-ci#pq;C1RO%|N#sjG zUXwkGY#RyDrt*P3PR4KuuCr_tKqRpLmtqKS;LHXl{PK1kZ(I*DUD|p3yg6Lo!gWTZw`zErcp2gqt~E!_u#jBpcIjd`51SpW{7Qlu zRGDl9tFZ`bSNrXA#ADFm#{1-Q`3Cd^*k-M2HzFfBcI=Z$1ZA%>i)(a)ny0ax5Z!`o zomq?=9mn~@Mny-V;||}98EudF>U%W~;q!5XYc?adoI&kYvGzx=M@Oj2G%flK#Fw3~ z@eOy!1g^=9yaompWS^FP#tm~z^IZ0XF!7^eUTl6hQ>jRx-VS$0f8aThYpEstIn&tr z-Jskx=0{=%5L+}+nbl|piO?y_uboK-sZ7#h+!4P!rDl7d36wbkYHRpRYz}hF3g8-% zHGC7Mcp>7e!hhfD{J!x}9&)8}!{5Z8rjPO~;xVYnQ6GDjJD@V;*qWdLHtzb37X_A% zhpp7ap}~ew?{U4D9X<-Hif<|vTUdzAXDbUE*|1a@?H6Yve)0G<0i`B58T{T|p$8MQ zgIHn0bu4mN)Yc{CzL=Z0%cZc<2zQF!j4e7&;0T8~qlm|((ph`qV}GMMTgD`{ z&UrEhC2^eOmn|cxNbVc#Y#FElv8CC%26QNVTuz0UpgP3MI;@yMUYAT=D9jObEyoH+f(>){j7 zFFSqlwQw_hRrI)HO6DZoFK{?EggAE)Tv^^e8XYy)O_!Z^Z)yYBS@%vsamWcbx z5>4Q8u1?Ec&4Ay@Gdli3U_bXsb)7w^$KvO^`=&$r$w=La1*Vvhdr4Qgn}Lk!ogSJK zpd7_R>M)a|w2B2Rl;qu%+>U|Bvqd|EIg4Uq8&yTyYF{9+MMB@Ub^0ZD-14^aQ?y#WW?7${(% zz#onR>L~5^l0MoHAN7;9K4_o!)9iE5cGs7-blG8c*Wc}+Yn3oCVY-ffbOPt)alS$~ z1Ydv1ALQ%B#X~Xumz6_^i;Jp3S;8%TK7^pjmJ@({|zhC8ry@4=H^&2 zs6_sF$*oTynkV0|G!u9xv^=+DEsM;Na{R@+;39LqGAh#q2L#`qZLo&OIcd)Xo*34? z=?|S}@sZ_g@@QD5DGmfaJli-OB0JumBfJf;_WJOlGtVDcUcC=JW;r3u>%*pqM=w^*XSmcvO3vK4(^WYT^r(}-7_K>qZ@+&L^ zao6RY0(DPg>s;STsMqsHjuW4OOUb^=M5YDugX?;7YeAhC+d4P)5b8HnR^!%v4wt-y z%buB*$QR!1Ie3MMbwwY19`Pho8Lc1dAb5AbFgWQE*Wm_?+c>b7av%HYy&v|5N zV}+7}#!iP)0ue>*jr*^#;mrv;T5nB=9HVwkvl)dF`AtK$fh>mYVE7FFZ`|QO%Gln{ zw8Q<}i5pK{F@v{b=*0RSi1;nLBr$)2GC$>N25$?JGZHRcws8hqv1(($BPPj_y{VOV zf;z03^jjRi?k=G&RgD}MQv#PWr!PD6W+N+n#nen=G=}_`y!VO);(`xUE?#R)=E&aI zqBuoR^(vc~8Bm@*f7NVO0+K(gyJT#`0lO@*(=3yX{Lp(n$9)-SFHZfcFpx>P@JCB> z0vXgSzO_fR5XxO6E6RNdJTLs{tGt;^DnK=Q8qXJ5{PB;{uNYw|=lv!z8_L}_e;Z0l zB=DOL*bsOuw@BD~#T4G$mHmRXOj04^)rCP66BRe1YBnAhJN(sPw;SyCKb#V87?6Pi z1`7OFQNUog|H8-p``Yanc14(>$MeghzPruQzwNZ!E?YBH27Z}(=)zbeSKRwNFTx5v z2LJ-Ws#=vPeo%WwJzJl`hFYfS zs7ndPYxW7^DpPbUwNH$8cSQW&k9Qj)`NJwFba=FEOsTR!hgr+}$?i^w|LBLl zP40BrwEF|IDp$mo&2q{KWkBoQcGPP(8~yS+w~uX2P`UC+vu~L>R&q10x0ZvnlirBw zx(h0DdT~wbDUkCUnoGMhP?qkilt!2%IrklZ`J!R)cT{+{)q?!2{;MZleNf61Dvw53 zq9-k3-Z5J{%*{D!QE-)s?*if~Znrb31FEkRQrw}oRJA0gY=-*d1h=EMmZnP8)SO0p38tv;8;-41%}D$CU<`VszLljueZe(jCN9l8bK=;`YS?dM3tl5TVq9# z#SQn?^H{jcAHOQ3%mkYQ9SR!O(Qiv@*K}url4%~FwP7Mw&UPAVb@)k}R%Q}7D_|XL zSjRx5^jb`}4JaZiG0fco@p8A%O0NJbIce85Jc4vqeRC$o9BR_lt;BW|Dh0=yL)L;U zm3|S`eHhfZsD$t;7UJI;KPhCl305g?ZYZ7!Dnz9|ow5w-4A*(35lqa@-epmI)d(kr z?^Wo%I^3xE6;%%CSa|4YNEv~N0lqsL)-n)U^y#2BD|4+Zi5P{RTtENfJM^@tpQzEy zBuH+f=r zWTaz`cY7c~W=QW=XaYfoD!v$!l?EJ2Jz~p5vdrdJrEG-4!uiA<2DSvuE~s5g_nK2; zapEci8-$x8^UI8JU+ypzjLr~uA1Wwsh`aw+*%OAz8Yp0(!2cfweqp}@cS#+S4)eZ1 zH36h~|5FM2Pw4UV+5PP_#wkyK1WHOIx>pfYFM{bnaoYp!FC*~)CGM-x{Sux<1E%(A zn+M@rFQV!%uw8T)xssiM1XY-EM4(8K%b z1OwhclWuIPF=>W&UpOHV?xEvy61EhxE8kRQpOM7Fy^w6I&- z(w73YxvI0}ygOX76H>ztGQs3FRX0X~qM>^$yM}|xkUd=4H3pQ3-_2=ez*=~1LEch= zY^d+6Xte@4j(fSHl@5k~A=Lz(rzu&uFI5k5C{}dG)lLPRLw3g1($;kvr=cLx459%0 z=la}*kf8QKCr3od=m)uF04u0ydD~b}+5BgE;9^OBWA!pRU*hwC@fVgwGQrOC8`Q!G zS$oZSdg4otNd}d>9M{c9F0f#|_|SsVCVH71@9apLNAFNK-E4OjI=rHKW~b7*4|`lw z^&5jFJZagUFqnNY=t0@0>R8`r1JP?yeR|vlyKt3VV+$z0roXAn8kCvr>!vOqsJB#I zG0k)*FUTjW@2zN?Nl)CdrlM^f$d9CLg9#Qd$VUT3;%={{CobF`_v+SptEErrGz=kv z|9Oyql}08MvLEEr);UX%KM3F?Ro!b=TjWy(5tIu+~UpfiOW00$;CMa_Fxw`3(o8!#{j)dgf|>~Onnt@a(Hj>8r`+3?Y`U!>eu-_ zW%p>{dFb=VqGEcA(pFtvAgCqMj>z&cn0rW|EjAWP6 zoRp^?CA7nI6z9>7S*AEDT=F2=gcj^sxpQ=rGZ~mhr^wL@GFP$hLhVTUzRSWm?P}Wh z>wogh_jSV&pCC^?VXs#NcHZx=7IWc3C*%dMB*@A9e&40^eQI=7ucUr9M6|}DA8(qp zH}e2}U*EB$))g*v)?aQEMA-?||7@RrfXv}*>G!Dsd&xhW{~(nG7WerpCtBTTYnI%e z22o|*D<^t1hwp3Wq%yFbJMhX0$Zvb{eWxYH3AEjIaC)KG`F%^@x 1) { + charge = 0; + + bullet.shoot(rotation); + bullet = null; + loaded = false; + } + } else { + charge = 0; + + bullet = new CannonBullet(cannon, cannon.team); + owner.addEntity(bullet); + loaded = true; + } + } else { + charge -= UNCHARGE_SPEED * delta; + + if (charge < 0) + charge = 0; + } + } + + private void updateRotation(float delta) { if (rotation != targetRotation) { float sign = MathUtils.moduloSignum(rotation, targetRotation, 360, 1); @@ -66,6 +120,13 @@ public class CannonBarrel extends Entity { dragging = true; } + public void onTeamChanged() { + if (bullet != null) bullet.kill(); + + bullet = null; + loaded = false; + } + @Override public void onLayerAdd(GameLayer layer) { // diff --git a/core/src/de/samdev/cannonshooter/entities/CannonBullet.java b/core/src/de/samdev/cannonshooter/entities/CannonBullet.java index 1d35d59..d50459d 100644 --- a/core/src/de/samdev/cannonshooter/entities/CannonBullet.java +++ b/core/src/de/samdev/cannonshooter/entities/CannonBullet.java @@ -1,6 +1,7 @@ package de.samdev.cannonshooter.entities; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.math.Rectangle; import de.samdev.absgdx.framework.entities.Entity; import de.samdev.absgdx.framework.entities.colliosiondetection.CollisionGeometryOwner; @@ -8,21 +9,79 @@ import de.samdev.absgdx.framework.entities.colliosiondetection.geometries.Collis import de.samdev.absgdx.framework.layer.GameLayer; import de.samdev.cannonshooter.Textures; import de.samdev.cannonshooter.ZLayers; +import de.samdev.cannonshooter.teams.Team; public class CannonBullet extends Entity { - private Cannon cannon; + private final static float RESIZE_SPEED = 0.005f; - public CannonBullet(Cannon owner) { + private Cannon cannon; + private final Team team; + + private boolean inBarrel = true; + private float scale = 0.001f; + private boolean death = false; + private boolean birth = true; + + public CannonBullet(Cannon owner, Team t) { super(Textures.cannon_bullet, 0.25f, 0.25f); - cannon = owner; + this.cannon = owner; + this.team = t; setPosition(cannon.getPositionX(), cannon.getPositionY()); setZLayer(ZLayers.LAYER_CANNON_BULLET); - setColorTint(Color.RED); + setColorTint(team.teamColor); } + @Override + public void beforeUpdate(float delta) { + if (birth) { + scale += RESIZE_SPEED * delta; + if (scale >= 1) { + birth = false; + scale = 1; + } + } + + if (death) { + scale -= RESIZE_SPEED * delta; + if (scale <= 0) { + death = false; + scale = 0.0001f; + alive = false; + } + } + + // TODO OPTIMIZE + // TODO Add max lifetime (=> kill() ) + if (! owner.getVisibleMapBox().overlaps(new Rectangle(getPositionX(), getPositionY(), getWidth(), getHeight()))) + { + alive = false; + } + } + + public void shoot(float rotation) { + inBarrel = false; + + speed.set(0.001f, 0); + speed.rotate(rotation); + } + + public void kill() { + death = true; + } + + @Override + public float getTextureScaleX() { + return scale; + } + + @Override + public float getTextureScaleY() { + return scale; + } + @Override public void onLayerAdd(GameLayer layer) { // @@ -58,9 +117,4 @@ public class CannonBullet extends Entity { return false; } - @Override - public void beforeUpdate(float delta) { - // - } - } diff --git a/core/src/de/samdev/cannonshooter/entities/CannonHearth.java b/core/src/de/samdev/cannonshooter/entities/CannonHearth.java index aa01e96..432bbb9 100644 --- a/core/src/de/samdev/cannonshooter/entities/CannonHearth.java +++ b/core/src/de/samdev/cannonshooter/entities/CannonHearth.java @@ -38,20 +38,20 @@ public class CannonHearth extends Entity { sbatch.setColor(cannon.team.teamColor); - renderTexture(sbatch, Textures.cannon_hearth[(int)(cannon.power * 63)], 0, 0); + renderTexture(sbatch, Textures.cannon_hearth[(int)(cannon.health * 63)], 0, 0); sbatch.setColor(Color.WHITE); } @Override public void beforeUpdate(float delta) { - if (cannon.power < 1) { - if (rotation != 0 && cannon.power > 0) { + if (cannon.health < 1) { + if (rotation != 0 && cannon.health > 0) { rotation = (rotation - delta * ROTATION_SPEED * cannon.team.speedMultiplier); if (rotation < 0) rotation = 0; } - if (cannon.power == 0){ + if (cannon.health == 0){ if (! cannon.team.isNeutral) cannon.setTeam(level.team_neutral); rotation = (rotation - delta * ROTATION_SPEED * cannon.team.speedMultiplier); diff --git a/core/src/de/samdev/cannonshooter/level/StandardLevel.java b/core/src/de/samdev/cannonshooter/level/StandardLevel.java index 2ec2827..869c138 100644 --- a/core/src/de/samdev/cannonshooter/level/StandardLevel.java +++ b/core/src/de/samdev/cannonshooter/level/StandardLevel.java @@ -3,7 +3,6 @@ package de.samdev.cannonshooter.level; import java.util.ArrayList; import java.util.List; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Vector2; import de.samdev.absgdx.framework.AgdxGame; diff --git a/core/src/de/samdev/cannonshooter/teams/Team.java b/core/src/de/samdev/cannonshooter/teams/Team.java index beb079d..2cd294e 100644 --- a/core/src/de/samdev/cannonshooter/teams/Team.java +++ b/core/src/de/samdev/cannonshooter/teams/Team.java @@ -4,7 +4,7 @@ import com.badlogic.gdx.graphics.Color; public class Team { - public static final Color COL_NEUTRAL = new Color(127/255f, 127/255f, 127/255f, 1.0f); + public static final Color COL_NEUTRAL = new Color(208/255f, 208/255f, 208/255f, 1.0f); public static final Color COL_P1 = new Color(38/255f, 127/255f, 0/255f, 1.0f); public static final Color COL_P2 = new Color(255/255f, 0/255f, 0/255f, 1.0f); public static final Color COL_P3 = new Color(0/255f, 0/255f, 255/255f, 1.0f); diff --git a/data/CreateSpriteSheet_Barrel.linq b/data/CreateSpriteSheet_Barrel.linq index 1bb1ae0..6dfc05d 100644 --- a/data/CreateSpriteSheet_Barrel.linq +++ b/data/CreateSpriteSheet_Barrel.linq @@ -7,19 +7,19 @@ void Main() { Image input = Image.FromFile(@"F:\Eigene Dateien\Dropbox\Programming\Java\workspace\Cannon Shooter\data\cannon_barrel_base.png"); - Image output = new Bitmap(input.Width * 4, input.Height * 4, PixelFormat.Format32bppArgb); + Image output = new Bitmap(input.Width * 4, input.Height * 8, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(output)) { for (int x = 0; x < 4; x++) { - for (int y = 0; y < 4; y++) + for (int y = 0; y < 8; y++) { int idx = y*4 + x; - g.DrawImageUnscaledAndClipped(input, new Rectangle(input.Width * x, input.Height * y, input.Width - idx * 8 - 22, input.Height)); + g.DrawImageUnscaledAndClipped(input, new Rectangle(input.Width * x, input.Height * y, input.Width - idx * 4 - 22, input.Height)); - g.DrawImage(input, new Rectangle(input.Width * (x+1) - idx * 8 - 22, input.Height * y, 22, input.Height), new Rectangle(input.Width - 22, 0, 22, input.Height), GraphicsUnit.Pixel); + g.DrawImage(input, new Rectangle(input.Width * (x+1) - idx * 4 - 22, input.Height * y, 22, input.Height), new Rectangle(input.Width - 22, 0, 22, input.Height), GraphicsUnit.Pixel); } } } diff --git a/data/cannon_sketch.pdn b/data/cannon_sketch.pdn index 1a96966a814b7e5dc9970b1ca11e4bd35f911e78..b58a31abed3687c9f34ecc5deaf595ad9d4b0e07 100644 GIT binary patch delta 18022 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 delta 17341 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 sJNWU#Qm@WczPa