2018-11-22 19:37:15 +00:00
|
|
|
|
using FSO.SimAntics.Model.TSOPlatform;
|
|
|
|
|
|
|
|
|
|
|
|
namespace FSO.SimAntics.Model.Platform
|
|
|
|
|
|
{
|
|
|
|
|
|
public class VMFSOCommunityValidator : VMDefaultValidator
|
|
|
|
|
|
{
|
|
|
|
|
|
public VMFSOCommunityValidator(VM vm) : base(vm)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanMoveObject(VMAvatar ava, VMEntity obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ava.AvatarState.Permissions >= VMTSOAvatarPermissions.Roommate;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanSendbackObject(VMAvatar ava, VMGameObject obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (obj.TSOState as VMTSOObjectState).OwnerID == ava.PersistID &&
|
|
|
|
|
|
!(obj.TSOState as VMTSOObjectState).ObjectFlags.HasFlag(VMTSOObjectFlags.FSODonated);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override DeleteMode GetDeleteMode(DeleteMode desired, VMAvatar ava, VMEntity obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (desired > DeleteMode.Delete) return DeleteMode.Disallowed;
|
|
|
|
|
|
if (obj == null || ava == null) return DeleteMode.Disallowed;
|
|
|
|
|
|
if (desired == DeleteMode.Sendback &&
|
2018-11-30 20:05:34 +00:00
|
|
|
|
(obj.PersistID == 0 || obj is VMAvatar || !CanSendbackObject(ava, (VMGameObject)obj))) return DeleteMode.Disallowed;
|
2018-11-22 19:37:15 +00:00
|
|
|
|
|
|
|
|
|
|
if (obj is VMAvatar && ava.AvatarState.Permissions < VMTSOAvatarPermissions.Admin) return DeleteMode.Disallowed;
|
|
|
|
|
|
|
|
|
|
|
|
if (ava.AvatarState.Permissions >= VMTSOAvatarPermissions.Owner)
|
|
|
|
|
|
return desired;
|
|
|
|
|
|
|
|
|
|
|
|
if (ava.AvatarState.Permissions < VMTSOAvatarPermissions.BuildBuyRoommate)
|
|
|
|
|
|
return DeleteMode.Disallowed;
|
|
|
|
|
|
|
|
|
|
|
|
//build buy donator can delete build mode objects that are donated
|
|
|
|
|
|
|
|
|
|
|
|
if (!(obj.TSOState as VMTSOObjectState).ObjectFlags.HasFlag(VMTSOObjectFlags.FSODonated)) return DeleteMode.Disallowed;
|
|
|
|
|
|
var catalog = Content.Content.Get().WorldCatalog;
|
|
|
|
|
|
var item = catalog.GetItemByGUID(obj.Object.OBJ.GUID);
|
|
|
|
|
|
|
|
|
|
|
|
if (item != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (BuilderWhiteList.Contains(item.Value.Category) && !RoomieWhiteList.Contains(item.Value.Category))
|
|
|
|
|
|
{
|
|
|
|
|
|
return desired;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return DeleteMode.Disallowed;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override PurchaseMode GetPurchaseMode(PurchaseMode desired, VMAvatar ava, uint guid, bool fromInventory)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (desired > PurchaseMode.Donate) return PurchaseMode.Disallowed;
|
|
|
|
|
|
if (ava == null) return PurchaseMode.Disallowed;
|
|
|
|
|
|
if (ava.AvatarState.Permissions < TSOPlatform.VMTSOAvatarPermissions.Roommate) return PurchaseMode.Disallowed;
|
|
|
|
|
|
if (base.GetPurchaseMode(desired, ava, guid, fromInventory) == PurchaseMode.Disallowed) return PurchaseMode.Disallowed;
|
|
|
|
|
|
if (desired == PurchaseMode.Normal && ava.AvatarState.Permissions < TSOPlatform.VMTSOAvatarPermissions.Owner) return PurchaseMode.Donate;
|
|
|
|
|
|
return desired;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanBuildTool(VMAvatar ava)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ava.AvatarState.Permissions >= VMTSOAvatarPermissions.BuildBuyRoommate;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanManageAsyncSale(VMAvatar ava, VMGameObject obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
//currently cannot sell anything on a community lot.
|
|
|
|
|
|
//commented lets people sell non-donated objects
|
|
|
|
|
|
return false; // CanSendbackObject(ava, obj);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanManageAdmitList(VMAvatar ava)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ava.AvatarState.Permissions >= VMTSOAvatarPermissions.Owner;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanManageEnvironment(VMAvatar ava)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ava.AvatarState.Permissions >= VMTSOAvatarPermissions.Owner;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanManageLotSize(VMAvatar ava)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ava.AvatarState.Permissions >= VMTSOAvatarPermissions.Admin;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool CanChangePermissions(VMAvatar ava)
|
|
|
|
|
|
{
|
|
|
|
|
|
//permissions changes are handled differently on community lots.
|
|
|
|
|
|
//the normal permissions changes should not function.
|
|
|
|
|
|
return ava.AvatarState.Permissions >= VMTSOAvatarPermissions.Admin;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|