Exemple #1
0
 public MainController(Control Control, MessageFilter MessageFilter, Boolean EnableStepping, Boolean EnableDrawing, Boolean Online) : base(Control, MessageFilter, EnableStepping, EnableDrawing, Online)
 {
     // Simplest Controller
     Processing = new Thread(Run)
     {
         Name = "Controller"
     };
     //
     if (Online)
     {
         Connection = new DiepConnection();
         Connection.MessageReceived += Client_MessageReceived;
         Connection.Start();
         var connectMessage = new ConnectMessage()
         {
             Id   = -1,
             Name = DiepConnection.GetUsername(),
         };
         Connection.Enqueue(connectMessage);
     }
     // Starting Controller Dictionaries
     Tanks  = new Dictionary <long, Tank>();
     Shoots = new Dictionary <long, Shoot>();
     Shapes = new Dictionary <long, Shape>();
 }
Exemple #2
0
 public void Broadcast(DiepConnection Connection, Diep.GameConnection.Messages.Message message)
 {
     foreach (var connection in Connections.ToArray().Where(a => Connection == null || a.Id != Connection.Id))
     {
         connection.Enqueue(message);
     }
 }
Exemple #3
0
        private void FreshConnection_MessageReceived(DiepConnection Connection, Diep.GameConnection.Messages.Message Message)
        {
            if (Connection is ServerDiepConnection sdc)
            {
                switch (Message.Type)
                {
                case MessageType.Message:
                    break;

                case MessageType.ConnectMessage:
                    AuthenticateClient(sdc, Message as ConnectMessage);
                    SpawnTank(sdc);
                    SendOtherTanks(Connection);
                    break;

                case MessageType.TankMoveMessage:
                    Broadcast(Connection, Message);
                    break;

                case MessageType.TankSpawnMessage:
                    Broadcast(null, Message);
                    break;

                case MessageType.ShootMessage:
                    ExecuteShoot(Connection as ServerDiepConnection, Message as ShootMessage);
                    break;

                default:
                    break;
                }
            }
        }
Exemple #4
0
        private void Client_MessageReceived(DiepConnection Connection, GameConnection.Messages.Message Message)
        {
            Control.Invoke((Action) delegate
            {
                switch (Message.Type)
                {
                case MessageType.Message:
                    break;

                case MessageType.ConnectMessage:
                    SetIdentification(Connection, Message as ConnectMessage);
                    break;

                case MessageType.TankSpawnMessage:
                    if (Message is TankSpawnMessage tsm)
                    {
                        SpawnTank(tsm);
                    }
                    break;

                case MessageType.TankMoveMessage:
                    MoveTank(Message as TankMoveMessage);
                    break;

                case MessageType.ShootMessage:
                    ExecuteShoot(Message as ShootMessage);
                    break;

                case MessageType.ShootSpawnMessage:
                    if (Message is ShootSpawnMessage ssm)
                    {
                        SpawnShoot(ssm);
                    }
                    break;

                case MessageType.ShootMoveMessage:
                    MoveShoot(Message as ShootMoveMessage);
                    break;

                default:
                    break;
                }
            });
Exemple #5
0
 private void SendOtherTanks(DiepConnection Connection)
 {
     foreach (var connection in Connections.ToArray().Where(a => a.Id != Connection.Id && a.Tank != null))
     {
         var tank         = connection.Tank;
         var bounds       = tank.Bounds;
         var spawnMessage = new TankSpawnMessage()
         {
             Id           = connection.Id,
             ServerTankId = tank.Id,
             Name         = connection.Tank.Name,
             Height       = bounds.Height,
             Width        = bounds.Width,
             TeamColor    = tank.TeamColor,
             Weight       = tank.Weight,
             X            = bounds.X,
             Y            = bounds.Y
         };
         Connection.Enqueue(spawnMessage);
     }
 }