public void TogglePermission(UIElement elem) { VMEODSignPermissionFlags flag = 0; if (elem == RoommateReadCheckButton) { flag = VMEODSignPermissionFlags.RoomieRead; } else if (elem == FriendReadCheckButton) { flag = VMEODSignPermissionFlags.FriendRead; } else if (elem == VisitorReadCheckButton) { flag = VMEODSignPermissionFlags.VisitorRead; } else if (elem == RoommateWriteCheckButton) { flag = VMEODSignPermissionFlags.RoomieWrite; } else if (elem == FriendWriteCheckButton) { flag = VMEODSignPermissionFlags.FriendWrite; } else if (elem == VisitorWriteCheckButton) { flag = VMEODSignPermissionFlags.VisitorWrite; } Data.Flags ^= (ushort)flag; UpdatePermissions(); }
public override void Tick() { lock (this) { if (Data != null && !SentMessage) { //init mode. check client permissions... var client = Server.Clients.FirstOrDefault(); if (client == null) { return; //uh, what? } VMEODSignPermissionFlags avaFlags = 0; if (Mode != VMEODSignsMode.OwnerWrite && Mode != VMEODSignsMode.OwnerPermissions) { if (client.Avatar.AvatarState.Permissions >= VMTSOAvatarPermissions.Roommate) { avaFlags |= VMEODSignPermissionFlags.RoomieRead; } else { avaFlags |= VMEODSignPermissionFlags.VisitorRead; } var inverseRead = (~(VMEODSignPermissionFlags)Data.Flags) & VMEODSignPermissionFlags.ReadFlags & avaFlags; if (inverseRead > 0) { DisableRead = true; Mode = VMEODSignsMode.Read; } avaFlags = (VMEODSignPermissionFlags)((short)avaFlags << 3); var inverseWrite = (~(VMEODSignPermissionFlags)Data.Flags) & VMEODSignPermissionFlags.WriteFlags & avaFlags; Mode = (inverseWrite > 0) ? VMEODSignsMode.Read : VMEODSignsMode.Write; } if (DisableRead) { Data.Text = ""; } client.Send("signs_init", (short)Mode + "\n" + MaxLength); client.Send("signs_show", Data.Save()); SentMessage = true; } } }