예제 #1
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            var size = args.Message.ReadSize();

            DoResize(size);
        }
예제 #2
0
 public virtual void Receive(ReceiveCommandArgs args)
 {
     FileName = args.Message.ReadString();
     EditMode = args.Message.ReadBoolean();
     Sauce    = args.Message.Read <SauceInfo>();
     args.Message.ReadPadBits();
 }
예제 #3
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            int width = args.Message.ReadVariableInt32();

            DoResize(width);
        }
예제 #4
0
        public void Receive(ReceiveCommandArgs args)
        {
            var fileName       = args.Message.ReadString();
            var documentTypeId = args.Message.ReadString();
            var formatId       = args.Message.ReadString();
            var editMode       = args.Message.ReadBoolean();

            args.Message.ReadPadBits();
            var stream = args.Message.ReadStream();

            DocumentInfo docinfo;

            if (Network.Delegate.DocumentInfos.TryGetValue(documentTypeId, out docinfo))
            {
                Format format;
                if (docinfo.Formats.TryGetValue(formatId, out format))
                {
                    args.Network.Invoke(delegate {
                        var client = args.Network as Client;
                        if (client != null)
                        {
                            if (args.User != null)
                            {
                                client.OnMessage(new ClientMessageArgs(string.Format("{0} loaded {1}", args.User, fileName)));
                            }
                            else
                            {
                                client.OnMessage(new ClientMessageArgs(string.Format("loaded {0}", fileName)));
                            }
                        }
                        Network.Delegate.LoadFile(fileName, stream, editMode, format);
                    });
                }
            }
        }
예제 #5
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            var stream = args.Message.ReadStream();

            Image = new Bitmap(stream);
        }
예제 #6
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            var handler = Handler as CharacterHandler;
            var canvas  = handler.CurrentPage.Canvas;

            bool inline = args.Message.ReadBoolean();
            var  point  = args.Message.ReadPoint();

            if (inline)
            {
                point.X--;
                var insmode = args.Message.ReadBoolean();
                if (insmode)
                {
                    canvas.DeleteCharacter(point.X, point.Y, CanvasElement.Default);
                    handler.InvalidateCharacterRegion(new Rectangle(point, new Size(canvas.Width - point.X, 1)), true);
                }
                else
                {
                    canvas [point] = CanvasElement.Default;
                }
            }
            else
            {
                var wrapmode = args.Message.ReadBoolean();
                MoveLineUp(point, wrapmode);
            }
        }
예제 #7
0
        public void Receive(ReceiveCommandArgs args)
        {
            var infoId = args.Message.ReadString();

            DocumentInfo info;

            if (clientDelegate.DocumentInfos.TryGetValue(infoId, out info))
            {
                var doc = info.Create();
                doc.EditMode = true;
                doc.IsNew    = true;

                if (doc.LoadedFormat == null)             // When a New Text Document or Ripscript is created LoadedFormat is null. Set default format.
                {
                    doc.LoadedFormat = doc.Info.DefaultFormat;
                }

                if (infoId == "character")             // Set default for character (ansi) file
                {
                    ((Pablo.Formats.Character.CharacterDocument)doc).ICEColours = false;
                    ((Pablo.Formats.Character.CharacterDocument)doc).DosAspect  = false;
                    ((Pablo.Formats.Character.CharacterDocument)doc).Use9x      = false;
                }

                clientDelegate.SetDocument(doc);
            }
        }
예제 #8
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            bool hasSauce = args.Message.ReadBoolean();

            if (hasSauce)
            {
                var sauce = new SauceInfo();
                sauce.Receive(args);
                main.Document.Sauce = sauce;
            }
            else
            {
                main.Document.Sauce = null;
            }

            if (!args.IsMe)
            {
                var client = args.Network as Client;
                if (client != null)
                {
                    client.OnMessage(new ClientMessageArgs(string.Format("{0} edited sauce metadata", args.User)));
                }
            }
        }
예제 #9
0
        public void Receive(ReceiveCommandArgs args)
        {
            var useDosAspect = args.Message.ReadBoolean();

            args.Invoke(delegate
            {
                Do(useDosAspect);
            });
        }
예제 #10
0
        public void Receive(ReceiveCommandArgs args)
        {
            Message = args.Message.ReadString();
            var client = Network as Client;

            if (client != null)
            {
                args.Network.Invoke(delegate {
                    client.OnMessage(new ClientMessageArgs(Message, args.User));
                });
            }
        }
예제 #11
0
        public void Receive(ReceiveCommandArgs args)
        {
            var infoId = args.Message.ReadString();

            DocumentInfo info;

            if (clientDelegate.DocumentInfos.TryGetValue(infoId, out info))
            {
                var doc = info.Create();
                doc.EditMode = true;
                clientDelegate.SetDocument(doc);
            }
        }
