using QSB.Messaging;
using QSB.Player;
namespace QSB.OwnershipSync;
///
/// sets the owner of a world object
/// also potentially gives ownership to someone else if possible
///
public class OwnedWorldObjectMessage : QSBWorldObjectMessage
{
public OwnedWorldObjectMessage(uint owner) : base(owner) { }
public override void OnReceiveLocal() => WorldObject.Owner = Data;
public override void OnReceiveRemote()
{
WorldObject.Owner = Data;
if (WorldObject.Owner == 0 && WorldObject.CanOwn)
{
// object has no owner, but is still active for this player. request ownership
// means you should wait and check after releasing ownership in case someone else gets it
WorldObject.SendMessage(new OwnedWorldObjectMessage(QSBPlayerManager.LocalPlayerId));
}
}
}