Exemple #1
0
        public Texture2D ApplyCircleMask(Texture2D originalTexture, int radius, Vector2 aCenter)
        {
            Texture2D textureCopy = TextureUtils.Copy(originalTexture.GraphicsDevice, originalTexture);

            Color[] aColors = new Color[textureCopy.Height * textureCopy.Width];
            textureCopy.GetData(aColors);

            var i = 0;

            for (int y = 0; y < textureCopy.Height; y++)
            {
                for (int x = 0; x < textureCopy.Width; x++)
                {
                    Vector2 aDistance = new Vector2(x - aCenter.X, y - aCenter.Y);

                    if (aDistance.LengthSquared() > radius * radius)
                    {
                        aColors[i] = Color.Transparent;
                    }
                    else if (x == 20 && (y == 9 || y == 10 || y == 1))
                    {
                        // ugly shadow hardcode fix
                        aColors[i] = Color.Transparent;
                    }
                    i++;
                }
            }
            textureCopy.SetData(aColors);
            return(textureCopy);
        }
 public Texture2D GetFloorThumb(ushort id, GraphicsDevice device)
 {
     if (id < 256)
     {
         return(TextureUtils.Copy(device, ById[id].Near.Frames[0].GetTexture(device)));
     }
     else if (id == 65535)
     {
         return(TextureUtils.Copy(device, FloorGlobals.Get <SPR2>(0x420).Frames[0].GetTexture(device)));
     }
     else if (id == 65534)
     {
         var spr = FloorGlobals.Get <SPR2>(0x800);
         if (!spr.SpritePreprocessed)
         {
             spr.ZAsAlpha           = true;
             spr.FloorCopy          = 2;
             spr.SpritePreprocessed = true;
         }
         return(TextureUtils.Copy(device, spr.Frames[0].GetTexture(device)));
     }
     else
     {
         return(this.Floors.ThrowawayGet(Entries[(ushort)id].FileName).Get <SPR2>(513).Frames[0].GetTexture(device));
     }
 }
Exemple #3
0
        /// <summary>
        /// Handle when a user selects a city
        /// </summary>
        /// <param name="element"></param>
        void CityListBox_OnChange(UIElement element)
        {
            var selectedItem = CityListBox.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            var city = (ShardStatusItem)selectedItem.Data;

            String gamepath = GameFacade.GameFilePath("");


            var fsoMap = int.Parse(city.Map) >= 100;

            var cityThumb = fsoMap ?
                            Path.Combine(FSOEnvironment.ContentDir, "Cities/city_" + city.Map + "/thumbnail.png")
            : GameFacade.GameFilePath("cities/city_" + city.Map + "/thumbnail.bmp");

            //Take a copy so we dont change the original when we alpha mask it
            Texture2D cityThumbTex = TextureUtils.Copy(GameFacade.GraphicsDevice, TextureUtils.TextureFromFile(
                                                           GameFacade.GraphicsDevice, cityThumb));

            TextureUtils.CopyAlpha(ref cityThumbTex, thumbnailAlphaImage);

            CityThumb.Texture                      = cityThumbTex;
            DescriptionText.CurrentText            = GameFacade.Strings.GetString(fsoMap?"f104":"238", int.Parse(city.Map).ToString());
            DescriptionText.VerticalScrollPosition = 0;

            /** Validate **/
            var isValid = true;

            if (city.Status == ShardStatus.Frontier)
            {
                isValid = false;
                /** Already have a sim in this city **/
                ShowCityErrorDialog(CityReservedDialogTitle, CityReservedDialogMessage);
            }
            else if (city.Status == ShardStatus.Full)
            {
                isValid = false;
                /** City is full **/
                ShowCityErrorDialog(CityFullDialogTitle, CityFullDialogMessage);
            }
            else if (city.Status == ShardStatus.Busy)
            {
                isValid = false;
                /** City is busy **/
                ShowCityErrorDialog(CityBusyDialogTitle, CityBusyDialogMessage);
            }

            OkButton.Disabled = !isValid;
        }
        /// <summary>
        /// Handle when a user selects a city
        /// </summary>
        /// <param name="element"></param>
        private void CityListBox_OnChange(UIElement element)
        {
            var selectedItem = CityListBox.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            var city = (CityInfo)selectedItem.Data;

            String gamepath = GameFacade.GameFilePath("");
            int    CityNum  = GameFacade.GetCityNumber(city.Name);
            string CityStr  = gamepath + "cities/" + ((CityNum >= 10) ? "city_00" + CityNum.ToString() : "city_000" + CityNum.ToString());

            //Take a copy so we dont change the original when we alpha mask it
            var stream = new FileStream(CityStr + "/Thumbnail.bmp", FileMode.Open, FileAccess.Read, FileShare.Read);

            Texture2D cityThumbTex = TextureUtils.Copy(GameFacade.GraphicsDevice, ImageLoader.FromStream(
                                                           GameFacade.Game.GraphicsDevice, stream));

            TextureUtils.CopyAlpha(ref cityThumbTex, thumbnailAlphaImage);

            stream.Close();

            CityThumb.Texture                      = cityThumbTex;
            DescriptionText.CurrentText            = city.Description;
            DescriptionText.VerticalScrollPosition = 0;

            /** Validate **/
            var isValid = true;

            if (city.Status == CityInfoStatus.Reserved)
            {
                isValid = false;
                /** Already have a sim in this city **/
                ShowCityErrorDialog(CityReservedDialogTitle, CityReservedDialogMessage);
            }
            else if (city.Status == CityInfoStatus.Full)
            {
                isValid = false;
                /** City is full **/
                ShowCityErrorDialog(CityFullDialogTitle, CityFullDialogMessage);
            }
            else if (city.Status == CityInfoStatus.Busy)
            {
                isValid = false;
                /** City is busy **/
                ShowCityErrorDialog(CityBusyDialogTitle, CityBusyDialogMessage);
            }

            OkButton.Disabled = !isValid;
        }