예제 #12
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            var handler = this.Handler as CharacterHandler;

            var clearSelected = args.Message.ReadBoolean();
            var clearRect     = clearSelected ? (Rectangle?)args.Message.ReadRectangle() : null;
            var position      = args.Message.ReadPoint();
            var pasteMode     = args.Message.ReadEnum <PasteMode> ();
            var canvas        = args.Message.ReadCanvas(handler.CurrentPage.Palette);

            Do(position, pasteMode, canvas, clearRect, args.IsMe ? (Point?)position : null);
        }
예제 #13
0
        public void Receive(ReceiveCommandArgs args)
        {
            var count = args.Message.ReadInt32();
            var users = new List <User>();

            while (count > 0)
            {
                var user = new User();
                user.Receive(args);
                users.Add(user);
                count--;
            }
            Network.Users = users;
        }
예제 #14
0
		public override void Receive(ReceiveCommandArgs args)
		{
			base.Receive(args);
			SetBGI(null);
			var updates = new List<Rectangle>();
			BGI.GraphDefaults(updates);
			commands.Clear();
			args.Message.ReadCommands(this, commands);
			foreach (var command in commands)
			{
				updates.Clear();
				command.Apply(updates);
			}
		}
예제 #15
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            var handler = Handler as CharacterHandler;

            var position  = args.Message.ReadPoint();
            var pasteMode = args.Message.ReadEnum <PasteMode>();
            var canvas    = args.Message.ReadCanvas(handler.CurrentPage.Palette);
            var rect      = new Rectangle(position, canvas.Size);
            var cursor    = args.IsMe ? (Point?)position : null;

            handler.Undo.Save(cursor, cursor, rect);
            handler.CurrentPage.Canvas.Set(position, new Rectangle(canvas.Size), canvas, pasteMode);
            handler.InvalidateCharacterRegion(rect, true);
        }
예제 #16
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            var infoId = args.Message.ReadString();

            DocumentInfo info;

            if (main.Settings.Infos.TryGetValue(infoId, out info))
            {
                var doc = info.Create(main.Platform);
                doc.EditMode = true;
                args.Invoke(delegate {
                    main.SetDocument(doc, true);
                });
            }
        }
예제 #17
0
        public void Receive(ReceiveCommandArgs args)
        {
            var fontID = args.Message.ReadString();
            var font   = Info.GetFonts().SelectMany(r => r.Fonts).FirstOrDefault(s => s.ID == fontID);

            args.Invoke(delegate
            {
                if (font != null)
                {
                    Handler.CharacterDocument.SetFont(font);
                    var client = args.Network as Client;
                    if (client != null && !args.IsMe)
                    {
                        client.OnMessage(new ClientMessageArgs(string.Format("{0} changed font to {1}", args.User, font.DisplayName)));
                    }
                }
            });
        }
예제 #18
0
        public void Receive(ReceiveCommandArgs args)
        {
            var editMode = args.Message.ReadBoolean();

            args.Invoke(delegate {
                clientDelegate.Document.EditMode = editMode;
                var client = args.Network as Client;
                if (client != null && args.User != null)
                {
                    if (clientDelegate.Document.EditMode)
                    {
                        client.OnMessage(new ClientMessageArgs(string.Format("{0} started editing", args.User)));
                    }
                    else
                    {
                        client.OnMessage(new ClientMessageArgs(string.Format("{0} ended editing", args.User)));
                    }
                }
            });
        }
예제 #19
0
        public override void Receive(ReceiveCommandArgs args)
        {
            base.Receive(args);
            ICEColours = args.Message.ReadBoolean();
            Use9x      = args.Message.ReadBoolean();
            DosAspect  = args.Message.ReadBoolean();
            var page       = Pages[0];
            var canvasSize = args.Message.ReadSize();

            args.Message.ReadPadBits();
            page.Canvas.ResizeCanvas(canvasSize, false);
            var stream = args.Message.ReadStream();
            var type   = new Types.Pablo(Info);

            resizeCanvas = !EditMode;
            type.Load(stream, this, null);
            if (Use9x)
            {
                SetFont(false);
            }
        }
예제 #20
0
        public void Receive(ReceiveCommandArgs args)
        {
            Title        = args.Message.ReadString();
            Author       = args.Message.ReadString();
            Group        = args.Message.ReadString();
            Date         = args.Message.ReadNullableDate();
            FileSize     = args.Message.ReadVariableInt32();
            dataType     = args.Message.ReadByte();
            ByteFileType = args.Message.ReadByte();
            TInfo1       = args.Message.ReadUInt16();
            TInfo2       = args.Message.ReadUInt16();
            TInfo3       = args.Message.ReadUInt16();
            TInfo4       = args.Message.ReadUInt16();
            TInfoS       = args.Message.ReadString();
            var numComments = args.Message.ReadByte();

            ByteFlags = args.Message.ReadByte();
            Comments.Clear();
            for (int i = 0; i < numComments; i++)
            {
                Comments.Add(args.Message.ReadString());
            }
        }
