コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Utp"/> class.
        /// </summary>
        /// <param name="parent">Parent newtwork controller</param>
        /// <param name="target">Target networkcontroller</param>
        public Utp(IActiveNetworkController parent, INetworkController target)
        {
            this.IsActive = false;
            this.Parent   = parent;
            this.Target   = target;
            this.Cables   = new List <ICable>
            {
                new Cable(target)
                {
                    X = this.Parent.X, Y = this.Parent.Y
                }
            };
            this.Creator = this.Parent;

            if (this.EnemyUTP() != null)
            {
                this.Mode            = UtpModes.MoveToBattle;
                this.EnemyUTP().Mode = UtpModes.MoveToBattle;
            }
            else
            {
                this.Mode = UtpModes.Attack;
            }

            this.Disconnect = false;

            this.HeadArrive += this.UTP_HeadArrive;
        }
コード例 #2
0
        /// <inheritdoc/>
        public void InteractionStart(INetworkController networkController)
        {
            IActiveNetworkController aNCTemp = networkController as IActiveNetworkController;

            if (networkController.IsEnable && aNCTemp != null && networkController.Owner == this.LocalPlayer)
            {
                this.LocalPlayer.SelectController(aNCTemp);
            }
        }
コード例 #3
0
 /// <inheritdoc/>
 public void ConnectTwoServer(IActiveNetworkController source, INetworkController target)
 {
     if (this.IsEnableConnection(source, target))
     {
         source.Attack(target);
     }
     else
     {
         this.Messages.Add(new GameMessage("Firewall blocked connection"));
     }
 }
コード例 #4
0
        private bool IsEnableConnection(IActiveNetworkController source, INetworkController target)
        {
            List <IFireWall> firewalls = this.Firewalls();

            foreach (var item in firewalls)
            {
                if (this.FireWallDetection(source, target, item))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #5
0
        private bool FireWallDetection(IActiveNetworkController source, INetworkController target, IFireWall fireWall)
        {
            Rectangle r = new Rectangle((int)(fireWall.X - (this.TileSize / 2)), (int)(fireWall.Y - (this.TileSize / 2)), this.TileSize, this.TileSize);

            Vector sourcev = new Vector(source.X, source.Y);
            Vector targetv = new Vector(target.X, target.Y);

            Vector firewallv1 = new Vector(r.X, r.Y);
            Vector firewallv2 = new Vector(r.X + r.Width, r.Y + r.Height);
            Vector firewallv3 = new Vector(r.X + r.Width, r.Y);
            Vector firewallv4 = new Vector(r.X, r.Y + r.Height);
            Vector outv       = new Vector();
            var    hit1       = LineSegment.LineSegementsIntersect(sourcev, targetv, firewallv1, firewallv2, out outv);
            var    hit2       = LineSegment.LineSegementsIntersect(sourcev, targetv, firewallv3, firewallv4, out outv);

            return(hit1 || hit2);
        }
コード例 #6
0
 /// <inheritdoc/>
 public void SelectController(IActiveNetworkController controller)
 {
     this.SelectedController = controller;
 }