package Ġcom . m kt iti . tre ach ery . ui Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . m kt iti . tre ach ery . manager . Icon Manager Ċ import Ġcom . m kt iti . tre ach ery . core . Player Ċ import Ġcom . m kt iti . tre ach ery . core . Player Hand Ċ import Ġcom . m kt iti . tre ach ery . R Ċ Ċ class ĠPlayer Adapter ( ĊĠĠĠ Ġprivate Ġval Ġicon Manager : ĠIcon Manager , ĊĠĠĠ Ġinit Players : ĠList < Player Hand >, ĊĠĠĠ Ġprivate Ġval Ġclick Callback : Ġ( Player Hand ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġdelete Callback : Ġ( Player , Ġ() Ġ-> ĠUnit ) Ġ-> ĠUnit Ċ ) Ġ: ĠRecyclerView . Adapter < Player Adapter . Player Holder >() Ġ{ ĊĊĠĠĠ Ġclass ĠPlayer Holder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠTextView Ġ= Ġview . findViewById ( R . id . faction _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġicon : ĠImageView Ġ= Ġview . findViewById ( R . id . faction _ icon ) ĊĠĠĠĠĠĠĠ Ġval Ġcards Layout : ĠLinearLayout Ġ= Ġview . findViewById ( R . id . cards _ layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġplayers Ġ= Ġinit Players . to Mutable List () ĊĊĠĠĠ Ġval Ġstored : ĠList < Player Hand > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġplayers ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠPlayer Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . player _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPlayer Holder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġplayers . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠPlayer Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( players [ position ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . name . text Ġ= Ġplayer . nice Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . icon . setImage Drawable ( icon Manager [ player ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . cards Layout . removeAll Views () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Callback ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Margins ( 0 , Ġ 0 , Ġ 8 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġadd Icon ( icon : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Icon Ġ= ĠImageView ( holder . cards Layout . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Icon . setImage Drawable ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Icon . maxWidth Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Icon . max Height Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Icon . layout Params Ġ= Ġicon Params ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . cards Layout . addView ( card Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcards . forEach Ġ{ Ġcard Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Icon ( if Ġ( card Ġ== Ġnull ) Ġicon Manager . unknown Card () Ġelse Ġicon Manager [ card . type ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( player . max Cards Ġ- Ġcards . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Icon ( icon Manager . no Card ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġplus Assign ( hand : ĠPlayer Hand ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayers Ġ+= Ġhand ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( players . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġminus Assign ( view Holder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpos Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠ Ġval Ġremoved Ġ= Ġplayers . remove At ( pos ) ĊĠĠĠĠĠĠĠ Ġnotify Item Removed ( pos ) ĊĠĠĠĠĠĠĠ Ġdelete Callback ( removed . player ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers . add ( pos , Ġremoved ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( pos ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( hand : ĠPlayer Hand ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġplayers . with Index (). find Ġ{ Ġit . value . player Ġ== Ġhand . player Ġ} ?. index ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ+= Ġhand ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers [ index ] Ġ= Ġhand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠSw ipe Delete Callback ( ĊĠĠĠ Ġprivate Ġval Ġon Remove : Ġ( RecyclerView . ViewHolder ) Ġ-> ĠUnit Ċ ) Ġ: ĠItem Touch Helper . Simple Callback ( 0 , ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Remove ( view Holder ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