From ab7d0522027df88f36ab9a9e090ffc5a64ea005f Mon Sep 17 00:00:00 2001 From: pelya Date: Wed, 1 Sep 2010 13:04:55 +0300 Subject: [PATCH] Added proper auto-fire mode with animations to the Ultimate Droid theme --- .../application/alienblaster/AppSettings.cfg | 4 +- .../application/opentyrian/AppSettings.cfg | 4 +- project/jni/application/sc2/AppSettings.cfg | 4 +- project/res/raw/ultimatedroidbutton1.png.raw | Bin 178 -> 178 bytes .../res/raw/ultimatedroidbutton1auto.png.raw | Bin 0 -> 226 bytes .../raw/ultimatedroidbutton1autoanim.png.raw | Bin 0 -> 221 bytes .../raw/ultimatedroidbutton1pressed.png.raw | Bin 185 -> 182 bytes project/res/raw/ultimatedroidbutton2.png.raw | Bin 178 -> 178 bytes .../res/raw/ultimatedroidbutton2auto.png.raw | Bin 0 -> 232 bytes .../raw/ultimatedroidbutton2autoanim.png.raw | Bin 0 -> 224 bytes .../raw/ultimatedroidbutton2pressed.png.raw | Bin 191 -> 188 bytes project/res/raw/ultimatedroidbutton3.png.raw | Bin 175 -> 174 bytes .../raw/ultimatedroidbutton3pressed.png.raw | Bin 183 -> 181 bytes project/res/raw/ultimatedroidbutton4.png.raw | Bin 210 -> 209 bytes .../raw/ultimatedroidbutton4pressed.png.raw | Bin 228 -> 229 bytes project/res/raw/ultimatedroidbutton5.png.raw | Bin 233 -> 229 bytes .../raw/ultimatedroidbutton5pressed.png.raw | Bin 247 -> 247 bytes project/res/raw/ultimatedroidbutton6.png.raw | Bin 203 -> 201 bytes .../raw/ultimatedroidbutton6pressed.png.raw | Bin 214 -> 212 bytes project/res/raw/ultimatedroidbutton7.png.raw | Bin 475 -> 475 bytes .../ultimatedroiddownbuttonpressed.png.raw | Bin 1757 -> 1718 bytes .../res/raw/ultimatedroiddpadbutton.png.raw | Bin 1549 -> 1511 bytes .../ultimatedroidleftbuttonpressed.png.raw | Bin 1492 -> 1402 bytes .../ultimatedroidrightbuttonpressed.png.raw | Bin 1446 -> 1388 bytes .../raw/ultimatedroidupbuttonpressed.png.raw | Bin 1750 -> 1703 bytes .../video/android/SDL_touchscreenkeyboard.c | 153 +++++++++++++++--- project/src/Settings.java | 34 ++-- .../UltimateDroidButton1Auto.png | Bin 0 -> 3129 bytes .../UltimateDroidButton1AutoAnim.png | Bin 0 -> 3130 bytes .../UltimateDroidButton2Auto.png | Bin 0 -> 3141 bytes .../UltimateDroidButton2AutoAnim.png | Bin 0 -> 3140 bytes project/themes/converter/convert.sh | 2 +- 32 files changed, 157 insertions(+), 44 deletions(-) create mode 100644 project/res/raw/ultimatedroidbutton1auto.png.raw create mode 100644 project/res/raw/ultimatedroidbutton1autoanim.png.raw create mode 100644 project/res/raw/ultimatedroidbutton2auto.png.raw create mode 100644 project/res/raw/ultimatedroidbutton2autoanim.png.raw create mode 100644 project/themes/UltimateDroid/UltimateDroidButton1Auto.png create mode 100644 project/themes/UltimateDroid/UltimateDroidButton1AutoAnim.png create mode 100644 project/themes/UltimateDroid/UltimateDroidButton2Auto.png create mode 100644 project/themes/UltimateDroid/UltimateDroidButton2AutoAnim.png diff --git a/project/jni/application/alienblaster/AppSettings.cfg b/project/jni/application/alienblaster/AppSettings.cfg index 1c66d6239..03615e321 100644 --- a/project/jni/application/alienblaster/AppSettings.cfg +++ b/project/jni/application/alienblaster/AppSettings.cfg @@ -14,8 +14,8 @@ RedefinedKeys="RETURN LCTRL PAGEUP PAGEDOWN LCTRL" AppTouchscreenKeyboardKeysAmount=4 AppTouchscreenKeyboardKeysAmountAutoFire=1 MultiABI=n -AppVersionCode=110008 -AppVersionName="1.1.0.08" +AppVersionCode=110009 +AppVersionName="1.1.0.09" CompiledLibraries="sdl_mixer sdl_image" AppCflags='-finline-functions -O2' AppLdflags='' diff --git a/project/jni/application/opentyrian/AppSettings.cfg b/project/jni/application/opentyrian/AppSettings.cfg index a40988b0c..51bb4a367 100644 --- a/project/jni/application/opentyrian/AppSettings.cfg +++ b/project/jni/application/opentyrian/AppSettings.cfg @@ -14,8 +14,8 @@ RedefinedKeys="SPACE RETURN LCTRL LALT RETURN" AppTouchscreenKeyboardKeysAmount=4 AppTouchscreenKeyboardKeysAmountAutoFire=1 MultiABI=n -AppVersionCode=2107 -AppVersionName="2.1.07" +AppVersionCode=2108 +AppVersionName="2.1.08" CompiledLibraries="sdl_net" AppCflags='-finline-functions -O2' AppLdflags='' diff --git a/project/jni/application/sc2/AppSettings.cfg b/project/jni/application/sc2/AppSettings.cfg index f6d509216..103a87cc7 100644 --- a/project/jni/application/sc2/AppSettings.cfg +++ b/project/jni/application/sc2/AppSettings.cfg @@ -14,8 +14,8 @@ RedefinedKeys="RETURN RSHIFT KP_PLUS KP_MINUS ESCAPE F10" AppTouchscreenKeyboardKeysAmount=2 AppTouchscreenKeyboardKeysAmountAutoFire=2 MultiABI=n -AppVersionCode=1005 -AppVersionName="1.0.05" +AppVersionCode=1006 +AppVersionName="1.0.06" CompiledLibraries="sdl_image" AppCflags='-O0 -DTHREADLIB_SDL=1 -DTIMELIB=SDL -DOVCODEC_TREMOR=1 -DNETPLAY=1 -DHAVE_REGEX=1 -DHAVE_GETOPT_LONG=1 -DHAVE_ZIP=1' AppLdflags='-Lbin/ndk/local/armeabi -ltremor' diff --git a/project/res/raw/ultimatedroidbutton1.png.raw b/project/res/raw/ultimatedroidbutton1.png.raw index 36b8a036c95b6e3e126fc7f8fcc01d671558482e..18fe8bd1490e2616c6e381038e46e9ac5f5c67f0 100644 GIT binary patch delta 132 zcmdnQxQUTdzMF&LqDq|)(?m}5qLm@my_XgSJuldB#ggaVYaOfC+zT%3W8lfZlf9^+ zd#jbWcwW?zi!&{Xr7xV_@M_Lx^KS?DN{9EZe|h}><-OA3U*GTE8U8)j{&|so?#j*a r#q&??Tt9E~SHIKS9oOf*l{@O)k#)3U|DF{mpK<1Xc;@?sm4N{OdDcX8 delta 132 zcmdnQxQUTdzMF&L{=_mLhKZc!MVT9oE^5eXmGZHB&prHL@3}>r_c3t2It}ea*tyu5-KZ diff --git a/project/res/raw/ultimatedroidbutton1auto.png.raw b/project/res/raw/ultimatedroidbutton1auto.png.raw new file mode 100644 index 0000000000000000000000000000000000000000..b9b980d0ed6187c1e7553b3c699ea9058c2f9244 GIT binary patch literal 226 zcmb2|=3uy}Qs=|Oe0EAAU$X*_+wY4~{2ODJxj)X>dvl*w%53A)uh#z*(psp`%INw; zPsv=8e;QZq%&-jBh*@7uw`5gaySlFL{>@L*4er};s9eiQKVx?7*IEYe$@|*Ee9!N(x>7hdvyT7s$!3M`n!9goy#Mo$?#rJ~6qUDG&cCQ_H?n-)mu2D(s|B~) h-ix}o-|Dc-r8OzD*XGRJ>a_2(zVE8chA*rP3;=ZHbjkn# literal 0 HcmV?d00001 diff --git a/project/res/raw/ultimatedroidbutton1pressed.png.raw b/project/res/raw/ultimatedroidbutton1pressed.png.raw index 4087828e27e7f83cd57c02e548cce06d1073bad9..1710549527e406740d57bf634dde988dfbab2e55 100644 GIT binary patch literal 182 zcmb2|=3uy}Qs=|OeD<;<*I@%5m%!eoa~AFG>3g>LWs;}6Z>AV$>&aC$P2$fIn`Mlv zXWeX`zxMX7#K2kJv%{Wxbxivbx9-%N;#mFZU01H&UKp-vkuPcbAWEd9c#4E;ic0v} zCC&}2#f~k}evvxGe@?S(?A!DLDGT=B`*?TXS>F8SgZn#=!u_{no%(~9&rbR|bN8>P rs&{){`i394uWFo literal 185 zcmb2|=3ux#vCM~o`RwJ>yv+szEe~a@S1M(uc^7BimPiqEf5_k@<#$p4N%Pl}C-{x4 zXW#6ezxMX7#6T(UnL#(FK2UwBYMOdwSFHZDFBh)93s@{-_5af5h1r1@dZ#6c$jQlU zZQ|qWi^^!$TPQxS_JPcs7g=_5mNyn}xPN!U=}M~;eDzQIM9S}%teW+EW=XhuNqEiq t*uA<__N4pAGWlxDTknesj}J7hx$C91+Bfv-Dz8+#mAkG8ePLx_002@mR&W3S diff --git a/project/res/raw/ultimatedroidbutton2.png.raw b/project/res/raw/ultimatedroidbutton2.png.raw index eb929d9808515fee7ca16669bb2fa647b73f1ca7..af4dd10341b892388a5fb6edc7d8ec4f312fddf4 100644 GIT binary patch delta 133 zcmdnQxQUTdzMF&LqDq|)(?m|Q;*}w`yq6aS9eq#R`(h_ zNLt(1&26rG=;2I@;@u0`n`afL<-ajMKQHj?4! delta 133 zcmdnQxQUTdzMF&L{=_mLhKZbJ#hDk4E*i*cmCEoate{i_@% diff --git a/project/res/raw/ultimatedroidbutton2auto.png.raw b/project/res/raw/ultimatedroidbutton2auto.png.raw new file mode 100644 index 0000000000000000000000000000000000000000..0df50111c754ae7f5fcba7abae97b5f13d137123 GIT binary patch literal 232 zcmb2|=3uy}Qs=|Oe00j|++zkDt~({PowuAekXpPkQs48>*4|YbTkK~k&y*;9vRp^$ zz0xPO=iluk3}w#WeEst0J4c0`p}Ui|?$qt8_o(#i*IwHZ z`uXneZ$*zgm=}Lj7hPVy_UFyR3k)wi1zSH}dTE16ddmBtt-s>`7T3P|a_GQ~oBrV$ zGolyuU*^`icBX50%!S7{_op2&T_denZkhIS;oFDz_xk4*i@(=wfBwR`JI>_e=R3Q% ttNweUy1@2T-Ldt17CgVD-t&HWW%icCx8mbo2fqKqE@01j_X{fn0{|;tdp`gG literal 0 HcmV?d00001 diff --git a/project/res/raw/ultimatedroidbutton2autoanim.png.raw b/project/res/raw/ultimatedroidbutton2autoanim.png.raw new file mode 100644 index 0000000000000000000000000000000000000000..8f0250f6ebf510926425ea7d0abe8cc51612ab9c GIT binary patch literal 224 zcmb2|=3uy}Qs=|Oe00h|-opw!u77)HE{Z+2xYESzH9J>samS-?7i?IYpQ?K}bexEF z$@^5ZNXhX^Zlw10#?s4^ubJ$v>J>U#I5*J$d^@{h=@#v4ANA7WcRl}dW(^d;qMq8^vm*Uh)uYhaM}Z@IR~nYD`jm$`Mm zojMVz_oDFqcP@qBE+-=UBC9;Af9(GL$fW$kIwMehx ir?{)uRUWFSpS3(~_O%_Ay6*d*%g>7pw*11%zyJWAnrx*2 literal 0 HcmV?d00001 diff --git a/project/res/raw/ultimatedroidbutton2pressed.png.raw b/project/res/raw/ultimatedroidbutton2pressed.png.raw index be90d44f5b644e20f19909387c9f1984bdb24233..1396334cef11cb271c2247167fe1284386eddd30 100644 GIT binary patch literal 188 zcmb2|=3uy}Qs=|OeDumi&cg;gEs1k={V(b*zGyN_+`HOq7TYg@qPNaJIoS@nd*tM# zl^gH=xbf*mn<57d_nDzT-&}8=&J&nxZwzB$)8J6OE0|sf2M7ntKqWr*-0XH zwmY&|W36^%EnM2}|AI9(iNCDG%-ian?YD&Y!inj|elHcQ|J;?Gd(Q68RWtDmix+us wta!V-D(aKEdE>Is=f?YsJjH$W=YC(_{$-o*TJ!bUQ!AOOJm0PU!pgt^0M`^)$N&HU literal 191 zcmb2|=3ux#vCM~o`RJ8Eu4V&)mWQ&NEnTZ;+TN1W72iD9bgPs6kxcnh{VYuKNkYkK z<;J@|Zv48@Zj-Y{^-SNN8P}Vq^91@z+E$tEEn28;RhQWtl(E$=+41tC7l(@_lSJ%n zEV5W*tt_$xizMF&LqDq|)(?m|wf}NY@O`rMf)Z}SwPd&L$pA>$2H0Hpa8oh)KGBadS zBeHnrT?ye)cdT5<$#bIjV~D!dZ-<%N>+G&IYX9B!{%^&azwd4O`met~dGWoZcif+% ocU)Tk`(FR?TmR2J{!#IFp3L8Q8=oB2 qFYh{6`*r@>YCr$x_lMmdG=q6HS~mr?{m@76tw}ll!UTdE*9?M}7%s-sGj3 zSIf#s-F~&yU|HT*tyz^!{Wmu`bBp-iPhy%?e=c z#VgCAy@=s<%t=e*i5~a%r=M8&RcU$Rx-D+NZ pEVH=x-@(-$*DLqk4h=Hh7yWMf%>|$09v!P=xcp#`=@(W81_13~SGoWI literal 183 zcmb2|=3ux#vCM~o`RJ6>yoVh)TxPO{Pc(7PoZ^-)`RR7D%}K?&NrKbnZQ$*m8GH6k z(s}OoW7}?t9=o#k+oGB7JI_^UM!%G;YzSoj@}rb{-Nn@}u4YYKbliNd#zgIAQFX6` z#yDs8gIyX2%+ia_`KU}ff8RJIy{ODiq58+-?I-(xelwAqm$mnw`g^65|9tOX&0M*D s?@VLA+m~L*@8S9?!u!4WwQA_&olom#@@lArvLx| diff --git a/project/res/raw/ultimatedroidbutton4.png.raw b/project/res/raw/ultimatedroidbutton4.png.raw index afef141bb7140a24ea39201698245e3740cc2896..e7ba624f862b15db17a014b803532e01affd146b 100644 GIT binary patch literal 209 zcmb2|=3uy}Qs=|Od~`}K*I@&WwyPQX8)J_xt~AlVrYEoKd6H}M??5@P2d4ZT(-;m& zGsOLDE{!&iNfKEeam=u*v%BcZ<(yp_#|sM``yMAf((Fq;AH=+{IA!|I6&YDQUzK;C zVLi$joVw!uN!NM2g=SfEel0w={mxBEPwnM(D~zAduuXPfa_R;@ug}ipn|l|s8?L#1 zKAorbiuKv*9j4F!S01-H{>x&orT*tF(ev)!`+fKSn(FG%<&y1WbBA36gGB5xDFz#eW literal 210 zcmb2|=3ux#vCM~o`RJ5fzGefCw#KIEH}no)w2%_N{MGsLtaB+laF;v{d2^-~Bz$y7sK~ oV)N%`H+!C3XkRV#Z!wS4?}uq^X_h{cv%WI4n>|?lg_VH;0OlugqyPW_ literal 228 zcmb2|=3ux#vCM~o`RL?CzQYO}ZjLWCx1BC9>3??gR_&GCMe9!9nE!OC;m;S|Dhh&k zJ72W*e@nJMC3aY5b41oZIWc3?3{&B2VMQ``S7qF>vfXCPl71&B>rstU-Bs^dCoNruh8ka{Grr$uIclT2cda9-yfb^9%K0V5byo}+PhDM z8u0ct$DWqi{_oY#f9?CH)qJ}%hb{ly?DE+C=iZ)uRqdBIzwPJQop#UV?uyU2vH4x8 nTmHG(?Ot7h_20Ux-37bew9gcrmAb+u;~I0j*@M+zSQ!`qNM3dk diff --git a/project/res/raw/ultimatedroidbutton5.png.raw b/project/res/raw/ultimatedroidbutton5.png.raw index 87d73d4860aeba292ddc133868e0d4767c46c169..a86b60350cf4ac9340e962052a75b5e8d49114c3 100644 GIT binary patch literal 229 zcmb2|=3uy}Qs=|Od~`}K-ysDa2hA@ zms0PWVIjG9wRW$tyMvVC!3U>`&p#=0>=Not)Gs_@?dsa`MxyLl?mHGy1*>0kEmtRO z77sXH@aY`al$X!n&wMCvdAk11x;o3<_pN?bG;QAedCGdL%;NpCzC6i!x4ycpbaNVe o{`=>qTOVt57raziw|K_=mMu|?w)gjJX*1>jrVwKEg_VH;0N({|x&QzG literal 233 zcmb2|=3sa*vCM~o`RJ5fzC#K;4w_ryob)d*{+hA(h8ioc{M_gZ^3RS+RPJNZ)NA>` zp?K%BcFyl@hjV$e*9gTN_S*3=N%h3ekfa!QPtFYjRt1MFRTX{R-oNrXY<+UB%Hs0U zrG*bVIwxP;z3Y-i0m~9WA)a+L?`Fp6c?2#pe52Y|v3v!`MA^gV_MDx&fXT&uzj3-~ z&Nrr45`On08;$<{u`~Xol>W2-?oIRb@6qbh)h(>8{eP~SZ1#P#r~kQU|MsP)n`f7O s_*geD*t+lY-~CPA+oP`j53Ccql*Rg`>eD5uYc`DE6he%?ure?J07bTLU;qFB diff --git a/project/res/raw/ultimatedroidbutton5pressed.png.raw b/project/res/raw/ultimatedroidbutton5pressed.png.raw index 593f5404337e716c79f61999a91b937c9034c228..fbfb8d4f93efdc3ddd7b06f8b464c95f4985f5ef 100644 GIT binary patch literal 247 zcmb2|=3uy_Qs=|OymbmAUy}ik>+Oqko%Am+{+h8{;@9b(b*xio&X6~H@V0fMSjP)5 z7jc;__pZ&px^u^4G4JSe?MHp*ZrQambhYm1LjUc?%fdgcIU^z${!Q@BPOeL;YQ}L1 zSHo_cXWJIr@5$qqo3vC>Ia^iDSmKh4VN^m`l2LGlT2J8VAMc`)j2Pa0@R?wE z#j)QlQ)LT8ugv?-Xp!%~{&`V5Yi8t^d+T*Jzk9jm`R`7yy0sB$zgASg zpRlmJ{I2j!*7vpPsn=}p=of$dw`IOf^Ys0*j13R|4=#C?dH2@8J#oF4UtW`~+Wd|XU5=e}S^8l{-4nU+ ziet%l&Xn!o`Zn+Q4*mVdAAa0&y#B*3{fZZ|y*+2D@287Jem)m&VifV=T$zqh?c3_r z6V{crzxsG)&iB2Wl(OaKE#Ghxhl>7bpdDlLcNTP!?t2Kj<(JgJ^avd&d#fk=4@uKHhhr$tMFP<{pU72|DW@w z|CRYxcIu}8pC=EkzrX&sRr2|r^R~OM<({fZwvS!2P{Ml8s?vY%ABD26CjH&BC(7F@ N|FZU?X{*wVz7FKSGkL`qm*8oKC1m3q=jSVUN*>hZ_dSkVP#+d0DKT`F8}}l literal 214 zcmb2|=3sa*vCM~o`RJ5`yoU`qTz~S-TNK-NQKI+gq$XX{ZB+}t1l78}SZJflSJv^u z(}jQki#_MOt92i?ux@+&yW#MZMW((lFMVCX{?0RG*J91ni9LMl7ksy#u%zc<fK+Gu7zec#eGhlST?#|KYSTf?*d^)A&^lld&tuQ>e!&(E-Z^|90Fl-R##x%Vxf zUXA`1f9mq-_rFu@h2Oorc74jx=i2iJdlH0O%Y^ArE) b>l}UFYWi=_zEfU@Dj5skoQwa$%D?~s<*RcQ diff --git a/project/res/raw/ultimatedroidbutton7.png.raw b/project/res/raw/ultimatedroidbutton7.png.raw index e23b512864e7417d55b6830ee64e3455d33c6091..1316c9cb00fbe20e917a45cbf0a6e47baad6664e 100644 GIT binary patch delta 18 Zcmcc3e4Ck5zMF&Ll1iNq(?-rqi~u;l1;+pY delta 18 Zcmcc3e4Ck5zMF&L!Nf8jhK-z;7y&$E1~>o! diff --git a/project/res/raw/ultimatedroiddownbuttonpressed.png.raw b/project/res/raw/ultimatedroiddownbuttonpressed.png.raw index a442dd779d4c8b66610b756443ff028a2dacb3a3..935befa1221d51a269bf1f977997024656340da1 100644 GIT binary patch literal 1718 zcmb2|=3uy_Qs=|O{B{oKro|RKZMr-Uqb|liQ@D8cQTNv#mD#Ed2cwt0TsM9HB~dwv z--joO-`ryOO#boyXEz-pR?gZ}|Mzt%JKrAG<3UmE=L^=B=zqT>UOT5x>P zIb!Kj{@g)tIkUP>{4;~A^G%OOJz{+I-}ZEM!1v0dhXViow6|FDUqB7r! zEBwdrT0Cff+%04C?8Ku5@_p~mvOBtURQ`JSLytYRIK$;dd-7pM-jL&g%fon<%G~H! zymUiH^8;b9uZBxasmg|$!nH10M`<#=wWs8#K_0V+&-yMo`=NK5ce&KvSZ~KwO?&eu{ zSTZ(7b-vSTm43KTTZyxrTX~*w(ClM|H#t@8921}IHuUUp{QcbEr*ZHFjhamV)GY2; z)pq6?(IV3`!ll|@cX(zrTx9*Y{$AwYtBIeCXMXNmw&U51H=W+8hLfAu%iXC^iL^hl zTR1X*`tfh2M-6WZ3x6?4m=;^Oii0)##KyqA+m6p$^sV%q;Z5QHTg8|D-g#`rZ;jR~ zCm!roo65YEWnb*A+u?JPH>!X0suP=WbYZH@#M|1Ne($<4b*|x&Rg*1UVuY;E-w?96 z_U(!0B}=E>M^ult-#XZs{~`3=wn?{R=Xf(7+*dI5+l;@emsxwr^$pjmw_FUzvws$*^u`|SjLn=az36#rU0?V7`K#`n zuXUO6?3($#cYfbkjXmpjSL;c>pSERp_I{7o>a5Im6gF7)ufeJht9+_QC_!TXNohj@=4^>S5n_t@HHJVEiq{^q{P=RV&k zxN!7yDeKZ3>u02|-*fP)*M((v6?}Ttb56U?%zhqMQh5Ed(aF9yfBCrHoKpSzdQ-6F z#;$d0@j3D<`F^k8^g_36d-wMGcdxxKZMwhwsFa5_->+PmV>Q+Fzh_3h;jVAny0z@R zbbzA!?C-pPW?QW1YTaJA<>;xL)ob5vN}KxJu5i!S7qN)oYe<(0XitnezWACZzwZ>=GOpDO6m{;{> z&4lLM$P*{dTz> z>ifXw@<2dHWRjd*G+V`lDb@iMeDdiThd<^V5cCrDC}ID%LG_^HEvo8K_nSpPkIJX=2O@T*mG8LQCtNA`@&9St^V`mA+>*8)e4FZMgsd literal 1757 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 literal 1549 zcmb2|=3sa*vCM~o`R$z8q9qnQ#|1CEOu1k6EHnLn)pLc5A!i@oN#eh>EAn-cwf0YD z9*J9KORmLE{i7Xv_u!3Rk&|)_mSoPVm->DCPTjk!zsrAg1?c_z^l$H;ul4oOZ=WC7 zpYZKevv4Y?ao|vT$~MxxJ{rMdtnQKOft-b~XHxanw%_Ip)}Vq_W?({3Vm- zdyiEQ7#<#Avwo+UrC*v|FW$$e{YW6+rhD)XnU&H32;%KGMro1ZjO<*KmDM9XJuRaO98zTrqFxv&KberfH|^^S{%e!27S0IV7A(egcDiP(^2Lvw z7pBTszN^1}XyNDPt>?~&8Kg^G$-1}Taf6nn%J$w=qq?<$E5dzV&a&*uwfc9)D0!yp z4T0d=N`*sBOotb}a-RJM!dKDhF&;B`{_SIvTzhY&k%zpFk45yhll_wwWx%yPs z%`)Iw*tt3V&Yiw#`J4x?@^9R`;hXZ|cHa%d6LGo*6T;7-rwzBvNxs{I~ALZD%Ka^UCR19m@CD zTBUfx=k`fEOn+YBf1vSW&UNkEXT14(G|s4YO^fi_nVJ?pf6jw5eg$fG%P;$@JqyZi zS}6WFb(sv0w|3@=<8CEWA=LAP#rUH$Qg znfIe`kLnl4rHXF3&OUFeSLEWho-h8-iP?`PPB?tS@W^!g>a+50x_TC6Fif0EU9=)PqI{ezr~8fH$UrD{_$-;{2zrG8z!bNPW&Yd@ZvUiNY7 zxy0|JDtaxy~;Z0Wm5}oeEyJnRXlQMqR5xW zpY}}IF>Bh{;5+I&_Zj@%akEOwJ#4@3?HTKQ{31^-=8Nd`jqdu`UkbjEXlWjx;F5uWblfK&6_Q*$X_kGv9gUHE7;`wU=GH zg=?oBacwi0 z-zV3;_3x2M>tDp>Us1l(%WN5TNv6p3?7{gv71>q(BpyiPSM!W|n4s+_;bAjLA@jI= zRqm0%`x{SA3bV+G&T*6a8KvYM_29ubZ(Z{@yfSAqs<|&qu-9*$xllw&YI|f+Ip4d7 zF=;I_8%|F8UHs$B0S7zp7tTfbd~Y;Q^aQ-t*=fms+ii~ImWKiJ4@^@1{?tJ}*putZ ze7(q`a6Z}BuTF@oeRTJd$(_IN$vzpkc;W3ksyEFyC_mTVWvOt_)}Ajtpzh1na~6g1 z{KpS}EU=M*QrUf_bLY&Nw(4_|c>lX4yV%^Gc^!Q5RqD9q&x@Pa#qnIQXkXl^k_b(6o!KkcquWZNcxkOJ!!s+ZuBE8c3_xsYa@<|7EeN&mv~(3#sD^ zR-Vc=4{fvqGq0=>#hBjzZ+_#)ruvUFoHseGS-|gV*}iQ}j^@5CcC$|KE;O0w ze#)Yy&v8Dot@qfvtW?V#xkB0IBBnA=m9G}d%+lPo zF4bh;t>+7L+P4I&DF3)zsQT~N&xk5}|Kn5B6#p!>xqtPljd{SOce^gWJy}-1T>tyq zYp-K=zkbZgee3R0`74npJL@LguYA(`&&NLFwx-5A_P0A+q8@C1EOg^5$M^LY|Mdv< zS7GU6}P`J4f?dYad;x*!20( z=g%5ae{^;>9e%s7uS0Bz`N(dG2{l59lb@$}{39GxW6?w!?`IH;F?3-Aq z3}apD++BZ5o6A4TeENHL>%Mhr&l~5Jo@;;nu);#F4@}j)w@X=bOWe=={_^-`zvs_h za8Sj+e#hsycO`+hpGT}{EY``3dwWha_1xnZp_k8C>gR11dcJ4F!s57}#pO4y?A(3F z(j(`cOv3m1yj zzRmxAk<0y`rOu36zV4li?X7Oko-~X9Sz6n!O9hLcKWaIz*;RhY&Iq literal 1492 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 J*70Lt008|h&t3ok literal 1446 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 diff --git a/project/sdl/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c b/project/sdl/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c index 867e888e8..3c8f50945 100644 --- a/project/sdl/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c +++ b/project/sdl/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c @@ -77,8 +77,9 @@ SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_8)) enum { ARROW_LEFT = 1, ARROW_RIGHT = 2, ARROW_UP = 4, ARROW_DOWN = 8 }; static int oldArrows = 0; static int ButtonAutoFire[MAX_BUTTONS_AUTOFIRE] = {0, 0}; -static int ButtonAutoFireX[MAX_BUTTONS_AUTOFIRE] = {0, 0}; +static int ButtonAutoFireX[MAX_BUTTONS_AUTOFIRE*2] = {0, 0, 0, 0}; static int ButtonAutoFireRot[MAX_BUTTONS_AUTOFIRE] = {0, 0}; +static int ButtonAutoFireDecay[MAX_BUTTONS_AUTOFIRE] = {0, 0}; static SDL_Rect * OldCoords[MAX_MULTITOUCH_POINTERS] = { NULL }; @@ -90,7 +91,7 @@ typedef struct } GLTexture_t; static GLTexture_t arrowImages[5] = { {0, 0, 0}, }; -static GLTexture_t buttonAutoFireImages[MAX_BUTTONS_AUTOFIRE] = { {0, 0, 0}, }; +static GLTexture_t buttonAutoFireImages[MAX_BUTTONS_AUTOFIRE*2] = { {0, 0, 0}, }; static GLTexture_t buttonImages[MAX_BUTTONS*2] = { {0, 0, 0}, }; @@ -174,14 +175,14 @@ static inline void endDrawingTex() } -static inline void drawCharTex(GLTexture_t * tex, SDL_Rect * pos, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +static inline void drawCharTex(GLTexture_t * tex, SDL_Rect * src, SDL_Rect * dest, Uint8 r, Uint8 g, Uint8 b, Uint8 a) { GLint cropRect[4]; /* GLfloat texColor[4]; static const float onediv255 = 1.0f / 255.0f; */ - if( !pos->h || !pos->w ) + if( !dest->h || !dest->w ) return; glBindTexture(GL_TEXTURE_2D, tex->id); @@ -209,8 +210,15 @@ static inline void drawCharTex(GLTexture_t * tex, SDL_Rect * pos, Uint8 r, Uint8 cropRect[1] = tex->h; cropRect[2] = tex->w; cropRect[3] = -tex->h; + if(src) + { + cropRect[0] = src->x; + cropRect[1] = src->h; // TODO: check if height works as expected in inverted GL coords + cropRect[2] = src->w; + cropRect[3] = -src->h; // TODO: check if height works as expected in inverted GL coords + } glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, cropRect); - glDrawTexiOES(pos->x, SDL_ANDROID_sWindowHeight - pos->y - pos->h, 0, pos->w, pos->h); + glDrawTexiOES(dest->x, SDL_ANDROID_sWindowHeight - dest->y - dest->h, 0, dest->w, dest->h); } int SDL_ANDROID_drawTouchscreenKeyboard() @@ -247,24 +255,74 @@ int SDL_ANDROID_drawTouchscreenKeyboard() ( SDL_GetKeyboardState(NULL)[SDL_KEY(DOWN)] ? 1 : 0 ); beginDrawingTex(); if( blendFactor == 0 ) - drawCharTex( &arrowImages[0], &arrows, 255, 255, 255, 128 ); + drawCharTex( &arrowImages[0], NULL, &arrows, 255, 255, 255, 128 ); else { if( SDL_GetKeyboardState(NULL)[SDL_KEY(LEFT)] ) - drawCharTex( &arrowImages[1], &arrows, 255, 255, 255, 128 / blendFactor ); + drawCharTex( &arrowImages[1], NULL, &arrows, 255, 255, 255, 128 / blendFactor ); if( SDL_GetKeyboardState(NULL)[SDL_KEY(RIGHT)] ) - drawCharTex( &arrowImages[2], &arrows, 255, 255, 255, 128 / blendFactor ); + drawCharTex( &arrowImages[2], NULL, &arrows, 255, 255, 255, 128 / blendFactor ); if( SDL_GetKeyboardState(NULL)[SDL_KEY(UP)] ) - drawCharTex( &arrowImages[3], &arrows, 255, 255, 255, 128 / blendFactor ); + drawCharTex( &arrowImages[3], NULL, &arrows, 255, 255, 255, 128 / blendFactor ); if( SDL_GetKeyboardState(NULL)[SDL_KEY(DOWN)] ) - drawCharTex( &arrowImages[4], &arrows, 255, 255, 255, 128 / blendFactor ); + drawCharTex( &arrowImages[4], NULL, &arrows, 255, 255, 255, 128 / blendFactor ); } for( i = 0; i < nbuttons; i++ ) { - drawCharTex( ( i < AutoFireButtonsNum && ButtonAutoFire[i] ) ? &buttonAutoFireImages[i] : + if( i < AutoFireButtonsNum ) + { + if( ButtonAutoFire[i] == 1 && SDL_GetTicks() - ButtonAutoFireDecay[i] > 1000 ) + { + ButtonAutoFire[i] = 0; + } + if( ! ButtonAutoFire[i] && SDL_GetTicks() - ButtonAutoFireDecay[i] > 300 ) + { + if( ButtonAutoFireX[i*2] > 0 ) + ButtonAutoFireX[i*2] --; + if( ButtonAutoFireX[i*2+1] > 0 ) + ButtonAutoFireX[i*2+1] --; + ButtonAutoFireDecay[i] = SDL_GetTicks(); + } + } + + if( i < AutoFireButtonsNum && ! ButtonAutoFire[i] && + ( ButtonAutoFireX[i*2] > 0 || ButtonAutoFireX[i*2+1] > 0 ) ) + { + int pos1src = buttonImages[i*2+1].w / 2 - ButtonAutoFireX[i*2]; + int pos1dst = buttons[i].w * pos1src / buttonImages[i*2+1].w; + int pos2src = buttonImages[i*2+1].w - ( buttonImages[i*2+1].w / 2 - ButtonAutoFireX[i*2+1] ); + int pos2dst = buttons[i].w * pos2src / buttonImages[i*2+1].w; + + SDL_Rect autoFireCrop = { 0, 0, pos1src, buttonImages[i*2+1].h }; + SDL_Rect autoFireDest = buttons[i]; + autoFireDest.w = pos1dst; + + drawCharTex( &buttonImages[i*2+1], + &autoFireCrop, &autoFireDest, 255, 255, 255, 128 ); + + autoFireCrop.x = pos2src; + autoFireCrop.w = buttonImages[i*2+1].w - pos2src; + autoFireDest.x = buttons[i].x + pos2dst; + autoFireDest.w = buttons[i].w - pos2dst; + + drawCharTex( &buttonImages[i*2+1], + &autoFireCrop, &autoFireDest, 255, 255, 255, 128 ); + + autoFireCrop.x = pos1src; + autoFireCrop.w = pos2src - pos1src; + autoFireDest.x = buttons[i].x + pos1dst; + autoFireDest.w = pos2dst - pos1dst; + + drawCharTex( &buttonAutoFireImages[i*2+1], + &autoFireCrop, &autoFireDest, 255, 255, 255, 128 ); + } + else + { + drawCharTex( ( i < AutoFireButtonsNum && ButtonAutoFire[i] ) ? &buttonAutoFireImages[i*2] : &buttonImages[ SDL_GetKeyboardState(NULL)[buttonKeysyms[i]] ? (i * 2 + 1) : (i * 2) ], - &buttons[i], 255, 255, 255, 128 ); + NULL, &buttons[i], 255, 255, 255, 128 ); + } } endDrawingTex(); } @@ -342,9 +400,19 @@ int SDL_ANDROID_processTouchscreenKeyboard(int x, int y, int action, int pointer SDL_SendKeyboardKey( SDL_PRESSED, GetKeysym(buttonKeysyms[i], &keysym) ); if( i < AutoFireButtonsNum ) { - ButtonAutoFireX[i] = x; ButtonAutoFire[i] = 0; - ButtonAutoFireRot[i] = 0; + if(touchscreenKeyboardTheme == 0) + { + ButtonAutoFireX[i] = x; + ButtonAutoFireRot[i] = 0; + } + else + { + ButtonAutoFireX[i*2] = 0; + ButtonAutoFireX[i*2+1] = 0; + ButtonAutoFireRot[i] = x; + ButtonAutoFireDecay[i] = SDL_GetTicks(); + } } return 1; } @@ -368,8 +436,23 @@ int SDL_ANDROID_processTouchscreenKeyboard(int x, int y, int action, int pointer if( OldCoords[pointerId] == &buttons[i] ) { if( ! ( i < AutoFireButtonsNum && ButtonAutoFire[i] ) ) + { SDL_SendKeyboardKey( SDL_RELEASED, GetKeysym(buttonKeysyms[i] ,&keysym) ); + } + else + { + ButtonAutoFire[i] = 2; + } OldCoords[pointerId] = NULL; + if(touchscreenKeyboardTheme == 0) + { + ButtonAutoFireX[i] = 0; + } + else + { + ButtonAutoFireX[i*2] = 0; + ButtonAutoFireX[i*2+1] = 0; + } return 1; } } @@ -411,9 +494,39 @@ int SDL_ANDROID_processTouchscreenKeyboard(int x, int y, int action, int pointer for(i = 0; i < AutoFireButtonsNum; i++) if( OldCoords[pointerId] == &buttons[i] ) { - ButtonAutoFire[i] = abs(ButtonAutoFireX[i] - x) > buttons[i].w / 2; - if( !ButtonAutoFire[i] ) - ButtonAutoFireRot[i] = ButtonAutoFireX[i] - x; + if(touchscreenKeyboardTheme == 0) + { + ButtonAutoFire[i] = abs(ButtonAutoFireX[i] - x) > buttons[i].w / 2; + if( !ButtonAutoFire[i] ) + ButtonAutoFireRot[i] = ButtonAutoFireX[i] - x; + } + else + { + int coeff = (buttonAutoFireImages[i*2+1].w > buttons[i].w) ? buttonAutoFireImages[i*2+1].w / buttons[i].w + 1 : 1; + if( ButtonAutoFireRot[i] < x ) + ButtonAutoFireX[i*2+1] += (x - ButtonAutoFireRot[i]) * coeff; + if( ButtonAutoFireRot[i] > x ) + ButtonAutoFireX[i*2] += (ButtonAutoFireRot[i] - x) * coeff; + + ButtonAutoFireRot[i] = x; + + if( ButtonAutoFireX[i*2] < 0 ) + ButtonAutoFireX[i*2] = 0; + if( ButtonAutoFireX[i*2+1] < 0 ) + ButtonAutoFireX[i*2+1] = 0; + if( ButtonAutoFireX[i*2] > buttonAutoFireImages[i*2+1].w / 2 ) + ButtonAutoFireX[i*2] = buttonAutoFireImages[i*2+1].w / 2; + if( ButtonAutoFireX[i*2+1] > buttonAutoFireImages[i*2+1].w / 2 ) + ButtonAutoFireX[i*2+1] = buttonAutoFireImages[i*2+1].w / 2; + + if( ButtonAutoFireX[i*2] == buttonAutoFireImages[i*2+1].w / 2 && + ButtonAutoFireX[i*2+1] == buttonAutoFireImages[i*2+1].w / 2 ) + { + if( ! ButtonAutoFire[i] ) + ButtonAutoFireDecay[i] = SDL_GetTicks(); + ButtonAutoFire[i] = 1; + } + } } } @@ -486,8 +599,6 @@ JAVA_EXPORT_NAME(Settings_nativeSetupScreenKeyboard) ( JNIEnv* env, jobject thi } else { - if(touchscreenKeyboardTheme == 1) - AutoFireButtonsNum = 0; // Theme does not support auto-fire // Arrows to the lower-left part of screen arrows.x = SDL_ANDROID_sWindowWidth / 4; arrows.y = SDL_ANDROID_sWindowHeight - SDL_ANDROID_sWindowWidth / 4; @@ -557,10 +668,10 @@ JAVA_EXPORT_NAME(Settings_nativeSetupScreenKeyboardButton) ( JNIEnv* env, jobje if( buttonID < 5 ) data = &(arrowImages[buttonID]); else - if( buttonID < 7 ) + if( buttonID < 9 ) data = &(buttonAutoFireImages[buttonID-5]); else - data = &(buttonImages[buttonID-7]); + data = &(buttonImages[buttonID-9]); texture_w = power_of_2(w); texture_h = power_of_2(h); diff --git a/project/src/Settings.java b/project/src/Settings.java index 8fed049a8..655a44976 100644 --- a/project/src/Settings.java +++ b/project/src/Settings.java @@ -480,23 +480,25 @@ class Settings nativeSetupScreenKeyboardButton(3, loadRaw(p, R.raw.ultimatedroidupbuttonpressed)); nativeSetupScreenKeyboardButton(4, loadRaw(p, R.raw.ultimatedroiddownbuttonpressed)); // Auto-fire - nativeSetupScreenKeyboardButton(5, loadRaw(p, R.raw.ultimatedroidbutton1pressed)); - nativeSetupScreenKeyboardButton(6, loadRaw(p, R.raw.ultimatedroidbutton2pressed)); + nativeSetupScreenKeyboardButton(5, loadRaw(p, R.raw.ultimatedroidbutton1auto)); + nativeSetupScreenKeyboardButton(6, loadRaw(p, R.raw.ultimatedroidbutton1autoanim)); + nativeSetupScreenKeyboardButton(7, loadRaw(p, R.raw.ultimatedroidbutton2auto)); + nativeSetupScreenKeyboardButton(8, loadRaw(p, R.raw.ultimatedroidbutton2autoanim)); // Other buttons - nativeSetupScreenKeyboardButton(7, loadRaw(p, R.raw.ultimatedroidbutton1)); - nativeSetupScreenKeyboardButton(8, loadRaw(p, R.raw.ultimatedroidbutton1pressed)); - nativeSetupScreenKeyboardButton(9, loadRaw(p, R.raw.ultimatedroidbutton2)); - nativeSetupScreenKeyboardButton(10, loadRaw(p, R.raw.ultimatedroidbutton2pressed)); - nativeSetupScreenKeyboardButton(11, loadRaw(p, R.raw.ultimatedroidbutton3)); - nativeSetupScreenKeyboardButton(12, loadRaw(p, R.raw.ultimatedroidbutton3pressed)); - nativeSetupScreenKeyboardButton(13, loadRaw(p, R.raw.ultimatedroidbutton4)); - nativeSetupScreenKeyboardButton(14, loadRaw(p, R.raw.ultimatedroidbutton4pressed)); - nativeSetupScreenKeyboardButton(15, loadRaw(p, R.raw.ultimatedroidbutton5)); - nativeSetupScreenKeyboardButton(16, loadRaw(p, R.raw.ultimatedroidbutton5pressed)); - nativeSetupScreenKeyboardButton(17, loadRaw(p, R.raw.ultimatedroidbutton6)); - nativeSetupScreenKeyboardButton(18, loadRaw(p, R.raw.ultimatedroidbutton6pressed)); - nativeSetupScreenKeyboardButton(19, loadRaw(p, R.raw.ultimatedroidbutton7)); - nativeSetupScreenKeyboardButton(20, loadRaw(p, R.raw.ultimatedroidbutton7)); + nativeSetupScreenKeyboardButton(9, loadRaw(p, R.raw.ultimatedroidbutton1)); + nativeSetupScreenKeyboardButton(10, loadRaw(p, R.raw.ultimatedroidbutton1pressed)); + nativeSetupScreenKeyboardButton(11, loadRaw(p, R.raw.ultimatedroidbutton2)); + nativeSetupScreenKeyboardButton(12, loadRaw(p, R.raw.ultimatedroidbutton2pressed)); + nativeSetupScreenKeyboardButton(13, loadRaw(p, R.raw.ultimatedroidbutton3)); + nativeSetupScreenKeyboardButton(14, loadRaw(p, R.raw.ultimatedroidbutton3pressed)); + nativeSetupScreenKeyboardButton(15, loadRaw(p, R.raw.ultimatedroidbutton4)); + nativeSetupScreenKeyboardButton(16, loadRaw(p, R.raw.ultimatedroidbutton4pressed)); + nativeSetupScreenKeyboardButton(17, loadRaw(p, R.raw.ultimatedroidbutton5)); + nativeSetupScreenKeyboardButton(18, loadRaw(p, R.raw.ultimatedroidbutton5pressed)); + nativeSetupScreenKeyboardButton(19, loadRaw(p, R.raw.ultimatedroidbutton6)); + nativeSetupScreenKeyboardButton(20, loadRaw(p, R.raw.ultimatedroidbutton6pressed)); + nativeSetupScreenKeyboardButton(21, loadRaw(p, R.raw.ultimatedroidbutton7)); + nativeSetupScreenKeyboardButton(22, loadRaw(p, R.raw.ultimatedroidbutton7)); } } nativeSetAccelerometerSensitivity(Globals.AccelerometerSensitivity); diff --git a/project/themes/UltimateDroid/UltimateDroidButton1Auto.png b/project/themes/UltimateDroid/UltimateDroidButton1Auto.png new file mode 100644 index 0000000000000000000000000000000000000000..7d916eaea40f97ffb96ac10713db756b15e06a9c GIT binary patch literal 3129 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 PU|{fc^>bP0l+XkKY+lV- literal 0 HcmV?d00001 diff --git a/project/themes/UltimateDroid/UltimateDroidButton1AutoAnim.png b/project/themes/UltimateDroid/UltimateDroidButton1AutoAnim.png new file mode 100644 index 0000000000000000000000000000000000000000..af489d45468a711c9082b0877e724434f4856c2c GIT binary patch literal 3130 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 bs$=l{o8#a-bGsA+0|SGntDnm{r-UW|h7{H> literal 0 HcmV?d00001 diff --git a/project/themes/UltimateDroid/UltimateDroidButton2AutoAnim.png b/project/themes/UltimateDroid/UltimateDroidButton2AutoAnim.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1f0e17d14c35cc68609c78823c239c99ae65ba GIT binary patch literal 3140 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 a|Lj9qx9so!WM*JsVDNPHb6Mw<&;$US>DDd) literal 0 HcmV?d00001 diff --git a/project/themes/converter/convert.sh b/project/themes/converter/convert.sh index 87291209f..eb91bf56f 100755 --- a/project/themes/converter/convert.sh +++ b/project/themes/converter/convert.sh @@ -3,7 +3,7 @@ for f in ../UltimateDroid/*.png; do newname=`echo $f | sed 's@.*/@@' | tr '[A-Z]' '[a-z]'`.raw ./converter $f ../../res/raw/$newname - gzip < ../../res/raw/$newname > ../../res/raw/$newname.gz + gzip -9 < ../../res/raw/$newname > ../../res/raw/$newname.gz mv -f ../../res/raw/$newname.gz ../../res/raw/$newname done