namespace Server.Engines.Mahjong { public class MahjongDealerIndicator { public static MahjongPieceDim GetDimensions( Point2D position, MahjongPieceDirection direction ) { if ( direction == MahjongPieceDirection.Up || direction == MahjongPieceDirection.Down ) return new MahjongPieceDim( position, 40, 20 ); return new MahjongPieceDim( position, 20, 40 ); } public MahjongGame Game { get; } public Point2D Position { get; private set; } public MahjongPieceDirection Direction { get; private set; } public MahjongWind Wind { get; private set; } public MahjongDealerIndicator( MahjongGame game, Point2D position, MahjongPieceDirection direction, MahjongWind wind ) { Game = game; Position = position; Direction = direction; Wind = wind; } public MahjongPieceDim Dimensions => GetDimensions( Position, Direction ); public void Move( Point2D position, MahjongPieceDirection direction, MahjongWind wind ) { MahjongPieceDim dim = GetDimensions( position, direction ); if ( !dim.IsValid() ) return; Position = position; Direction = direction; Wind = wind; Game.Players.SendGeneralPacket( true, true ); } public void Save( GenericWriter writer ) { writer.Write( (int) 0 ); // version writer.Write( Position ); writer.Write( (int) Direction ); writer.Write( (int) Wind ); } public MahjongDealerIndicator( MahjongGame game, GenericReader reader ) { Game = game; int version = reader.ReadInt(); Position = reader.ReadPoint2D(); Direction = (MahjongPieceDirection) reader.ReadInt(); Wind = (MahjongWind) reader.ReadInt(); } } }