Exemple #5
0
 public Texture2D GetWallThumb(ushort id, GraphicsDevice device)
 {
     if (id < 256)
     {
         var spr = ById[id].Medium;
         return(TextureUtils.Copy(device, (spr == null)?null:spr.Frames[2].GetTexture(device)));
     }
     else
     {
         var iff = this.Walls.ThrowawayGet(Entries[(ushort)id].FileName);
         var spr = iff.Get <SPR>(1793);
         return((spr == null)?null:spr.Frames[2].GetTexture(device));
     }
 }
 public Texture2D GetFloorThumb(ushort id, GraphicsDevice device)
 {
     if (id < 256)
     {
         return(TextureUtils.Copy(device, ById[id].Near.Frames[0].GetTexture(device)));
     }
     else if (id == 65535)
     {
         return(TextureUtils.Copy(device, FloorGlobals.Get <SPR2>(0x420).Frames[0].GetTexture(device)));
     }
     else
     {
         return(this.Floors.ThrowawayGet(Entries[(ushort)id].FileName).Get <SPR2>(513).Frames[0].GetTexture(device));
     }
 }
Exemple #7
0
        /// <summary>
        /// Handle when a user selects a city
        /// </summary>
        /// <param name="element"></param>
        void CityListBox_OnChange(TSOClient.Code.UI.Framework.UIElement element)
        {
            var selectedItem = CityListBox.SelectedItem;

            if (selectedItem == null)
            {
                return;
            }

            var city = (CityInfo)selectedItem.Data;
            //Take a copy so we dont change the original when we alpha mask it
            var cityThumb = TextureUtils.Copy(Texture2D.FromFile(GameFacade.GraphicsDevice, new MemoryStream(ContentManager.GetResourceFromLongID(city.Thumbnail))));

            TextureUtils.CopyAlpha(ref cityThumb, thumbnailAlphaImage);

            CityThumb.Texture                      = cityThumb;
            DescriptionText.CurrentText            = city.Description;
            DescriptionText.VerticalScrollPosition = 0;

            /** Validate **/
            var isValid = true;

            if (city.Status == CityInfoStatus.Reserved)
            {
                isValid = false;
                /** Already have a sim in this city **/
                ShowCityErrorDialog(CityReservedDialogTitle, CityReservedDialogMessage);
            }
            else if (city.Status == CityInfoStatus.Full)
            {
                isValid = false;
                /** City is full **/
                ShowCityErrorDialog(CityFullDialogTitle, CityFullDialogMessage);
            }
            else if (city.Status == CityInfoStatus.Busy)
            {
                isValid = false;
                /** City is busy **/
                ShowCityErrorDialog(CityBusyDialogTitle, CityBusyDialogMessage);
            }

            OkButton.Disabled = !isValid;
        }
        public Texture2D GetFloorThumb(ushort id, GraphicsDevice device)
        {
            if (id < 256)
            {
                return(TextureUtils.Copy(device, ById[id].Near.Frames[0].GetTexture(device)));
            }
            else if (id == 65535)
            {
                return(TextureUtils.Copy(device, FloorGlobals.Get <SPR2>(0x420).Frames[0].GetTexture(device)));
            }
            else if (id == 65534)
            {
                var spr = FloorGlobals.Get <SPR2>(0x800);
                if (!spr.SpritePreprocessed)
                {
                    spr.ZAsAlpha           = true;
                    spr.FloorCopy          = 2;
                    spr.SpritePreprocessed = true;
                }
                return(TextureUtils.Copy(device, spr.Frames[0].GetTexture(device)));
            }
            else
            {
                IffFile iff;
                if (this.Floors is FAR1Provider <IffFile> )
                {
                    iff = ((FAR1Provider <IffFile>) this.Floors).ThrowawayGet(Entries[(ushort)id].FileName);
                }
                else
                {
                    iff = this.Floors.Get(Entries[(ushort)id].FileName);
                }

                var spr = iff?.Get <SPR2>(513);
                if (spr != null)
                {
                    spr.FloorCopy = 1;
                }

                return(spr?.Frames[0].GetTexture(device));
            }
        }