143 lines
5.6 KiB
C#
143 lines
5.6 KiB
C#
public class NetPackageOpenTileEntityRebirth : NetPackage
|
|
{
|
|
public NetPackageOpenTileEntityRebirth Setup(int _playerId, int _posX, int _posY, int _posZ, string _window, string _windowGroup, string _sound, bool _isAccessed = false, bool _setOpen = false)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-Setup");
|
|
this.playerId = _playerId;
|
|
this.posX = _posX;
|
|
this.posY = _posY;
|
|
this.posZ = _posZ;
|
|
this.window = _window;
|
|
this.windowGroup = _windowGroup;
|
|
this.sound = _sound;
|
|
this.isAccessed = _isAccessed;
|
|
this.setOpen = _setOpen;
|
|
return this;
|
|
}
|
|
|
|
public override void read(PooledBinaryReader _br)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-read");
|
|
this.playerId = _br.ReadInt32();
|
|
this.posX = _br.ReadInt32();
|
|
this.posY = _br.ReadInt32();
|
|
this.posZ = _br.ReadInt32();
|
|
this.window = _br.ReadString();
|
|
this.windowGroup = _br.ReadString();
|
|
this.sound = _br.ReadString();
|
|
this.isAccessed = _br.ReadBoolean();
|
|
this.setOpen = _br.ReadBoolean();
|
|
}
|
|
|
|
public override void write(PooledBinaryWriter _bw)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-write");
|
|
base.write(_bw);
|
|
_bw.Write(this.playerId);
|
|
_bw.Write(this.posX);
|
|
_bw.Write(this.posY);
|
|
_bw.Write(this.posZ);
|
|
_bw.Write(this.window);
|
|
_bw.Write(this.windowGroup);
|
|
_bw.Write(this.sound);
|
|
_bw.Write(this.isAccessed);
|
|
_bw.Write(this.setOpen);
|
|
}
|
|
|
|
public override void ProcessPackage(World _world, GameManager _callbacks)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage START");
|
|
if (_world == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Vector3i location = new Vector3i();
|
|
location.x = this.posX;
|
|
location.y = this.posY;
|
|
location.z = this.posZ;
|
|
|
|
if (SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage IsServer");
|
|
|
|
if (!this.setOpen)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage Check if Open");
|
|
this.isAccessed = false;
|
|
|
|
foreach (TileEntityOwners tileEntityOwner in RebirthVariables.accessedTileEntities)
|
|
{
|
|
if (tileEntityOwner.location == location)
|
|
{
|
|
this.isAccessed = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage Send to Client, this.isAccessed: " + this.isAccessed);
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage this.playerId: " + this.playerId);
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage location: " + location);
|
|
SingletonMonoBehaviour<ConnectionManager>.Instance.SendPackage(NetPackageManager.GetPackage<NetPackageOpenTileEntityRebirth>().Setup(this.playerId, location.x, location.y, location.z, this.window, this.windowGroup, this.sound, this.isAccessed), false, this.playerId, -1, -1, null, 192);
|
|
}
|
|
else
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage Add Restriction");
|
|
TileEntityOwners tileEntityOwner = new TileEntityOwners();
|
|
tileEntityOwner.location = location;
|
|
tileEntityOwner.owner = this.playerId;
|
|
|
|
RebirthVariables.accessedTileEntities.Add(tileEntityOwner);
|
|
}
|
|
return;
|
|
}
|
|
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage IsClient");
|
|
EntityPlayerLocal _player = GameManager.Instance.World.GetPrimaryPlayer();
|
|
|
|
if (_player != null)
|
|
{
|
|
LocalPlayerUI uiforPlayer = LocalPlayerUI.GetUIForPlayer((EntityPlayerLocal)_player);
|
|
GUIWindowManager windowManager = uiforPlayer.windowManager;
|
|
|
|
if (!this.isAccessed)
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage Not Accessed");
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage this.playerId: " + this.playerId);
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage location: " + location);
|
|
|
|
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(location.x, location.z);
|
|
|
|
TileEntity tileEntity = _world.GetTileEntity(chunk.ClrIdx, location) as TileEntity;
|
|
|
|
bool isOpen = RebirthUtilities.OpenTileWindow(_player, tileEntity, windowGroup, window, sound);
|
|
|
|
if (isOpen)
|
|
{
|
|
SingletonMonoBehaviour<ConnectionManager>.Instance.SendToServer(NetPackageManager.GetPackage<NetPackageOpenTileEntityRebirth>().Setup(uiforPlayer.entityPlayer.entityId, location.x, location.y, location.z, window, windowGroup, sound, true, true), false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Log.Out("NetPackageOpenVehicleRepairRebirth-ProcessPackage Is Accessed");
|
|
GameManager.ShowTooltip(uiforPlayer.entityPlayer, Localization.Get("ttNoInteractItem"), string.Empty, "ui_denied", null);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override int GetLength()
|
|
{
|
|
return 12;
|
|
}
|
|
|
|
private int playerId = -1;
|
|
private int posX = 0;
|
|
private int posY = 0;
|
|
private int posZ = 0;
|
|
private string window;
|
|
private string windowGroup;
|
|
private string sound;
|
|
private bool isAccessed = false;
|
|
private bool setOpen = false;
|
|
}
|