/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 1 7 ĠAl mas B Ġ( al mas lvl @ gmail . com ) Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . game play . r pg . quest Ċ Ċ import Ġcom . al mas b . fx gl . app . FX GL Ċ import Ġcom . al mas b . fx gl . time . Timer Action Ċ import Ġjavafx . beans . property . Integer Property Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġjavafx . util . Duration Ċ Ċ /** Ċ Ġ* ĠA Ġsingle Ġquest Ġobjective . Ċ Ġ* Ċ Ġ* Ġ@ author ĠAl mas ĠB aim ag amb et ov Ġ( al mas lvl @ gmail . com ) Ċ Ġ*/ Ċ class ĠQuest Objective Ċ @ Jvm Over loads Ċ constructor ( ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠText Ġthat Ġtells Ġthe Ġuser Ġhow Ġto Ġachieve Ġthis Ġobjective ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġdescription : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠProperty Ġthat Ġkeeps Ġtrack Ġof Ġnumber Ġof Ġtimes Ġuser Ġhas Ġcompleted Ġobjective . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Property : ĠInteger Property , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠNumber Ġof Ġtimes Ġthe Ġobjective Ġneeds Ġto Ġbe Ġcompleted . ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault : Ġ 1 . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġtimes : ĠInt Ġ= Ġ 1 , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHow Ġmuch Ġtime Ġis Ġgiven Ġto Ġcomplete Ġthis Ġobjective . ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault : Ġun limited . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġexpire Duration : ĠDuration Ġ= ĠDuration . ZERO ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstate Ġ= ĠSimple ObjectProperty < Quest State >( Quest State . ACTIVE ) ĊĊĠĠĠ Ġ// ĠTODO : Ġmake Ġread Ġonly ĊĠĠĠ Ġfun Ġstate Property () Ġ= Ġstate ĊĊĠĠĠ Ġfun ĠgetState () Ġ= Ġstate . get () ĊĊĠĠĠ Ġprivate Ġfun ĠsetState ( state : ĠQuest State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠQuest State . ACTIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Quest Ġobjective Ġcannot Ġbe Ġre activated !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclean () ĊĠĠĠĠĠĠĠ Ġthis . state . set ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsuccess Binding Ġ= Ġvalue Property . greater Than OrEqualTo ( times ) ĊĠĠĠ Ġprivate Ġval Ġlistener Ġ= Ġjavafx . beans . value . ChangeListener < Boolean > Ġ{ Ġo , Ġold , Ġis Reached Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( is Reached ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( Quest State . COMPLETED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġfail Binding : ĠTimer Action ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsuccess Binding . addListener ( listener ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expire Duration Ġ!== ĠDuration . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail Binding Ġ= ĠFX GL . get Master Timer (). run Once After ({ ĠsetState ( Quest State . FAILED ) Ġ}, Ġexpire Duration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuccess Binding . remove Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġfail Binding ?. expire () ĊĠĠĠ Ġ} Ċ }