/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . google . ac comp an ist . swiper ef resh Ċ Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ import Ġkotlin . math . pow Ċ Ċ /** Ċ Ġ* ĠA Ġutility Ġfunction Ġthat Ġcalculates Ġvarious Ġaspects Ġof Ġ' sl ing shot ' Ġbehavior . Ċ Ġ* ĠAdapt ed Ġfrom ĠSw ipe Refresh Layout # move Spinner Ġmethod . Ċ Ġ* Ċ Ġ* ĠTODO : ĠInvest igate Ġreplacing Ġthis Ġwith Ġa Ġspring . Ċ Ġ* Ċ Ġ* Ġ@ param Ġoffset Y ĠThe Ġcurrent Ġy Ġoffset . Ċ Ġ* Ġ@ param Ġmax Offset Y ĠThe Ġmax Ġy Ġoffset . Ċ Ġ* Ġ@ param Ġheight ĠThe Ġheight Ġof Ġthe Ġitem Ġto Ġs ling shot . Ċ Ġ*/ Ċ internal Ġfun Ġcalculate S ling shot ( ĊĠĠĠ Ġoffset Y : ĠFloat , ĊĠĠĠ Ġmax Offset Y : ĠFloat , ĊĠĠĠ Ġheight : ĠInt Ċ ): ĠS ling shot Ġ{ ĊĠĠĠ Ġval Ġoffset Percent Ġ= Ġmin ( 1 f , Ġoffset Y Ġ/ Ġmax Offset Y ) ĊĠĠĠ Ġval Ġadjusted Percent Ġ= Ġmax ( offset Percent Ġ- Ġ 0 . 4 f , Ġ 0 f ) Ġ* Ġ 5 Ġ/ Ġ 3 ĊĠĠĠ Ġval Ġextra Offset Ġ= Ġabs ( offset Y ) Ġ- Ġmax Offset Y ĊĊĠĠĠ Ġ// ĠCan Ġac commod ate Ġcustom Ġstart Ġand Ġs ling shot Ġdistance Ġhere ĊĠĠĠ Ġval Ġs ling shot Distance Ġ= Ġmax Offset Y ĊĠĠĠ Ġval Ġt ension S ling shot Percent Ġ= Ġmax ( ĊĠĠĠĠĠĠĠĠ 0 f , Ġmin ( extra Offset , Ġs ling shot Distance Ġ* Ġ 2 ) Ġ/ Ġs ling shot Distance ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġt ension Percent Ġ= Ġ( ĊĠĠĠĠĠĠĠ Ġ( t ension S ling shot Percent Ġ/ Ġ 4 ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( t ension S ling shot Percent Ġ/ Ġ 4 ). pow ( 2 ) ĊĠĠĠĠĠĠĠ Ġ) Ġ* Ġ 2 ĊĠĠĠ Ġval Ġextra Move Ġ= Ġs ling shot Distance Ġ* Ġt ension Percent Ġ* Ġ 2 ĊĠĠĠ Ġval Ġtarget Y Ġ= Ġheight Ġ+ Ġ(( sl ing shot Distance Ġ* Ġoffset Percent ) Ġ+ Ġextra Move ). toInt () ĊĠĠĠ Ġval Ġoffset Ġ= Ġtarget Y Ġ- Ġheight ĊĠĠĠ Ġval Ġstroke Start Ġ= Ġadjusted Percent Ġ* Ġ 0 . 8 f ĊĊĠĠĠ Ġval Ġstart Trim Ġ= Ġ 0 f ĊĠĠĠ Ġval Ġend Trim Ġ= Ġstroke Start . coerce At Least ( Max Progress Arc ) ĊĊĠĠĠ Ġval Ġrotation Ġ= Ġ(- 0 . 2 5 f Ġ+ Ġ 0 . 4 f Ġ* Ġadjusted Percent Ġ+ Ġt ension Percent Ġ* Ġ 2 ) Ġ* Ġ 0 . 5 f ĊĠĠĠ Ġval Ġarrow Scale Ġ= Ġmin ( 1 f , Ġadjusted Percent ) ĊĊĠĠĠ Ġreturn ĠS ling shot ( ĊĠĠĠĠĠĠĠ Ġoffset Ġ= Ġoffset , ĊĠĠĠĠĠĠĠ Ġstart Trim Ġ= Ġstart Trim , ĊĠĠĠĠĠĠĠ Ġend Trim Ġ= Ġend Trim , ĊĠĠĠĠĠĠĠ Ġrotation Ġ= Ġrotation , ĊĠĠĠĠĠĠĠ Ġarrow Scale Ġ= Ġarrow Scale ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġdata Ġclass ĠS ling shot ( ĊĠĠĠ Ġval Ġoffset : ĠInt , ĊĠĠĠ Ġval Ġstart Trim : ĠFloat , ĊĠĠĠ Ġval Ġend Trim : ĠFloat , ĊĠĠĠ Ġval Ġrotation : ĠFloat , ĊĠĠĠ Ġval Ġarrow Scale : ĠFloat Ċ ) Ċ Ċ internal Ġconst Ġval ĠMax Progress Arc Ġ= Ġ 0 . 8 f Ċ