Пример #1
0
        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();
        }
Пример #2
0
        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;
                }
            }
        }