package Ġworld . greg s . void ps . network . visual . encode . player Ċ Ċ import Ġworld . greg s . void ps . buffer . write . Writer Ċ import Ġworld . greg s . void ps . network . visual . Player Visual s Ċ import Ġworld . greg s . void ps . network . visual . Visual Encoder Ċ import Ġworld . greg s . void ps . network . visual . Visual Mask . AP PE AR ANCE _ MASK Ċ import Ġworld . greg s . void ps . network . visual . update . player . Appearance Ċ Ċ class ĠAp pearance Encoder Ġ: ĠVisual Encoder < Player Visual s >( AP PE AR ANCE _ MASK , Ġinitial Ġ= Ġtrue , Ġappearance Ġ= Ġtrue ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġencode ( writer : ĠWriter , Ġvisual s : ĠPlayer Visual s ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( show Skill Level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskill Level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrim Title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsk ull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Icon , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhidden , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġem ote , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdisplayName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom bat Level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum mon ing Combat Level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidle Sound , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrawl Sound , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwalk Sound , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Sound , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsound Distance ) Ġ= Ġvisual s . appearance ĊĠĠĠĠĠĠĠ Ġwriter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġsize ( visual s . appearance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transform Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( sound Distance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( run Sound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( walk Sound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( crawl Sound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( idle Sound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( transform Ġ!= Ġ- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Skill Level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short ( skill Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( sum mon ing Combat Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( com bat Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite String Little ( displayName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( em ote ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 4 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( body . get Colour ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transform Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( transform ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 1 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart Ġ= Ġbody . get ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( part Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Short Little ( part ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( hidden ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( head Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( sk ull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġflag Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! body . male ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġflag Ġor Ġ 0 x 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġflag Ġor Ġ 0 x 2 // ĠDisplay Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Skill Level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġflag Ġor Ġ 0 x 4 // ĠDisplay Ġskill Ġlevel Ġrather Ġthan Ġcom bat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġflag Ġor Ġ( size Ġshl Ġ 3 Ġand Ġ 0 x 7 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġflag Ġand Ġ(( 1 Ġand Ġ 0 xf 2 ) Ġshr Ġ 6 )// ĠTitle Ġenum Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( flag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠWriter . writeString Little ( value : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Byte ( 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġvalue . last Index Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Byte ( value [ i ]. code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġsize ( appearance : ĠAp pearance ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 7 Ġ+ Ġappearance . displayName . length Ġ+ Ġif Ġ( appearance . transform Ġ!= Ġ- 1 ) Ġ 1 4 Ġelse Ġ( 0 Ġuntil Ġ 1 2 ). sum By Ġ{ Ġif Ġ( appearance . body . get ( it ) Ġ== Ġ 0 ) Ġ 1 Ġelse Ġ 2 Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }