Esempio n. 1
0
        /// <summary>
        /// Draw as object
        /// </summary>
        /// <param name="sprite"></param>
        /// <param name="skeletonMeshRenderer"></param>
        /// <param name="mapShiftX"></param>
        /// <param name="mapShiftY"></param>
        /// <param name="centerX"></param>
        /// <param name="centerY"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="TickCount">Ticks since system startup</param>
        public virtual void Draw(SpriteBatch sprite, SkeletonMeshRenderer skeletonMeshRenderer, GameTime gameTime,
                                 int mapShiftX, int mapShiftY, int centerX, int centerY,
                                 int width, int height, float RenderObjectScaling, RenderResolution mapRenderResolution,
                                 int TickCount)
        {
            int shiftCenteredX = mapShiftX - centerX;
            int shiftCenteredY = mapShiftY - centerY;

            IDXObject drawFrame;

            if (notAnimated)
            {
                drawFrame = frame0;
            }
            else
            {
                drawFrame = GetCurrFrame(TickCount);
            }

            if (IsFrameWithinView(drawFrame, shiftCenteredX, shiftCenteredY, width, height))
            {
                drawFrame.DrawObject(sprite, skeletonMeshRenderer, gameTime,
                                     shiftCenteredX - _Position.X, shiftCenteredY - _Position.Y,
                                     flip);

                this._LastFrameDrawn = drawFrame; // set the last frame drawn
            }
            else
            {
                this._LastFrameDrawn = null;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// On simulator preview resolution changed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBox_Resolution_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (comboBox_Resolution.SelectedItem == null)
            {
                return;
            }

            RenderResolution selectedItem = (RenderResolution)(comboBox_Resolution.SelectedItem as ComboBoxItem).Tag;

            UserSettings.SimulateResolution = selectedItem;  // combo box selection. 800x600, 1024x768, 1280x720, 1920x1080
        }
Esempio n. 3
0
        /// <summary>
        /// MapSimulator Constructor
        /// </summary>
        /// <param name="mapBoard"></param>
        /// <param name="titleName"></param>
        public MapSimulator(Board mapBoard, string titleName)
        {
            this.mapBoard = mapBoard;

            this.mapRenderResolution = UserSettings.SimulateResolution;
            InitialiseWindowAndMap_WidthHeight();

            //RenderHeight += System.Windows.Forms.SystemInformation.CaptionHeight; // window title height

            //double dpi = ScreenDPIUtil.GetScreenScaleFactor();

            // set Form window height & width
            //this.Width = (int)(RenderWidth * dpi);
            //this.Height = (int)(RenderHeight * dpi);

            //Window.IsBorderless = true;
            //Window.Position = new Point(0, 0);
            Window.Title          = titleName;
            IsFixedTimeStep       = false; // dont cap fps
            IsMouseVisible        = false; // draws our own custom cursor here..
            Content.RootDirectory = "Content";

            Window.ClientSizeChanged += Window_ClientSizeChanged;

            _DxDeviceManager = new GraphicsDeviceManager(this)
            {
                SynchronizeWithVerticalRetrace = true,
                HardwareModeSwitch             = true,
                GraphicsProfile             = GraphicsProfile.HiDef,
                IsFullScreen                = false,
                PreferMultiSampling         = true,
                SupportedOrientations       = DisplayOrientation.Default,
                PreferredBackBufferWidth    = Math.Max(RenderWidth, 1),
                PreferredBackBufferHeight   = Math.Max(RenderHeight, 1),
                PreferredBackBufferFormat   = SurfaceFormat.Color /* | SurfaceFormat.Bgr32 | SurfaceFormat.Dxt1| SurfaceFormat.Dxt5*/,
                PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8,
            };
            _DxDeviceManager.DeviceCreated += graphics_DeviceCreated;
            _DxDeviceManager.ApplyChanges();
        }
        public override void Draw(SpriteBatch sprite, SkeletonMeshRenderer skeletonMeshRenderer, GameTime gameTime,
                                  int mapShiftX, int mapShiftY, int centerX, int centerY,
                                  int RenderWidth, int RenderHeight, float RenderObjectScaling, RenderResolution mapRenderResolution,
                                  int TickCount)
        {
            // control minimap render UI position via
            //  Position.X, Position.Y

            // Draw the main drame
            base.Draw(sprite, skeletonMeshRenderer, gameTime,
                      0, 0, centerX, centerY,
                      RenderWidth, RenderHeight, RenderObjectScaling, mapRenderResolution,
                      TickCount);

            int minimapPosX = (mapShiftX + (RenderWidth / 2)) / 16;
            int minimapPosY = (mapShiftY + (RenderHeight / 2)) / 16;

            item_pixelDot.Draw(sprite, skeletonMeshRenderer, gameTime,
                               -Position.X, -Position.Y, minimapPosX, minimapPosY,
                               RenderWidth, RenderHeight, RenderObjectScaling, mapRenderResolution,
                               TickCount);

            //IDXObject lastFrameDrawn = base.LastFrameDrawn;
            //int minimapMainFrameWidth = lastFrameDrawn.Width;
            //int minimapMainFrameHeight = lastFrameDrawn.Height;

            // draw minimap buttons
            foreach (MapObjects.UIObject.UIObject uiBtn in uiButtons)
            {
                BaseDXDrawableItem buttonToDraw = uiBtn.GetBaseDXDrawableItemByState();

                // Position drawn is relative to the MinimapItem
                int drawRelativeX = -(this.Position.X) - uiBtn.X; // Left to right
                int drawRelativeY = -(this.Position.Y) - uiBtn.Y; // Top to bottom

                buttonToDraw.Draw(sprite, skeletonMeshRenderer,
                                  gameTime,
                                  drawRelativeX,
                                  drawRelativeY,
                                  centerX, centerY,
                                  RenderWidth, RenderHeight, RenderObjectScaling, mapRenderResolution, TickCount);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Draw
        /// </summary>
        /// <param name="sprite"></param>
        /// <param name="skeletonMeshRenderer"></param>
        /// <param name="gameTime"></param>
        /// <param name="mapShiftX"></param>
        /// <param name="mapShiftY"></param>
        /// <param name="centerX"></param>
        /// <param name="centerY"></param>
        /// <param name="renderWidth"></param>
        /// <param name="renderHeight"></param>
        /// <param name="RenderObjectScaling"></param>
        /// <param name="mapRenderResolution"></param>
        /// <param name="TickCount"></param>
        public override void Draw(SpriteBatch sprite, SkeletonMeshRenderer skeletonMeshRenderer, GameTime gameTime,
                                  int mapShiftX, int mapShiftY, int centerX, int centerY,
                                  ReflectionDrawableBoundary drawReflectionInfo,
                                  int renderWidth, int renderHeight, float RenderObjectScaling, RenderResolution mapRenderResolution,
                                  int TickCount)
        {
            Point MousePos = Mouse.GetState().Position; // relative to the window already

            if ((mouseCursorItemStates & (int)MouseCursorItemStates.LeftPress) != (int)MouseCursorItemStates.LeftPress &&
                (mouseCursorItemStates & (int)MouseCursorItemStates.RightPress) != (int)MouseCursorItemStates.RightPress)      // default
            {
                base.Draw(sprite, skeletonMeshRenderer, gameTime,
                          -MousePos.X, -MousePos.Y, centerX, centerY,
                          drawReflectionInfo,
                          renderWidth, renderHeight, RenderObjectScaling, mapRenderResolution,
                          TickCount);
            }
            else // if left or right press is active, draw pressed state
            {
                cursorItemPressedState.Draw(sprite, skeletonMeshRenderer, gameTime,
                                            -MousePos.X, -MousePos.Y, centerX, centerY,
                                            drawReflectionInfo,
                                            renderWidth, renderHeight, RenderObjectScaling, mapRenderResolution,
                                            TickCount);
            }
        }
Esempio n. 6
0
 public override void Draw(SpriteBatch sprite, SkeletonMeshRenderer skeletonMeshRenderer, GameTime gameTime,
                           int mapShiftX, int mapShiftY, int centerX, int centerY,
                           int renderWidth, int renderHeight, float RenderObjectScaling, RenderResolution mapRenderResolution,
                           int TickCount)
 {
     base.Draw(sprite, skeletonMeshRenderer, gameTime,
               mapShiftX, mapShiftY, centerX, centerY,
               renderWidth, renderHeight, RenderObjectScaling, mapRenderResolution,
               TickCount);
 }
Esempio n. 7
0
        public override void Draw(SpriteBatch sprite, SkeletonMeshRenderer skeletonMeshRenderer, GameTime gameTime,
                                  int mapShiftX, int mapShiftY, int centerX, int centerY,
                                  int RenderWidth, int RenderHeight, float RenderObjectScaling, RenderResolution mapRenderResolution,
                                  int TickCount)
        {
            // control minimap render UI position via
            //  Position.X, Position.Y

            // Draw the main drame
            base.Draw(sprite, skeletonMeshRenderer, gameTime,
                      0, 0, centerX, centerY,
                      RenderWidth, RenderHeight, RenderObjectScaling, mapRenderResolution,
                      TickCount);

            int minimapPosX = (mapShiftX + (RenderWidth / 2)) / 16;
            int minimapPosY = (mapShiftY + (RenderHeight / 2)) / 16;

            item_pixelDot.Draw(sprite, skeletonMeshRenderer, gameTime,
                               -Position.X, -Position.Y, minimapPosX, minimapPosY,
                               RenderWidth, RenderHeight, RenderObjectScaling, mapRenderResolution,
                               TickCount);
        }
Esempio n. 8
0
        public override void Draw(SpriteBatch sprite, SkeletonMeshRenderer skeletonMeshRenderer, GameTime gameTime,
                                  int mapShiftX, int mapShiftY, int centerX, int centerY,
                                  int renderWidth, int renderHeight, float RenderObjectScaling, RenderResolution mapRenderResolution,
                                  int TickCount)
        {
            if (((int)mapRenderResolution & screenMode) != screenMode || disabledBackground)  // dont draw if the screenMode isnt for this
            {
                return;
            }

            IDXObject drawFrame = GetCurrFrame(TickCount);
            int       X         = CalculateBackgroundPosX(drawFrame, mapShiftX, centerX, renderWidth, RenderObjectScaling);
            int       Y         = CalculateBackgroundPosY(drawFrame, mapShiftY, centerY, renderHeight, RenderObjectScaling);
            int       _cx       = cx == 0 ? drawFrame.Width : cx;
            int       _cy       = cy == 0 ? drawFrame.Height : cy;

            switch (type)
            {
            case BackgroundType.Regular:
                Draw2D(sprite, skeletonMeshRenderer, gameTime, X, Y, drawFrame);
                break;

            case BackgroundType.HorizontalTiling:
                DrawHorizontalCopies(sprite, skeletonMeshRenderer, gameTime, renderWidth, X, Y, _cx, drawFrame);
                break;

            case BackgroundType.VerticalTiling:
                DrawVerticalCopies(sprite, skeletonMeshRenderer, gameTime, renderHeight, X, Y, _cy, drawFrame);
                break;

            case BackgroundType.HVTiling:
                DrawHVCopies(sprite, skeletonMeshRenderer, gameTime, renderWidth, renderHeight, X, Y, _cx, _cy, drawFrame);
                break;

            case BackgroundType.HorizontalMoving:
                DrawHorizontalCopies(sprite, skeletonMeshRenderer, gameTime, renderWidth, X + (int)bgMoveShiftX, Y, _cx, drawFrame);
                IncreaseShiftX(_cx, TickCount);
                break;

            case BackgroundType.VerticalMoving:
                DrawVerticalCopies(sprite, skeletonMeshRenderer, gameTime, renderHeight, X, Y + (int)bgMoveShiftY, _cy, drawFrame);
                IncreaseShiftY(_cy, TickCount);
                break;

            case BackgroundType.HorizontalMovingHVTiling:
                DrawHVCopies(sprite, skeletonMeshRenderer, gameTime, renderWidth, renderHeight, X + (int)bgMoveShiftX, Y, _cx, _cy, drawFrame);
                IncreaseShiftX(_cx, TickCount);
                break;

            case BackgroundType.VerticalMovingHVTiling:
                DrawHVCopies(sprite, skeletonMeshRenderer, gameTime, renderWidth, renderHeight, X, Y + (int)bgMoveShiftY, _cx, _cy, drawFrame);
                IncreaseShiftX(_cy, TickCount);
                break;

            default:
                break;
            }
        }
Esempio n. 9
0
        private void InitialiseWindowAndMap_WidthHeight()
        {
            this.RenderObjectScaling = 1.0f;
            switch (this.mapRenderResolution)
            {
            case RenderResolution.Res_1024x768:      // 1024x768
                Height = 768;
                Width  = 1024;
                break;

            case RenderResolution.Res_1280x720:     // 1280x720
                Height = 720;
                Width  = 1280;
                break;

            case RenderResolution.Res_1366x768:      // 1366x768
                Height = 768;
                Width  = 1366;
                break;


            case RenderResolution.Res_1920x1080:     // 1920x1080
                Height = 1080;
                Width  = 1920;
                break;

            case RenderResolution.Res_1920x1080_120PercScaled:     // 1920x1080
                Height = 1080;
                Width  = 1920;
                RenderObjectScaling = 1.2f;
                break;

            case RenderResolution.Res_1920x1080_150PercScaled:     // 1920x1080
                Height = 1080;
                Width  = 1920;
                RenderObjectScaling       = 1.5f;
                this.mapRenderResolution |= RenderResolution.Res_1366x768;     // 1920x1080 is just 1366x768 with 150% scale.
                break;


            case RenderResolution.Res_1920x1200:     // 1920x1200
                Height = 1200;
                Width  = 1920;
                break;

            case RenderResolution.Res_1920x1200_120PercScaled:     // 1920x1200
                Height = 1200;
                Width  = 1920;
                RenderObjectScaling = 1.2f;
                break;

            case RenderResolution.Res_1920x1200_150PercScaled:     // 1920x1200
                Height = 1200;
                Width  = 1920;
                RenderObjectScaling = 1.5f;
                break;

            case RenderResolution.Res_All:
            case RenderResolution.Res_800x600:     // 800x600
            default:
                Height = 600;
                Width  = 800;
                break;
            }
            this.UserScreenScaleFactor = (float)ScreenDPIUtil.GetScreenScaleFactor();

            this.RenderHeight        = (int)(Height * UserScreenScaleFactor);
            this.RenderWidth         = (int)(Width * UserScreenScaleFactor);
            this.RenderObjectScaling = (RenderObjectScaling * UserScreenScaleFactor);

            this.matrixScale = Matrix.CreateScale(RenderObjectScaling);
        }
Esempio n. 10
0
        private void InitialiseMapWidthHeight()
        {
            RenderObjectScaling = 1.0f;
            switch (this.mapRenderResolution)
            {
            case RenderResolution.Res_1024x768:      // 1024x768
                RenderHeight = 768;
                RenderWidth  = 1024;
                break;

            case RenderResolution.Res_1280x720:     // 1280x720
                RenderHeight = 720;
                RenderWidth  = 1280;
                break;

            case RenderResolution.Res_1366x768:      // 1366x768
                RenderHeight = 768;
                RenderWidth  = 1366;
                break;


            case RenderResolution.Res_1920x1080:     // 1920x1080
                RenderHeight = 1080;
                RenderWidth  = 1920;
                break;

            case RenderResolution.Res_1920x1080_120PercScaled:     // 1920x1080
                RenderHeight        = 1080;
                RenderWidth         = 1920;
                RenderObjectScaling = 1.2f;
                break;

            case RenderResolution.Res_1920x1080_150PercScaled:     // 1920x1080
                RenderHeight              = 1080;
                RenderWidth               = 1920;
                RenderObjectScaling       = 1.5f;
                this.mapRenderResolution |= RenderResolution.Res_1366x768;     // 1920x1080 is just 1366x768 with 150% scale.
                break;


            case RenderResolution.Res_1920x1200:     // 1920x1200
                RenderHeight = 1200;
                RenderWidth  = 1920;
                break;

            case RenderResolution.Res_1920x1200_120PercScaled:     // 1920x1200
                RenderHeight        = 1200;
                RenderWidth         = 1920;
                RenderObjectScaling = 1.2f;
                break;

            case RenderResolution.Res_1920x1200_150PercScaled:     // 1920x1200
                RenderHeight        = 1200;
                RenderWidth         = 1920;
                RenderObjectScaling = 1.5f;
                break;

            case RenderResolution.Res_All:
            case RenderResolution.Res_800x600:     // 800x600
            default:
                RenderHeight = 600;
                RenderWidth  = 800;
                break;
            }
        }
Esempio n. 11
0
 /// <summary>
 /// Converts RenderResolution name to human readable text
 /// </summary>
 /// <param name="rr"></param>
 /// <returns></returns>
 public static string ToReadableString(this RenderResolution rr)
 {
     return(rr.ToString().Replace("Res_", "").Replace("_", " ").Replace("PercScaled", "% scale"));
 }