public Zone HoveredZone() { if (HoveredControl != null) { return(null); } return(ProvincePicker.ClosestZone( (Vector3D) new Picker(Context, Context.UiManager.MousePosition).GroundIntersection)); }
protected override void OnMouseClicked(Vector2I position, int button) { if (button == 0) { Province province = ProvincePicker.ClosestProvince( (Vector3D) new Picker(Context, Context.UiManager.MousePosition).GroundIntersection); if (province is LandProvince //&& (province as LandProvince).Owner == Context.Realm ) { _provinceDetailPanel.ShowProvince(province as LandProvince); } } }
public override void Initialize() { Texture2D minimapTexture = new Texture2D(Context.DirectX.Device, new Texture2DDescription { Width = Size.X, Height = Size.Y, Format = Format.R8G8B8A8_UNorm_SRgb, BindFlags = BindFlags.ShaderResource, ArraySize = 1, MipLevels = 1, SampleDescription = new SampleDescription(1, 0) }); int rowPitch = 4 * minimapTexture.Description.Width; int byteCount = rowPitch * minimapTexture.Description.Height; var byteArray = new byte[byteCount]; for (int i = 0; i < minimapTexture.Description.Width; i++) { for (int j = 0; j < minimapTexture.Description.Height; j++) { if (ProvincePicker.ClosestProvince(new Vector3D(( (float)i * Context.World.Size.X) / Size.X, 0, ((float)(Size.Y - j) * Context.World.Size.Y) / Size.Y)) is LandProvince) { byteArray[4 * (j * minimapTexture.Description.Width + i)] = 106; byteArray[4 * (j * minimapTexture.Description.Width + i) + 1] = 98; byteArray[4 * (j * minimapTexture.Description.Width + i) + 2] = 85; byteArray[4 * (j * minimapTexture.Description.Width + i) + 3] = 255; } else { byteArray[4 * (j * minimapTexture.Description.Width + i)] = 197; byteArray[4 * (j * minimapTexture.Description.Width + i) + 1] = 183; byteArray[4 * (j * minimapTexture.Description.Width + i) + 2] = 164; byteArray[4 * (j * minimapTexture.Description.Width + i) + 3] = 255; } } } DataStream dataStream = new DataStream(byteCount, true, true); dataStream.Write(byteArray, 0, byteCount); DataBox data = new DataBox(dataStream.DataPointer, rowPitch, byteCount); Context.DirectX.DeviceContext.UpdateSubresource(data, minimapTexture); _minimapTexture = new ShaderResourceView(Context.DirectX.Device, minimapTexture); _mapTexture = new TexturedRectangle(Context, _minimapTexture, Size); }
public override void OnMouseReleasedInBounds() { Vector2I relativePosition = Context.UiManager.MousePosition - Position; Vector3 screenSize = new Vector3((float)_ratioX * Size.X / _screenX, 0, (float)_ratioY * Size.Y / _screenY) * (2 / Scaling); Vector2 offset2 = new Vector2(relativePosition.X * screenSize.X / Size.X, relativePosition.Y * screenSize.Z / Size.Y); Vector3D pickingPosition = new Vector3D((_camera.CurrentPosition.X - _ratioX) / Scaling + offset2.X, 0, (_camera.CurrentPosition.Z + _ratioY) / Scaling - offset2.Y); Province province = ProvincePicker.ClosestProvince(pickingPosition); if (province is LandProvince) { _changeProvinceCallBack(province as LandProvince); } }