コード例 #1
0
 public Zone HoveredZone()
 {
     if (HoveredControl != null)
     {
         return(null);
     }
     return(ProvincePicker.ClosestZone(
                (Vector3D) new Picker(Context, Context.UiManager.MousePosition).GroundIntersection));
 }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
ファイル: Minimap.cs プロジェクト: ndech/Alpha
        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);
        }
コード例 #4
0
        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);
            }
        }