package Ġt are h art . rl bot . planning Ċ Ċ import Ġt are h art . rl bot . Agent Input Ċ import Ġt are h art . rl bot . bots . Team Ċ import Ġt are h art . rl bot . input . Car Data Ċ import Ġt are h art . rl bot . math . vector . Vector 3 Ċ import Ġt are h art . rl bot . tuning . Bot Log Ċ Ċ class ĠZone Plan ( input : ĠAgent Input ) Ġ{ ĊĊĠĠĠ Ġval Ġball Zone Ġ= Ġget Zone ( input . ball Position ) ĊĠĠĠ Ġval Ġmy Zone Ġ= Ġget Zone ( input . my Car Data . position ) Ġ// ĠD ON ' T ĠLET ĠME ĠIN ĠMY ĠZ ONE ĊĠĠĠ Ġval Ġball IsIn My Box : ĠBoolean ĊĠĠĠ Ġval Ġball IsIn Opp onent Box : ĠBoolean ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStore Ġdata Ġfor Ġlater Ġuse Ġand Ġfor Ġtelemetry Ġoutput ĊĠĠĠĠĠĠĠ Ġval Ġmy Car Ġ= Ġinput . my Car Data ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Analysis S ane ( ball Zone , Ġmy Zone , Ġmy Car . player Index )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDetermine Ġif Ġthe Ġball Ġis Ġin Ġmy Ġour Ġtheir Ġbox ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( my Car . team Ġ== ĠTeam . BLUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġball IsIn My Box Ġ= Ġthis . ball Zone . sub Zone Ġ== ĠZone . Sub Zone . BLUE BOX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġball IsIn Opp onent Box Ġ= Ġthis . ball Zone . sub Zone Ġ== ĠZone . Sub Zone . OR ANGE BOX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġball IsIn My Box Ġ= Ġthis . ball Zone . sub Zone Ġ== ĠZone . Sub Zone . OR ANGE BOX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġball IsIn Opp onent Box Ġ= Ġthis . ball Zone . sub Zone Ġ== ĠZone . Sub Zone . BLUE BOX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġball IsIn My Box Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġball IsIn Opp onent Box Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// TODO : ĠActually Ġgenerate Ġsome Ġrecommended Ġsteps Ġfrom Ġthis ĊĠĠĠ Ġprivate Ġfun Ġdetermine Zone Plan () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġ// TODO : ĠCome Ġup Ġwith Ġa Ġplan ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Zone ( point : ĠVector 3 ): ĠZone Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone ( get Main Zone ( point ), Ġget Sub Zone ( point )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġorder Ġof Ġanalysis Ġof Ġzones Ġbasically Ġdetermines Ġtheir Ġpriority ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Main Zone ( point : ĠVector 3 ): ĠZone . Main Zone Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflat Point Ġ= Ġpoint . flatten () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . OR ANGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Main Zone . OR ANGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . MID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Main Zone . MID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( flat Point Ġin ĠZone Definitions . BLUE ) ĠZone . Main Zone . BLUE Ġelse ĠZone . Main Zone . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġorder Ġof Ġanalysis Ġof Ġsub Ġzones Ġbasically Ġdetermines Ġtheir Ġpriority ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Sub Zone ( point : ĠVector 3 ): ĠZone . Sub Zone Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflat Point Ġ= Ġpoint . flatten () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . TO PC OR NER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . TO PC OR NER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . BOT TO MC OR NER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . BOT TO MC OR NER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . OR ANGE BOX ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . OR ANGE BOX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . BLUE BOX ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . BLUE BOX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . TO PS ID EL INE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . TO PS ID EL INE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . BOT TO MS ID EL INE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . BOT TO MS ID EL INE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . TOP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flat Point Ġin ĠZone Definitions . BOTTOM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . BOTTOM ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZone . Sub Zone . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Analysis S ane ( ball Zone : ĠZone , Ġmy Zone : ĠZone , Ġplayer Index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsanity Check Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ball Zone . main Zone Ġ== ĠZone . Main Zone . NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Bot Log . println (" W TF Ġwhere Ġis Ġthe Ġball ?", Ġplayer Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsanity Check Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( my Zone . main Zone Ġ== ĠZone . Main Zone . NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBot Log . println (" W TF Ġwhere Ġam ĠI ?", Ġplayer Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsanity Check Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsanity Check ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