Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
140
Scripts/Items/Containers/Mahjong/MahjongTile.cs
Normal file
140
Scripts/Items/Containers/Mahjong/MahjongTile.cs
Normal file
@@ -0,0 +1,140 @@
|
||||
using System;
|
||||
|
||||
namespace Server.Engines.Mahjong
|
||||
{
|
||||
public class MahjongTile
|
||||
{
|
||||
protected Point2D m_Position;
|
||||
private readonly MahjongGame m_Game;
|
||||
private readonly int m_Number;
|
||||
private readonly MahjongTileType m_Value;
|
||||
private int m_StackLevel;
|
||||
private MahjongPieceDirection m_Direction;
|
||||
private bool m_Flipped;
|
||||
public MahjongTile(MahjongGame game, int number, MahjongTileType value, Point2D position, int stackLevel, MahjongPieceDirection direction, bool flipped)
|
||||
{
|
||||
this.m_Game = game;
|
||||
this.m_Number = number;
|
||||
this.m_Value = value;
|
||||
this.m_Position = position;
|
||||
this.m_StackLevel = stackLevel;
|
||||
this.m_Direction = direction;
|
||||
this.m_Flipped = flipped;
|
||||
}
|
||||
|
||||
public MahjongTile(MahjongGame game, GenericReader reader)
|
||||
{
|
||||
this.m_Game = game;
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
this.m_Number = reader.ReadInt();
|
||||
this.m_Value = (MahjongTileType)reader.ReadInt();
|
||||
this.m_Position = reader.ReadPoint2D();
|
||||
this.m_StackLevel = reader.ReadInt();
|
||||
this.m_Direction = (MahjongPieceDirection)reader.ReadInt();
|
||||
this.m_Flipped = reader.ReadBool();
|
||||
}
|
||||
|
||||
public MahjongGame Game
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Game;
|
||||
}
|
||||
}
|
||||
public int Number
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Number;
|
||||
}
|
||||
}
|
||||
public MahjongTileType Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Value;
|
||||
}
|
||||
}
|
||||
public Point2D Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Position;
|
||||
}
|
||||
}
|
||||
public int StackLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_StackLevel;
|
||||
}
|
||||
}
|
||||
public MahjongPieceDirection Direction
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Direction;
|
||||
}
|
||||
}
|
||||
public bool Flipped
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Flipped;
|
||||
}
|
||||
}
|
||||
public MahjongPieceDim Dimensions
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDimensions(this.m_Position, this.m_Direction);
|
||||
}
|
||||
}
|
||||
public bool IsMovable
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_Game.GetStackLevel(this.Dimensions) <= this.m_StackLevel;
|
||||
}
|
||||
}
|
||||
public static MahjongPieceDim GetDimensions(Point2D position, MahjongPieceDirection direction)
|
||||
{
|
||||
if (direction == MahjongPieceDirection.Up || direction == MahjongPieceDirection.Down)
|
||||
return new MahjongPieceDim(position, 20, 30);
|
||||
else
|
||||
return new MahjongPieceDim(position, 30, 20);
|
||||
}
|
||||
|
||||
public void Move(Point2D position, MahjongPieceDirection direction, bool flip, int validHandArea)
|
||||
{
|
||||
MahjongPieceDim dim = GetDimensions(position, direction);
|
||||
int curHandArea = this.Dimensions.GetHandArea();
|
||||
int newHandArea = dim.GetHandArea();
|
||||
|
||||
if (!this.IsMovable || !dim.IsValid() || (validHandArea >= 0 && ((curHandArea >= 0 && curHandArea != validHandArea) || (newHandArea >= 0 && newHandArea != validHandArea))))
|
||||
return;
|
||||
|
||||
this.m_Position = position;
|
||||
this.m_Direction = direction;
|
||||
this.m_StackLevel = -1; // Avoid self interference
|
||||
this.m_StackLevel = this.m_Game.GetStackLevel(dim) + 1;
|
||||
this.m_Flipped = flip;
|
||||
|
||||
this.m_Game.Players.SendTilePacket(this, true, true);
|
||||
}
|
||||
|
||||
public void Save(GenericWriter writer)
|
||||
{
|
||||
writer.Write((int)0); // version
|
||||
|
||||
writer.Write(this.m_Number);
|
||||
writer.Write((int)this.m_Value);
|
||||
writer.Write(this.m_Position);
|
||||
writer.Write(this.m_StackLevel);
|
||||
writer.Write((int)this.m_Direction);
|
||||
writer.Write(this.m_Flipped);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user