示例#1
0
    private void Awake()
    {
        //Human driver with jet engine bike
        IEngine jetEngine   = new JetEngine();
        IDriver humanDriver = new HumanDriver();

        m_PlayerBike.SetEngine(jetEngine);
        m_PlayerBike.SetDriver(humanDriver);
        m_PlayerBike.StartEngine();

        //Android driver with nitro engine
        IEngine nitroEngine   = new NitroEngine();
        IDriver androidDriver = new AndroidDriver();

        m_AndroidBike.SetEngine(nitroEngine);
        m_AndroidBike.SetDriver(androidDriver);
        m_AndroidBike.StartEngine();

        //Fish driver with wood engine
        IEngine woodEngine = new WoodEngine();
        IDriver fishDriver = new FishDriver();

        m_FishBike.SetEngine(woodEngine);
        m_FishBike.SetDriver(fishDriver);
        m_FishBike.StartEngine();

        //Mirror driver with coal engine
        IEngine coalEngine   = new CoalEngine();
        IDriver mirrorDriver = new MirrorDriver();

        m_MirrorBike.SetEngine(coalEngine);
        m_MirrorBike.SetDriver(mirrorDriver);
        m_MirrorBike.StartEngine();
    }
示例#2
0
        /// <summary>
        /// Raises the <see cref="E:RequestScreenshotMessageReceived"/> event.
        /// </summary>
        /// <param name="e">The <see cref="Network.MessageEventArgs&lt;Network.Messages.LiveControl.RequestScreenshotMessage&gt;"/> instance containing the event data.</param>
        private void OnRequestScreenshotMessageReceived(MessageEventArgs <RequestScreenshotMessage> e)
        {
            if (!DoesMirrorDriverExist())
            {
                var dialogResult =
                    MessageBox.Show(
                        "You either don't have the DemoForge mirror driver installed, or you haven't restarted your computer after the installation of the mirror driver. Without a mirror driver, this application will not work. The mirror driver is responsible for notifying the application of any changed screen regions and passing the application bitmaps of those changed screen regions. Press 'Yes' to directly download the driver (you'll still have to install it after). You can visit the homepage if you'd like too: http://www.demoforge.com/dfmirage.htm",
                        "Mirror Driver Not Installed", MessageBoxButtons.YesNo, MessageBoxIcon.Error);

                if (dialogResult == DialogResult.Yes)
                {
                    Process.Start("http://www.demoforge.com/tightvnc/dfmirage-setup-2.0.301.exe");
                }

                MessageBox.Show("The application will now exit.", "Missing Required Component", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                Application.Exit();
            }

            if (MirrorDriver.State != DesktopMirror.MirrorState.Running)
            {
                // Most likely first time
                // Start the mirror driver
                MirrorDriver.Load();

                MirrorDriver.Connect();
                MirrorDriver.Start();

                Bitmap screenshot = MirrorDriver.GetScreen();
                var    stream     = new MemoryStream();
                screenshot.Save(stream, ImageFormat.Png);

                SendFragmentedBitmap(stream.ToArray(), Screen.PrimaryScreen.Bounds);
            }
            else if (MirrorDriver.State == DesktopMirror.MirrorState.Running)
            {
                Trace.WriteLine(String.Format("Received RequestScreenshotMessage."));

                // Send them the list of queued up changes
                var regions = (List <Rectangle>)GetOptimizedRectangleRegions();

                Bitmap screenshot = MirrorDriver.GetScreen();

                if (regions.Count == 0)
                {
                    Network.SendMessage(new ResponseEmptyScreenshotMessage(), NetDeliveryMethod.ReliableOrdered, 0);
                    return;
                }

                for (int i = 0; i < regions.Count; i++)
                {
                    if (regions[i].IsEmpty)
                    {
                        continue;
                    }

                    Bitmap regionShot = null;

                    try
                    {
                        regionShot = screenshot.Clone(regions[i], PixelFormat.Format16bppRgb565);
                    }
                    catch (OutOfMemoryException ex)
                    {
                        Trace.WriteLine("OutOfMemoryException");
                    }

                    var stream = new MemoryStream();
                    regionShot.Save(stream, ImageFormat.Png);

                    SendFragmentedBitmap(stream.ToArray(), regions[i]);
                }
            }
        }
示例#3
0
 public bool DoesMirrorDriverExist()
 {
     return(MirrorDriver.DriverExists());
 }