Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
158
Scripts/Scripts-master/Games/Bomberman/Base/GamePiece.cs
Normal file
158
Scripts/Scripts-master/Games/Bomberman/Base/GamePiece.cs
Normal file
@@ -0,0 +1,158 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Solaris.BoardGames
|
||||
{
|
||||
//a gamepiece behaves much like an addon component
|
||||
public class GamePiece : Item
|
||||
{
|
||||
//offset from the boardgame control item
|
||||
public Point3D Offset;
|
||||
|
||||
//reference to the LOSBlocker used to block line of sight thru this gamepiece
|
||||
public LOSBlocker _Blocker;
|
||||
|
||||
//reference to the boardgame control item that this piece belongs to
|
||||
public BoardGameControlItem BoardGameControlItem;
|
||||
|
||||
//randomize itemid constructor
|
||||
public GamePiece( int itemidmin, int itemidmax, string name ) : this( Utility.RandomMinMax( itemidmin, itemidmax ), name )
|
||||
{
|
||||
}
|
||||
|
||||
//randomize itemid constructor
|
||||
public GamePiece( int itemidmin, int itemidmax, string name, bool blocklos ) : this( Utility.RandomMinMax( itemidmin, itemidmax ), name, blocklos )
|
||||
{
|
||||
}
|
||||
|
||||
//default no block los constructor
|
||||
public GamePiece( int itemid, string name ) : this( itemid, name, false )
|
||||
{
|
||||
}
|
||||
|
||||
//master constructor
|
||||
public GamePiece( int itemid, string name, bool blocklos ) : base( itemid )
|
||||
{
|
||||
Movable = false;
|
||||
Name = name;
|
||||
|
||||
if( blocklos )
|
||||
{
|
||||
_Blocker = new LOSBlocker();
|
||||
}
|
||||
}
|
||||
|
||||
//deserialize constructor
|
||||
public GamePiece( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public void RegisterToBoardGameControlItem( BoardGameControlItem boardgamecontrolitem, Point3D offset )
|
||||
{
|
||||
BoardGameControlItem = boardgamecontrolitem;
|
||||
Offset = offset;
|
||||
|
||||
UpdatePosition();
|
||||
}
|
||||
|
||||
|
||||
//move the item based on its position with respect to the boardgame control item
|
||||
public void UpdatePosition()
|
||||
{
|
||||
if( BoardGameControlItem != null )
|
||||
{
|
||||
MoveToWorld( new Point3D( BoardGameControlItem.X + BoardGameControlItem.BoardOffset.X + Offset.X, BoardGameControlItem.Y + BoardGameControlItem.BoardOffset.Y + Offset.Y, BoardGameControlItem.Z + BoardGameControlItem.BoardOffset.Z + Offset.Z ), BoardGameControlItem.BoardMap );
|
||||
}
|
||||
else
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnLocationChange( Point3D old )
|
||||
{
|
||||
if( BoardGameControlItem != null )
|
||||
{
|
||||
BoardGameControlItem.Location = new Point3D( X - BoardGameControlItem.BoardOffset.X - Offset.X, Y - BoardGameControlItem.BoardOffset.Y - Offset.Y, Z - BoardGameControlItem.BoardOffset.Z - Offset.Z );
|
||||
}
|
||||
|
||||
if( _Blocker != null )
|
||||
{
|
||||
_Blocker.MoveToWorld( Location, Map );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnMapChange()
|
||||
{
|
||||
if( BoardGameControlItem != null && BoardGameControlItem.BoardMap != Map )
|
||||
{
|
||||
BoardGameControlItem.BoardMap = Map;
|
||||
}
|
||||
|
||||
if( _Blocker != null )
|
||||
{
|
||||
_Blocker.MoveToWorld( Location, Map );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
if( BoardGameControlItem != null )
|
||||
{
|
||||
BoardGameControlItem.Delete();
|
||||
}
|
||||
|
||||
if( _Blocker != null )
|
||||
{
|
||||
_Blocker.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( 1 );
|
||||
|
||||
writer.Write( (Item)_Blocker );
|
||||
|
||||
writer.Write( (Item)BoardGameControlItem );
|
||||
|
||||
writer.Write( Offset.X );
|
||||
writer.Write( Offset.Y );
|
||||
writer.Write( Offset.Z );
|
||||
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch( version )
|
||||
{
|
||||
default:
|
||||
case 1:
|
||||
{
|
||||
_Blocker = (LOSBlocker)reader.ReadItem();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
|
||||
|
||||
BoardGameControlItem = (BoardGameControlItem)reader.ReadItem();
|
||||
|
||||
Offset.X = reader.ReadInt();
|
||||
Offset.Y = reader.ReadInt();
|
||||
Offset.Z = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user