예제 #21
0
        public void Receive(ReceiveCommandArgs args)
        {
            var hasdoc = args.Message.ReadBoolean();

            if (hasdoc)
            {
                var          typeId = args.Message.ReadString();
                DocumentInfo type;
                if (args.Network.Delegate.DocumentInfos.TryGetValue(typeId, out type))
                {
                    var doc = type.Create();
                    doc.Receive(args);
                    args.Network.Invoke(delegate {
                        var client = args.Network as Client;
                        if (client != null)
                        {
                            if (args.User != null)
                            {
                                client.OnMessage(new ClientMessageArgs(string.Format("{0} loaded {1}", args.User, doc.FileName)));
                            }
                            else
                            {
                                client.OnMessage(new ClientMessageArgs(string.Format("loaded {0}", doc.FileName)));
                            }
                        }
                        args.Network.Delegate.SetDocument(doc);
                    });
                }
            }
            else
            {
                args.Invoke(delegate {
                    args.Network.Delegate.SetDocument(null);
                });
            }
        }
예제 #22
0
 public void Receive(ReceiveCommandArgs args)
 {
     throw new NotImplementedException();             // should not get here
 }
예제 #23
0
 public virtual void Receive(ReceiveCommandArgs args)
 {
 }
예제 #24
0
        public void Receive(ReceiveCommandArgs args)
        {
            var user = new User();

            user.Receive(args);
            var status = (UserStatus)args.Message.ReadVariableInt32();

            if (args.Network != null)
            {
                var forMe  = args.CurrentUser != null && user.Key == args.CurrentUser.Key;
                var server = args.Network as Server;
                var client = /*server != null ? server.Client :*/ args.Network as Client;
                args.Network.Invoke(delegate {
                    string statusMessage = null;
                    switch (status)
                    {
                    case UserStatus.Initialize:
                        if (client != null)
                        {
                            client.CurrentUser = user;
                        }
                        break;

                    case UserStatus.Connected:
                        statusMessage = string.Format("{0} ({1}) joined the session", user.Alias, user.HostName);
                        args.Network.Users.Add(user);
                        break;

                    case UserStatus.Kicked:
                        if (args.User.Level >= UserLevel.Operator)
                        {
                            statusMessage = string.Format("{0} was kicked by {1}", user, args.User);
                            if (server != null)
                            {
                                server.KickUser(user, args.User);
                            }
                            args.Network.Users.RemoveAll(r => r.Key == user.Key);
                        }
                        break;

                    case UserStatus.Disconnected:
                        if (args.Network.Users.RemoveAll(r => r.Key == user.Key) > 0)
                        {
                            statusMessage = string.Format("{0} left", user.Alias);
                        }
                        break;

                    case UserStatus.LevelChange:
                        if (args.User.Level >= UserLevel.Operator)
                        {
                            switch (user.Level)
                            {
                            default:
                            case UserLevel.Editor:
                            case UserLevel.Operator:
                                if (forMe)
                                {
                                    statusMessage = string.Format("you have been made an {1} by {2}", user.Alias, user.Level, args.User);
                                }
                                else
                                {
                                    statusMessage = string.Format("{0} has been made an {1} by {2}", user.Alias, user.Level, args.User);
                                }
                                break;

                            case UserLevel.Viewer:
                                if (forMe)
                                {
                                    statusMessage = string.Format("you have been made a {1} by {2}", user.Alias, user.Level, args.User);
                                }
                                else
                                {
                                    statusMessage = string.Format("{0} has been made a {1} by {2}", user.Alias, user.Level, args.User);
                                }
                                break;
                            }
                            args.Network.Users.RemoveAll(r => r.Key == user.Key);
                            args.Network.Users.Add(user);
                            if (forMe && client != null)
                            {
                                client.CurrentUser = user;
                            }
                            if (server != null)
                            {
                                server.ResendMessage(args.Message, args.User);
                            }
                        }
                        break;

                    case UserStatus.AliasChange:
                        var olduser   = args.Network.Users.FirstOrDefault(r => r.Key == user.Key);
                        statusMessage = string.Format("{0} is now known as {1}", olduser.Alias, user.Alias);
                        args.Network.Users.Remove(olduser);
                        args.Network.Users.Add(user);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    args.Network.OnUsersChanged(EventArgs.Empty);
                    if (client != null && !string.IsNullOrEmpty(statusMessage))
                    {
                        client.OnMessage(new ClientMessageArgs(statusMessage));
                    }
                });
            }
            //Console.WriteLine ("User Connected: {0}", this.User);
        }