89 lines
4.0 KiB
C#
89 lines
4.0 KiB
C#
namespace GameEvent.SequenceActions
|
|
{
|
|
public class ActionTeleportToSpecialRebirth : ActionBaseClientAction
|
|
{
|
|
public override void OnClientPerform(Entity target)
|
|
{
|
|
//Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform START");
|
|
EntityPlayer entityPlayer = target as EntityPlayer;
|
|
if (entityPlayer != null)
|
|
{
|
|
World world = GameManager.Instance.World;
|
|
Vector3 vector = Vector3.zero;
|
|
switch (this.pointType)
|
|
{
|
|
case ActionTeleportToSpecialRebirth.SpecialPointTypes.Bedroll:
|
|
if (entityPlayer.SpawnPoints.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
vector = entityPlayer.SpawnPoints[0];
|
|
break;
|
|
case ActionTeleportToSpecialRebirth.SpecialPointTypes.Landclaim:
|
|
{
|
|
PersistentPlayerData playerDataFromEntityID = GameManager.Instance.persistentPlayers.GetPlayerDataFromEntityID(target.entityId);
|
|
if (playerDataFromEntityID.LPBlocks == null || playerDataFromEntityID.LPBlocks.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
vector = playerDataFromEntityID.LPBlocks[0];
|
|
break;
|
|
}
|
|
case ActionTeleportToSpecialRebirth.SpecialPointTypes.Backpack:
|
|
//Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 0");
|
|
Vector3i lastDroppedBackpackPosition = entityPlayer.GetLastDroppedBackpackPosition();
|
|
if (lastDroppedBackpackPosition == Vector3i.zero)
|
|
{
|
|
//Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 1");
|
|
return;
|
|
}
|
|
vector = lastDroppedBackpackPosition;
|
|
|
|
//Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 2, vector: " + vector);
|
|
GameManager.Instance.StartCoroutine(RebirthUtilities.GetBackPackContent(1.5f, (EntityPlayerLocal)target, vector));
|
|
//Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 3");
|
|
|
|
break;
|
|
}
|
|
if (vector.y > 0f)
|
|
{
|
|
//Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform 1");
|
|
vector += Vector3.up * 2f;
|
|
if (entityPlayer.isEntityRemote)
|
|
{
|
|
SingletonMonoBehaviour<ConnectionManager>.Instance.Clients.ForEntityId(entityPlayer.entityId).SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().Setup(vector, null, false));
|
|
return;
|
|
}
|
|
((EntityPlayerLocal)entityPlayer).PlayerUI.windowManager.CloseAllOpenWindows(null, false);
|
|
((EntityPlayerLocal)entityPlayer).TeleportToPosition(vector, false, null);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void ParseProperties(DynamicProperties properties)
|
|
{
|
|
base.ParseProperties(properties);
|
|
properties.ParseEnum<ActionTeleportToSpecialRebirth.SpecialPointTypes>(ActionTeleportToSpecialRebirth.PropSpecialType, ref this.pointType);
|
|
}
|
|
|
|
public override BaseAction CloneChildSettings()
|
|
{
|
|
return new ActionTeleportToSpecialRebirth
|
|
{
|
|
targetGroup = this.targetGroup,
|
|
pointType = this.pointType
|
|
};
|
|
}
|
|
|
|
protected ActionTeleportToSpecialRebirth.SpecialPointTypes pointType;
|
|
protected static string PropSpecialType = "special_type";
|
|
|
|
protected enum SpecialPointTypes
|
|
{
|
|
Bedroll,
|
|
Landclaim,
|
|
Backpack
|
|
}
|
|
}
|
|
}
|