package Ġcom . zd og . demo . ui . effects . sun ny Ċ Ċ import Ġcom . zd og . demo . ui . effects . Entity Ċ import Ġcom . zd og . demo . ui . effects . tree Ċ import Ġcom . zd og . demo . ui . shapes .* Ċ import Ġcom . zd og . library . render .* Ċ Ċ class ĠMountain 1 Ġ: ĠEntity () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcontainer Ġ= Ġanchor () ĊĠĠĠ Ġprivate Ġval Ġmount ain A : ĠShape ĊĠĠĠ Ġprivate Ġval Ġmount ain B : ĠShape ĊĠĠĠ Ġprivate Ġval Ġtrunk : ĠShape ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmount ain A Ġ= Ġshape Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ- 9 6 f , Ġy Ġ= Ġ 1 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ- 8 6 f , Ġy Ġ= Ġ 1 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector ( x Ġ= Ġ- 6 0 f , Ġy Ġ= Ġ 4 2 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector ( x Ġ= Ġ- 2 6 f , Ġy Ġ= Ġ 4 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ- 2 6 f , Ġy Ġ= Ġ 7 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ- 9 6 f , Ġy Ġ= Ġ 7 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Ġ= Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= Ġ 4 8 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmount ain B Ġ= Ġmount ain A . copy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ- 2 6 f , Ġy Ġ= Ġ 4 2 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector ( x Ġ= Ġ- 8 f , Ġy Ġ= Ġ 7 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector ( x Ġ= Ġ 3 6 f , Ġy Ġ= Ġ 7 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ 9 6 f , Ġy Ġ= Ġ 7 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( x Ġ= Ġ- 2 6 f , Ġy Ġ= Ġ 7 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġblock : ĠShape . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Ġ= Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ- 8 6 f , Ġy Ġ= Ġ- 1 4 f , Ġz Ġ= Ġ- 8 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 3 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ- 7 0 f , Ġy Ġ= Ġ- 1 2 f , Ġz Ġ= Ġ 1 4 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ- 6 0 f , Ġy Ġ= Ġ- 4 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ- 2 6 f , Ġy Ġ= Ġ 1 2 f , Ġz Ġ= Ġ- 8 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ- 1 8 f , Ġy Ġ= Ġ 1 8 f , Ġz Ġ= Ġ 2 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlon ely Translate Ġ= Ġvector ( x Ġ= Ġ 3 2 f , Ġy Ġ= Ġ 2 4 f ) ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 3 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġlon ely Translate ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtrunk Ġ= Ġshape Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( y Ġ= Ġ 1 8 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline ( y Ġ= Ġ 2 8 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Ġ= Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate . set ( lon ely Translate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= Ġ 4 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ 6 4 f , Ġy Ġ= Ġ 4 0 f , Ġz Ġ= Ġ 6 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtree ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Ġ= Ġvector ( x Ġ= Ġ 7 2 f , Ġy Ġ= Ġ 4 4 f , Ġz Ġ= Ġ- 2 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Color ( theme : ĠTheme ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . children . filter Ġ{ Ġit Ġ!= Ġtrunk Ġ&& Ġit Ġ!= Ġmount ain A Ġ&& Ġit Ġ!= Ġmount ain B Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ĠShape ). color Ġ= Ġtheme . leaf 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmount ain A . color Ġ= Ġtheme . mount ain 1 ĊĠĠĠĠĠĠĠ Ġmount ain B . color Ġ= Ġtheme . mount ain 1 ĊĠĠĠĠĠĠĠ Ġtrunk . color Ġ= Ġtheme . trunk 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . translate . x Ġ= Ġ- 2 4 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach To ( world : ĠWorld , Ġin Day : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Color ( Theme . get ( in Day )) ĊĠĠĠĠĠĠĠ Ġworld . addChild ( container ) ĊĠĠĠĠĠĠĠ Ġcontainer . translate To ( world , Ġx Ġ= Ġ 0 f ). duration ((( container . translate . x Ġ/ Ġ- 2 4 0 ) Ġ* Ġ 6 0 0 ). to Long ()). start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach To ( world : ĠWorld ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . translate To ( world , Ġ- 2 4 0 f ). duration ( 6 0 0 ). on End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . remove () ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Switch Day ( world : ĠWorld , Ġin Day : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= ĠTheme . get ( in Day ) ĊĠĠĠĠĠĠĠ Ġcontainer . children . filter Ġ{ Ġit Ġ!= Ġtrunk Ġ&& Ġit Ġ!= Ġmount ain A Ġ&& Ġit Ġ!= Ġmount ain B Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . color To ( world , Ġtheme . leaf 1 ). delay ( 1 2 0 0 ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmount ain A . color To ( world , Ġtheme . mount ain 1 ). delay ( 1 2 0 0 ). start () ĊĠĠĠĠĠĠĠ Ġmount ain B . color To ( world , Ġtheme . mount ain 1 ). delay ( 1 2 0 0 ). start () ĊĠĠĠĠĠĠĠ Ġtrunk . color To ( world , Ġtheme . trunk 1 ). delay ( 1 2 0 0 ). start () ĊĠĠĠ Ġ} Ċ }