Ejemplo n.º 1
0
        public static void Tell(List <SearchResult> Results, string Addr)
        {
            Multicaster Caster     = null;
            Thread      TellThread = null;

            try
            {
                List <string> message = new List <string>();
                foreach (var r in Results)
                {
                    message.Add("have:" + Path.GetFileName(r.Path) + ":" + r.Size);
                }
                Caster     = new Multicaster(MainWindow.MulticastIP.ToString(), MainWindow.MulticastPort);
                TellThread = new Thread(new ParameterizedThreadStart(Caster.Cast));
                TellThread.Start(message.ToArray());
            }
            catch (Exception ex)
            {
                if (TellThread != null)
                {
                    TellThread.Abort();
                }
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 2
0
        public void Search_Click(object sender, RoutedEventArgs e)
        {
            Multicaster Caster       = null;
            Thread      SearchThread = null;

            try
            {
                string message = "give:" + txtSearch.Text;
                Caster       = new Multicaster(MainWindow.MulticastIP.ToString(), MainWindow.MulticastPort);
                SearchThread = new Thread(new ParameterizedThreadStart(Caster.Cast));
                SearchThread.Start(message);

                new Thread(new ThreadStart(
                               delegate
                {
                    int i = Caster._CastTimes;
                    App.Current.Dispatcher.Invoke((Action) delegate
                    {
                        btnSearch.IsEnabled = false;
                    });

                    while (i-- > 0)
                    {
                        App.Current.Dispatcher.Invoke((Action) delegate
                        {
                            btnSearch.Content = "Search (" + i + ")";
                        });
                        Thread.Sleep(1000);
                    }
                    App.Current.Dispatcher.Invoke((Action) delegate
                    {
                        btnSearch.IsEnabled = true;
                        btnSearch.Content   = "Search";
                    });
                })).Start();
            }
            catch (Exception ex)
            {
                btnSearch.Content = "Search";
                if (SearchThread != null)
                {
                    SearchThread.Abort();
                }
                MessageBox.Show(ex.Message);
            }
        }
        private Orchestrator(IEnumerable<Rect> screens)
        {
            Multicaster = new Multicaster();
            Multicaster.CommandReceived += Multicaster_CommandReceived;

            Hosts = new ReadOnlyCollection<ViewHost>(screens.Select(s => new ViewHost(this, s)).ToArray());
            AvailableViews = new ViewCommandCollection(new[] {
                TryCreateSingletonCommand("Intro", Views.IntroView.TryCreateFactory(@"Intro\")),
                new ViewCommand(this, "Message", o => new Views.MessageView(o))
            }.Concat(Directory.EnumerateDirectories(Environment.CurrentDirectory)
                              .Where(d => !Path.GetFileName(d).Equals("Intro", StringComparison.OrdinalIgnoreCase)
                                        && Directory.EnumerateFiles(d, "*.jpg").Any())
                              .Select(d => new ViewCommand(this,
                                    "Photos: " + Path.GetFileName(d),
                                    o => new Views.SlideshowView(o, "Photos: " + Path.GetFileName(d), d)
                                ))
            ).Concat(Directory.EnumerateDirectories(Environment.CurrentDirectory)
                              .Where(d => Directory.EnumerateFiles(d)
                                                   .Any(p => Views.VideoView.extensions.Contains(Path.GetExtension(p))))
                              .Select(d => Views.VideoView.CreateFactory(this, d))
            ));
        }
Ejemplo n.º 4
0
        public GameForm(GameSession session, GameSettings settings)
            : base()
        {
            _graphics = new GraphicsDeviceManager(this);

            _engine         = new Engine(session.FieldWidth, session.FieldWidth);
            _engine.Players = _players = new List <Player>();

            var cords = _engine.GetRandomPosition();

            while (_engine.HasPlayer((int)cords.X, (int)cords.Y))
            {
                cords = _engine.GetRandomPosition();
            }

            _player = new Player(settings.PlayerName, settings.Team, cords);
            _player.HandleKeyboard = true;
            _player.OnKeyPressed  += (s, e) => { _engine.MovePlayer(_player); };
            _player.ViewPortWidth  = _engine.Width;
            _player.ViewPortHeight = _engine.Height;
            _players.Add(_player);
            _engine.AddPlayer(_player);

            _engine.CurrentPlayer = _player;

            _cellSize = 50;
            _graphics.PreferredBackBufferWidth  = _engine.Width;
            _graphics.PreferredBackBufferHeight = _engine.Height;

            Content.RootDirectory = "Content";

            _session = session;

            _packet = new GameMulticastPacket()
            {
                PlayerName = settings.PlayerName,
                Team       = settings.Team
            };

            Multicaster.MulticastGameSession <GameMulticastPacket>(_session.IP, () =>
            {
                if (_player.IsDead)
                {
                    Multicaster.Send = false;
                    System.Diagnostics.Debug.WriteLine("Send dead");
                }

                _packet.Move   = _player.Move;
                _packet.IsDead = _player.IsDead;
                _packet.Score  = _player.Score;
                _packet.PosX   = _player.Postion.X;
                _packet.PosY   = _player.Postion.Y;

                //System.Diagnostics.Debug.WriteLine("Send " + _player.Name + "-" + _player.Move);

                return(_packet);
            });

            Multicaster.ListenToGameSession <GameMulticastPacket>(_session.IP,
                                                                  (p, sender) =>
            {
                if (_textureHunterPlayerSheet != null && _textureHuntedPlayerSheet != null && !_player.Name.Equals(p.PlayerName))
                {
                    var player = _players.FirstOrDefault(op => op.Name.Equals(p.PlayerName));
                    if (player == null)
                    {
                        player                = new Player(p.PlayerName, p.Team, new Vector2(p.PosX, p.PosY));
                        player.Texture        = p.Team == Team.Hunter ? _textureHunterPlayerSheet : _textureHuntedPlayerSheet;
                        player.ViewPortWidth  = _engine.Width;
                        player.ViewPortHeight = _engine.Height;
                        _players.Add(player);
                        _engine.AddPlayer(player);
                    }

                    lock (_synchPlayer)
                    {
                        player.Move   = p.Move;
                        player.IsDead = p.IsDead;
                        player.Team   = p.Team;

                        //if (player.Postion.X != p.PosX && player.Postion.Y != p.PosY)
                        //{
                        //    player.Postion = new Vector2(p.PosX, p.PosY);
                        //}
                        player.Postion = new Vector2(p.PosX, p.PosY);

                        if (p.IsDead)
                        {
                            System.Diagnostics.Debug.WriteLine("Receive dead");
                            _engine.RemovePlayer(player);
                        }
                        else
                        {
                            _engine.MovePlayer(player);
                        }
                    }

                    //System.Diagnostics.Debug.WriteLine("Received " + p.PlayerName + "-" + p.Move);
                }
            });
        }