package Ġworld . greg s . void ps . engine . client . update . task . npc Ċ Ċ import Ġworld . greg s . void ps . buffer . write . Writer Ċ import Ġworld . greg s . void ps . engine . entity . character . Character Tracking Set Ċ import Ġworld . greg s . void ps . engine . entity . character . npc . NPC Ċ import Ġworld . greg s . void ps . engine . entity . character . npc . tele port ing Ċ import Ġworld . greg s . void ps . engine . entity . character . player . Player Ċ import Ġworld . greg s . void ps . engine . entity . character . player . Players Ċ import Ġworld . greg s . void ps . engine . entity . character . update . Local Change Ċ import Ġworld . greg s . void ps . engine . entity . character . update . visual . npc . get Turn Ċ import Ġworld . greg s . void ps . engine . tick . task . Entity Task Ċ import Ġworld . greg s . void ps . network . encode . update NPC s Ċ Ċ class ĠN PC Update Task ( ĊĠĠĠ Ġoverride Ġval Ġentities : ĠP layers Ċ ) Ġ: ĠEntity Task < Player >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġpredicate ( entity : ĠPlayer ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġentity . client Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" PARAMETER _ NAME _ CHANGED _ ON _ OVERRIDE ") ĊĠĠĠ Ġoverride Ġfun Ġrun Async ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġviewport Ġ= Ġplayer . viewport ĊĠĠĠĠĠĠĠ Ġval Ġnp cs Ġ= Ġviewport . np cs ĊĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= Ġviewport . npc Changes ĊĠĠĠĠĠĠĠ Ġval Ġupdates Ġ= Ġviewport . npc Updates ĊĊĠĠĠĠĠĠĠ Ġprocess Local s ( writer , Ġupdates , Ġnp cs ) ĊĠĠĠĠĠĠĠ Ġprocess Add itions ( writer , Ġupdates , Ġplayer , Ġnp cs ) ĊĊĠĠĠĠĠĠĠ Ġplayer . client ?. update NPC s ( writer , Ġupdates ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprocess Local s ( ĊĠĠĠĠĠĠĠ Ġsync : ĠWriter , ĊĠĠĠĠĠĠĠ Ġupdates : ĠWriter , ĊĠĠĠĠĠĠĠ Ġset : ĠCharacter Tracking Set < NPC > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsync . start Bit Access () ĊĠĠĠĠĠĠĠ Ġsync . write Bits ( 8 , Ġset . current . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( npc Ġin Ġset . current ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremove Ġ= Ġset . remove . contains ( npc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchange Ġ= Ġif Ġ( remove ) ĠLocal Change . Remove Ġelse Ġnpc . change ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( change Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 2 , Ġchange . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( change ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Change . Walk Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 3 , Ġnpc . walk Direction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġnpc . visual s . update Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Change . C rawl Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 3 , Ġnpc . walk Direction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġnpc . visual s . update Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Change . Run Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 3 , Ġnpc . walk Direction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 3 , Ġnpc . run Direction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġnpc . visual s . update Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! remove ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdates . write Bytes ( npc . visual s . update Ġ?: Ġcontinue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsync . finish Bit Access () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprocess Add itions ( ĊĠĠĠĠĠĠĠ Ġsync : ĠWriter , ĊĠĠĠĠĠĠĠ Ġupdates : ĠWriter , ĊĠĠĠĠĠĠĠ Ġclient : ĠPlayer , ĊĠĠĠĠĠĠĠ Ġset : ĠCharacter Tracking Set < NPC > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( npc Ġin Ġset . add ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( x , Ġy ) Ġ= Ġnpc . tile . delta ( client . tile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 5 , Ġnpc . index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 2 , Ġnpc . tile . plane ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġnpc . tele port ing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 5 , Ġy Ġ+ Ġif Ġ( y Ġ< Ġ 1 5 ) Ġ 3 2 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 5 , Ġx Ġ+ Ġif Ġ( x Ġ< Ġ 1 5 ) Ġ 3 2 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 3 , Ġ( npc . get Turn (). direction Ġshr Ġ 1 1 ) Ġ- Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 , Ġnpc . visual s . addition Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 4 , Ġnpc . def . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdates . write Bytes ( npc . visual s . addition Ġ?: Ġcontinue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsync . write Bits ( 1 5 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġsync . finish Bit Access () ĊĠĠĠ Ġ} Ċ Ċ }