/// <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; } }
/// <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 }
/// <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); } }
/// <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); } }
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); }
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); }
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; } }
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); }
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; } }
/// <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")); }