public TextureVM(XTileInfoVM _xTileInfoVM) { m_xTileInfoVM = _xTileInfoVM; Texture = _xTileInfoVM.Texture; CursorX = _xTileInfoVM.X; CursorY = _xTileInfoVM.Y; Sets = new ObservableCollection<ETextureSet>(Enum.GetValues(typeof(ETextureSet)).Cast<ETextureSet>().OrderBy(_set => _set.ToString())); TextureClick = new RelayCommand(ExecuteTextureClick); SetCommand = new RelayCommand(ExecuteSetCommand, CanSetCommand); AddCommand = new RelayCommand(ExecuteAddCommand, CanAddCommand); Subscribe(m_xTileInfoVM, info => info.PlusHalfX, _changed => OnPropertyChanged(() => ScreenCursorX)); Subscribe(m_xTileInfoVM, info => info.PlusHalfY, _changed => OnPropertyChanged(() => ScreenCursorY)); }
public TextureVM(XTileInfoVM _xTileInfoVM) { m_xTileInfoVM = _xTileInfoVM; Texture = _xTileInfoVM.Texture; CursorX = _xTileInfoVM.X; CursorY = _xTileInfoVM.Y; Sets = new ObservableCollection <ETextureSet>(Enum.GetValues(typeof(ETextureSet)).Cast <ETextureSet>().OrderBy(_set => _set.ToString())); TextureClick = new RelayCommand(ExecuteTextureClick); SetCommand = new RelayCommand(ExecuteSetCommand, CanSetCommand); AddCommand = new RelayCommand(ExecuteAddCommand, CanAddCommand); Subscribe(m_xTileInfoVM, info => info.PlusHalfX, _changed => OnPropertyChanged(() => ScreenCursorX)); Subscribe(m_xTileInfoVM, info => info.PlusHalfY, _changed => OnPropertyChanged(() => ScreenCursorY)); }
public Bitmap this[ETextureSet _texture, int _x, int _y, FColor _fColor, bool _removeTransparency, bool _grayScale, bool _isTerrain, bool _plusHalfX, bool _plusHalfY] { get { Dictionary <Tuple <int, int, FColor, bool, bool, bool, bool>, Bitmap> dictionary; if (!m_tiles.TryGetValue(_texture, out dictionary)) { dictionary = new Dictionary <Tuple <int, int, FColor, bool, bool, bool, bool>, Bitmap>(); m_tiles[_texture] = dictionary; } Bitmap bitmap; var key = new Tuple <int, int, FColor, bool, bool, bool, bool>(_x, _y, _fColor, _removeTransparency, _grayScale, _plusHalfX, _plusHalfY); if (!dictionary.TryGetValue(key, out bitmap)) { var txtr = this[_texture, _isTerrain]; bitmap = new Bitmap(Constants.TILE_SIZE, Constants.TILE_SIZE); using (var gr = Graphics.FromImage(bitmap)) { gr.DrawImage(txtr, 0, 0, new Rectangle( Constants.TILE_SIZE * _x + (_plusHalfX ? (Constants.TILE_SIZE / 2) : 0), Constants.TILE_SIZE * _y + (_plusHalfY ? (Constants.TILE_SIZE / 2) : 0), Constants.TILE_SIZE, Constants.TILE_SIZE), GraphicsUnit.Pixel); } var transparent = txtr.GetPixel(0, 0); var rct = new Rct(0, 0, Constants.TILE_SIZE, Constants.TILE_SIZE); foreach (var point in rct.AllPoints) { var pixel = bitmap.GetPixel(point.X, point.Y); if (pixel == transparent) { continue; } var fcolor = new FColor(pixel.A, pixel.R, pixel.G, pixel.B).Multiply(1f / 255f); if (_grayScale) { fcolor = fcolor.ToGrayScale(); } var result = fcolor.Multiply(_fColor).GetColor(); //.Multiply(255); if (_removeTransparency) { result.A = 255; } bitmap.SetPixel(point.X, point.Y, Color.FromArgb(result.A, result.R, result.G, result.B)); } dictionary.Add(key, bitmap); } return(bitmap); } }
public Bitmap this[ETextureSet _texture, int _x, int _y, FColor _fColor, bool _removeTransparency, bool _grayScale, bool _isTerrain, bool _plusHalfX, bool _plusHalfY] { get { Dictionary<Tuple<int, int, FColor, bool, bool, bool, bool>, Bitmap> dictionary; if (!m_tiles.TryGetValue(_texture, out dictionary)) { dictionary = new Dictionary<Tuple<int, int, FColor, bool, bool, bool, bool>, Bitmap>(); m_tiles[_texture] = dictionary; } Bitmap bitmap; var key = new Tuple<int, int, FColor, bool, bool, bool, bool>(_x, _y, _fColor, _removeTransparency, _grayScale, _plusHalfX, _plusHalfY); if (!dictionary.TryGetValue(key, out bitmap)) { var txtr = this[_texture, _isTerrain]; bitmap = new Bitmap(Constants.TILE_SIZE, Constants.TILE_SIZE); using(var gr = Graphics.FromImage(bitmap)) { gr.DrawImage(txtr, 0, 0, new Rectangle( Constants.TILE_SIZE * _x + (_plusHalfX ? (Constants.TILE_SIZE / 2) : 0), Constants.TILE_SIZE * _y + (_plusHalfY ? (Constants.TILE_SIZE / 2) : 0), Constants.TILE_SIZE, Constants.TILE_SIZE), GraphicsUnit.Pixel); } var transparent = txtr.GetPixel(0, 0); var rct = new Rct(0, 0, Constants.TILE_SIZE, Constants.TILE_SIZE); foreach (var point in rct.AllPoints) { var pixel = bitmap.GetPixel(point.X, point.Y); if (pixel == transparent) continue; var fcolor = new FColor(pixel.A, pixel.R, pixel.G, pixel.B).Multiply(1f / 255f); if(_grayScale) { fcolor = fcolor.ToGrayScale(); } var result = fcolor.Multiply(_fColor).GetColor();//.Multiply(255); if (_removeTransparency) { result.A = 255; } bitmap.SetPixel(point.X, point.Y, Color.FromArgb(result.A, result.R, result.G, result.B)); } dictionary.Add(key, bitmap); } return bitmap; } }
public Bitmap this[ETextureSet _set, bool _isTerrain] { get { Image value; if (_isTerrain) { if (!m_ttextures.TryGetValue(_set, out value)) { throw new NotImplementedException("А на хуа?"); //var scale = 1; //Bitmap bmp; //switch (_set) //{ // case ETextureSet.RJ: // bmp = Resources.redjack15v; // break; // case ETextureSet.RB1: // bmp = Resources.RantingRodent_Brick_01; // break; // case ETextureSet.RB2: // bmp = Resources.RantingRodent_Brick_02; // break; // case ETextureSet.RN1: // bmp = Resources.RantingRodent_Natural_01; // break; // case ETextureSet.RN2: // bmp = Resources.RantingRodent_Natural_02; // break; // case ETextureSet.GP: // bmp = Resources.gold_plated_16x16; // break; // case ETextureSet.NH: // bmp = Resources.nethack; // break; // case ETextureSet.HM: // bmp = Resources.aq; // break; // case ETextureSet.PH: // bmp = Resources.Phoebus_16x16; // break; // case ETextureSet.U4: // bmp = Resources.Ultima4; // break; // case ETextureSet.U5: // bmp = Resources.Ultima5; // break; // case ETextureSet.WC_WS: // bmp = Resources.wintersnow; // break; // case ETextureSet.WC_SG: // bmp = Resources.summergrass; // break; // case ETextureSet.WC_SW: // bmp = Resources.summerwater; // break; // case ETextureSet.dg_armor32: // bmp = Resources.dg_armor32; // scale = 2; // break; // case ETextureSet.dg_monster1: // bmp = Resources.dg_monster132; // scale = 2; // break; // case ETextureSet.dg_monster2: // bmp = Resources.dg_monster232; // scale = 2; // break; // case ETextureSet.dg_monster3: // bmp = Resources.dg_monster332; // scale = 2; // break; // case ETextureSet.dg_monster4: // bmp = Resources.dg_monster432; // scale = 2; // break; // case ETextureSet.dg_monster5: // bmp = Resources.dg_monster532; // scale = 2; // break; // case ETextureSet.dg_monster6: // bmp = Resources.dg_monster632; // scale = 2; // break; // case ETextureSet.dg_monster7: // bmp = Resources.dg_monster732; // scale = 2; // break; // default: // throw new ArgumentOutOfRangeException(); //} //if(scale==2) //{ // bmp = Scale(bmp); //} //value = new Image(bmp, false, false); //m_ttextures[_set] = value; } } else { if (!m_textures.TryGetValue(_set, out value)) { var bmp = this[_set, true]; value = new Image(bmp, true, false); m_textures[_set] = value; } } return value.Bitmap; } }
public Bitmap this[ETextureSet _set, bool _isTerrain] { get { Image value; if (_isTerrain) { if (!m_ttextures.TryGetValue(_set, out value)) { throw new NotImplementedException("А на хуа?"); //var scale = 1; //Bitmap bmp; //switch (_set) //{ // case ETextureSet.RJ: // bmp = Resources.redjack15v; // break; // case ETextureSet.RB1: // bmp = Resources.RantingRodent_Brick_01; // break; // case ETextureSet.RB2: // bmp = Resources.RantingRodent_Brick_02; // break; // case ETextureSet.RN1: // bmp = Resources.RantingRodent_Natural_01; // break; // case ETextureSet.RN2: // bmp = Resources.RantingRodent_Natural_02; // break; // case ETextureSet.GP: // bmp = Resources.gold_plated_16x16; // break; // case ETextureSet.NH: // bmp = Resources.nethack; // break; // case ETextureSet.HM: // bmp = Resources.aq; // break; // case ETextureSet.PH: // bmp = Resources.Phoebus_16x16; // break; // case ETextureSet.U4: // bmp = Resources.Ultima4; // break; // case ETextureSet.U5: // bmp = Resources.Ultima5; // break; // case ETextureSet.WC_WS: // bmp = Resources.wintersnow; // break; // case ETextureSet.WC_SG: // bmp = Resources.summergrass; // break; // case ETextureSet.WC_SW: // bmp = Resources.summerwater; // break; // case ETextureSet.dg_armor32: // bmp = Resources.dg_armor32; // scale = 2; // break; // case ETextureSet.dg_monster1: // bmp = Resources.dg_monster132; // scale = 2; // break; // case ETextureSet.dg_monster2: // bmp = Resources.dg_monster232; // scale = 2; // break; // case ETextureSet.dg_monster3: // bmp = Resources.dg_monster332; // scale = 2; // break; // case ETextureSet.dg_monster4: // bmp = Resources.dg_monster432; // scale = 2; // break; // case ETextureSet.dg_monster5: // bmp = Resources.dg_monster532; // scale = 2; // break; // case ETextureSet.dg_monster6: // bmp = Resources.dg_monster632; // scale = 2; // break; // case ETextureSet.dg_monster7: // bmp = Resources.dg_monster732; // scale = 2; // break; // default: // throw new ArgumentOutOfRangeException(); //} //if(scale==2) //{ // bmp = Scale(bmp); //} //value = new Image(bmp, false, false); //m_ttextures[_set] = value; } } else { if (!m_textures.TryGetValue(_set, out value)) { var bmp = this[_set, true]; value = new Image(bmp, true, false); m_textures[_set] = value; } } return(value.Bitmap); } }