From e30b9c352eadcc4f3d93038478ac569cfd950229 Mon Sep 17 00:00:00 2001 From: "Raybz@Raybz" Date: Fri, 17 May 2013 14:50:28 +0200 Subject: [PATCH] added Ground --- ShootingStars/assets/Textures/Hex.jpg | Bin 0 -> 22227 bytes .../wyrez/shootingstars/ShootingStars.java | 3 + .../shootingstars/factories/Materials.java | 10 +- .../org/wyrez/shootingstars/game/Ground.java | 92 ++++++++++++++++++ .../wyrez/shootingstars/states/GameState.java | 9 ++ .../shootingstars/states/LoadingState.java | 3 +- 6 files changed, 111 insertions(+), 6 deletions(-) create mode 100644 ShootingStars/assets/Textures/Hex.jpg create mode 100644 ShootingStars/src/org/wyrez/shootingstars/game/Ground.java diff --git a/ShootingStars/assets/Textures/Hex.jpg b/ShootingStars/assets/Textures/Hex.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53c1cf3f6f1fc2e525bc87cce24ecc27532ecc80 GIT binary patch literal 22227 zcmd3NWmp|c*6zlg-~@MfcXxN&xH|+1PH=a(;BLX)-5oYg65I(cK`xp3&Y79}&Ab^UuUh@K^7aFOA}c8)2>=5F0~o#k0p8XDVt>&8Q~Hz1|5FBk9)9Zw zpu&O!zyT0or~q(OFbGtzw?P0Q01N;Q4)LxB{FUI~VPGMlpuxZ)-t}029{o%6&-**S z20(;(e+~r#1pol6dH7HL|0f73lircXSa!J%rq>q$arEoyL+L$t?-O$4sXvUKoABKr zSZ4aaRTX@0?~}aVzX(yifb8u? z;=dT^O|%uQf2-0vuQWyw8twm=K@*NnP~YF^5BotG__3nz`7Z;sbhAL*-oMa4?r809 zMUwviq`(dlVFXWtd(cpkN+?LaABl~cJ}_0!zrq@){g&A zJwS&#I7s)O9GHbD)Fkx(rAO@64zK+64-%}SC<*iL`u=5y9%y4sNc;zZy~t^#c=6}` zk^eni$jPJ_^8O@|Yj7fBbI)0Mb2IYd{`=71g}I ziuk|i0rdUC*1-U%=x|>S{{N+w5{7^ov$`Cp2l99=G8|MMWF)eyPaW;G4%EJwRu%CO<^@AL74V8jpZtg#LdB=w9?9 z&Bi~{zbBc;^l*cJ67;x|B*l6Eu6&ozClpiExQ+h7!qm~m8ky6;~ z2Yp{D3j7UV1}Rn?0=JmMqm^Ij;$EWbYxJm4yByWTIbw*+ zzKrCTrr@+Zy=EKR73;cefTyLVuYInf;JVX6YgmPL2 zjv_zv=^oYVxiv1BeP!vjDLhH2a;Y^HIs~hutksURWpK@w^%+er-ohlKAHkjZsU%n* z`6`~hL7ID}|9l*&zDk$~OmI6i`#vQep_VxFoY@HvY*LGy;bBdoP9DL?tN&r?R(z`1 zZ7zWIWoc~+Q&2qn26H3rvJH6~nZqS54L*Wbv6za+MVnq?PAlSC$N!UP2=@o`R}B>c zvXDW9B8?EZ8F6M}UL;CQ8+iX%&MQ$dg*}?R4vIrlvm=^SIYH-I@RtFagLv9l4lSd> z0_h{B_?zfBMwMl2Q&B!j`1KkAK7N}jy8A)U7RJj6`B6oJ4n3BZT?oz3dOytaYVVz_ zCs0K{;%0|)_9iEfd92tNokH4&(G@+Di*5>Dtjm_qku*M80>|JK8i5fhgCDJwzyFLQ zVHB4MiOFh)9Tw0~CppX-m>@d+WQl`AjyU7;#M4`Z2hB4F+#URj^Ic3TO3C=WG zD9~z-h<iR2nng~($e!){V4Sn@lL1L1kND|kkKFSFcVn5gZEu322$oK|9K5Ez z7(rl_zF9)ZL+2s&>M_JFuDX3gSW#CTj?x?9!`FCdK^dxdAW*BLdu2Sw&@GGh#Rjh{EL@3_?Yp%bS z%B*CUwE7$zrV~fD8zY)~f`x+V)H$o26bKvps-N6SHrE$XQ&UqL61c2oy`Mp> zTVxr&-B{Mf-e&X@{2md|F{fnU7hxz0$iLC@)50J_>2T zq=}aE3P)s^3}UQp;H+I~7+h|!$d1RBlp{q+9LXki+!WCBCno3}7l+y%Yl(!X^wAM$ z-99t?dE`HU6oPZsM|C0^H&QtWxobru3BJ#j>6*Ti>iJ<6x6(*f`00JfUjA5+Duc`% z64i|=L{2P;eEG@LTrA`!$Diq@JiF393a^1&Du9kh7ag;0cfJG!dpyY5cutnn zIA$dZkA5N3lV2M6tac=X!A7m*)7~t9NB;CZ>So072`m||H-)_+Y4|ezdI~{ymQd_! zv|*4@>|mK%%qZGKEQ<$~lF;f?WUDn_b5M+G_)NBbNDq~g1C3lvN9R+pob++ODZV|{ zbmtVWJIyAM_>#6r>~z$3{O5DGPG3Ru$51lmu`fc~CGB0G5;Ko)qds#kpFl_2 z*MJb!*A2g+ELgnwa4eYNUYeJTa_kV5jDG6pP?*~pklW~R83#! zBy1sg!zM&6`L*!!DGlp$!`>#Owc&4)_w@%K_5I})?EU}mW%2zb6%`HLKd<&5OU}De z2<%Q=2CK34WK3q7iEncaleO5*cv+#_JK6$IUxn7(_ z9Wo-n)GdE7S>t$@6#W704e(wT(R*0{a4@KUFAEiogp`F<^snN;|52P2%E#_2a}7RL z5|cUyvaWIf7D#-%;ix(b)s#@SQ@w7#kDibe02oXXQZiv>auzIN3T9Sz5m8DuaS11XRdr+2!2elSp@rVp)hjWo zXoxX!i>=q|pf|t|6B--2lJg_0as@6lnn}>oy{>LIzwb5d&Q)|QO!QN4w#0(H&K*50 zUUDGUb~*hf65)_|cW~AkbJ`_jslL!hg7{CZ$Nj!RC7h#PsBuO?*ZJb*gsrb7hAt~G z6+ID7T$s(OWUA-t_#X3n z%wL-=xk(Kbu^`HF*21q8BC`Qg^CrOB;PxqtNw<|}Gf{$EoQ^}O;r!gjg_FqVOc?l^)+&*GCagQ2{q_g+Xva^zWuvL!;ONC zHx;dAX)ETr-fNn}z0A8=o)uL?Kh(V5&s#?W80P!V?;fdh0_FQOa{>aru)#A&7E!Kh zK@2}I0k2k&7>j1CO*;XT0v9bCxQBH%?wdv0RqU_~*KYty1y}TP&4BsHLyN#d6)Z9H zi&yYQzKbSKICh;TAu1G;CTnl3Ln+Mw7%6!RFt7hVY(!7JOD-9M+ z)@0W7wF1GssnUjd$|uK?`qCzFbCN)>4!R1&{c&HYA~KP^zVK9l0C}BONj2%Aen~(M z-b6<4^gCjTe25sL)B~c+8$fN{`N(YK+4Y9cuKGONuTHnLlJsa3C!?G2hbb+$2}AFQ zfN$)oiyW!YQ%RUzwP~?IZj$S*nSPI5=XdO%kyW1C&xpSER7bZA^x-F)WzQou3>4Zm ztL>t%)KywXp0kWI1(lafSR1TONrB!N?w?KEn|F3gakFO;2L5oUgoTSnIA$nY%B7mz5D$;H6l z#mH&yQc*3FP9%JsAaRi@$C7XIOE5bIHmGDjLU1PIc8qum@9t1mkAA#FLz~jW980ae zm(kdMkHkYS!QbW!@$$O4RdM9!%v|_sObsQhz-hy6ENUJI?H8zHyzL)d519EAyn~~S zje1RH9KPs_c3_38xHAb+MYZ8wAFQOrxW!vtaPlFXKkbRA2NlBD;&7Hxv@J@SK_mjQ@&J(-nIt@V@14R+UkBSsKWf5 z-cp*^Bxih3rw|RMk}*s|`wC&9-HUpyNAR)Y2TAN?(@g=^qow7HZF+@Fgz!o??Hd5B ze5UQQfP%i>lQUAzL%6m4+VTqwq{^4A*amuJ2Lz7`-b@bZOxR>vNK`@yY%Lh;s%fj zQle~;!|Fr$Xh{x-Vp&cbJLsP3-7O>ArW{(;0Fz_;on{j`zXgxMql$EPsP6@tY9{N= zKdCN;3QKy@qAu~6%F7{Zl)LYJrWNIHPjnX#Ff*M~tHWH?d3R4!Ls(lT=-s^XLq)8d zbtB&ZQG8t3>etmaFW>l^Vh&8QK}DTYlCmn%D@VUid^#76*avn`F~80?_E#VXc~!Wc zmczDWWSyyKsOanRlW2^?V}jwj#;aX@T{QDCO{&4zomqntzm)sJv%OxRsl92BSA zlJqx#`0i@jg~U*Io=#`>Gd-e+bnLh?)ACzbC8!yk(owwMG?`IOFY1?`;UaH*DOjLHaFPrqrQ%2JdxI)VH%HW_&|LvRxS!%QY-L%k@0e8w-VMhG7 z&4>jaQ;tFQB*FyyLeD6i#9d^oaesvSkF>)@kn$V1=`Yg`n8(tCY9*!Q7TMN6N3@f# z0z={+*b3y3ph~(N_y~1QYe7u%7s;J&JHYd*O5Gi`MpH33>ngJy)xu}7a}*Tkz-~Sy zC{6tN39B~%{POr_C|1FaewP8WCXR~k7)Ac(vxL}5^b=y8#oAKUYQtAyowAPt#tMPQ z$HhiYF&*eiF&JMSQwy3q`|9_Wtp&9jA{M4`8&{z#Veto#mrU<@eL9lEhFY&ox4t9Z z;JKOHT>fw}Rw%sW{x+qVxyGPk-Fg3)WH;-e3^UmYul9I5Fwv#0zNa zHS-3T1X2n);%8|%QsMp#(O>VQTLj`Q2+B8lDQ&A%vS(9~@@*5-GCDov#`!;Yj+%Dh zMG`7B80%IO>^2w0_O>Y2*_beSSHA(G2Tl)R8#DAc<9>eK!7~S6;qTWd60}CC%&yN( zERR29J+7?Inf++QU@%}cKgCvo8=Et@>R=v8ToX1iu5C^t0RwvxS}*yG07kJ4uEex$ z<*RL;D0C~AG|YtfWnBo5!M3fqZ2OS3>%uJSybfhMZ4#vT%BwtC2gja1xkW*q*)cSDnTf`82)}&xZ20& ztmI;feS2rLyR5CdjHYTfHUY~Ak0uLSn@M1E#1RY2eMH0?pmFdG;286TWlV->8&l1Y z&to(69J<9AE@JGET`aulF(-b?IHq^U@m3Vdd%GrEF$TO!|@0$?0;9(vZ{CRVukcIXPny zkX9nZG1MW5(12-#{}JDf&LQ6-Ui$uy?hWA3UIpKb`J`zn;PaFiFKbwH30TTvH4rM? zkxR6MmQ^yQ?)i)dpL0cvr+~cU1?7C7M?K+MB~|AaB51W;3ao9c%pDK^AmW5cx`jQl zWYQI2znq^`onrC`q^CNJ8{}B1qx;QoK#>M2Ua%lZ?ch7g{rd6R$_o3plugBKS~Y{s z7lHz31q31y3KF?YH3;oH_j_yeV*7ILT`HfJj<*D>v;->#%W&UC}x>j~$~-Dow^M zGLA~;hV&_*e9W?OE%=naF%Z@3{q@C*j^h-FX`og3d9`-Ck+0Z1 zXC+DL(!-}xP`l~M71OwA*|qHrpgw~$;_e(hT4u0x11864@Qax`YUsSJperfk8ZYb( zpi`ZceXG~68H#z!Tw>3g(V(?5RdA=erH`6Ej#IgbMq10;vq@AZ107=P)agjrL&3B~ zV-~11J9!bCTUj-!VX)FAr~U#80coT^$n9~WR&bxH$)$+C(5Tc%m)CvTZ~Cp-FbkYS zXzpq(k&oRBW)O;T-*Y>yAiv+D3`M8<63Zuv~-c{{meza4SZ$*3{#|aLZr1M$LI(B0g9BF&1K8WUGkCP=WkiE=bbmp`M=r6_C*z@mA?(i#pM$7>y}$pVu&vVgoa?Fp8@y)C~w7^YU~mfF+B zQ;p<*y?@_E$6J>_sK*o%a-w=#pnYabu~@Jp*D2P4+O^ORnF38YxQLv(tIPIw}RS4)0muMbIXmYDmUXBfH`>R>bm+xpnTnSYr%WV0@PGuZwp)i zftpG$*x2qfayw_PK72x!DKK%M%JgBFUY$@mDTK)~wK-t?$fQhNvyjpdZK>K&P;QiB zvarutgS`b4CPtG8eqW7KF%`+cjGfRSS7DmBNs3sA*81GvWWR2BMszN4ZRz3qA>RJL zDZ;WjS)auHgRM*V8z6>Or<@I&>od7Aa;cBBHo+_5f?i9GK+0yqaFD=K%|fr7Cp$gQ z(d<)|dz*C=aif8{a+0HJ(sL{mSyqExD+&6BG$Vm>Tjmehrm7`yEZ+)CjDaP1koLT! zDh9%!PJVgzwR_|syBTYsz3x1mQn`~UJie4tp?zTGv^+|Z5rW_hD*@c~lqv7K6U2om zl42JH$W&K#Mz?vhVP4Wa>wbZ*L?OkDX``4-H=>S}es%jW@u)GxhvMi+FOB-SdfvI! zIpt>8@O#I%!N|v@rjF-v7_Bj89fE^LvggcQ{~4wbUs02)A6ldxo(>slcdQu*)v4^b zRn0rhd2D$^vItzJHKEt;4|_`4Ex}&zuX>Uo$cn9?C74c z2&r+`P!-*rPiwrUmGk>*JnBY|+#E`C@aPXY4t`s!)vJnfJpz?S&K1obbh`0ezdNbS zB8bN0_NFsreFT+EeW|(+=*{iJ#VwjJ9hL*k8p9+Zr-ZX7?eX$-Vsi}>PJdq_qs-ghHMR&#M09A_U^jX?ME%emJ95~7kgR{i>)2joyjcxoVE z#d&X=Mn!>*#dPSlKohcyUs{9(!@KSnteboVriK~EFim=EXw6ZW^vAIfoERfdZr+Zw zpG?r`@0zp7U8EG6i98EtRGHT$>Q*?OTw}Mf?pmb7t3DrThaVA*hi|tSi^^iS$L2=B zST!-+pAgxKD{WBRKSzqDNM|^9j3Yv)Ds~| z7s)o?bF4PlmSOM`w+ocP>~~vP5YZm!u)GPmE}V?i@H%LKT?wj zVG50v^kYLXb^TPo?A3VewO8Lkf2hTz-i+ZdGv`?SR1seIRM;%?mFTaz`y<;A1y@J* zyyVLfCo9}7y4i&aCKi>HUGVE#;kmd!8J?6JhYb<8Lw?y?QTQODY2~d)WP0+zP%+t! z*b1C(%y}stomkTu&kNImdM2%WO7;S@zx^~0qXX5ZwX_WnvlM3+Wb507cR@o3dB#dU?i6w7Iq0_^!$|;xVKwQ3=MH~ zzb|)%3H>tuy^@Kf>0M-D(HpfQf~~aA#$%xFX;=KLM8S!2Qk%RW8yRSGYId@d|ypfiOa2;Z&1E%gY}2FDf8Ygke%I_Fe(|M#Q)Th_^|5@ zFnTb7lp4qGH&HzJJj4@-C4nvYjT`DI8CVrJ^^I}dpHSIayQKjMnt@2M^fh%ie&7Ks zgXrcCY2+3^=Q~A|kYWP@Fr;>vuWEa#Y9)xv@fwHU5rc5JWFlWeVUfEWsroYR`CReT*s;w6TcsZtn%FS+5>k(uxq;-pL#O=*@iI?y8UDROfPA%MfWCL0ee|^ zDUp&U=9^BP;|V8z+Yc7&)cH&+{LYV<9x66S1ipqh{5-@0$yKDdAu85Z7-ddHJ#b8b!FQ?_kkA#ZIk0q zM>@PYVHM(Td)ATPhj82)xR^qi_Qbam-&c?!a@-C<*;|CF`3 z0nQ;dxpX$#=h_j=3LP%wH0svshq_9q`-6Sp(i(?CqJnCKlj6g2$u%?fyIZhObwR0(3#QUW7d>RMYaHpE)lU;rlBg)>G= z*^&0|HBfk56h?R5Bf-d)^ly2)YkQ;D%u5!I#KH^_x7(W7<z>s-!lxeN=`s*%@qqBkEi)QX!?W3d}^7&8e@)9t-D*vl;8#($ftJTklv5ak< zZu!J!jj=a9_W2HuL-cs|J4O0F9cVx9j)WtT8ipHp1lx=7zO;CP<*>T@s#`6FqV2N? zC7JGP_HV9sdbG&J&Ne;cZnhS#c#(d$jiXS#i`;B5EMsR4PZ9iF_#*?y?vZ=sLkCW{ z^w}cQ(Y*x6Em`Td$Vz{3A~|rUJ#r~;%6DGscj}`{y+QhOu4w20{k`tOuDm*}SDkW+ z3yL=i2aFCIT}ec0otHbe?X#~RfwNldHA1dvO2K{z8z=8jWBlE>0aR~xYs!M{Q+Z8D;XC$`H!^Q{$S-TZoyj#|mSHf**r=8howa(P)fCPQ9gZ+~+xm?8Aw5oz$N z*rMmlK$C5n$oM^wquRX<8|CW1%yot4?WVQ%WtLcM$+Vp^aPQ_@qm(Idc z$}#)5zNmfwMNPx~VG7w}Acg|6jIs!@APsF1S+mOwKpgP3|7V4Ky-PHvvrC!aRnPMm zL&8JZUGOiZqidzwx0f1S0+H$oZvbe*uCScq0tPZZ4*vOmI4_Im;vF~K;5h{~dpNwbl1&6ICI0sQRqyX z-%y;kX*F9DQ1TaQN%teZ1;PdLo;oo&POerdRV{kh>LYH;e;1N1Kw#*<^)$p|F8^R! z{r!gtt&Kt5vqLG{p2?rBfWphq^ego{mEA!n@P@)V5~d|Q%BUEt7NM@Dv>a}gP;6NLjYw#KvXro2E7IAxFh(`y>0Fqv zqBdQlSyl?peNtKV z5KFds4QI@GR-@)JWfwQflY0h<^a)XfW|0?<&6-lteeWUJl(VP2jG>6&I(rvrt#{p^Wev_sJ?@(BD9l6`@k*6R<$bk!K&6gxUTFy~~5Dvom9XGSe z52NLoR`b_P)%6#lb!S;I zo-_x4ix#7U)07N`c22>bA+n_OI{di>dskFtmBnbzRU4=Q#V)eekS<#S3pxU?$wA*& z$V@Hmjo9s!gMU1L~MDXyW}5`$E*vOcrhPAOmUB zugi%ahbY?Dc4-)F-`!$aKnu$Yq57%ak5iZe{3W4lC8+W^=cQ{uyOyaH=;~=mr{IfA zvrUq*a{6_5sJvmViIP6>d*is_y5hjJ0)!u7aCBl25X%Evf?S#WT$ada^7>-Of8<-( z3T-v82)*o_39X+!tNF1vYrST`2^wPL+dibMYf4ns7f6C$lYT{1jC*YQ>cF2 zOq)&&wT|RcLDX-GZgwWzGGxB&Qyp7k(jtr~p6;P!6wBA*KDozLc-9zNy1-B8==) z{Qj#o@r6V%HFnzUr=_xcoT*UkH*Vx_84=P^-tA~In$c^}lDPKw!%DpFFV*mL8xoku zBJpmSC}u_XsyAI047#8>tm;Y@j`S1s<)5)M^(I;_d>r`p7U>=BNL1~Kn{D`C!>AVa zw%b2{DeF)6dR5#+d{kB>SE9dWK;{Bb6N|oiXNtg}jur9{JGM3H_?w35V{ zqGrQc+n^_>o2RSXru15hfT!G=ZqIogVG+g5#ik~q%DC5RY^_a}KlNh=^b5Q>ygz}Y z==y`1%SX&Nz`&}0`*ZT#Ch&zDvc?3H-1X2`lkYvq^%szdp_#j-+~YxNj}wlXhyf*VVmdK^TDSL874>5752S6J9@G8|B4AOu6g7A#&7orG6cQ=&Lv*K_1-Uv| z$iroZ5H{M&r1!Z$ZDlnby(cxBsuZeifnE}}sP`Eezs04tEPuXAj7lh7LeMT)+6kCM zbJQ>KYk#%UI#RFmvkSbJ&j3^R|gRWsfva$UHKV8hOuk}_!61{CI{ zA^8EogJ8F5WJk`~JS9;(9V}BRf7ant)Ks(Suzr}+#3X|wYVOw9U8>%1YY8 zs|DP(W~AST!BnV>%0m116_ZkfYpn1761vGr7{w*%{R7nRZb)ylowVj!t#>zMlI<1g zy!RhBWOXD0)W;Im`U@+}q4`~kQ&BWf8=SYoh4+?swfEZQA3qqIt^DNVjLysa8qT}h zb1dDC`dEs#x}vul8+F+TD?iY9jdYRtLU(=+)PR0@PNSsuS#C9?9A%wzWY05dC|#8D zyHw$gFV>zm(=oYFSxn9VYmBuT?W}AA9frTL8_cJ#FqkDFaKX~$kSYcZqR6*Vs&gET z;v>HlpI0`Kqzs0yJ*w*Fn?BNDBZGE<-)%r%*c8t9TFuFzK&|@io`D)#UEP@NM^^6H z?n}86Qa_c_RRJL_o%Ga>k`xBDU=1c6O{)9AK`R6KST~R&p618jD~3`ltSeQT%T7iy zHXKE=UA8KT{mU78sNe+4>`SmyYuzA z9x$I8&%XhBO`X{JMzoan=AE0)qfbMg&?QbjKl246Hv)??7td47I|@c>h7HHJs8)iq zGEArZnHU}S7k*tzIX%m8MR4MT&{ z&){J#sYyJgG<^9CT{=0fKSy^uhNr*x`sB-D0s(;Uiw zt#XJy$`(ixWEw+_YPl5Lm=t)3Fjaj?q}zR7+!57oNH2D57Otp2nCtVAOA^vM`&d!$ zSmK6cLqlv|2_xGe`;B~R^Y>oa)9arT8rpqh3PvT+L=Y+5J zi&{la&x3txJE=hsBO`|fReiaU`$kF-lo$YjkV7e9vB&rr%qzaOOR-NQt4RrJ92EbY z8+3St!6Mry~;>%lvx^ z{ngUCU}c#6<_LAudqx&S+8CQsC1FDLfM_6>t`;$Ak7-czZ49FU0?yU~tt|}X>mIPH zPyr0a(P9x-!EkS47$Mwm?=-7{L*3wcddkEp9yOH-9z7n*GohR4{s0D2M?P3b&4Nu(m>5nBgh9ji-Z4o9St)%a0#?n(NZ7hfv;hfq za`>eygI8i(E@#MQr~L^r)h$J6Syp4@uC+B@t?FwHu#@jtP6f22a87;U(kP#C+tLKq zok}28zEAXCXv%_Vb+}83&iUM?+GO802XSe;qd*~I#FJRnxnbCxHZF)zU+n)#t0dQE zzt{yb$?FhPulzpo<)m+7WP!$IAr|vkHs@k=sb7I*^?abHSXx5j|5_-qm8wqDD)^M7 zebr-JwZ#N=~ z2ZFg1UAw(^R_c{U_ePi;Bjs#Ajg*|PjO-M7Ik-<#EPHOoQ*hFfzJTNB#GM_Y$}#JH~SMjb_CMXshnnwzsk1F6=QuNsujEbD$%Oq=MR z7zDL5%59{!F1m0RjOuCG`c53WKP>F?$|!xd&kR;@#50QeT)ULcrK`T+zIoA;s}NP^ z&DCEi5p3|Nm2MkdrxBLZxWaB|J3c1_Rpd-dc$Rryr^KUBAgA$E*GGw3lh*uPBYT^! zuG9A-E>q{|Wg%cVPkO4;usQEW5Ouiz!%-y%i8)!M!*P-lUMeL@BV?JT4G5}r^Ip5t|_XJAS0Ufe_fzx(EjOZBk7dG{G zn8VVT*x&d%~RzuzP?nYkk zMGY!%ns%9MeuUZC?=a~Os@k6%91A?6v=%<8?Qq`ieL1YJJ;4qDS(}#aZ5MfPP49BA z`C$5@;4qaC&}e^}qF-5BShF%R`(iHRE{i*!7I8rghxp7C<$ng;#y4m#u!Jhn z0)b3Y?i){p9I3?&22rylI&3Icpq?Ek{T|8QV}Qv}-lL7*Lv`OjaCr{~{*&H6oh4xr zR%RAKAy)AZ$nX2>OBW%MH-I!s+`vkG-nKkFtK$g7hrA&7lt7P4FKZq76|YoieiQK6 zAC&p~WOVSzZ23`xN<==z1o0}&oT-{h^qMumMe!_! z_nkVW`-%1N*br}+4O(Tz=xe3YMHHAVC{ICKDX=`}SsviETmFoenl{pmaUElZ+={Gc|e#&v$AAm-w;4wZ3o!3aS50V1nX z0O!csS`9uOi$Iz{vERNm^J`Nc8UEYLJGPwZ|2_@K(iF+vX=;@9IVE(iL4vB+cQ(? zO_v*RRo>CNjP@tsMwt+(nZMDCH*{}JDOY8+=?N!f8Wb-=GQeoqR${S^i$tJ%CK)sP z;27gZXms1B4Brl6(<8NQn|FkXDWniMw`q-)I(95b8#ja`qonW1A`?5&@5K;M+xkn; zb(cmtQccM)2|y4rM?b;ic~=Tu2*8YsT_GV>6w2Mi=&q9J2Xn_|dll_jVpTozy~Q28 z&o3M2OP%fAPT0IcF%9T1s2AjAqL%BM11QhYglpW8VoEh_J5}JLejvABLK@xP1@+^N zM#v!14oNF>HBxypQNi+}#{TM}6wlbpG_zUjpVe1{pm@XpYa8HHj-4t|38>r09~_JO zIonrpg2Is7ISCE^1=V$&`}zz%dRB9q#*-n;%r(jX4X{`EP-65fP)2ayKs@r)3jXOx zGSe9{LR0~Zi#rf^vhI8KM_2 z5<0v{ai8&LX=O`JkkBTsHYQGw%=8D)LHo~cDBz=PJ~yRFHF7qy%x3y39n~WtM?_R1 zK*Ys20H6FYBV%+Z|I^Fe3o}DQQ$6CYIo1p<_I6)pe{l%H4w%Sl2?_;%ikgT=aw3+7 zu%rCi!g1>^a-Y#CY!iX?f>*QCkKBHU8xMd#Dk@Wd9F4k@^=udXL{DWZ^UyCnBwx)g z_;81_8LGtIXF9)9447^>EQq1upglqqx4cnEidl-HO_w15O9x&5GF)ZlTY`8<8CVQi z45WyvR+#7CX56|etG!}aNRa6Y-8h4e7Sh!_Ek-lSU0WocbJp<}kuy4Srj_1s2r$7pc_gHz=O zX7n^dj4kL4Lg(RBm+2?JUE%Rb_^?rc+^)yq9Ho=pn>RcDaq z*vd|DYscJN_|z92H%}X0KHNtTkG;844r?Mfq!54g=zJ6^`V;o3WM{jMD}^4VXxDGV zTQ4&_+{~N%Q;tti0NjU|scjjGWbh8Bx@;cxg#u>NH$d^Iv+c(#-ZE$wmu8?RyHZ5< z8vvh4bhWsZ$ApDWsRmB9X;7Lgzm%1)`Wb;7aSx8qw&siOk!;6@Z~;F!s`GN@))ySm z16@GtEW^ItB+!^iAl4iwATV^}>Op!Nb|VKCe(t(PF~|yDQ^}9*ePJoKgCt;u<~t~_mK?R7?4HOD7%3~ z*;R$C^pT1x0|yYtVmUFim*^Y$`qKdJEC04B!eSf8LLXTY0zBz5>QOLD<69U^%EQzC6ypZr;WJ={%}aN zSbSIQ;n8qd3dh7#0LFB42r@RhQ7;JL*r?tHv4mc@*|YiwTi=ys8Pu~v{sa2!5mQ#P)st4lvK){xGo^p44P~DqmP8k%hVRRnKU= ztRcJiq0P!_R_YR5_J=tD{wK%K>c*_h^qomHWXRl*<-AC?>leXQncp%S<2st?JT0{T z1rJ}-`>9<-q1EU&jy%oDXA@_U-7E^i8&Mfq2bgSSY|S2*M!SEly#cyGi^&|%)uSAW zc8_l1f-zy$>fg$#(41+z3V&LNK!d!XV6a2ee%=d;a%7@yB4OviGmP_7t1HgLJPr@A zwA=@qs)E}U8Mw{UsSbg31#xRXmatg6C=msc7ieX+{*sDU$zl8IoCha%fvXWo%vSA8 z=Hgjz8q`rTL~@2#^$XT^ZB3d3tP%&N{xlGF`kHuBgcJ=3-nHa{M;~2g>m?k|qO-=@&TG2-$1uN7sOA{~yCo0M(Rd0Ln`xdWCBU%rI;rI~aNA4d;=#KP|o{bp3h zy*QA3O%hJw zij*6j zp&k{1goaIr0A48{e={;RLmeIoDT}3+Ym&)xo+o$tKh0cuIF#KRerJq*8x$#JhOuSe z$u{ed6~&r&KspD+KLncn~e1Ow|rphzGAfc(z9+X5uh z-NR!@L?jqSf=LvAin*J3w=E_)7L3%HgeRr9%G~TU)gAEDf{{Bz(i#9;-0$IU!7t(7 zY3w-f>X~<`p9lo|MeI)C*LbJL?0_8$+X4Tu2+Ti-J;Qyz%s=V>#Bav~!M3`8v_H)p zj0AwK_rDrg=U>z>;!iyF{&4^h5{&%ixwqfC1p9{i6Th$cSIGUYCK$Q*a66;_zqEFg zzwA#vY%jMx!fbbYZjfzar^W4n9SgzipndJX*4rN{6B=Z_8i!m z_GUP5?>WGCGLE+soS}UjM3b;{eVVBcUm*iu>-%z!*AG4iYPNh2{q!Y09}v@y>vpm- z^bNE(vnPs)zm5PLkpbeE4q)L%`q_iNnC4uy${8`-F0 zN`7y4KsNz_&V|5Mw&G!gV|@%16%+Z)N*FcfTS~4v6rFcJ?^BMy_%5IYEUDdQk-}sZ{Qb=RoMB6gOBq2Ry`n~F# zd_yc#+WC@y^ZGlUKl(-x zq}XLeSv|PaQ2aA3&ug+WeYVmG9qNO9i!!m~Y5uHcgp}sU|Wb zj$4u^;X;|g0Woz?@Ztv3T#C&QP?{B{GRIrbF~mrUjfV1pfaUVzqK!mzq`xPRN9?0X zm4cf0wv9hj3V``>=MR~)p|i8?$Q1zVlt-x}FkbMm5;JAzT)+X8vRiV1Ox@7aBBd#2pL6nmEnT~$ z_eH5mE!68II&qPj`)YS2c1HIhXQ8m|1=|J`hMXL*#9_es8qEAJB|ajsb{D$RSCNM@ z(?;~)4Z4(-eOr*MT^OFbUTHK;{Nav|W$4D*=-+r1Rm!X9<|LMCHMRpZlChK>1{XT7RHR8}vO5#&9FzThj|W zk7zfIs@G%IK)2EK>P5=gRA1BUZ~f;p>K#~RQY1jR$jTah3-?|3 zV(7^(x(p`cEIo-B+`3`1Jf$mJ>6PYMcIkJoXmhk>&Up9%YmwLl0<|I?I(bxdt#K0= zwCrf1dJ%kHH=GdRC}qce5O%jz^7RwBqZ`jeTkq*Docv_SWAAMfYaRwi$ohQEkSO7- zP-d`Irhx{d0P#&gLd?oPs$cIU{(Hxn>O^F7ysPsho{{@jENN2p{1$UZjI9!);F^8g0~Ap6_ZL^y*?bfo~xtm;W-=`N<)0x}f>KJQs8F^AN#_dAykxB9U&9NaFVB=JNqRzP6C*b5o z?rO6km>&KMU8cU7&!MVgvttNLKS%nLwQVMn2?;nY+*m(fw~ztA>~*RWo1nulw>MFVp9hwLdw3Qj_YnOsuKH&3s*$_&w> zqq-VrSK-{{x*x1muD=)b>#sfoxm|!+lG_;KLb%JD>9Cev)v7zXNG#%*QG@kBEputa z{XHG9sxu4|a^p(vm8V(1L_9wJ;)?MtPRbwz!T!yUCvdy-*AFi<@UOPlQX8lJUR?kqrRd7rM4~?g(eb5auZq~`Hq|D2!RP4@PO&@_tM%ya6dz6h zs^1%JSYi5AOUpWt_fbKTy3@w#I2yjcSWrClCO*E2aZ^kbdg@rb%osoq1N4}!(} zDO7bldst#%6!XLhaf&!{TUc zzEEXTbhiM~zwfh@cQdTr5r~Y`4SKqgehQMS7Hpus93aQQ zbaEw|z)!F*7EC18B+h9D$+O9TyEnSUQGe zym1%LqBUgI%txfZU%#qpzX|kh#E#Wvxz{*RRYT*I*tzL(K}R12AQJQ+`V|c+T!G!e zdHE!L>-u9QY??51VT-@Ver=A5=3&VhZQC4FSu9k16<7`Qojwo_QoNNH=?|~zUlt#;p_KDD*Xcus%TE7B}XE%M4oY12z<(HnsKnF zO35jO&$4zhbmmA%MM73eID#pd`+0G+rF0g3x~o$(#vQ9KVY$F+UUhCY4MpF^=b4Ri!?hWyc-WafW z`mQNsLS6A#>Qq;`fDz;DNT+8dW`v>(Y)>fmo`-$Bg)dRCd$!zs{*r!3^VVw-KaHPV IHQ4O?A45aqE&u=k literal 0 HcmV?d00001 diff --git a/ShootingStars/src/org/wyrez/shootingstars/ShootingStars.java b/ShootingStars/src/org/wyrez/shootingstars/ShootingStars.java index eaa8dab..c718ce0 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/ShootingStars.java +++ b/ShootingStars/src/org/wyrez/shootingstars/ShootingStars.java @@ -21,6 +21,7 @@ import com.jme3.app.DebugKeysAppState; import com.jme3.app.SimpleApplication; import com.jme3.app.StatsAppState; import com.jme3.app.state.AppStateManager; +import com.jme3.math.Vector3f; import com.jme3.renderer.Camera; import com.jme3.scene.Node; import org.wyrez.persij.PersiJContainer; @@ -51,6 +52,8 @@ public class ShootingStars extends SimpleApplication { Materials.initialize(assetManager); cam.setFrustumFar(2500f); + //TODO debug + cam.setLocation(new Vector3f(0f, 2500f, 0f)); sManager = container.resolve(StateManager.class); sManager.setState(State.START); diff --git a/ShootingStars/src/org/wyrez/shootingstars/factories/Materials.java b/ShootingStars/src/org/wyrez/shootingstars/factories/Materials.java index 37091e7..d5d4d7d 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/factories/Materials.java +++ b/ShootingStars/src/org/wyrez/shootingstars/factories/Materials.java @@ -25,7 +25,8 @@ import com.jme3.material.Material; */ public enum Materials { - UNSHADED("Common/MatDefs/Misc/Unshaded.j3md", null); + UNSHADED("Common/MatDefs/Misc/Unshaded.j3md", null), + HEX("Common/MatDefs/Light/Lighting.j3md", "Textures/Hex.jpg"); private static AssetManager assetManager; private String material; private String texture; @@ -37,10 +38,9 @@ public enum Materials { public Material create() { Material mat = new Material(assetManager, material); - //TODO load textures - //if (texture != null) { - //mat.setTexture("ColorMap", texture); - //} + if (texture != null) { + mat.setTexture("DiffuseMap", assetManager.loadTexture(texture)); + } return mat; } diff --git a/ShootingStars/src/org/wyrez/shootingstars/game/Ground.java b/ShootingStars/src/org/wyrez/shootingstars/game/Ground.java new file mode 100644 index 0000000..fcc8d14 --- /dev/null +++ b/ShootingStars/src/org/wyrez/shootingstars/game/Ground.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2013 Darth Affe and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.wyrez.shootingstars.game; + +import com.jme3.light.AmbientLight; +import com.jme3.material.Material; +import com.jme3.math.ColorRGBA; +import com.jme3.math.FastMath; +import com.jme3.math.Vector3f; +import com.jme3.scene.Geometry; +import com.jme3.scene.Node; +import org.wyrez.shootingstars.factories.Materials; +import org.wyrez.shootingstars.mesh.HexPrism; + +/** + * + * @author Darth Affe + */ +public class Ground extends Node { + + public Ground() { + this(1000f); + } + + public Ground(float radius) { + this(radius, 0.1f); + } + + public Ground(float radius, float factor) { + super("Ground"); + generateHexGrid(radius, factor); + addLight(); + } + + //TODO cleanup + private void generateHexGrid(float borderWidth, float factor) { + float size = borderWidth * factor; + int maxIterations = (int) (borderWidth / size) - 2; + + Material mat = Materials.HEX.create(); + Geometry geom = new Geometry("HexPrism" + 0 + " - " + 0, + new HexPrism(new Vector3f(0f, 0f, 0f), size, 10f)); + geom.setMaterial(mat); + this.attachChild(geom); + + float xcc = 0f; + float ycc = 0f; + float centerDistance = size * FastMath.sqrt(3f); + for (int iteration = 0; iteration < maxIterations; iteration++) { + float xc = xcc; + float yc = ycc - (float) iteration * centerDistance; + float dx = (FastMath.sqrt(3f) * centerDistance / 2f); + float dy = centerDistance / 2f; + + for (int directions = 0; directions < 6; directions++) { + for (int steps = 0; steps < iteration; steps++) { + geom = new Geometry("HexPrism" + xc + " - " + yc, + new HexPrism(new Vector3f(xc, 0f, yc), size, + (iteration == maxIterations - 1) ? 160f : 10f)); + geom.setMaterial(mat); + this.attachChild(geom); + xc = xc + dx; + yc = yc + dy; + } + float dxn = (FastMath.cos(FastMath.PI / 3f) * dx - FastMath.sin(FastMath.PI / 3f) * dy); + float dyn = (FastMath.sin(FastMath.PI / 3f) * dx + FastMath.cos(FastMath.PI / 3f) * dy); + dx = dxn; + dy = dyn; + } + } + } + + private void addLight() { + AmbientLight ambient = new AmbientLight(); + ambient.setColor(ColorRGBA.White); + this.addLight(ambient); + } +} diff --git a/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java b/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java index cbb2884..1419f3d 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java +++ b/ShootingStars/src/org/wyrez/shootingstars/states/GameState.java @@ -22,6 +22,7 @@ import com.jme3.app.state.AppStateManager; import com.jme3.renderer.RenderManager; import com.jme3.scene.Node; import org.wyrez.shootingstars.game.Cinema; +import org.wyrez.shootingstars.game.Ground; import org.wyrez.shootingstars.gui.GameGUI; import org.wyrez.shootingstars.gui.listener.GameListener; import tonegod.gui.core.Screen; @@ -36,6 +37,7 @@ public class GameState extends AbstractAppState implements GameListener { private Node rootNode; private GameGUI gui; private Cinema cinema; + private Ground ground; public GameState(Node rootNode, Screen screen, StateManager stateManager) { this.rootNode = rootNode; @@ -43,8 +45,13 @@ public class GameState extends AbstractAppState implements GameListener { this.stateManager = stateManager; } + public void loadGround() { + this.ground = new Ground(); + } + public void loadCinema() { this.cinema = new Cinema("Broken.mp4"); //TODO settings? + cinema.move(0f, 160f, 0f); } public void start() { @@ -56,6 +63,7 @@ public class GameState extends AbstractAppState implements GameListener { public void stateAttached(AppStateManager stateManager) { stateManager.attach(new FlyCamAppState()); //TODO debug rootNode.attachChild(cinema); + rootNode.attachChild(ground); gui.setWait(); gui.attach(); } @@ -64,6 +72,7 @@ public class GameState extends AbstractAppState implements GameListener { public void stateDetached(AppStateManager stateManager) { stateManager.detach(new FlyCamAppState()); //TODO debug gui.detach(); + rootNode.detachChild(ground); rootNode.detachChild(cinema); cinema.cleanup(); } diff --git a/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java b/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java index 1654bf3..001af2f 100644 --- a/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java +++ b/ShootingStars/src/org/wyrez/shootingstars/states/LoadingState.java @@ -91,7 +91,8 @@ public class LoadingState extends AbstractAppState { } private void generateScene() { - //TODO fill + GameState gs = stateManager.getState(State.GAME); + gs.loadGround(); } public void done() {