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