Beispiel #1
0
        public Cursor(CursorResource res)
        {
            HotSpotX = res.HotSpotX;
            HotSpotY = res.HotSpotY;

            Texture = WWTexture.FromCursorResource(res);
        }
Beispiel #2
0
        /**
         * {@inheritDoc} Overridden to set the expiration time of the placemark's icon based on the HTTP headers of the
         * linked resource.
         */
        protected WWTexture initializeTexture(String address)
        {
            WWTexture texture = super.initializeTexture(address);

            if (texture != null)
            {
                // Query the KMLRoot for the expiration time.
                long expiration = this.parent.getRoot().getExpiration(address);

                // Set the Icon's expiration. This has no effect if the refreshMode is not onExpire.
                String       mode      = this.isHighlighted() ? KMLConstants.HIGHLIGHT : KMLConstants.NORMAL;
                KMLIconStyle iconStyle = (KMLIconStyle)this.parent.getSubStyle(new KMLIconStyle(null), mode);
                KMLIcon      icon      = iconStyle.getIcon();
                if (icon != null)
                {
                    icon.setExpirationTime(expiration);
                }

                if (this.isHighlighted())
                {
                    this.highlightIconRetrievalTime = System.currentTimeMillis();
                }
                else
                {
                    this.iconRetrievalTime = System.currentTimeMillis();
                }
            }

            return(texture);
        }
        public FramebufferTexture(WWTexture imageSource, Sector sector, List <LatLon> corners)
        {
            if (imageSource == null)
            {
                String message = Logging.getMessage("nullValue.ImageSource");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            if (sector == null)
            {
                String message = Logging.getMessage("nullValue.SectorIsNull");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            if (corners == null)
            {
                String message = Logging.getMessage("nullValue.LocationsListIsNull");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            this.sourceTexture = imageSource;
            this.sector        = sector;
            this.corners       = corners;

            this.tessellationDensity = DEFAULT_TESSELLATION_DENSITY;
        }
Beispiel #4
0
        internal override void Draw()
        {
            base.Draw();

            WWTexture background = null;

            if (isPressed)
            {
                background = backgroundClicked;
            }
            else
            {
                background = backgroundNotClicked;
            }

            if (background == null)
            {
                return;
            }

            Vector2 screenPos = ScreenPosition;

            Color col = Color.FromNonPremultiplied(new Vector4(Vector3.One, CompositeAlpha));

            background.RenderOnScreen(screenPos.X, screenPos.Y, Width, Height, col);

            colText.Render(screenPos.X, screenPos.Y, (float)Width, (float)Height, font, TextAlignHorizontal.Center, col, Color.Yellow);
        }
Beispiel #5
0
        public FBOTexture(WWTexture imageSource, Sector sector, List <LatLon> corners)
        {
            super(imageSource, sector, corners);

            this.width  = 1024;
            this.height = 1024;
        }
Beispiel #6
0
        internal IngameMenuWindow(Race setRace)
        {
            curRace = setRace;
            LevelGameScreen.Game.GamePaused = true;

            BackgroundColor = new Microsoft.Xna.Framework.Color(0.3f, 0.0f, 0.0f, 0.5f);

            //Width = background.Width;
            //Height = background.Height;

            UIResource res = WarFile.GetUIResource(setRace == Race.Humans ? 368 : 369);

            background = new UIImage(WWTexture.FromImageResource(WarFile.GetImageResource(res.BackgroundImageResourceIndex)));
            background.InitWithUIResource(res);
            AddComponent(background);

            background.X = 120;
            background.Y = 20;

            continueButton = (UIButton)background.Components [6];
            continueButton.OnMouseUpInside += closeButton_OnMouseUpInside;

            quitButton = (UIButton)background.Components [5];
            quitButton.OnMouseUpInside += quitButton_OnMouseUpInside;

            MouseCursor.State = MouseCursorState.Pointer;
        }
Beispiel #7
0
        /// <summary>
        /// Create tile
        /// </summary>
        internal MapTile(byte[] data)
        {
            if (data.Length != 256 * 4)
            {
                throw new InvalidDataException("Wrong length of tile data array, must be 1024 bytes.");
            }

            averageColor = Color.Black;

            texture = WWTexture.FromRawData(16, 16, data);

            int avgR = 0;
            int avgG = 0;
            int avgB = 0;

            // Calc average color
            for (int i = 0; i < 256; i += 4)
            {
                avgR += data[i + 0];
                avgG += data[i + 1];
                avgB += data[i + 2];
            }

            averageColor.R = (byte)(avgR / 64);
            averageColor.G = (byte)(avgG / 64);
            averageColor.B = (byte)(avgB / 64);
            averageColor.A = 255;
        } // Tile(data)
Beispiel #8
0
        /// <summary>
        /// Render the Entity.
        /// </summary>
        /// <param name="offsetX">Offset x.</param>
        /// <param name="offsetY">Offset y.</param>
        /// <param name="tileOffsetX">Tile offset x.</param>
        /// <param name="tileOffsetY">Tile offset y.</param>
        /// <param name="TileWidth">Tile width.</param>
        /// <param name="TileHeight">Tile height.</param>
        public void Render(float offsetX, float offsetY, float tileOffsetX, float tileOffsetY)
        {
            if (sprite == null || CurrentMap == null)
            {
                return;
            }

            bool shouldFlipX = sprite.ShouldFlipX;

            RectangleF rect = GetTileRectangle(offsetX, offsetY, tileOffsetX, tileOffsetY);

            rect.Width  = sprite.MaxWidth;
            rect.Height = sprite.MaxHeight;

            RectangleF tileRectangle = new RectangleF(0, 0, TileSizeX * CurrentMap.TileWidth, TileSizeY * CurrentMap.TileHeight);

            rect.X -= (rect.Width * 0.5f - tileRectangle.Width * 0.5f);
            rect.Y -= (rect.Height * 0.5f - tileRectangle.Height * 0.5f);

            if (sprite.CurrentFrame != null)
            {
                sprite.CurrentFrame.texture.RenderOnScreen(rect, shouldFlipX, false);
            }

            if (DebugOptions.ShowUnitFrames)
            {
                WWTexture.RenderRectangle(rect, Color.Blue);
            }
        }
Beispiel #9
0
        private void AutoSetButtonImage(int releaseButtonResourceIndex, int pressedButtonResourceIndex)
        {
            backgroundNotClicked = WWTexture.FromImageResource(WarFile.GetImageResource(releaseButtonResourceIndex));
            backgroundClicked    = WWTexture.FromImageResource(WarFile.GetImageResource(pressedButtonResourceIndex));

            Width  = (int)(backgroundNotClicked.Width);
            Height = (int)(backgroundNotClicked.Height);
        }
Beispiel #10
0
        } // Tile(data)

        /// <summary>
        /// Render
        /// </summary>
        internal void Render(float x, float y, float scale)
        {
            texture.RenderOnScreen(x * scale, y * scale, 16.0f * scale, 16.0f * scale);
            if (DebugOptions.ShowTiles)
            {
                WWTexture.RenderRectangle(new RectangleF(x * scale, y * scale, 16.0f * scale, 16.0f * scale), Color.Red);
            }
        } // Render(x, y)
Beispiel #11
0
        internal UIImage(WWTexture setImage)
        {
            image = setImage;

            if (image != null)
            {
                Width  = image.Width;
                Height = image.Height;
            }
        }
Beispiel #12
0
        public override void Dispose()
        {
            if (minimapTex != null)
            {
                minimapTex.Dispose();
                minimapTex = null;
            }

            base.Dispose();
        }
Beispiel #13
0
        internal override void Draw()
        {
            base.Draw();

            if (CurrentMap != null)
            {
                CurrentMap.Render(this.X, this.Y, this.Width, this.Height, mapOffsetX, mapOffsetY);
            }

            // Render selection rectangle
            if (InputHandler.IsSpanningRectangle)
            {
                WWTexture.RenderRectangle(InputHandler.SelectionRectangle, new Color(0, 255, 0), 3);
            }
        }
Beispiel #14
0
        internal override void InitUI()
        {
            base.InitUI();

            MouseCursor.State = MouseCursorState.None;

            UIWindow wnd = new UIWindow();

            img = new UIImage(WWTexture.FromImageResource("Background 'Blizzard'"));
            wnd.AddComponent(img);

            elapsedTime = 0;

            MainGame.SoundManager.PlaySound(472);
        }
Beispiel #15
0
        internal override void InitUI()
        {
            elapsedTime = 0;

            MouseCursor.State = MouseCursorState.Pointer;

            backgroundWindow = new MenuBackgroundWindow();
            mainMenuWindow   = new MainMenuWindow();

            textWindow = new UIWindow();
            UIImage img = new UIImage(WWTexture.FromImageResource("Text 'WarCraft'"));

            textWindow.AddComponent(img);
            textWindow.Height = img.Height;
        }
Beispiel #16
0
        internal override void Draw()
        {
            base.Draw();

            if (Sprite == null)
            {
                return;
            }

            Vector2 screenPos = ScreenPosition;

            WWTexture image = Sprite.CurrentFrameTexture;

            if (image != null)
            {
                image.RenderOnScreen(screenPos.X, screenPos.Y, Width, Height);
            }
        }
        internal IngameQuitMenuWindow(Race setRace)
        {
            UIResource res = WarFile.GetUIResource(setRace == Race.Humans ? 391 : 392);

            background = new UIImage(WWTexture.FromImageResource(WarFile.GetImageResource(res.BackgroundImageResourceIndex)));
            background.InitWithUIResource(res);
            AddComponent(background);

            background.CenterOnScreen();

            cancelButton = (UIButton)background.Components [3];
            cancelButton.OnMouseUpInside += cancelButton_OnMouseUpInside;

            menuButton = (UIButton)background.Components [2];
            menuButton.OnMouseUpInside += menuButton_OnMouseUpInside;

            quitButton = (UIButton)background.Components [1];
            quitButton.OnMouseUpInside += quitButton_OnMouseUpInside;

            MouseCursor.State = MouseCursorState.Pointer;
        }
Beispiel #18
0
        private SpriteFrameData(SpriteResource resource)
        {
            MaxWidth  = resource.MaxWidth;
            MaxHeight = resource.MaxHeight;

            Frames = new SpriteFrame[resource.FrameCount];

            for (int i = 0; i < resource.FrameCount; i++)
            {
                Performance.Push("SetData");
                WWTexture tex = WWTexture.FromRawData(resource.MaxWidth, resource.MaxHeight, resource.Frames[i].image_data);
                Performance.Pop();

                Frames[i]         = new SpriteFrame();
                Frames[i].OffsetX = resource.Frames [i].disp_x;
                Frames[i].OffsetY = resource.Frames [i].disp_y;
                Frames[i].Width   = resource.Frames [i].width;
                Frames[i].Height  = resource.Frames [i].height;
                Performance.Push("FromDXTexture");
                Frames[i].texture = tex;
                Performance.Pop();
            }
        }
Beispiel #19
0
        internal static UIImage FromImageResource(ImageResource resource)
        {
            UIImage res = new UIImage(WWTexture.FromImageResource(resource));

            return(res);
        }
Beispiel #20
0
        /// <summary>
        /// Render
        /// </summary>
        internal void Render(int setX, int setY, int setWidth, int setHeight, float tileOffsetX, float tileOffsetY)
        {
            // Render tiles
            if (tileOffsetX < 0.0f)
            {
                tileOffsetX = 0.0f;
            }
            if (tileOffsetY < 0.0f)
            {
                tileOffsetY = 0.0f;
            }

            int tilesToDrawX = (setWidth / TileWidth) + 1;
            int tilesToDrawY = (setHeight / TileHeight) + 1;

            int startTileX = ((int)tileOffsetX / TileWidth);
            int startTileY = ((int)tileOffsetY / TileHeight);

            if (tilesToDrawX + startTileX > MapWidth)
            {
                tilesToDrawX = MapWidth - startTileX;
            }
            if (tilesToDrawY + startTileY > MapHeight)
            {
                tilesToDrawY = MapHeight - startTileY;
            }

            //float innerTileOffsetX = (float)((int)(tileOffsetX * 100) % (TileWidth * 100)) / 100.0f;
            //float innerTileOffsetY = (float)((int)(tileOffsetY * 100) % (TileHeight * 100)) / 100.0f;
            int innerTileOffsetX = ((int)tileOffsetX % TileWidth);
            int innerTileOffsetY = ((int)tileOffsetY % TileHeight);

            //int count = 170;
            Performance.Push("Map rendering - Tiles");
            RenderManager.StartBatch();
            for (int y = 0; y < tilesToDrawY; y++)
            {
                for (int x = 0; x < tilesToDrawX; x++)
                {
                    int index = levelVisual.visualData[(x + startTileX) + ((y + startTileY) * MapWidth)];

                    tileSet.DrawTile(index, setX + x * TileWidth - innerTileOffsetX, setY + y * TileHeight - innerTileOffsetY, 1.0f);

                    if (DebugOptions.ShowBlockedTiles)
                    {
                        short passableValue = levelPassable.passableData[x + startTileX, y + startTileY];
                        bool  isBlocked     = passableValue > 0;
                        if (isBlocked)
                        {
                            Color col = new Color(0.0f, 1.0f, 0.0f, 0.5f);
                            if (passableValue == 128)
                            {
                                col = new Color(0.2f, 0.0f, 0.8f, 0.5f);
                            }

                            WWTexture.SingleWhite.RenderOnScreen(setX + x * TileWidth - innerTileOffsetX, setY + y * TileHeight - innerTileOffsetY,
                                                                 TileWidth, TileHeight, col);
                        }
                    }
                }
            }
            RenderManager.EndBatch();
            Performance.Pop();

            Performance.Push("Map rendering - Roads");
            // Render Roads
            for (int i = 0; i < Roads.Count; i++)
            {
                bool isVisible = true;

                Construct road = Roads[i];

                if (mapDiscoverState[road.X + road.Y * MapWidth] == MapDiscover.Unknown)
                {
                    isVisible = false;
                }

                int x = road.X - startTileX;
                int y = road.Y - startTileY;
                if (isVisible)
                {
                    tileSet.DrawRoadTile(road.Config, setX + x * TileWidth - innerTileOffsetX, setY + y * TileHeight - innerTileOffsetY, 1.0f);
                }
            }
            Performance.Pop();

            Performance.Push("Map rendering - Entities");
            // Render entities
            for (int i = 0; i < entities.Count; i++)
            {
                bool isVisible = true;

                Entity ent = entities[i];

                if (isVisible)
                {
                    ent.Render(setX, setY, tileOffsetX, tileOffsetY);
                }
            }
            Performance.Pop();

            Performance.Push("Map rendering - Selected Entities");
            // Render selected entities
            for (int i = 0; i < selectedEntities.Count; i++)
            {
                Entity selEnt = selectedEntities[i];
                Color  selCol = new Color(0, 255, 0);
                if (HumanPlayer.IsNeutralTowards(selEnt.Owner))
                {
                    selCol = new Color(255, 255, 0);
                }
                else if (HumanPlayer.IsHostileTowards(selEnt.Owner))
                {
                    selCol = new Color(255, 0, 0);
                }

                WWTexture.RenderRectangle(selEnt.GetTileRectangle(setX, setY, tileOffsetX, tileOffsetY), selCol, 3);
            }
            Performance.Pop();

            Performance.Push("Map rendering - Undiscovered places");
            RenderManager.StartBatch(BlendState.AlphaBlend);
            // Overlay undiscovered places + fog of war
            for (int y = 0; y < tilesToDrawY; y++)
            {
                for (int x = 0; x < tilesToDrawX; x++)
                {
                    int pos = (x + startTileX) + ((y + startTileY) * MapWidth);

                    if (mapDiscoverState[pos] == MapDiscover.Fog)
                    {
                        WWTexture.SingleWhite.RenderOnScreen(setX + x * TileWidth - innerTileOffsetX, setY + y * TileHeight - innerTileOffsetY,
                                                             TileWidth, TileHeight, new Color(0.0f, 0.0f, 0.0f, 0.5f));
                    }
                    else if (mapDiscoverState[pos] == MapDiscover.Unknown)
                    {
                        WWTexture.SingleWhite.RenderOnScreen(setX + x * TileWidth - innerTileOffsetX, setY + y * TileHeight - innerTileOffsetY,
                                                             TileWidth, TileHeight, new Color(0.0f, 0.0f, 0.0f, 1.0f));
                    }
                }
            }
            RenderManager.EndBatch();
            Performance.Pop();
        }
Beispiel #21
0
 internal MenuBackgroundWindow()
 {
     backgroundImage = WWTexture.FromImageResource("Mainmenu Background");
 }
Beispiel #22
0
 internal void Init()
 {
     minimapTex = WWTexture.FromRawData(Width, Height, null);
 }